[V4][Intégration] Z-wave

Pour information, j’ai enquêté et je suis tombé sur les mêmes conclusions que @AlexTrovato, la librairie “zwave-js” mute des objets globaux et donc créé des effets indésirables dans Gladys.

J’ai contacté les mainteneurs de la librairie pour voir ce qu’il est possible de faire :

En attendant, pas trop de solution, actuellement la lib est clairement pas utilisable.

1 Like

Salut @Romuald_Pochet !

Je venais à la pêche aux nouvelles par rapport à l’intégration ZWaveJS, est-ce que tu as pu avancer ? Est-ce que tu as des blocages qui t’empêchent d’avancer ? :slight_smile:

Bon, suite à des impératifs technique et de production, j’ai finalement décidé d’intégrer mon zwavejs2mqtt en parallèle avec zwave-js (ce qui permet d’avoir accès à plein d’autres fonctionnalités zwave sans les implémenter dans Gladys). Donc maintenant plus de soucis de production, ni de development (access port USB à partir de la VM). Niveau interface c’est pas encore glorieux (je suppose une instance zwavejs2mqtt existante et j’utilise le MQTT de Gladys) mais au moins j’ai mes 40 devices zwave (et 90 devices Gladys !!!) disponible dans Gladys. J’ai créé les scènes que je pouvais créer avec Gladys (quasiment le double de mes scénarios Jeedom et j’ai dû intégrer Node-RED pour gérer certains devices Zigbee).

Par contre, des soucis apparaissent (a priori pas lié à Zwave):

  • Lenteur serveur / interface (sauvegarde des devices, scene…)
  • Scéne de type toogle:
  1. Scène 1: clic bouton → allumer lampe si éteinte
  2. Scène 2: clic bouton → éteindre lampe si allumé
    → j’ai donc un allumage et une extinction directement par la suite. Ce qui est normal car les 2 scènes sont exécutées suite au clic.

Hello @Romuald_Pochet ! Si je comprend bien, du coup tu abandonne la stratégie ZWaveJS et tu t’es fais une installation custom avec ZwaveJS2mqtt ? Est-ce que la PR ZwaveJS est toujours d’actualité du coup / ou non ? :slight_smile:

Parce qu’en gros, Open-Zwave étant deprecated, cette librairie nous bloque pour passer de Node 14 à Node 16. Hors Node 14 ne sera plus maintenu à partir de Avril 2023, et du coup il faut qu’on se projette pour savoir si on compte sur cette PR pour retirer Open-Zwave, où si on doit se lancer dans un autre développement :smiley:

C’est probablement lié au Z-Wave si ZwaveJS2Mqtt « spamme » trop Gladys. Tu sais un peu la fréquence des états envoyés par ZwaveJS2mqtt ?

Effectivement, Gladys doit à chaque évènement vérifier si une scène n’est pas concernée par l’évènement. Si ZwaveJS2Mqtt envoie 100 évènements par seconde, ça fait 100 vérifications de scènes par seconde, et ta DB sera vite pleine :stuck_out_tongue:

Je ne vois pas ce qui ne va pas ? Si tu fais 2 scènes au clic, les 2 scènes sont exécutées, qu’est ce que tu essayais de faire ? :thinking:

Edit: my bad, j’ai compris.

C’est l’ordre d’éxecution des scènes qui fait que la deuxième est exécutée après la première :stuck_out_tongue: C’est très intéressant comme problème!

Ce qu’il faudrait en fait, ce serait qu’il y ait qu’une scène, mais avec 2 « branches » quoi, ce qu’on a pas dans Gladys actuellement effectivement.

Non, les 2 sont possibles, les messages ZwaveJS2mqtt étant plus ou moins proche de ceux reçu par le driver Zwave-JS. Je n’ai par contre pas encore commité vu le manque de configuration dans l’interface. Et je dois dire que je ne matitrise pas du tout preact (enfin pas de manière optimale…)

En effet, certains devices envoient la consommation/puissance voire le voltage et l’intensité, ca fait beaucoup de message en effet. On est à un message toutes les 6 secondes en permanence.

