La box domotique Eedomus permet de faire des scénarii assez évolués. Les règles qui permettent d’associer des critères afin de déclencher un ordre en direction d’un actionneur sont puissantes et simples à la fois. Pour ma Smart Home, après avoir mis en place beaucoup de règles, j’ai eu besoin récemment de pouvoir identifier non pas la valeur d’un capteur mais simplement sa tendance. J’avais besoin de savoir si la valeur relevée augmentait, descendait ou restait stable. Ce petit script m’a aidé à construire un capteur de tendances pour Eedomus.
Identifier une tendance
L’histoire a démarré lorsque j’ai du non pas connaitre la valeur du taux d’humidité de la douche mais pouvoir identifier si ce taux augmentait, diminuait ou bien restait stable. Il me fallait ensuite utiliser cette tendance dans un scénario mais également pouvoir la consulter. En théorie ce n’est pas dur. Intellectuellement on se dit que ce n’est pas compliqué : il suffit de prendre la donnée relevée et de la comparer à celle reçue par la box précédemment. En pratique c’est un peu plus complexe qu’il n’y parait car:
- Les historiques des valeurs sont disponibles sur la box Eedomus via l’API mais à ce jour seule l’API distante permet d’accéder à l’historique des relevés d’un périphérique. Je voulais que cela se fasse en local.
- On peut stocker les historiques dans une base extérieure mais je ne voulais pas mettre à contribution un autre système que la box domotique
- On peut dupliquer le relevé d’une sonde d’humidité (ou autre) sur un autre périphérique mais cette recopie de la donnée ne me plaisait pas.
J’ai donc soumis mon problème à Eedomus qui m’a proposé un script que j’ai pu tester et améliorer ensuite en fonction de sa mise à l’épreuve à la maison. Je vous le propose aujourd’hui car je suis certain qu’il pourra vous être utile également.
Le capteur de tendances est né!
Ce script peut être utilisé par un périphérique et être appelé en lui passant en paramètres 2 critères:
- id : l’identifiant du périphérique dont les données sont à comparer
- intervalle : l’intervalle de temps séparant les données à comparer
Lorsque l’on souhaite déterminer une tendance d’un relevé (hausse, baisse, stable) la solution la plus simple, celle qui a été retenue dans le cadre de ce script, consiste à comparer le dernier relevé avec un relevé précédent servant de référence.
Les régles de comparaison sont basiques:
- si le dernier relevé > relevé précédent => tendance “en hausse”
- si le dernier relevé < relevé précédent => tendance “en baisse”
- si le dernier relevé = relevé précédent => tendance “stable”
L’intervalle que l’on communique au script, en même temps que l’identifiant numérique du périphérique qui nous intéresse, permet de dire si l’on souhaite comparer le dernier relevé à celui d’il y a 1, 2, 5, 10, 30 minutes ou plus. Vous avez la main sur la valeur que vous souhaitez utiliser pour la comparaison.
Mise en place du capteur de tendances
Pour mettre en place cela c’est simple. Il vous suffit de créer un capteur HTTP qui récupérera la tendance du périphérique à surveiller en se basant sur le script que je vous propose et qui renvoie un XML directement exploitable.
- Télécharger le script prev_value.php ci-joint, le dé zipper et l’installer sur sa box Eedomus.
- Créer un périphérique “Capteur HTTP” de la manière suivante:
L’url sera la suivante:
http://localhost/script/?exec=prev_value.php&id=[VAR1]&intervalle=[VAR2]
Dans la “Variable utilisateur 1” vous indiquerez l’id du périphérique à suivre. Le capteur d’humidité dans mon cas a comme id 22346.
Dans la “Variable utilisateur 1” vous indiquerez l’intervalle de temps (en minutes) entre 2 relevés à comparer pour déterminer la tendance. Dans mon exemple j’ai indiqué le même intervalle que celui utilisé en tant que “Fréquence de la requête”.
- Créer les valeurs suivantes pour ce périphérique “Capteur HTTP”
C’est tout. Il ne vous reste plus qu’à patienter que le périphérique se mette à jour pour pouvoir exploiter dans votre domotique ce capteur de tendances.
Conclusion
Le Script proposé prend en charge la lecture du relevé et sa sauvegarde dans la box Eedomus pour une utilisation ultérieure. Il n’y a pas de bases de données à mettre en place pour stocker cela. C’est simple à installer et à maintenir… car il n’y a pas de maintenance particulière car on ne fait appel à aucun système tiers. Si la box est arrêtée, les valeurs permettant au script de fonctionner ne sont pas perdues car elles sont stockées dans la mémoire de votre box Eedomus.
Pour le côté technique, le script fait appel à la possibilité de sauvegarder des données (variables) au sein de la box Eedomus via les fonctions spécifiques saveVariable et loadVariable. La première fonction a pour but de “Sauvegarder le contenu d’une variable, ce qui la rend réutilisable lors d’une prochaine exécution du script”. Quand à la seconde fonction, elle permet de “Charger le contenu d’une variable précédemment sauvée avec saveVariable()”.
Rassurez-vous le script prend tout cela en charge et vous n’avez pas à vous soucier d’autre chose que de l’installer pour pouvoir bénéficier de la fonctionnalité de détermination de tendance. Le script permet de définir les tendances de n’importe quel périphérique de votre box eedomus, n’importe quel capteur provenant de n’importe quel protocole domotique compris par la box. Pourquoi s’en priver pour simplifier la création de scénarii?
Faites-en bon usage!