Surveiller l'état d'un chaudière à mazout

Surveiller l'état d'un chaudière à mazout

Beaucoup d'habitations ont été construites avant l’internet des objets, et parfois il faut convertir des installations anciennes, mais fonctionnelles afin de pouvoir les surveiller à distance. C'est le sujet de cette semaine, nous allons ajouter un YoctoHub à une chaudière Straton afin de recevoir une alerte quand la chaudière part en défaut.




La chaudière que nous allons modifier est une chaudière à mazout de la marque Straton. Cette chaudière a plus de 10 ans et n'a aucune interface de communication qui permet de la contrôler à distance, mais elle fonctionne correctement. Le défaut de cette chaudière est que rien ne prévient les habitants quand elle part en défaut par exemple si un filtre est bouché ou s’il n'y a plus de mazout. Dans cette situation, la chaudière s’arrête, affiche un message d'erreur, allume une LED et attend que quelqu'un vienne s'en occuper. Comme la chaudière est à la cave, les habitants ne se rendent compte du problème que lorsque la température du logement devient anormalement basse, par exemple 15°.

L'objectif est d'envoyer un email d’alerte dès que la chaudière part en erreur et que la LED s'allume. Il faut donc trouver un moyen de surveiller l'état du signal d'erreur. Une solution possible est de surveiller en permanence si la LED est allumée ou éteinte à l'aide d'un Yocto-Light ou d'un Yocto-Knob avec phototransistor. Du reste, nous avions déjà utilisé cette solution dans l'article "Connecter ce qui n'est pas connectable". Mais en inspectant de plus près le câblage de la chaudière, on remarque qu'il existe un bornier qui sort un signal en 220V quand la chaudière est en erreur.

Les schémas électriques de la chaudière indiquent que la borne S3 est alimentée en 220V quand il y a une erreur. La solution est donc de surveiller la tension de la borne S3. On pourrait surveiller activement la borne avec un Yocto-Volt, mais il y a une solution encore plus maline.

Au lieu de surveiller activement la borne S3, on va s'en servir comme alimentation pour un YoctoHub-Wireless-g.

Quand il y a une alerte, le YoctoHub est alimenté et se connecte à notre script PHP
Quand il y a une alerte, le YoctoHub est alimenté et se connecte à notre script PHP



Quand il n'y a pas d’alerte, la sortie S3 est à 0V et donc le YoctHub est éteint. Si la chaudière passe en erreur, la sortie S3 est alimentée en 220V et le YoctoHub-Wireless-g est alimenté. Quand il démarre, le YoctoHub se connecte au réseau local et exécute le callback HTTP. Il suffit donc d’écrire un petit script PHP qui envoie un email quand il reçoit une connexion du YoctoHub et le tour est joué.

La chaudière


La première chose à faire est de câbler l'alimentation du YoctoHub. Il faut utiliser une alimentation pour convertir les 220V de la sortie S3 en 5V utilisable par le YoctoHub. Dans notre cas nous avons utilisé une alimentation industrielle, mais une bête alimentation USB et une rallonge coupée peuvent aussi faire l'affaire. Attention toutefois à travailler proprement, car un branchement hasardeux peut être très dangereux quand on travail avec du 220V.

Le branchement de l'alimentation sur le bornier de la chaudière
Le branchement de l'alimentation sur le bornier de la chaudière



Le YoctoHub est branché sur la sortie de notre alimentation industrielle et fixé à l'arrière de la chaudière.

Le YoctoHub est fixé à l'arrière de la chaudière
Le YoctoHub est fixé à l'arrière de la chaudière



Le script PHP


Il faut ensuite écrire le script PHP qui sera appelé par le callback HTTP. Nous avons utilisé composer pour installer la librairie de programmation PHP Yoctopuce. À la racine du projet, il faut créer un fichier composer.json avec une dépendance sur la librairie et exécuter la commande "composer install".

Le fichier composer.json :

{
  "require": {
    "yoctopuce/yoctolib_php": ">=1.10.42982"
  }
}



Pour plus de détails sur composer vous pouvez lire notre précédent article "Installer la librairie PHP à l'aide de Composer".

Le code PHP est très simple. Comme nous n'avons pas besoin d'interagir avec le YoctoHub, il faut simplement appeler la méthode YAPI::RegisterHub() en lui passant l'URL avec le mot de passe du callback. Si l'appel retourne la constante YAPI::SUCCESS, il s'agit bien de notre YoctoHub et on envoie un email à l'aide de la fonction PHP mail().

require __DIR__ . '/vendor/autoload.php';

define("MD5_PASSWD", "password");
define("DEST_EMAIL", "somebody@example.com");
define("SRC_EMAIL", "somebody@example.com");

if (YAPI::RegisterHub('md5:' . MD5_PASSWD . '@callback') == YAPI::SUCCESS) {
    $subject = "Heater Alert!";
    $message = "The Heater alert has been triggered. Please check it.";
    mail(DEST_EMAIL, $subject, $message);
    die("Alarm has been triggered");
}



Comme on peut le voir, le code est très très simple. Le projet complet est disponible sur GitHub: https://github.com/yoctopuce-examples/heater_alert.


La configuration du YoctoHub


La dernière pièce du puzzle est la configuration du callback HTTP. Ces paramètres sont modifiables depuis l'interface Web du YoctoHub dans la section Callback URL. Le bouton edit permet d'ouvrir le panneau de configuration des Callbacks HTTP.

Il faut choisir un callback de type Yocto-API callback et entrer l'URL de notre script PHP. Pour les paramètres de sécurité, il faut utiliser l'option MD5 Signature et entrer le même mot de passe qui est utilisé dans le script PHP.

Viennent ensuite les paramètres de temporisation du callback. Comme notre script PHP envoie un email à chaque connexion, il faut être mettre une temporisation suffisamment grande pour ne pas se faire spammer par notre propre chaudière. Une valeur qui nous semble raisonnable est un délai d'une heure entre chaque callback et pas de changement de fréquence si la valeur d'un capteur change.

Les paramètre du Callback HTTP
Les paramètre du Callback HTTP



Dans cette configuration, lorsque la chaudière passe en alarme, le YoctoHub est alimenté, déclenche immédiatement un Callback HTTP. Puis, il va attendre une heure et déclencher à nouveau le callback, et ainsi de suite. Ce qui fait qu'en cas de problème l'utilisateur reçoit un email dès que la chaudière passe en alerte, puis un email toutes les heures tant que l'alarme n'est pas quittancée.

Avant de sauver la fenêtre, on peut tester le callback pour s'assurer que tout fonctionne comme prévu. Si ce n'est pas le cas, vous avez soit fait une faute de frappe dans les paramètres soit vous avez une erreur dans la configuration de votre serveur Web. Dans ce dernier cas, nous vous conseillons de commencer par la lecture de notre article "Utiliser le mode callback HTTP en PHP" ou de contacter le support.

Conclusion


Voilà nous avons converti une bête chaudière à mazout en "Smart" chaudière. La prochaine fois qu'un filtre sera bouché, l'utilisateur pourra agir immédiatement au lieu de se réveiller dans le froid.



Commenter aucun commentaire Retour au blog












Yoctopuce, get your stuff connected.