A la recherche de testeurs sur l'intégration ZwaveJS UI!

Salut à tous !

Vous le savez, depuis plusieurs mois @Romuald_Pochet travaille dur pour sortir une intégration ZWaveJS UI dans Gladys :slight_smile:

Aujourd’hui, il est à la recherche de testeurs pour faire des retours sur cette intégration, et si tout va bien l’intégration pourra partir en production !

Comment tester ?

Il y a une image Docker mise à disposition qui intègre cette intégration :

rpochet/gladys-zwave-js-ui:dev

Comment lancer cette image? => Tutoriel: Lancer une image Docker de test

Pour les retours, vous pouvez venir sur ce sujet sur le forum :

https://community.gladysassistant.com/t/v4-integration-z-wave/6057/230?u=pierre-gilles

Merci à tous ceux qui prendront le temps de tester cette intégration :pray:

2 « J'aime »

Je ferais un test dès que possible et surtout quand je pourrais arrêté mon pi en prod qui utilise mon dongle zwave.

1 « J'aime »

Déjà, bien joué @Romuald_Pochet, j’ai quelques périphériques qui n’attendaient que toi :wink:

Ne prends pas mal la suite, je vais tenter d’être le plus exhaustif possible afin d’être constructif et d’aider l’intégration de ton développement :slight_smile:


Mes quelques remarques :

sur la page intégration, je trouve que l’image n’est pas au bon format :

(attention, il faut chercher « z-wave » avec le tiret)


Si la liste des devices est vide, nous n’affichons pas un carré bleu « alert » sur les autres intégrations, mais en général un texte, ce n’est pas très important, mais on perd la cohérence avec les autres services.


Problème d’affichage sur un écran de taille moyenne :


Problème de libellé avec du code :


