Action domotique déclenchée par la réception d’un SMS

Mon système domotique est entièrement contrôlable depuis l’intérieur comme l’extérieur de la maison, donc depuis le réseau local ou depuis Internet. Il est donc possible d’allumer ou éteindre une lampe ou encore activer/désactiver l’alarme à distance sans être présent dans la maison.

Ces opérations sont possibles car le serveur qui héberge l’interface web est branché sur le réseau local de la maison.

Problème : si la connexion internet tombe chez moi, je ne suis plus informé d’une alarme, je ne peux plus agir dessus.
La solution selon moi est de pouvoir déclencher des scénarios à l’aide d’un téléphone mobile, qui, lui, sera toujours joignable.

Comment donc déclencher des opérations à l’aide d’un mobile ?

  • Par le fait d’être appelé : trop dangereux, n’importe qui connaissant le numéro pourrait déclencher l’action, sans même s’en apercevoir.
  • Par commande vocale : plutôt complexe, il faut de la reconnaissance vocale derrière … peut être plus tard
  • par réception d’un SMS : parfait ! Un ordinateur sait très bien gérer les éléments textuels

Le matériel utilisé

  • une carte SIM
  • un nokia 3220 (ressorti d’un tiroir où il dort depuis 3 ans !)
  • un câble USB/série DKU acheté pour trois fois rien en Chine à l’époque

Communication avec le PC

Tout d’abord il faut que le PC reconnaisse le téléphone. L’objectif initial était de le faire fonctionner sous linux.
Apres plusieurs jours d’acharnement entre le drivers, le firmware du câble etc j’ai reporté cette étape à plus tard et suis donc passé sous Windows.
J’ai pu retrouver dans les méandres d’internet un drivers fournit par TI qui fonctionne.

Drivers TIUSB3410 : TEXAS-INSTRUMENTS_TUSB3410-U_A03_R286478.exe

Tout d’abord, vérifions que le dialogue avec le téléphone fonctionne.

  1. Ouvrez un Hyper Terminal (si vous êtes sous Win >Vista il n’est plus présent par défaut, vous pourrez facilement le retrouver via google)
  2. Ouvrez une connexion standard sur le port COM monté par Windows sur le cable USB
  3. Lancez la commande « AT » et vérifiez que vous avez bien un « OK » en retour

La démarche complète peut être récupérée sur le site wiki pour développeurs de nokia.

 Scriptage

Une fois que l’on arrive à dialoguer à l’aide des commandes AT standard, il est possible d’écrire un script pour automatiser la récupération de message.
J’ai choisi de le faire en python car une librairie de dialogue Série existe déjà : pySerial. De plus, je souhaite à terme brancher le telephone sur une machine Linux, Python est portable d’un OS à l’autre.

 Ouverture du flux

Voici un premier script qui ouvre simplement le flux sur le port COM3 sous Windows et essaye 5 fois d’envoyer une commande AT.

Commandes AT

Les commandes enchaînées sont les suivantes :

AT : tester de dialogue avec le telephone

AT+CMGF=1 : permet de se mettre en mode texte pour SMS

AT+CMGL= »ALL » : permet de lister tous les messages reçus

AT+CMGD=1 : permet de supprimer le message dont l’identifiant est 1.

Script final

Principe :

  1. test de la connexion au téléphone
  2. configuration en mode texte SMS
  3. récupération des messages SMS
  4. stockage des messages dans un tableau python
  5. traitement des messages stockés (en fonction d’un émetteur ou d’un contenu ou encore du temps, il est possible d’enrichir le script)
  6. suppression des messages traités
  7. bouclage
Les actions sont déclenchées à l’aide d’urllib qui va appeler un webservice en HTTP.

Script:

 

 

2 réponses à “Action domotique déclenchée par la réception d’un SMS

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *