Get Node info , Ping, etc

Bonjour,

je commence a être un peu plus familié avec MQTT , cependant je pèche encore sur un point

je voudrais pouvoir récupérer des infos sur ZwaveJS (santé, liste des nodes, pinger des noeuds)
normalement ca se fait via la commande ‹ getInfo › en MQTT par exemple

j’arrive a la lancer via un plugin
mais pour récupérer la réponse ca se corse, car de ce que je vois dans le code du plugin MQTT , seul un seul plugin peut s’abonner a un topic

   public static function addPluginTopic($_plugin, $_topic) {
      $mapping = config::byKey('mapping', __CLASS__, array());
      $mapping[$_topic] = $_plugin;
      config::save('mapping', $mapping, __CLASS__);
   }

donc si j’abonne mon plugin au topic ‹ zwave › bein je vais désabonner le plugin ZwaveJS
hors je souhaiterais pouvoir envoyer des infos (ca j’y arrive) et lire la réponse

une idée ?

Pourquoi je veux faire ca ?
Avant avec openZwave j’avais des script via api rest qui vérifiait que tout tournait bien, vérifiait les noeuds etc
Avec ZwaveJS j’y arrive plus, hors j’ai plusieurs fois été confronté à des soucis du genre : le pluginZwaveJS est dans les choux (malgré un Daemon OK), des noeuds au statut Unknow qui du coup réponde plus, alors qu’il suffit de les pingguer pour les relancer, … Bref je veux monitorer cela et j’arrive pas a trouver de point d’entrée avec réponse

Ben non, c’est un des intérêt du mqtt. Par contre, tu dois changer le clientID qui est lui unique.

Tu utilises quel plugin mqtt, vraiment plugin-mqtt? En géneral, c’est mqtt manager, plugin-mqtt2, ou jmqtt qui sont utilisés.

Salut

j’utilise mqtt2 , je viens de corriger dans les étiquettes

alors pour abonner mon Plugin a MQTT2 j’utilise ceci

mqtt2::addPluginTopic(__CLASS__, config::byKey('prefix', __CLASS__, 'zwave'));

Ok, la notion de ClientID je viens de comprendre, oui ca se déclare lorsqu’on publie , j’ai testé c’est ok j’arrive a avoir la réponse dans MQTT2

par contre je persite, lorsqu’on abonne un plugin à MQTT2, on ne peut pas abonner 2 plugin au meme topic

voila le code du plugin MQTT2

   public static function addPluginTopic($_plugin, $_topic) {
      $mapping = config::byKey('mapping', __CLASS__, array());
      $mapping[$_topic] = $_plugin;
      config::save('mapping', $mapping, __CLASS__);
   }

si je déclare mon plugin pour le topic ‹ zwave › je vais ecraser le plugin ZwaveJS qui y est abonné
je pense par contre pouvoir m’abonner à
zwave/_CLIENTS/monplugin_clientID

je vais test pour voir
=> Résultat du test : non ca marche pas :frowning: bon faut que je trouve comment faire alors ça craint cette histoire

et en creusant dans le code du plugin MQTT2 on voit bien au niveau de la fleche rouge, que lorsque l’on fait une publication, la réponse est renvoyé au plugin et a un seul plugin associé au topic

merci pour le retour

Salut

Je comprends pas trop pourquoi tu as des lignes de codes pour t’abonner à un service mqtt. Ce n’est même pas une commande mqtt. Si tu veux interagir avec un service mqtt, cela se fait par l’intermédiaire de mosquitto. Si tu as besoin d’y aller en direct, je suis largué.

Antoine

Salut

alors j’ai du mal m’exprimer

je réalise un plugin pour Jeedom (qui s’installe sur Jeedom)

ce plugin doit pouvoir regarder ce qu’il se passe sur MQTT côté Zwave

pour cela , je regarde comment cela a été développé sur MQTT2 puisque c’est celui-la que j’utilise et j’appelle les fonction public mise à disposition pour MQTT2 en PHP

Effectivement, c’est un point intéressant :smiley:

Oui, il faut essayer.
Tu peux essayer de feinter mqtt2 en essayant de souscrire au topic zwave/_CLIENTS ou peut-être zwave/?# ? (oui ?#)

Bad

Non je pense que ca va foutre le bordel car de mémoire quoi qu’il arrive mqtt2 ne va fwd le message qu’à un seul plugin.

Perso je pense que c’est une mauvaise idée ces pseudo check ou patch… faut régler les problèmes sur ton réseau @frixo et pas mettre des pansements de fortune…

Perso jamais aucun problème de noeud unknow ou de démon planté etc…

1 « J'aime »

non les ‹ / › sont explosé

$topics = explode('/', $_topic);

je vais fouiller

Hello Mips,

Je n’ai pas check avant de m’avancer, en effet @frixo, mes propositions ne marcheront pas.

Bad

aucun soucis tkt

Pas de soucis et je n’ai pas vérifié non plus, c’est de mémoire.

Ici le plus raisonnable c’est de ne pas utiliser mqtt2 car le principe pour mqtt2 c’est que chaque plugin ait « son » topic

ok , du coup tu ferais comment ?

hey j’ai trouvé un petit shell

jeedom@jeedom:~$ mosquitto_sub -t 'zwave/_CLIENTS/monpluginJeedom/#' -u jeedom -P P3Se96MauCR5gRnGZ22yUeREih8ZrfacVB07KFCN$$$$$cc0CS6Jwba7
{"type":"getInfo"}
{"success":true,"message":"Success zwave api call","result":{"homeid":3969478604,"name":"0xec996fcc","controllerId":42,"uptime":103486.787177552,"status":"driver ready","cntStatus":"Backup NVM progress: 100%","appVersion":"9.6.2.6e369a1","zwaveVersion":"12.4.1","serverVersion":"1.34.0"},"args":[],"origin":{"type":"getInfo"}}

bon je vais creuser ce point !!!

Et avec l’api de zwave-js-ui tout en MQTT ?

oui oui pour la publication j’utilise l’api de ZwaveJS evidement , c’est pour la réception du retour que je galère :slight_smile: