Zigbee2mqtt : Image docker de test basée Gladys v4

Bonsoir à tous. Après de longues semaines d’attente :drum: :drum: :drum: , le travail sur Zigbee2Mqtt est enfin stable (et testé à 100% :rocket:).

Vous pouvez donc télécharger l’image et la tester sur votre Rapsberry Pi (ce sera le port 1080).
Tous les retours sont les bienvenus (surtout sur des appareils qui ne fonctionneraient pas ET sur l’expérience utilisateur).

Un grand merci à @Reno pour le code de base :computer: et @lmilcent pour les 150 images testées :sweat_smile:

docker run -d \
--log-opt max-size=10m \
--restart=always \
--privileged \
--network=host \
--name gladys-dev-zigbee2mqtt \
-e NODE_ENV=production \
-e SERVER_PORT=1080 \
-e TZ=Europe/Paris \
-e SQLITE_FILE_PATH=/var/lib/gladysassistant/gladys-zigbee2mqtt.db \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/gladysassistant:/var/lib/gladysassistant \
-v /dev:/dev \
-v /run/udev:/run/udev:ro \
cicoub13/gladys:dev-zigbee2mqtt

Désolé @VonOx mais je bosserai sur l’ajout d’un serveur MQTT déjà configuré après.

Je clean un peu le code et la PR devrait arriver en fin de semaine.

5 « J'aime »

Pas de soucis, good job :+1:

Hello, merci pour le travail de tout le monde !
J’essaye de tester ça ce soir et je te fais un retour dès que possible :grin:

Rebonsoir, petit retour rapide, côté MQTT je vois bien les connexion se faire.
Côté Z2M je vois bien les actions de mes périphs (deux switchs WXKG01LM Aquara ainsi qu’un cube MFKZQ01LM Aquara).

Par contre côté Gladys la remontée des infos ne se fait pas sur le dashboard. Dans les logs on dirait que l’association périphérique physique vers périphérique Gladys ne se fait pas comme il faut pour les trois devices :

