Piloter ma maison par SMS via Domoticz

Article ambitieux aujourd’hui car le but va être de  décrire la mise en place d’outils destinés à nous permettre de piloter notre domotique via SMS.

Le simple envoi d’un SMS contenant des mots clés prédéfinis (actions) déclenchera des actions dans Domoticz.

Prérequis.

  • Un téléphone Android équipé d’une carte téléphonique et d’un forfait SMS.
  • L’appli SMS Gateway Ultimate installée sur le téléphone.
  • Un Domoticz en état de marche.
  • Du temps, de l’application et de la patience. 😆

Principe de fonctionnement.

L’idée est que sur l’envoi d’ un SMS contenant un mot clé à notre téléphone Android passerelle, le SMS sera « donné à manger » à Domoticz par l’ intermédiaire dune variable qui déclenche un script Lua qui contient les actions à effectuer. Chaque action est reliée à un dispositif Domoticz.

Un joli schéma pour « mieux » visualiser ?.

pilotage_sms_domoticz

j’ai pas fait beaux arts.

La rédaction de cet article à été rendue possible par le travail d’un contributeur régulier du forum : Vil1driver que je tenais à remercier ici.

Vous trouverez son post initial à l’adresse suivante : https://easydomoticz.com/forum/viewtopic.php?f=17&t=596

Configuration Domoticz

Création d’une variable utilisateur

Dans le menu de paramétrage -> « Réglages »/ »Plus d’options »/ »Variables utilisateurs »

Ajouter une variable CHAINE nommée sms et contenant le mot ready. J’insiste sur le nom de la variable en minuscules.

variable_sms

Validez puis notez le numéro Idx associé à cette variable.

Installation et configuration, de l’appli SMS Gateway Ultimate

SMS Gateway Ultimate

La première partie qui consiste à donner un nom et un port TCP à cette appli est décrite ici https://easydomoticz.com/une-plateforme-sms-a-laide-dun-vieux-telephone-android-pour-domoticz-2/

Nous allons maintenant utiliser le menu « Rules » de  SMS Gateway Ultimate pour ajouter une règle de redirection d’un SMS entrant vers Domoticz.

Il s’agit de remplir le champ « Forward to url » tout en bas avec ce qui suit (que vous adapterez bien, sur à votre config)

http://USER:PASS@IP:PORT/json.htm?type=command&param=updateuservariable&idx=IDX&vname=sms&vtype=2&vvalue=%body%;%from%

Avec :

  • USER: votre nom d’utilisateur (si nécessaire)
  • PASS: votre mot de pass (si nécessaire)
  • IP: ip de domoticz
  • PORT: port de domoticz
  • IDX: idx de la variable utilisateur ‘sms’

sms_to_domoticz

Avant d’aller plus loin vérifions si cela fonctionne correctement.

Premiers tests

Validez tout cela, puis lancez le serveur SMS Gateway Ultimate par le bouton « Start »

A l’aide d’un autre téléphone, envoyez un SMS à votre plateforme SMS avec un texte quelconque dedans.

Sur SMS Gateway Ultimate, tout en bas , tirez l’onglet vers le haut pour voir les logs en temps réel.

sms_to_domoticz_logs

On peut voir l’arrivée du message et la redirection vers notre IP:port.

Vérifiez dans Domoticz que votre variable sms contienne bien votre SMS;lenuméroappelant (message et numéro sont séparés par un point virgule)

SMs_send_tovariable_domoticz

Mise en place du script Lua.

Que fait ce script ?

Il s’exécute dés que la variable nommé sms est modifiée, il recherche si le numéro appelant est dans la liste autorisée, puis exécute l’action mentionnée dans le message SMS envoyé.

Si l’action réussit un message SMS est renvoyé à l’appelant pour le notifier de  l’action effectuée, sinon des SMS sont renvoyés sur utilisateur non autorisé, commande inconnue.

 

Créez un fichier script_variable_sms.lua dans domoticz/scripts/lua contenant ce qui suit :

Il faut uniquement modifier à l’intérieur de ce script :

  • la liste des numéros autorisés au format +336XXXXXXX ‘le nom importe peu)
  • l’ip et le port du serveur SMS gateway pour que le script puisse vous répondre par sms.
  • la liste des messages à reconnaitre et les actions qui vont en découler.

 

Quelques explications générales.

le format des actions  est sous la forme liste = reponse= et/ou commandArray

Ex :  liste [‘le message sms que je dois envoyer’] = [[ reponse = des instructions Lua qui vont bien ]]

  • N.B Si il n’y a pas le bloc reponse, le SMS renvoyé en accusé de réception de commande sera OK (variable locale good).
  • N.B2 : Si vous supprimez reponse = ‘bla bla bla’ , faites attention de conserver les 2 crochets du bout ]], c’est du vécu.

 

Exemples :

  • Les températures

Lorsque, par SMS, j’envoie Temp salon (attention à la casse des caractères), la réponse SMS qui est adressée est « il fait X °C dans le salon » et on va chercher la température dans le périphérique Domoticz nommé ‘salon’

  • Les interrupteurs

