Réveil d'un Module Endormi en Z-Wave : Astuce de Réactivation Similaire à un PING

Ping et réveil - Z-Wave avec Jeedom


Voulez-vous vérifier qu'un module Z-Wave particulier au sein de votre système domotique préféré est bien vivant ? Ici dans cet article que Bricomachin a rédigé pour Jeedom! Le module est-t-il bien disponible à un moment donné ?, C'est-à-dire, peut-t-on forcer une action bien prédéfinie si le module ne répond pas mais qu'on sait qu'il est sur le réseau Par exemple, il est possible de faire en quelque sorte un "espèce de ping" pour chaque module et attendre sa réponse. La réponse du ping perd de réveiller le module ou le zombie.


Avertissement pour les plus initiés :

Attention : ce n'est pas un ping (comme ce que l'on connait dans le monde réseau Windows/Unix) mais plutôt une action qui permettra de réveiller un module Z-Wave endormi. Le ping est simplement pour imaginer l'article. Cette action ne réveillera pas un module endormi sous pile mais plutôt un module en échec sur le réseau suite à une coupure temporaire d'électricité.


Qu'est-ce qu'un module Z-Wave endormi ?


Un module Z-wave endormi peut signifier 2 choses :


  • Soit un module sur pile qui envoie ses informations toutes les x minutes (configurable selon le type et modèle de module).
  • Soit un module qui a présenté un dysfonctionnement quelconque et qu'il ne répond plus sur le réseau Z-Wave


Cet article couvre uniquement le 2ème point : soit un module qui a présenté un défaut et qui ne répond plus sur le réseau Z-Wave : module en échec mais qui est bien sur le réseau (==endormi ou zombie).


Dans cette article, nous allons réaliser cette requête en utilisant l'API de Jeedom et plus particulièrement une requête HTTP(s).


Dans notre exemple, nous coupons l'alimentation électrique après X minutes de la porte de garage (pour la fermeture du garage). Nous utilisons le module Z-Wave Fibaro pour ouvrir la porte de garage et un autre module qui coupe l'électricité

(deux modules différents) : le module à contact sec pour ouvrir la porte de garage n'est plus alimenté électriquement et donc n'apparaît plus sur le réseau après un certain temps : ce qui arrive de temps à autre, comme Jeedom se rend compte que le module est mort et lorsque je donne à Jeedom d'envoyer un ordre (ouvrir la porte de garage) et que le module est mort, il ne répond pas => envoyer une sorte de ping au module permet de le réveiller et faire l'action sans faille. Nous n'avons jamais étudié en profondeur le comportement de Jeedom sur ce genre de chose, pour quoi il est mort? Après combien de temps? Etc..


Donc dans notre cas, pour ouvrir la porte de garage à l'aide de ce module à contact sec, nous avons crée un scénario qui permet de réalimenter le module via l'électricité, ensuite nous faisons un ping du module et hop il est intégré automatiquement -> la porte s'ouvre. Tout ceci est bien transparent pour l'utilisateur final.


Plus de bug à l'ouverture de la porte de garage.


Résumé du scénario :


  • Module éteint
  • Module réallumé
  • Pause 1 seconde
  • Jeedom ping vers module réallumé
  • Pause 1 seconde
  • Action via scénario ou EVENTS



Dans le cas contraire, c'était très aléatoire sans exécuter cette action! Parfois la porte de garage s'ouvrait, parfois le module était considéré comme mort (en échec) et donc la porte de garage ne s'ouvrait pas! J'étais un peu comme un con et surtout coincé avec ma voiture devant la porte de garage!


C'est donc un workaround très efficace que Bricomachin vous présente aujourd'hui!


Pour réaliser un ping sur un module assez précis :

http://ip:8083/ZWaveAPI/Run/devices[x].TestNode()

La dernière MAJ de OpenZwave change complètement le moteur REST et donc l'url ci-dessus est différente. Vous devez donc passer par l'URL suivante :

http://127.0.0.1:8083/node?node_id=NodeID&type=action&action=testNode&apikey=cleapi


Remarque : l'url n'est plus que disponible par défaut en local donc obligatoirement passer par 127.0.0.1 Lorsque vous lancez cette requête, vous demandez à Jeedom de faire un test sur ce module. Contrairement à la commande PING, on ne reçoit pas de réponse directement mais Jeedom sera capable de savoir si ce module est enligne ou pas.


Pourquoi utiliser cette façon de faire ?

Imaginez que vous avez un module qui n'est pas toujours alimenté en électricité, par exemple un relais coupe l'électricité de la porte de garage, et vous avez également un autre module qui est branché sur la porte de garage pour ouvrir/fermer la porte. Lorsque le relais qui coûte électricité de la porte de garage, il va en même temps éteindre l'électricité du relais qui ouvre et ferme.


Vous tentez d'ouvrir votre garage et vous voulez avoir la certitude que lorsque le courant a repris que Jeedom sait qu'il est bien présent. Vous lancez un scénario avec la vérification si le module est UP ou non. PS : dans cet article, Bricomachin rappelle cela un PING, mais cela n'a rien à voir avec le protocole PING connu, c'est juste pour bien schématiser et pour que les initiés comprennent assez rapidement où nous voulons en venir.


En quelques sortes, cela permet de réveiller n'importe quel module en Z-Wave, mais un module bien spécifique!










Illustration