2021-03-10T21:17:21+0100 <info> installZ2mContainer.js:25 (Zigbee2mqttManager.installZ2mContainer) Zigbee2mqtt is being installed as Docker container...
2021-03-10T21:17:21+0100 <info> installZ2mContainer.js:26 (Zigbee2mqttManager.installZ2mContainer) Pulling koenkk/zigbee2mqtt:latest image...
2021-03-10T21:17:50+0100 <info> installZ2mContainer.js:29 (Zigbee2mqttManager.installZ2mContainer) Preparing Zigbee2mqtt environment...
2021-03-10T21:17:50+0100 <info> installZ2mContainer.js:38 (Zigbee2mqttManager.installZ2mContainer) Configuration of Device /dev/ttyACM0
2021-03-10T21:17:50+0100 <info> installZ2mContainer.js:41 (Zigbee2mqttManager.installZ2mContainer) Creation of container...
2021-03-10T21:17:52+0100 <info> installZ2mContainer.js:44 (Zigbee2mqttManager.installZ2mContainer) Zigbee2mqtt successfully installed as Docker container
2021-03-10T21:17:52+0100 <info> installZ2mContainer.js:57 (Zigbee2mqttManager.installZ2mContainer) Zigbee2mqtt is starting...
2021-03-10T21:17:58+0100 <info> installZ2mContainer.js:69 (Zigbee2mqttManager.installZ2mContainer) Zigbee2mqtt successfully started
2021-03-10T21:17:58+0100 <info> connect.js:23 (MqttClient.<anonymous>) Connected to MQTT container mqtt://localhost:1884
2021-03-10T21:17:58+0100 <info> subscribe.js:12 (Zigbee2mqttManager.subscribe) Subscribing to MQTT topic zigbee2mqtt/#
2021-03-10T21:20:15+0100 <warn> handleMqttMessage.js:83 (Zigbee2mqttManager.handleMqttMessage) Zigbee2mqtt topic zigbee2mqtt/bridge/config/devices/get empty message.
2021-03-10T21:20:21+0100 <warn> handleMqttMessage.js:104 (Zigbee2mqttManager.handleMqttMessage) Zigbee2mqtt device 0x00158d00027bb168 not configured in Gladys.
2021-03-10T21:20:23+0100 <warn> handleMqttMessage.js:104 (Zigbee2mqttManager.handleMqttMessage) Zigbee2mqtt device 0x00158d00027bb168 not configured in Gladys.
2021-03-10T21:20:25+0100 <warn> handleMqttMessage.js:83 (Zigbee2mqttManager.handleMqttMessage) Zigbee2mqtt topic zigbee2mqtt/bridge/config/devices/get empty message.
2021-03-10T21:22:50+0100 <warn> handleMqttMessage.js:83 (Zigbee2mqttManager.handleMqttMessage) Zigbee2mqtt topic zigbee2mqtt/bridge/config/devices/get empty message.
2021-03-10T21:22:51+0100 <warn> handleMqttMessage.js:83 (Zigbee2mqttManager.handleMqttMessage) Zigbee2mqtt topic zigbee2mqtt/bridge/config/devices/get empty message.
2021-03-10T21:22:54+0100 <warn> handleMqttMessage.js:83 (Zigbee2mqttManager.handleMqttMessage) Zigbee2mqtt topic zigbee2mqtt/bridge/config/devices/get empty message.
2021-03-10T21:22:57+0100 <warn> handleMqttMessage.js:104 (Zigbee2mqttManager.handleMqttMessage) Zigbee2mqtt device 0x00158d0003748a21 not configured in Gladys.
2021-03-10T21:23:00+0100 <warn> handleMqttMessage.js:83 (Zigbee2mqttManager.handleMqttMessage) Zigbee2mqtt topic zigbee2mqtt/bridge/config/devices/get empty message.
2021-03-10T21:23:47+0100 <warn> handleMqttMessage.js:104 (Zigbee2mqttManager.handleMqttMessage) Zigbee2mqtt device 0x00158d0003748a46 not configured in Gladys.
2021-03-10T21:23:48+0100 <warn> handleMqttMessage.js:83 (Zigbee2mqttManager.handleMqttMessage) Zigbee2mqtt topic zigbee2mqtt/bridge/config/devices/get empty message.
2021-03-10T21:27:39+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device 0x00158d00027bb168, feature action not configured in Gladys.
2021-03-10T21:27:39+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device 0x00158d00027bb168, feature battery not configured in Gladys.
2021-03-10T21:27:39+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device 0x00158d00027bb168, feature linkquality not configured in Gladys.
2021-03-10T21:27:39+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device 0x00158d00027bb168, feature voltage not configured in Gladys.
2021-03-10T21:28:43+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device 0x00158d0003748a21, feature action not configured in Gladys.
2021-03-10T21:28:43+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device 0x00158d0003748a21, feature battery not configured in Gladys.
2021-03-10T21:28:43+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device 0x00158d0003748a21, feature linkquality not configured in Gladys.
2021-03-10T21:28:43+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device 0x00158d0003748a21, feature voltage not configured in Gladys.
2021-03-10T21:28:43+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device 0x00158d0003748a21, feature battery not configured in Gladys.
2021-03-10T21:28:43+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device 0x00158d0003748a21, feature click not configured in Gladys.
2021-03-10T21:28:43+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device 0x00158d0003748a21, feature linkquality not configured in Gladys.
2021-03-10T21:28:43+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device 0x00158d0003748a21, feature voltage not configured in Gladys.
2021-03-10T21:28:43+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device 0x00158d0003748a46, feature action not configured in Gladys.
2021-03-10T21:28:43+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device 0x00158d0003748a46, feature battery not configured in Gladys.
2021-03-10T21:28:43+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device 0x00158d0003748a46, feature linkquality not configured in Gladys.
2021-03-10T21:28:43+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device 0x00158d0003748a46, feature voltage not configured in Gladys.
2021-03-10T21:28:43+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device 0x00158d0003748a46, feature battery not configured in Gladys.
2021-03-10T21:28:43+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt device 0x00158d0003748a46, feature click not configured in Gladys.