Oui ce serait bien et diminuerait aussi le nombre de scene.

Ok ! Du coup selon toi comment on pourrait t’aider le plus possible pour qu’on fasse la migration au plus vite ? :slight_smile:

Parce que côté Preact, je peux t’aider et je suis pas le seul sur le forum à avoir la compétence ! :slight_smile: Et toi tu as la compétence et le matériel Z-Wave, ça serait dommage que ça n’aboutisse pas à quelque chose.

6 messages par seconde pour ton installation complète ou par feature ? (Donc * 40 * X features )

Il y a une demande ici:

Bonjour Pierre,

Question pratique:

  1. J’ai besoin d’un MQTT, est-il préférable d’utiliser celui de Gladys ou en créer un nouveau (comme fait dans Zigbee2mqtt). Je prefère la première pour ne pas multiplier les instances MQTT et les conflits de port.
  2. J’ai le script pour créer ZwaveJS2Mqtt sur base de celui de Zigbee2mqtt). Pour la suite, si des utilisateurs ont dejà ZwaveJS2mqtt, il suffir de récuperer les infos des devices pour tester les devices que je n’aurais pas.
  3. Est-il possible de créer un Exell pour répertorier les devices Zwave supportées ou pas, comme pour Zigbee ?
  4. Je dois refaire une batterie de test pour revenir sur la driver ZwaveJS en natif pour verifier si il n’y a pas eu d’effet de bord.
  5. Quand est-il prevu de sortir une release Node 16 ?

Bon, j’arrive à sortir des choses mais c’est pas assez « trivial » pour moi.

Pour l’installation complète

Il vaut mieux en créer un autre, car les intégrations doivent rester indépendante entre elle. Le port n’est pas un soucis tu peux en mettre un autre (tu n’as qu’à faire +1 par rapport à l’intégration Zigbee2mqtt)

Le risque si on utilisait le même broker, c’est que l’utilisateur casse ce fonctionnement si il change le mot de passe de la partie MQTT / stoppe la partie MQTT / ou si une tambouille différente se passe côté Zigbee2mqtt.

En fait ça créé de la dépendance entre intégrations.

L’autre souci, c’est que si l’utilisateur utilise un broker MQTT externe (dans le cloud par exemple), ça fait faire un aller/retour à tous les messages MQTT pour rien, pour un truc purement local.

Ici, le MQTT n’est qu’un format de message, et comme un broker mosquitto ça pèse rien, mieux vaut faire des silos entre intégrations IMO :wink:

Dans quel but ? Pendant le DEV, ou ensuite pour communiquer sur les devices compatibles ?

On a un excel en ligne qui ensuite génère le site pour communiquer avec la communauté ( cette page: Intégrations | Gladys Assistant ) , sinon pour le dev, n’hésite pas à faire un Gdoc et à nous partager les accès ici :wink:

Il n’y a pas de date, dans l’idéal le plus vite possible, en fait on est principalement dépendant de ce développement, c’est pour ça que peux carrément t’aider si ça peut permettre que ça aille plus vite :slight_smile:

La « hard limit », c’est mars 2023 (date de fin de support de Node 14), après cette date on sera obligé de passer à Node 16.

Après c’est vraiment la hard limite, dans l’idéal si on peut passer avant à Node 16 ce serait chouette :slight_smile:

Ok. Un message tous les 6 secondes ça me parait pas beaucoup, bizarre que ça ralentisse ton instance! Tu es sûr que tu n’as pas de pics à plus de messages ?

Il va falloir trier les features « utile » et pas utile, tout n’est pas forcément bon à archiver et à garder.

Bonjour,

J’ai tout de même réussi à créer une interface simple (mais pas forcement intuitive). J’ai aussi intégrer les scripts pour installer un MQTT et Zwave2Mqtt sur docker. Ca fonctionne chez moi (j’ai bypassé le check dockerBased car ce n’est pas nécessaire, il faut juste vérifier que docker soit disponible et non que Gladys tourne sur docker [mode network]).

