Envoi de SMS via Clé Huawei E3372

Les applications du Raspberry Pi en contrôle d'accès, alarme et vidéosurveillance

Modérateur : Francois

Répondre
bahamutfr
Messages : 8
Enregistré le : lun. 20 mai 2019 18:37

Envoi de SMS via Clé Huawei E3372

Message par bahamutfr » sam. 28 déc. 2019 22:55

Bonjour à tous,(et bonne fêtes de fin d'année! :mrgreen:

Je vous expose mon problème et la solution que j'y ai trouvé.

Je cherchais à réaliser un système autonome de surveillance sur batterie, avec internet via clé 4G.

J'ai été exposé a un premier problème d’accès extérieur car pas d'adresse IP dédié lorsque que l'on utilise une clé ou un forfait téléphonique ( Topic ICI) , solutionné par l'utilisation d'un tunnel PPTP (VPN)

Mon deuxième soucis est directement lié a ma clé, je souhaitais que mon système puisse envoyer des SMS ET être connecté sur le net en même temps.

Les solution RASPISMS / Gammu n'ont jamais fonctionné car ils exigent une mode "MODEM USB" ce qui est pas le cas dans ma config actuelle.


La solution consistait alors à changer le mode de fonctionnement de la clé mais dans ce cas la plus de connection internet en direct..il fallait créer un profil avec dialer etc.. bref des heures et des heures perdue et au final pas reussi a faire fonctionner ainsi.

J'ai finalement réussi à trouver un code qui utilise l'API de l'interface web de la clé , ce que je cherchais depuis de début en somme.

Le tout dans un petit code python ici sms.py durement trouvé ICI,le tout, très légèrement modifié par mes soins.


import requests, sys
import xml.etree.ElementTree as ET

msg = sys.argv[2]
phone = sys.argv[1] #To fill
ip = "192.168.8.1" #Dongle ip

#Get token
r = requests.get("http://%s/api/webserver/token" % ip)
root = ET.fromstring(r.content)
token = root[0].text
print "token", token




#Send sms
headers = { "__RequestVerificationToken": token, "Content-Type": "text/xml" }
data = "<request><Index>-1</Index><Phones><Phone>%s</Phone></Phones><Sca/><Content>%s</Content><Length>%d</Length><Reserved>1</Reserved><Date>$TIME</Date></request>" % (phone, msg, len(msg))
print data
r = requests.post("http://%s/api/sms/send-sms" % ip, data=data, headers=headers)
print "send-sms", r.headers, r.content



Ce code nécessite donc 2 arguments, vous pouvez envoyer très simplement un texto comme ceci

sudo python sms.py 0699999999 "ceci est un essai de SMS"


Seul soucis c'est le code $TIME qui ne fonctionne pas, la date d'envoi est stipulé en le 01/01/1970à 00:00:00 dans la OUTBOX SMS de l'interface web de le clé.. mais le sms est bien envoyé, ca marche chez moi en tout cas.

En espérant avoir pu aidé quelqu'un, j'ai vraiment passer des heures a faire fonctionner ce truc.. prochaine étape, lecture des SMS pour interprétation de commandes
Modifié en dernier par bahamutfr le dim. 29 déc. 2019 15:25, modifié 1 fois.

cbalo
Raspinaute
Messages : 272
Enregistré le : sam. 24 août 2019 06:05

Re: Envoi de SMS via Clé Huawei E3372

Message par cbalo » dim. 29 déc. 2019 13:04

Bonjour,
Déjà merci pour ces précision, toujours sympa un bout de code qui envoie un sms le jour où on en a besoin et qu'on ne l'a jamais fait.

Tu as remarqué que TIME n'est pas renseigné et commence par un dollars ?

Ca sent le copier coller/ adaptation d'un script au départ soit en shell soit en php.

TIME non renseigné = TIME à NULL = TIME considéré comme valeur 0 c'est à dire le début des timestamp unix, soit le 1er janvier 1970 à 0h00:00

Je viens de consulter la page d'où tu as tiré le code , bingo :

C'est du shell (d'où le dollar devant TIME) et tu as oublié de convertir en python ceci :

Code : Tout sélectionner

TIME=$(date +"%Y-%m-%d %T")
C'est à dire mettre dans TIME, une chaîne de caractère contenant la date et l'heure au format ISO (Ex : 2019-12-31 10:32:05)

bahamutfr
Messages : 8
Enregistré le : lun. 20 mai 2019 18:37

Re: Envoi de SMS via Clé Huawei E3372

Message par bahamutfr » dim. 29 déc. 2019 15:17

Merci de ton intervention,

je vais corriger ca et essayer!

Répondre

Retourner vers « Accès, alarme et vidéosurveillance »