Je précise que les 3 périphériques ont pour seule fonctionnalité Fonctionnalités “Commutateur”.

Joli boulot :clap::clap:

Avant de faire ta PR, pense à faire une relecture entière du code en comparant avec le master Gladys:

  • Est-ce que les fichiers modifiés sont bien des fichiers liés à l’intégration zigbee2mqtt et pas des fichiers qui n’ont pas de liens ?
  • Est-ce que des dépendances ont été ajoutées alors qu’elles ne sont pas nécessaires ?

Ensuite on passera à la review technique de la PR (je suis preneur de toute aide la dessus notamment, tout le monde est le bienvenue pour relire le code)

En parallèle, tous les retours fonctionnelles possibles sont les bienvenues aussi, pour qu’on soit certains que la PR fonctionne comme prévu !

J’espère que ça partira vite dans Gladys :blush: encore bravo pour le travail effectué !

1 « J'aime »

J’ai mis à jour l’image avec les bonnes features pour ces deux périphériques.

1 « J'aime »

Effectivement problème réglé, tout fonctionne correctement pour ces deux types de périphériques, la remontée sur le Dashboard se fait bien.
Correction ultra rapide bravo :slight_smile:

Plus qu’à tester un fonctionnement avec les scènes maintenant :wink:

1 « J'aime »

Bonsoir,
Cela fait quelque temps que je tente de lancer Gladys édition Zigbee via docker-compose
plutôt que via docker simple.

Il y a cependant deux problèmes avec le conteneur MQTT qui est créé et lancé par le Service Z2M.

Le premier problème semble être un problème de droits d’accès linux, le fichier mosquitto.conf ne parvient pas à se créer dans le dossier MQTT. Le dossier des fichiers de configuration de MQTT ne semble pas être accessible par le conteneur.

Le deuxième problème est un problème lié au chemin des fichiers de persistance de Z2M et de MQTT. Lors de la création de l’image il est possible de changer le chemin de persistance pour ne pas l’avoir dans “/var/lib/gladys…” le problème c’est que les dossiers mqtt et z2m ne suivent pas le changement et s’enregistre toujours dans le dossier “/var/lib/gladysassistant/”.

Sur l’image de Gladys officiel, le conteneur Mqtt n’a pas ces deux problèmes, je n’ai pas regardé encore la différence entre les deux gestions de conteneurs mais il serait intéressant de garder la même façon de créer et lancer le conteneur mosquitto pour Mqtt.

Ci joint le docker-compose en question si vous avez le temps d’essayer de
reproduire le problème :

version: "2.4"

services:
  gladys-z2m:
    image: cicoub13/gladys:dev-zigbee2mqtt
    container_name: Gladys_Z2M_DEV
    restart: always
    privileged: true
    logging:
      options:
        max-size: "10m"
    network_mode: host
    environment:
      - "TZ=${TZ}"
      - "NODE_ENV=production"
      - "SERVER_PORT=1080"
      - "SQLITE_FILE_PATH=/var/lib/gladys-z2m/gladys-z2m-production.db"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
      - "/dev:/dev"
      - "/run/udev:/run/udev:ro"
      - "./data/gladys_zigbee:/var/lib/gladys-z2m"
    labels:
      - "com.centurylinklabs.watchtower.enable=true"

Edit: j’ai essayé via l’image officiel de Gladys, ainsi que par l’os HypriotOS et c’est le même problème.

Effectivement je suis d’accord c’est un problème que ces dossiers soient en dur, j’ai eu le même problème en essayant de tester ces intégrations sur une instance ou Gladys existe déjà: c’est impossible :confused:

C’est exactement la même chose avec le container MQTT proposé par Gladys (le code en est inspiré).
Mais je regarde :slight_smile:

Je sais c’est un problème sur les deux :slight_smile:

Une idée comme ça ,peut être qu’on devrai recupérer la variable

SQLITE_FILE_PATH

Et stocker la conf au même endroit, plutôt que de tout mettre en dur

2 « J'aime »

Hello à tous !

Pour information, suite aux changements de @cicoub13 sur la PR, j’ai effectué une review technique et fonctionnelle de la PR.

Le compte rendu de ma review est disponible sur GitHub: Zigbee2mqtt service by cicoub13 · Pull Request #1098 · GladysAssistant/Gladys · GitHub

Edit: J’attend aussi le fix ici:

Comme dit dans la PR :

  • Gestion du SQLITE_FILE_PATH :white_check_mark:
  • Fix des valeurs click pour les boutons :white_check_mark:

Il me reste la petite vidéo de démo et la documentation dans gladys-website :memo:

7 « J'aime »

Hello, super travail, de mon côté juste une remarque, il semblerait que certains mapping ait sauté pour les deux seuls types d’appareils que j’ai (deux switchs WXKG01LM Aquara ainsi qu’un cube MFKZQ01LM Aquara).

Le problème avait été corrigé mais il semble que ça ne soit plus le cas.
Sinon je pense que les points évoqués plus haut sont bien corrigés, en tout cas je n’ai pas vu d’autres problèmes :slight_smile:

Hello @Albenss

Je viens de corriger le type de tes deux devices. Est-ce que tu peux mettre à jour l’image et tester à nouveau ?
Actuellement, les valeurs single, double, hold sont transformées en valeurs numériques.

Les autres sont traitées comme des chaînes de caractères : triple, quadruple, release, many et toutes celles de ton cube shake, wakeup, fall, tap, slide, flip180, flip90, rotate_left, rotate_right.

Tu peux poster/voir le thread suivant : Scène avec un bouton (double ou simple clic)

Alors comme test j’ai commencé par supprimé le container Gladys (mais pas Z2M et MQTT) pour le recréer après avoir pull la nouvelle image, j’ai alors observé le même comportement, je me suis dit que c’était surement un problème venant de la BD.

J’ai donc recréé le tout avec la persistance dans un nouveau dossier, malheureusement la création automatique du conteneur mqtt ne fonctionne pas, il semble qu’il y ait encore un problème de droit d’accès au dossier, ou alors mqtt ne sais pas ou trouver son fichier de config, dans le log de MQTT j’ai ceci :
1616604311: Error: Unable to open config file /mosquitto/config/mosquitto.conf.

Je pense qu’il reste encore des endroits ou le path est en dur. En effet quand je change le dossier de persistance pour /var/lib/z2m-test quand on active le service zeegbee2mqtt un nouveau dossier se créé ici /var/lib/gladysassistant.

J’ai donc un doublon de dossier qui est créé par le service :

$ ls -al gladysassistant/zigbee2mqtt/
mqtt/ z2m/  

$ ls -al z2m-test/zigbee2mqtt/
mqtt/ z2m/

EDIT : par contre c’est bien dans le nouveau dossier de persistance /var/lib/z2m-test/zigbee2mqtt/mqtt/ que les fichiers de configs de mosquitto se trouvent et pas dans le dossier doublon dans le path /var/lib/gladysassistant donc l’ancien path est probablement en dur dans mqtt

Oui pardon. Il faut que tu supprimes les devices pour qu’ils aient les bons types de feature dans la base.

Pour les paths et droits, est-ce que tu as supprimé tous les containers depuis le 22 mars au soir ? Sinon, les containers Z2M et MQTT sont toujours sur les anciens paths.
Le fix que j’ai fait modifie les paths à la création, mais ne gère pas la modification post création.

Yes j’avais bien supprimé tous les containers, je vais réessayer d’ici 30 min après avoir supprimé les images également pour tester.

1 « J'aime »

Bon toujours le même problème malheureusement…