Ldfa Posté(e) le 30 décembre 2019 Partager Posté(e) le 30 décembre 2019 « Prise en main de Proxmox, la virtualisation par container (modifié le 23 juin 2017 à 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 ? 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. 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. 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 : cd ~ sudo apt-get install dh-autoreconf -y git clone https://github.com/stedolan/jq.git cd jq autoreconf -i ./configure --disable-maintainer-mode make sudo make install cd ~ sudo apt-get install dh-autoreconf -y git clone https://github.com/stedolan/jq.git cd jq autoreconf -i ./configure --disable-maintainer-mode make sudo make install 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=1098ID_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 : $ /home/pi/scripts/tempUpdate.sh Injection Temperature INT (30.2): { "status" : "OK", "title" : "UpdateUserVariable" } Injection Temperature EXT (33.6): { "status" : "OK", "title" : "UpdateUserVariable" } Fin du script - vendredi 23 juin 2017, 18:43:53 (UTC+0200) - v2016.08.15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 $ /home/pi/scripts/tempUpdate.sh Injection Temperature INT (30.2): { "status" : "OK", "title" : "UpdateUserVariable" } Injection Temperature EXT (33.6): { "status" : "OK", "title" : "UpdateUserVariable" } Fin du script - vendredi 23 juin 2017, 18:43:53 (UTC+0200) - v2016.08.15 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) : 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 🙂 Tags: sonde, température Afficher l’article complet Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.