Aller au contenu

[Domoticz] Un SMS au bon moment d’ouvrir la fenêtre


Ldfa

Messages recommandés

(modifié le 23 juin 2017 &agrave 19:47)

Il faut chaud, c'est l'été. Si vous habitez en appartement c'est toujours la même question : fait-il plus chaud dehors ou dedans ?

rpi-notif-590x130.png

Plutôt que d'ouvrir la fenêtre pour le vérifier pourquoi ne pas recevoir une notification sur son smartphone dès que la température externe est inférieure à celle de votre appartement ?

Voyons comment faire avec Domoticz.

Principe de fonctionnement

J'utilise deux sondes banggood, une à l'intérieur et l'autre sur le balcon.

Ces sondes renvoient la température et l'humidité, seule la température nous intéresse. Pour simplifier le fonctionnement je me suis tourné vers Blockly, nativement présent dans Domoticz. Comme Blockly ne sait pas séparer la température de l'humidité j'utilise un script bash qui va mettre à jour les températures internes et externes dans des variables utilisateur, toutes les 5 minutes grâce à crontab.

fenetre-590x417.jpg

Enfin si la température extérieure est effectivement inférieure à la température intérieure alors on envoie un SMS de notification, histoire de dire que c'est le bon moment pour ouvrir la fenêtre et permettre à la fraicheur d'innonder la pièce.

Cela peut vous sembler gadget, mais vous n'habitez peut-être pas dans une grande ville caniculaire. Il suffit d'oublier d'ouvrir la fenêtre quelques heures avant de se coucher pour passer une mauvaise nuit.

Création des variables utilisateur

Créer 3 variables utilisateurs Domoticz dans Réglages > Plus d'options > Variables utilisateur.

domoticz-variable-utilisateur-590x90.png

  • tempInt : décimal
  • tempExt : décimal
  • SMSdejaENVOYE : entier

Définir la valeur de la variable à 0 pour la création (erreur sinon).

La variable SMSdejaENVOYE nous permettra d'envoyer la notification une seule fois par 24h, elle passera à "1" après l'envoi d'un SMS.

Notez l'idx de chaque variable utilisateur ainsi que les idx de vos 2 sondes de témpérature, nous allons en avoir besoin ensuite.

Script bash

Le script va injecter la température en degré de chaque sonde dans une variable utilisateur, grâce à l'API de Domoticz.

En pré-requis vous devez installer jq :

Téléchargez et déposez mon script dans /home/pi/scripts (au choix, root non nécessaire).

Rendez-le exécutable :

chmod +x /home/pi/scripts/tempUpdate.sh

Ouvrir le script et éditez les id des sondes "ID_INT" et "ID_EXT"

ID_INT=1098
ID_EXT=1100

Changez aussi les noms des variables utilisateurs si vous avez mis autre chose que "tempInt" et "tempExt".

Exécutez le script qui doit retourner ceci :

On observe le retour OK pour l'insertion de chaque température via l'API Domoticz.

Vérifiez dans Domoticz (Réglages > Plus d'options > Variables utilisateur) que la valeur actuelle est maintenant à jour.

Ajout du script dans crontab

Toujours en tant que simple utilisateur non root, éditez le fichier crontab :

crontab -e

Ajouter l'exécution du script toutes les 5 minutes :

# extraction puis injection des temp INT et EXT
*/5 * * * * /home/pi/scripts/tempUpdate.sh

Sauvegardez et quittez le fichier.

Création du bloc dans Blockly

Il nous reste à comparer les deux sondes et de savoir si la notification a déjà été envoyée ou non aujourd'hui. Et c'est Blockly qui s'en charge dans Réglages > Plus d'options > Evènements.

Voici le principe :

  • SI l'heure courante > 19h et inférieure à 23h59
  • ET que tempInt > tempExt
  • ET que SMSdejaENVOYE est différent de 1
    • alors notification par SMS,
    • alors écriture log
    • alors temporisation de 6h
    • alors SMSdejaENVOYE=1

J'ai borné l'exécution du script en soirée (19h - 29h59) car c'est le moment où la température extérieure baisse. La temporisation doit être supérieure à la durée d'exécution pour ne pas générer plusieurs SMS le même jour. De 19h à 23h59 cela nous donne 5h, j'ai donc définis la temporisation sur 6h (6*60*60=21600 secondes).

Créer un évènement "SMS écart temp" puis créer les blocs de la sorte (cliquez dessus) :

domoticz-blockly-temp-590x111.png

Les variables utilisateurs sont dans "User Variables", write to log dans "Debug/log", start script dans "messages"

La notification par SMS se fait avec un dongle Huawei E303 ou E1752 avec les scripts d'Arno. Si vous êtes chez Free Mobile vous pouvez utiliser l'API SMS gratuite et choisir le bloc "open url" (dans messages) et insérer ceci :

https://smsapi.free-mobile.fr/sendmsg?user=11111111&pass=2222222222222&msg=Il fait plus frais dehors

Attention : laissez bien "https://" dans la valeur du bloc, sinon ça ne fonctionnera pas.

Conclusion

C'était relativement long à expliquer, mais en réalité c'est très simple. J'utilise ce script depuis plus d'un an, au départ sur Free Mobile et maintenant avec un dongle 3G Huawei car je suis passé chez Sosh donc je n'ai plus l'accès à l'API.

Le SMS est un exemple, libre à vous d'envoyer un mail, une notification Pushbullet, allumer une ampoule Hue en vert, etc.

Maintenant quand vous serez calé au fond du canapé devant Netflix et qu'un SMS retentira alors ce sera le moment d'ouvrir la fenêtre. Les plus feignants domotiseront aussi l'ouverture de la fenêtre ou des volets roulants 🙂

Afficher l’article complet

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.