Problème d’espacement et de compréhensions (je ne suis pas du tout expert z-wave, je ne sais pas si je dois remplir tous les champs, ou même ce qu’ils signifient, un petit panel explicatif serait appréciable

Attention, le lien localhost ne fonctionne pas car j’utilise un serveur distant (raspberry).


Du coup, je suis parti sur l’installation intégrée dans un 1er temps, et en cliquant sur « Connecter/Reconnecter », j’ai quelques erreurs (non bloquantes) qui s’affichent dans les logs

2023-03-27T19:16:59+0200 <error> installMqttContainer.js:57 (ZwaveJSUIManager.installMqttContainer) MQTT broker failed to install as Docker container: Error: (HTTP code 409) unexpected - Conflict. The container name "/gladys-zwave-js-ui-mqtt" is already in use by container "f36daed4ca294ad1555d79172eec835aeacf429c03c6d19bbb0bde8284125d1d". You have to remove (or rename) that container to be able to reuse that name.
    at /src/server/node_modules/docker-modem/lib/modem.js:336:17
    at getCause (/src/server/node_modules/docker-modem/lib/modem.js:366:7)
    at Modem.buildPayload (/src/server/node_modules/docker-modem/lib/modem.js:335:5)
    at IncomingMessage.<anonymous> (/src/server/node_modules/docker-modem/lib/modem.js:303:16)
    at IncomingMessage.emit (node:events:525:35)
    at endReadableNT (node:internal/streams/readable:1359:12)
    at processTicksAndRejections (node:internal/process/task_queues:82:21) {
  reason: undefined,
  statusCode: 409,
  json: {
    message: 'Conflict. The container name "/gladys-zwave-js-ui-mqtt" is already in use by container "f36daed4ca294ad1555d79172eec835aeacf429c03c6d19bbb0bde8284125d1d". You have to remove (or rename) that container to be able to reuse that name.'
  }
}
2023-03-27T19:16:59+0200 <error> index.js:15 (process.<anonymous>) unhandledRejection catched: Promise {
  <rejected> Error: (HTTP code 409) unexpected - Conflict. The container name "/gladys-zwave-js-ui-mqtt" is already in use by container "f36daed4ca294ad1555d79172eec835aeacf429c03c6d19bbb0bde8284125d1d". You have to remove (or rename) that container to be able to reuse that name.

      at /src/server/node_modules/docker-modem/lib/modem.js:336:17
      at getCause (/src/server/node_modules/docker-modem/lib/modem.js:366:7)
      at Modem.buildPayload (/src/server/node_modules/docker-modem/lib/modem.js:335:5)
      at IncomingMessage.<anonymous> (/src/server/node_modules/docker-modem/lib/modem.js:303:16)
      at IncomingMessage.emit (node:events:525:35)
      at endReadableNT (node:internal/streams/readable:1359:12)
      at processTicksAndRejections (node:internal/process/task_queues:82:21) {
    reason: undefined,
    statusCode: 409,
    json: {
      message: 'Conflict. The container name "/gladys-zwave-js-ui-mqtt" is already in use by container "f36daed4ca294ad1555d79172eec835aeacf429c03c6d19bbb0bde8284125d1d". You have to remove (or rename) that container to be able to reuse that name.'
    }
  }
}
2023-03-27T19:16:59+0200 <error> index.js:16 (process.<anonymous>) Error: (HTTP code 409) unexpected - Conflict. The container name "/gladys-zwave-js-ui-mqtt" is already in use by container "f36daed4ca294ad1555d79172eec835aeacf429c03c6d19bbb0bde8284125d1d". You have to remove (or rename) that container to be able to reuse that name.
    at /src/server/node_modules/docker-modem/lib/modem.js:336:17
    at getCause (/src/server/node_modules/docker-modem/lib/modem.js:366:7)
    at Modem.buildPayload (/src/server/node_modules/docker-modem/lib/modem.js:335:5)
    at IncomingMessage.<anonymous> (/src/server/node_modules/docker-modem/lib/modem.js:303:16)
    at IncomingMessage.emit (node:events:525:35)
    at endReadableNT (node:internal/streams/readable:1359:12)
    at processTicksAndRejections (node:internal/process/task_queues:82:21) {
  reason: undefined,
  statusCode: 409,
  json: {
    message: 'Conflict. The container name "/gladys-zwave-js-ui-mqtt" is already in use by container "f36daed4ca294ad1555d79172eec835aeacf429c03c6d19bbb0bde8284125d1d". You have to remove (or rename) that container to be able to reuse that name.'
  }
}
2023-03-27T19:17:00+0200 <info> scene.checkCalendarTriggers.js:24 (SceneManager.checkCalendarTriggers) Checking calendar triggers at Mon, 27 Mar 2023 17:17:00 GMT
2023-03-27T19:17:03+0200 <info> installMqttContainer.js:54 (ZwaveJSUIManager.installMqttContainer) {
  name: '/gladys-zwave-js-ui-mqtt',
  image: 'eclipse-mosquitto:2',
  state: 'created',
  id: 'f36daed4ca294ad1555d79172eec835aeacf429c03c6d19bbb0bde8284125d1d',
  networkMode: 'host',
  created_at: 1679937418
}

Ensuite, je suis allé sur la page « Découverte », n’ayant encore branché aucun device autre que le dongle USB, et la recherche tourne en boucle.
J’ai peur que ce genre de comportement en recherche active bloque d’autres échanges dans d’autres services Gladys.


Juste après avoir installé le container, je vois ce message :

Zwavejs UI version non supportée: version supportée 8.9.0 mais version actuelle est 8.11.1

Mais je n’ai rien fait moi !!!


Et pour souligner le fait que je sois incompétent en zwave, sur zwave-ui, j’ai ce mesage d’erreur :

Driver: Failed to initialize the driver: ZWaveError: Timeout while waiting for an ACK from the controller (ZW0200)
    at Driver.sendMessage (/usr/src/app/node_modules/zwave-js/src/lib/driver/Driver.ts:4148:23)
    at ZWaveController.identify (/usr/src/app/node_modules/zwave-js/src/lib/controller/Controller.ts:967:33)
    at Driver.initializeControllerAndNodes (/usr/src/app/node_modules/zwave-js/src/lib/driver/Driver.ts:1291:26)
    at Immediate.<anonymous> (/usr/src/app/node_modules/zwave-js/src/lib/driver/Driver.ts:1097:16) (ZW0100)

J’espère que mon dongle n’est pas trop vieux…


J’arrête la pour ce soir, j’essaierai de le faire fonctionner dès que j’aurais un peu plus de temps.

Sinon c’est quand même un super boulot, et compte sur nous pour t’aider à peaufiner les détails :wink:

1 « J'aime »

Bonjour !

Pour commencer, merci d’avoir attaqué le dev de cette intégration zwave ! Je l’ai testé ce soir mais je n’ai pas réussi à la faire fonctionner.

Mon contexte :

  • Je suis sur une infra docker hébergée sur un Synology
  • J’ai home assistant qui tourne en prod avec Z-Wave JS UI de configuré

Ce que j’ai fais :

  • J’ai installé la version de test rpochet/gladys-zwave-js-ui:dev
  • j’ai configuré l’intégration en cochant la case : « ZwaveJS UI externe » comme j’en ai déjà un
  • j’ai indiqué les informations de connexion à mon mqtt. Je n’ai pas saisi de login/password car il n’y en a pas.

Je pensais que tout allait bien car j’ai eu un message indiquant que Zwave JS UI est lancé et les logos gladysn mqtt et zwavejs sont tous avec une coche verte en bas de l’écran de configuration.

Cependant quand je suis allé dans le partie « Découverte Zwave » ca a tourné en rond puis rien.

Est-ce que dans mon cas j’ai bien fais d’utiliser ZwaveJS UI externe ?

Pour information, j’ai tenté de modifier le périphérique USB, et j’ai eu cette erreur :

2023-04-06T09:52:19+0200 <error> index.js:16 (process.<anonymous>) Error: Command failed: sh ./server/services/zwave-js-ui/docker/gladys-zwave-js-ui-zwave-js-ui-env.sh /var/lib/gladysassistant gladys "8xq40A9xvDtxjsdUmJHZ" /dev/ttyUSB1 "8898addcfd8030d9a98c324fc30d9bf9" "5382adb3164e66f40bf6e56be47bc156" "2538700facb776db830721887a0be8f4" "4d3753aae63087ed7b32680c71f914df"
sh: can't open './server/services/zwave-js-ui/docker/gladys-zwave-js-ui-zwave-js-ui-env.sh': No such file or directory

    at ChildProcess.exithandler (node:child_process:419:12)
    at ChildProcess.emit (node:events:513:28)
    at maybeClose (node:internal/child_process:1091:16)
    at Socket.<anonymous> (node:internal/child_process:449:11)
    at Socket.emit (node:events:513:28)
    at Pipe.<anonymous> (node:net:322:12) {
  code: 2,
  killed: false,
  signal: null,
  cmd: 'sh ./server/services/zwave-js-ui/docker/gladys-zwave-js-ui-zwave-js-ui-env.sh /var/lib/gladysassistant gladys "8xq40A9xvDtxjsdUmJHZ" /dev/ttyUSB1 "8898addcfd8030d9a98c324fc30d9bf9" "5382adb3164e66f40bf6e56be47bc156" "2538700facb776db830721887a0be8f4" "4d3753aae63087ed7b32680c71f914df"'
}

J’ai repris l’image tel que sur le github, est-ce mieux comme cela?

image

Un jour, j’ai eu un soucis de compatibilité suite à une mise à jour de ZWave JS UI, a voir si par exemple on fige une version de ZWave JS UI ou une autre idée.

Oui mais je ne supportais le cas « pas de mot de passe », j’ai corrigé.

Probleme de chemin, corrigé

1 « J'aime »

Je continue dans ma lancée.

J’ai donc réussi à connecter mon dongle, sans trop de problème finalement, il fallait « juste » choisir le bon port USB :smiley:

Je vois donc des devices dans l’onglet découverte, mais je suis perplexe :

1er cas (noeud 4) :

  • je ne suis pas certain que le « noeud mort » soit un bon wording
  • le nom est « mort », mais il semblerait que l’on puisse tout de même le « connecter dans Gladys »
  • sur cette carte, le lien est propre, avec l’indicateur de lien externe

2nd cas (noeud 1) :

  • je peux correctement ajouter mon device dans Gladys
  • même s’il n’a pas de feature
  • j’ai donc un device inutile dans Gladys
  • s’il a déjà été ajouté, je ne le sais pas dans l’onglet découverte
  • sur cette carte, le lien est moins propre que dans la 1ère, l’indicateur de lien externe n’est pas affiché
EDIT: je vois bien mon dimmer

Pour information, ce device sans feature est un switch dimmer.
D’après le code, j’aurai cru entrer dans

  // dimmer binary
  {
    CATEGORY: DEVICE_FEATURE_CATEGORIES.SWITCH,
    COMMAND_CLASSES: [COMMAND_CLASSES.COMMAND_CLASS_SWITCH_MULTILEVEL],
    PROPERTIES: [PROPERTIES.TARGET_VALUE],
    TYPE: DEVICE_FEATURE_TYPES.SWITCH.DIMMER,
  },

Voici la valeur qui devrais matcher (d’après mes yeux de débutants)

{
      "id": "11-38-0-targetValue",
      "nodeId": 11,
      "toUpdate": false,
      "commandClass": 38,
      "commandClassName": "Multilevel Switch",
      "endpoint": 0,
      "property": "targetValue",
      "propertyName": "targetValue",
      "type": "number",
      "readable": true,
      "writeable": true,
      "label": "Target value",
      "stateless": false,
      "commandClassVersion": 1,
      "min": 0,
      "max": 99,
      "list": false,
      "value": 0,
      "lastUpdate": 1680778550437,
      "newValue": 0
    }

(je ne suis pas certain de fournir les bonnes indications pour le debug)

Mort ou Dead c’est le wording ZWave, après tout est une question de timing car si le device est réveillé, il deviendra reconnu car au moins un message reçu de ZWave JS UI. Après, j’ai repris les messages de l’ancienne intégration zwave et il serait peut-être plus judicieux de définir 2 messages (car dead ne devrait se produire que rarement)

C’est ton controlleur Zwave, en effet il n’a pas de feature et pourrait donc être « exclu » de la liste.

Le device que tu indique switch dimmer c’est le noeud 11 et pas le noeud 1.

Merci. Est-ce que le topic prefix fonctionne ? Je me pose la question car si je le saisi, que je quitte la page et que je reviens, il disparait.

Avec la nouvelle version, je ne vois toujours pas mes périphériques. Ca tourne en boucle. A suivre :wink:

Et pour information, mon container mqtt m’indique bien qu’un client se connecte.

J’ai déployé une nouvelle version, si tu sais mettre à jour?

J’ai pu testé ce soir. LA nouvelle version a réglée le problème du prefix. Par contre je viens de voir que j’ai le même souci avec le bouton « Topic avec localisation » : Si je change l’état, que je quitte la page et que je revient le bouton retourne dans l’état initial.

La découverte tourne toujours en rond et je ne vois aucun périphérique arriver. Côté log, il y a du mieux, en plus d’être connecté à mqtt je vois un message indiquant qu’il y a un scan en cours. Mais il ne trouve rien pour le moment.

Bonsoir,

As-tu un explorateur MQTT, genre MQTT Explorer? Tu devrais voir un message dans la topic: <zwave-js-ui_prefix>/_CLIENTS/ZWAVE_GATEWAY-Gladys/api/getNodes

image

Sinon peux-tu m’envoyer les logs de ton instance Gladys?

Bonsoir,

voici ce que j’ai dans MQTT Explorer :

Aucun souci pour te donner les logs Gladys, mais il faudrait me dire comment je peux les récupérer via docker.

Bonjour,

Tu n’as rien dans la topic getNodes ? Est-ce ton ZWave JS de production ou l’installation a été faite par Gladys? J’ai eu un soucis il y a 2 jours suite à une mise a jour de ZWave JS, plus rien ne fonctionnait chez moi, j’ai du refaire une mise a jour pour que tout revienne dans l’ordre…

Pour les logs Gladys, tu peux en ligne de commande faire (selon le nom de tes containers):

$ docker logs gladys > gladys.log
$ docker logs gladys-zwave-js-ui-zwave-js-ui > gladys-zwave-js-ui-zwave-js-ui.log

C’est mon zwavejs de prod. Je n’ai rien dans le topic que tu m’indiques.
Je t’envoie les logs ce soir ou a midi si j’ai un peu de temps.

Salut,

J’ai redémarré le container Glayds et j’ai purger les logs pour te donner quelque chose d’un peu près propre :

2023-04-23T20:50:36+0000 enedis.sync.js:57 (EnedisHandler.sync) Enedis: Syncing account
2023-04-23T20:50:36+0000 enedis.sync.js:61 (EnedisHandler.sync) Enedis: Found 0 usage points to sync
2023-04-23T20:51:00+0000 scene.checkCalendarTriggers.js:24 (SceneManager.checkCalendarTriggers) Checking calendar triggers at Sun, 23 Apr 2023 20:51:00 GMT
2023-04-23T20:52:00+0000 scene.checkCalendarTriggers.js:24 (SceneManager.checkCalendarTriggers) Checking calendar triggers at Sun, 23 Apr 2023 20:52:00 GMT
2023-04-23T20:53:00+0000 scene.checkCalendarTriggers.js:24 (SceneManager.checkCalendarTriggers) Checking calendar triggers at Sun, 23 Apr 2023 20:53:00 GMT
2023-04-23T20:53:06+0000 connect.js:33 (ZwaveJSUIManager.connect) ZwaveJS UI USB dongle assumed to be attached
2023-04-23T20:53:06+0000 connect.js:33 (ZwaveJSUIManager.connect) ZwaveJS UI USB dongle assumed to be attached
2023-04-23T20:53:06+0000 connect.js:152 (MqttClient.) Connected to MQTT container
2023-04-23T20:53:06+0000 connect.js:154 (MqttClient.) Listening to MQTT topics zwave-js-ui/#
2023-04-23T20:53:06+0000 connect.js:152 (MqttClient.) Connected to MQTT container
2023-04-23T20:53:06+0000 connect.js:154 (MqttClient.) Listening to MQTT topics zwave/#
2023-04-23T20:53:06+0000 handleMqttMessage.js:81 (ZwaveJSUIManager.handleMqttMessage) ZwaveJSUI scan in progress. Bypass message.

On voit qu’il se connecte au MQTT et qu’il écoute sur le topic zwave. C’est le topic que j’ai indiqué dans la conf. Cependant, je n’ai aucun idée de pourquoi il écoute sur zwave-js-ui.

Les logs tournent en boucle sur la dernière ligne, il scan mais ne trouve rien.

Côté zwaveJS UI, j’ai tellement de chose que c’est très compliqué à exploité sans trop savoir ce que je cherche.

C’est déjà étrange qu’il écoute sur 2 topics, zwave et zwave-js-ui…

Par contre, un message est bien envoyé sur zwave/_CLIENTS/ZWAVE_GATEWAY-Gladys/api/getNodes/set ce qui est censé déclenché une réponse dans la topic zwave/_CLIENTS/ZWAVE_GATEWAY-Gladys/api/getNodes. Je vais voir si c’est pas une configuration dans ZWave JS UI