J’aimerais maintenant rapatriés les dernières modifications du master de Gladys. Est-ce que la commande suivante à partir de ma branche est correcte:

# Get official Gladys last changes
# According that "upstream" remote repository refers to official Gladys Git repository
git fetch upstream

# Then rebase your "only zwave" branch on last Gladys changes
git rebase upstream/master

Top ! Et du coup tu estime qu’il reste combien de temps de développement ?

Pour les vacances d’été cela devrait être envisageable (j’aurai du temps libre), je tourne déjà en production avec mes modifications et quasi toutes mes devices fonctionnent.
Par contre, reste quelques petits détails, comme la migration d’un systeme qui fonctionne deja dans Gladys. Zwave a des fichiers de configuration que l’on peut copier dans Gladys pou eviter de devoir tout exclure/inclure. Pourrais-tu vérifier si de tels fichiers existent dans le répertoire server/services/zwave/node_modules et me les fournir ?

Hello,

J’attends ton intégration Z-wave avec impatience.
J’ai essayé via Node-RED comme conseillé dans une autre discussion mais cela ne fonctionne pas… :frowning_face:
Merci pour tout ce travail !

:wink:

@Romuald_Pochet pour la migration d’un système existant, qu’est-ce que tu voudrais récupérer dans ces fichiers ?

Parce qu’en soit, l’association est fait au niveau de la clé Z-Wave, donc si l’utilisateur a déjà ajouté ses appareils dans Gladys, et qu’ils sont déjà associé, ensuite peut-importe non ? Ils seront contrôlable via ZWaveJS ?

Surtout qu’en soit, actuellement ces fichiers sont écrasés à chaque mise à jour de Gladys comme ces fichiers sont mis dans les node_modules (et que le container est renouvelé en entier), donc on les perds déjà actuellement à chaque mise à jour

Je confirme que l’association est faite au niveau de la clé, quand j’ai basculé de Domoticz à Gladys tous mes périphériques était toujours reconnu, pas besoin de les ré-appairer.
Ensuite j’ai installé zwavejs2mqtt et j’ai pu piloter tous mes périphériques depuis Node Red.

1 Like

Récuperer les informations des devices. Le soucis que j’avais au début, c’est les devices « dormants » qui n’apparaissait pas, mais oui peut-etre qu’avec le temps ils vont réapparaitre…
Dans cette nouvelle version, la configuration sera stockée dans /var/lib/gladysasssistant/zwave, ce qui résoudra ce problème (c’est assez long de recréer le reseau sans ces fichiers).

OK donc j’oublie cet aspect, par contre si je peux récuperer les fichiers zwavejs2mqtt (@_Will_71 ), cela pourrait être utile pour valider d’autres devices que je n’aurais pas.

Ok, et petite question, est-ce que tu as besoin de ce dossier ou pas si jamais l’utilisateur re-installe une sauvegarde Gladys sur une autre instance ? Il ne perd pas son installation ?

Pas de network_key ou autre à sauvegarder ? (J’anticipe, parce qu’on a ce problème avec le Zigbee ^^)

Si jamais il y a des choses utiles dans ce dossier, ce qu’il faut faire c’est sauvegarder les parties utiles dans la DB de Gladys (dans la table t_variable ), pour que Gladys soit capable de re-créer tout en cas de restauration de la DB !

Il y’a l’ecryption S2 donc je penses qu’il y’a des choses à récupérer

Je regarde dans le weekend pour t’envoyer les fichiers zwavejs2mqtt

Non, ce repertoire n’est utilisé qu’au redémarrage pour initialiser le réseau, si il n’est pas présent, le réseau va être ré-interrogé et donc il faut un certain temps au démarrage pour pouvoir utiliser zwave dans Gladys. Je vais jeter un oeil

1 Like

@Romuald_Pochet Ok ! Sinon est-ce que tu as besoin d’aide pour finir l’intégration ? Tu as des screenshots à nous montrer ? :slight_smile:

Niveau test unitaire, tu t’en es sorti au final ?