En envoyant Douche par SMS on passe l’interrupteur nommé douche à On dans Domoticz et on renvoie un SMS qui dit ‘Je mets la salle de bain en chauffe’.

  • Gestion des groupes

Le commandArray[‘Group:nom_du_groupe’] = ‘On’ ou ‘Off’ bascule tout le groupe dans l’état demandé. Les groupes sont ceux définis dans le menu « Scénarios ».

  • Le panneau de Sécurité

Alarme on, Alarme Off activent/désactivent le panneau de sécurité Domoticz.

  • Exécution d’un autre script

Spoon envoyé par SMS, lance le script précisé dans le os.execute

  • Exécution de Lua

Remarquez que le ‘Ya qqn’ execute une portion de Lua puis remplit une variable Lua nommée reponse qui est le message SMS envoyé.

  • Connaitre l’état d’un interrupteur.

Récupérez l’état de la variable concernée par un otherdevices[‘votre_interrupteur’]

liste['Alarme'] =         [[   reponse = 'L\'alarme est sur '..otherdevices['Alarme'] ]]

L’état sera envoyé lors de l’envoi du SMS : Alarme

 

Voyez que c’est extrêmement puissant et très fonctionnel. Cela nécessite une petite connaissance de Lua et des fonctionnalités Domoticz.

En vrac

  • Vous pouvez envoyer un SMS contenant Help (H majuscule) , la liste des actions possibles vous est retournée immédiatement.
  • Dans le cas ou un SMS est envoyé à une personne absente de la liste , elle reçoit un SMS disant « Je ne vous connais pas »
  • Respectez bien la casse dans vos messages.
  • N’oubliez pas  de fermer vos  ]].
  • Attention : Si vous voulez envoyer par SMS une apostrophe, il faut dans reponse mettre un \ devant celle ci

liste['Alarme'] =         [[   reponse = 'L\'alarme est sur '..otherdevices['Alarme'] ]]

  • Le log de Domoticz affiche les messages reçus , pratique

Merci encore à Vil1driver pour ce magnifique travail.

gateau2

 

Posted in domoticz, domotique, scripts.

7 Comments

  1. bonjour

    un an que l’article est publié mais j’ai toujours voulu le mettre en place

    c’est chose faite, et … ça marche 😀

    je vais l’utiliser dans un local distant, souvent innocupé mais dont je souhaite avoir des infos régulières

    je n’ai plus qu’a m’amuser avec des commandes personnalisées et constater l’étendue des possibilités

     

    un énorme merci pour le travail, je tacherai d’expliquer à d’autres (dans mon FabLab) comment mettre en place tout ça …

    Jean-Phi

  2. bonjour Patrice

    petit retour après quelques jours d’utilisation

    ça fonctionne souvent mais pas tout le temps, je pense que ma réception SMS est pas top, et mon internet (qui passe par la 3G) aussi… avec des décos de temps en temps (snif)

    j’ai pu rajouter des fonctions genre « photo rdc » et « photo etage » qui déclenche par SMS l’envoi par mail d’une photo prise avec une des caméras (des vieux smartphones avec l’appli IpCam), ça fonctionne bien (quand internet est ok )

    bizarrement le « Help » ne fonctionne pas, ne renvoie rien ?

    j’ai quelques soucis avec les accents aussi dans les sms reçu

    l’idéal pour moi serait d’envoyer les photos par MMS, penses tu qu’il y ait moyen ? j’ai plus confiance dans l’abo free à 2€ que ma connexion internet…

    merci!

    à bientôt

    Jean-Philippe

  3. Bonjour
    Je ne sais pas pour l’envoi de MMS, est ce que IPCam ne peut pas faire cela, ou alors un script TASKER qui surveille l’apparition d’une photo (je dis ça au pif, je ne sais pas si c »‘est possible)

  4. Bonjour,

    Tout d’abord, merci beaucoup !
    Ce super article va, je l’espère, me permettre de récupérer le sms envoyé par mon alarme pour récupérer le statut de mon alarme sur domoticz.

    J’ai une question,
    sous SMS Gateway Ultimate, lorsque je reçois un sms, le log me dit qu’il y a un problème de certificat (je me suis connecté via https depuis l’extérieur de mon réseau lan via No-IP) : « Trust anchor for certification path not found… ».
    Comment puis-je résoudre ce problème de certificat sur mon Rasperry ?

    Merci !

  5. Bonjour,

    J’ai mis en place toute la procedure pour piloter domoticz par l’intermediaire d’un vieux smartphone. Tout se passe bien.

    Remarque 1: pour des retours de temperature seulement 3 temperatures sont possible par SMS.  Faire aussi attention à la longueur de la ligne dans le fichier LUA

    Remarque 2 : Si il y a trop de commande « liste[xxx] la commande Help ne renvoit rien.

    Toutefois j’ai un probleme pour commander des volets roulants a travers les commandes SMS aussi bien par un groupe que individuellement.

    Que faut il mettre dans la ligne de commande apres le =

    J’ai essayé On Off Ouvert Fermé .  Rien ne commande le ou les volets.

    Votre aide sera la bienvenue

    Merci

  6. Pingback: Communiquer par SMS avec Domoticz via un modem USB 3G - Domo-Attitude.fr

Laisser un commentaire

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