Ok jusque-là, c'est DomoticZ qui me parlait. Je voudrais bien pouvoir communiquer avec lui.
Pour cette partie, le script de Vil1driver fonctionne très bien
- Le principe
Quand la userviariable SMS change, DomoticZ le détecte et lance le script qui analyse le SMS et réalise différentes opérations.
Il faut faire quelques ajustements pour rendre ce principe compatible avec RaspiSMS.
- Le transfert des SMS vers DomoticZ
RaspiSMS n'a pas de fonction pour transférer les SMS, par contre, c'est un script en python qui traite l'arrivée des SMS et qui envoi les données dans RaspiSMS. J'ai modifié ce fichier pour que les SMS soient également envoyés vers DomoticZ.
Attention, lors d'une mise à jour de RaspiSMS, il est possible que ce fichier soit réinitialisé : vous perdez ainsi la fonction "transfert".
Le fichier gammu_get_unread_sms.py à modifier :
Par défaut, il n'est pas accessible en écriture.
J'ai fait sudo chown pi:pi gammu_get_unread_sms.py pour pouvoir le modifier puis un sudo chown raspisms:www-data gammu_get_unread_sms.py pour le remettre comme il était.
Code : Tout sélectionner
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
# vim: expandtab sw=4 ts=4 sts=4:
#
from __future__ import print_function
import gammu
import sys
import json
import requests
def main():
state_machine = gammu.StateMachine()
if len(sys.argv) < 2:
sys.exit(1)
else :
state_machine.ReadConfig(Filename=sys.argv[1])
del sys.argv[1]
state_machine.Init()
status = state_machine.GetSMSStatus()
remain = status['SIMUsed'] + status['PhoneUsed'] + status['TemplatesUsed']
start = True
try:
while remain > 0:
if start:
sms = state_machine.GetNextSMS(Start=True, Folder=0)
start = False
else:
sms = state_machine.GetNextSMS(
Location=sms[0]['Location'], Folder=0
)
remain = remain - len(sms)
for m in sms :
if m['State'] != 'UnRead' :
continue
#Mise a jour dans Domoticz
r = requests.get("http://127.0.0.1:8080/json.htm?type=command¶m=updateuservariable&idx=1&vname=sms&vtype=2&vvalue="+m['Text']+";%2B"+m['Number'][1:])
print(json.dumps({
'number': m['Number'],
'at': str(m['DateTime']),
'status': m['State'],
'text': m['Text'],
})
)
except gammu.ERR_EMPTY:
#do noting
return True
if __name__ == '__main__':
main()
Code : Tout sélectionner
r = requests.get("http://127.0.0.1:8080/json.htm?type=command¶m=updateuservariable&idx=1&vname=sms&vtype=2&vvalue="+m['Text']+";%2B"+m['Number'][1:])Note : le m['Number'][1:] permet d'enlever le + contenu dans le numéro qui ne passait pas d'ans l'URL.
- L'envoi des SMS