Jeedom RTL433 et sondes hygro/temp low cost

Je parle plus ou moins réguliérement de domotique, avec des gens qui ont souvent des installations très complètes, moi au final je ne fais pas de domotique à proprement parler (je ne commande rien), mais je me contente de faire de la supervision.
Pourtant je sens toujours beaucoup de curiosité vis à vis de mon installation, cet « article » a pour but de présenter mon installation.

Des cables
Tout de même pas non!

Niveau matériel, j’ai des sondes de température/hygrométrie dans quasiment chaque pièce, de 3 provenances différentes, une oregon scientific (~15€), quelques sondes chinoises « ex modèle »(~7,5€) et quelques « nouveau modèle » Digoo (~4,5€) moins cher.
Des sondes très hétérogènes donc.
J’ai deux raspis équipés d’une clé tnt
Le serveur jeedom est une machine virtuelle sur un serveur à moi chez Online.

Je récupère les informations des sondes par les clés TNT via le logiciel rtl_433 (grâce à l’excellent spiwit vibrant sans fil  qui me l’a fait connaitre) qui sait décoder toutes ces trames différentes (et bien d’autres, la liste est sur le site et évolue très régulièrement, c’est un projet très actif) et les envoie dans un fichier de log.

« time » : « 2019-02-04 16:56:48 » « model » : « Prologue » « rid » : 66 « ch » : 3 « bat » : « OK » « temp_C » : 18.700 « hum » : 43
« time » : « 2019-02-04 16:56:51 » « model » : « Prologue » « rid » : 55 « ch » : 2 « bat » : « LOW » « temp_C » : 19.600 « hum » : 42
« time » : « 2019-02-04 16:57:01 » « model » : « Prologue » « rid » : 170 « ch » : 3 « bat » : « OK » « temp_C » : 6.800 « hum » : 72
« time » : « 2019-02-04 16:57:06 » « model » : « Prologue » « rid » : 225 « ch » : 1 « bat » : « OK » « temp_C » : 20.200 « hum » : 39
« time » : « 2019-02-04 16:57:09 » « model » : « Prologue » « rid » : 127 « ch » : 1 « bat » : « OK » « temp_C » : 6.500 « hum » : 51
« time » : « 2019-02-04 16:57:13 » « model » : « Prologue » « rid » : 19 « ch » : 2 « bat » : « OK » « temp_C » : 18.100 « hum » : 45
« time » : « 2019-02-04 16:57:17 » « model » : « Prologue » « rid » : 101 « ch » : 2 « bat » : « OK » « temp_C » : 6.300 « hum » : 52

Sur les raspis, un script maison est lancé toutes les minutes (les sondes causent en moyenne toutes les 30 secondes) et se charge de traduire les « ID » des sondes en nom de pièce et de les envoyer au serveur MQTT  qui tourne sur la même machine que le serveur Jeedom.

Il faut juste faire attention à bien construire son « arborescence MQTT », chez moi j’ai sensor/temperature/lieu et sensor/hygro/lieu, mais sensor/lieu/temperature et sensor/lieu/hygro est probablement un choix qui serait favorisé par la majorité.

Le script n’a que peu d’intérêt, il lit en entrée ce qui sort de rtl_433, le range par pièce suivant les ID (qui changent à chaque changement de pile, attention) et envoie le tout via MQTT.

script awk coloré
script d’envoi vers mqtt

Le (très bon) plugin jeedom se charge de se connecter au serveur MQTT et de ranger les infos reçues suivant l’arborescence.
La beauté du truc, c’est que pour ajouter une sonde, il n’y a qu’a ajouter une ID dans le script avec une description (qui deviendra un topic MQTT), et automagiquement, le nouveau capteur arrive dans jeedom ou il n’y a plus qu’a l’activer.

L’avantage de cette solution par rapport à quelque chose de plus classique (rfxcom plus même type de sonde); outre son prix, un rfcom étant aux alentours de 100€ il me semble, une clé tnt aux alentours de 8; l’avantage donc, c’est l’indépendance par rapport à Jeedom.
Il me semble que domoticz sait également gérer le MQTT, mais on peut aussi imaginer un script qui intègre les données dans n’importe quelle autre solution, la récupération étant simple comme bonjour.
Pour ceux qui n’arrivent pas à se décider entre Domoticz et Jeedom, MQTT permet d’utiliser les deux simultanément avec les mêmes sources en entrée.
Adieu le SPOF  🙂

Jeedom : être alerté quand y a plus de piles!

Jeedom c’est super, pour les capteurs intelligents qui remontent l’info sur leur batterie tu es alerté passé un certain seuil (enfin j’imagine, moi j’ai que des capteurs qui remontent toujours « ok » comme info batterie alors j’ai pas vraiment testé).

image_jeedom_batterie
Paramétrage des seuils d’alerte

 

 

 

Mais pour les capteurs idiots, ou les infos étranges venues d’ailleurs (par exemple, je chope la pollution via un grep bien crado sur https://www.atmo-auvergnerhonealpes.fr/monair/commune/69123 et j’ai pu du coup voir que ça passait plus au changement de nom de domaine puis au passage en https (sans redirection (oui, c’est une parenthèse dans une parenthèse dans une parenthèse, pour remarquer la parenthèse  dans la parenthèse du niveau du dessous.) parce que les 301 à la région, c’est pas leur truc)).

C’est pas très compliqué, il suffit de faire un scenario qui se déclenche quand un délai donné est dépassé.

Scenario d'envoi sms sur perte de la sonde de température du salon
Scenario d’envoi sms sur perte de la sonde de température du salon

Petite explication de texte, on prend l’heure courante au format Unix avec  #timestamp# puis on soustrait l’heure du dernier contact, stockée dans jeedom via CollectDate.

On transforme cette heure au format Unix aussin via le « ,U » (cf http://php.net/manual/fr/function.date.php ) puis on vérifie si c’est supérieur à 3600 (soit 1h).

Pour une raison que j’ignore, je n’ai pas réussi à afficher la valeur de CollectDate(#[Maison][Températures][Salon]#) directement dans mes messages d’avertissement d’ou mes deux actions, d’abord j’initialise la variable délai salon, puis je l’envoi dans mon message.