[Tutoriel] : comment gérer des commande redondantes (commande principale + commande de secours)

Bonjour,
à l’occasion d’un autre sujet, j’ai expliqué brièvement comment je gérais mes commandes redondantes dans Jeedom. Je vous propose ici de rentrer un peu plus dans le détail. Voici le contexte : mon chauffage est géré grâce au plugin Thermostat de Jeedom, qui fait appel à une sonde de température par pièce pour réguler le fonctionnement de chaque radiateur. Pour ma part il s’agit de sondes Nodon Enocean, très fiables et très précises, mais … Rien n’étant infaillible, on n’est jamais à l’abri d’une panne, que ce soit de la sonde elle-même ou de la passerelle Enocean. Or il se trouve que dans certaines pièces j’ai installé des Aeotec Multisensor 6 pour gérer la présence. Ils ne sont pas hyper précis pour la température (et pas idéalement placés pour cette fonction), mais ils ont le mérite d’être là, et de faire appel à un autre protocole et donc à une autre passerelle. Donc l’idée est de faire appel à la sonde Nodon les 99,9% du temps où elle fonctionne normalement, mais de pouvoir recueillir une température de secours si nécessaire. Voici la manière dont j’ai procédé :

  • Dans mon Thermostat, j’ai mis comme valeur de température de la pièce #[ma sonde Nodon][température]#
  • j’ai un scénario récurent (lancé toutes les 10 minutes) qui, entre autres choses, va tester si le dernier message reçu de ma sonde Nodon n’est pas anormalement vieux, grâce au test suivant, mis en condition d’un bloc « SI/Alors/Sinon » : "lastCommunication(#Ma sonde Nodon#,U)>[2 fois l’intervalle de mesure normal]
    Dans le bloc « Alors » (c’est à dire si la sonde n’a rien envoyé depuis trop longtemps), je mets l’action suivante : event → commande #[ma sonde Nodon][température]# Valeur #[mon multisensor][température]#
    Cette commande remplace la valeur de la commande température Nodon par celle de la commande température du Multisensor. Le thermostat peut alors faire ses calculs sur une donnée actualisée de la température.
    Je mets aussi une deuxième commande d’alerte qui m’envoie un sms pour me prévenir que ma sonde Nodon est a priori défectueuse.
    Ensuite, si jamais la sonde Nodon refonctionne, la valeur de remplacement est immédiatement écrasée, et le scénario ne fait plus de remplacement. Mais si ce n’est pas le cas, toutes les dix minutes j’ai une valeur de température correcte qui sert de base aux calculs du thermostat.
    Et voilà, c’est aussi simple que ça ! Pour la température extérieure je procède de même, mais en remplaçant si nécessaire la valeur de ma sonde par celle en provenance du plugin météo.
    En espérant que ça puisse servir à d’autres, que ce soit pour la température ou d’autres informations, le principe restant le même …
6 « J'aime »

Merci pour ce retour d’expérience, dont je vais m’inspirer car j’ai déjà eu un soucis de remontée de température. Pour sécuriser le pilotage de la chaudière, j’ai gardé le thermostat d’origine en doublon mais il faut être à la maison pour remettre la bonne consigne. Avec ta configuration, ça se gère seul si le problème via de la sonde. Bon week-end

Effectivement, l’avantage c’est que c’est « automatique », et qu’en plus ça permet d’être notifié de la défaillance. Bonne mise en place !

Merci pour cette astuce. Juste une question sur le format de sortie de la commande lastCommunication. Tu as mis le paramètre « U » en tant que format. ça me donne une résultat du genre 1621370114. Ok soit. Mais comment tu formalise la partie à droite de ton opérateur > « [2 fois l’intervalle de mesure normal] » ?
Est-ce que tu fais un truc aussi tordu que: (#timestamp# - time(600)) pour tester une durée de 10min? Ou il y a plus simple?

Bonjour,
il y a plus simple :slight_smile:
Ton #timestamp# est en secondes et lastcommunication(#equipement#,U) aussi. Donc si tu souhaite avoir une alerte en cas d’absence de communication pendant 10 minutes, tu mets comme condition :
#timestamp# - lastcommunication(#equipement#,U) > 600

1 « J'aime »