Zigbee2mqtt docker ne se lance pas correctement

Aujourd’hui j’ai installé mon premier interrupteur zigbee et j’ai passé ma journée à ‹ jouer › avec la configuration de zigbee2mqtt en suivant les tutos, en configuration manuelle, avec docker, docker-compose et portainer.
J’ai fait plein de configurations et j’ai l’impression qu’il y a des reliquats d’installation qui empêchent zigbee2mqtt de tourner correctement.
Le container a été créé et je le vois dans portainer qu’il a été lancé mais quand je regarde dans le log, je vois l’erreur suivante:

Zigbee2MQTT:info 2022-06-07 00:31:31: Logging to console and directory: ‹ /app/data/log/2022-06-07.00-31-31 › filename: log.txt,
Zigbee2MQTT:info 2022-06-07 00:31:31: Starting Zigbee2MQTT version 1.25.2 (commit #3c5854f),
Zigbee2MQTT:info 2022-06-07 00:31:31: Starting zigbee-herdsman (0.14.34),
Zigbee2MQTT:error 2022-06-07 00:32:03: Error while starting zigbee-herdsman,
Zigbee2MQTT:error 2022-06-07 00:32:03: Failed to start zigbee,
Zigbee2MQTT:error 2022-06-07 00:32:03: Check Zigbee2MQTT fails to start | Zigbee2MQTT for possible solutions,
Zigbee2MQTT:error 2022-06-07 00:32:03: Exiting…,
Zigbee2MQTT:error 2022-06-07 00:32:03: Error: SRSP - SYS - getExtAddr after 6000ms,
at Timeout._onTimeout (/app/node_modules/zigbee-herdsman/src/utils/waitress.ts:64:35),
at listOnTimeout (node:internal/timers:559:17),
at processTimers (node:internal/timers:502:7),
Using ‹ /app/data › as data directory,
Zigbee2MQTT:info 2022-06-07 00:32:14: Logging to console and directory: ‹ /app/data/log/2022-06-07.00-32-14 › filename: log.txt,
Zigbee2MQTT:info 2022-06-07 00:32:14: Starting Zigbee2MQTT version 1.25.2 (commit #3c5854f),
Zigbee2MQTT:info 2022-06-07 00:32:14: Starting zigbee-herdsman (0.14.34)

De ce que j’ai pu comprendre, c’est l’adresse de mon port qui n’est pas correcte.
La commande « ls -l /dev/serial/by-id » retourne comme port USB0:
lrwxrwxrwx 1 root root 13 Jun 6 22:25 usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_5c0159ca8d12ec11ac6221c7bd930c07-if00-port0 → …/…/ttyUSB0

Une idée de ce qui pourrait empêcher zigbee2mqtt de démarrer correctement ?
Merci d’avance.

Salut

Tout d’abord est-ce que tu n’avais pas configuré l’intégration ZHA des fois? Si c’est le cas désactive la ou désinstalle la, si le dongle est déjà utilisé z2m ne pourra pas y accéder.

Deuxièmement as-tu suivi le lien fourni dans les logs de z2m? L’erreur que tu as est la première dans la liste. Zigbee2MQTT fails to start | Zigbee2MQTT
Il peut y avoir quelques subtilités en fonction du dongle utilisé.

Dernière chose, regarde ceci sur la configuration du dongle: Adapter settings | Zigbee2MQTT

Where possible you should use the /dev/serial/by-id/ path of the stick, instead of /dev/tty*. This is because the /dev/tty* path can change - for example /dev/ttyACM0 may become /dev/ttyACM1 and then later back to /dev/ttyACM0. The /dev/serial/by-id/ path won’t change.

Hello Anicet,
Oui, j’avais déjà installé ZHA. Je l’ai supprimé et tenté de relancer zigbee2mqtt via portainer et je reçois un autre message d’erreur (je ne copie que la fin car ça boucle):

Zigbee2MQTT:info  2022-06-07 18:27:48: Logging to console and directory: '/app/data/log/2022-06-07.18-27-47' filename: log.txt,
Zigbee2MQTT:info  2022-06-07 18:27:48: Starting Zigbee2MQTT version 1.25.2 (commit #3c5854f),
Zigbee2MQTT:info  2022-06-07 18:27:48: Starting zigbee-herdsman (0.14.34),
Zigbee2MQTT:info  2022-06-07 18:27:50: zigbee-herdsman started (resumed),
Zigbee2MQTT:info  2022-06-07 18:27:50: Coordinator firmware version: '{"meta":{"maintrel":1,"majorrel":2,"minorrel":7,"product":1,"revision":20210708,"transportrev":2},"type":"zStack3x0"}',
Zigbee2MQTT:info  2022-06-07 18:27:50: Currently 0 devices are joined:,
Zigbee2MQTT:warn  2022-06-07 18:27:50: `permit_join` set to  `true` in configuration.yaml.,
Zigbee2MQTT:warn  2022-06-07 18:27:50: Allowing new devices to join.,
Zigbee2MQTT:warn  2022-06-07 18:27:50: Set `permit_join` to `false` once you joined all devices.,
Zigbee2MQTT:info  2022-06-07 18:27:50: Zigbee: allowing new devices to join.,
Zigbee2MQTT:info  2022-06-07 18:27:50: Connecting to MQTT server at mqtt://192.168.1.40,
Zigbee2MQTT:error 2022-06-07 18:27:50: MQTT failed to connect: connect ECONNREFUSED 192.168.1.40:1883,
Zigbee2MQTT:error 2022-06-07 18:27:50: Exiting...,
Zigbee2MQTT:info  2022-06-07 18:27:50: Stopping zigbee-herdsman...,
Zigbee2MQTT:info  2022-06-07 18:28:02: Stopped zigbee-herdsman,
Using '/app/data' as data directory,
Zigbee2MQTT:info  2022-06-07 18:28:18: Logging to console and directory: '/app/data/log/2022-06-07.18-28-17' filename: log.txt,
Zigbee2MQTT:info  2022-06-07 18:28:18: Starting Zigbee2MQTT version 1.25.2 (commit #3c5854f),
Zigbee2MQTT:info  2022-06-07 18:28:18: Starting zigbee-herdsman (0.14.34),
Zigbee2MQTT:info  2022-06-07 18:28:20: zigbee-herdsman started (resumed),
Zigbee2MQTT:info  2022-06-07 18:28:20: Coordinator firmware version: '{"meta":{"maintrel":1,"majorrel":2,"minorrel":7,"product":1,"revision":20210708,"transportrev":2},"type":"zStack3x0"}',
Zigbee2MQTT:info  2022-06-07 18:28:20: Currently 0 devices are joined:,
Zigbee2MQTT:warn  2022-06-07 18:28:20: `permit_join` set to  `true` in configuration.yaml.,
Zigbee2MQTT:warn  2022-06-07 18:28:20: Allowing new devices to join.,
Zigbee2MQTT:warn  2022-06-07 18:28:20: Set `permit_join` to `false` once you joined all devices.,
Zigbee2MQTT:info  2022-06-07 18:28:20: Zigbee: allowing new devices to join.,
Zigbee2MQTT:info  2022-06-07 18:28:20: Connecting to MQTT server at mqtt://192.168.1.40,
Zigbee2MQTT:error 2022-06-07 18:28:20: MQTT failed to connect: connect ECONNREFUSED 192.168.1.40:1883,
Zigbee2MQTT:error 2022-06-07 18:28:20: Exiting...,
Zigbee2MQTT:info  2022-06-07 18:28:20: Stopping zigbee-herdsman...,
Zigbee2MQTT:info  2022-06-07 18:28:32: Stopped zigbee-herdsman,

J’ai repéré le message ‹ ECONNREFUSED ›. Des recherches sur le net m’indiquent que c’est peut-être une problème firewall.
Je vais donc étudier cette piste.

J’ai bien suivi le lien indiqué dans les logs de z2m et je n’ai rien trouvé d’anormal mais peut-être quelque chose m’échappe.
J’ai utilisé /dev/serial/by-id mais après avoir relancé le container, je reçois le message
‹ cannot open /dev/serial/by-id/10c4:ea60 ›
Par contre, je ne suis pas sûr de l’id que je dois fournir. J’ai pris le résultat de la commande lsusb -s4 (chez moi c’est le 4ième device) en copiant ce qu’il y a derrière ID (10c4:ea60)
Bus 001 Device 004: ID 10c4:ea60 Silicon Labs CP210x UART Bridge

Je poursuis mes recherches
A+

Salut,

faudra voir sur le forum de support de Zigbee2MQTT, t’aura surement plus de chance d’avoir de l’aide.

Salut,

Pense à utiliser les balises de mise en forme pour améliorer la lisibilité

La clé ça semble bon, mais le MQTT moins. Mapping du port 1883 manquant ?

Le soucie viens clairement de la liaison avec mqtt, tu la aussi installer en docker ?
Pour tester ton mqtt utilise part exemple mqtt explorer et tu pourra voir si tu arrive a te connecter.
et vérifie aussi ton fichier de configuration de Z2M qu’il a les bon username et password pour mqtt.

Visiblement ZHA bloquait z2m et maintenant même si l’id est bizarre le dongle est bien reconnu:

Zigbee2MQTT:info  2022-06-07 18:28:18: Starting zigbee-herdsman (0.14.34),
Zigbee2MQTT:info  2022-06-07 18:28:20: zigbee-herdsman started (resumed),
Zigbee2MQTT:info  2022-06-07 18:28:20: Coordinator firmware version: '{"meta":{"maintrel":1,"majorrel":2,"minorrel":7,"product":1,"revision":20210708,"transportrev":2},"type":"zStack3x0"}',
Zigbee2MQTT:info  2022-06-07 18:28:20: Currently 0 devices are joined:,

Comme dit au dessus par Pulpy et keyblack666 le souci se situe dans la liaison entre z2m et le broker. Je penche pour un problème d’ip, tu dis que z2m est sur un container Docker, qu’en est-il du broker? S’il est aussi sur Docker alors les deux containers doivent être sur le même réseau (réseau bridge) et dans z2m tu dois renseigner une ip du réseau en question, et non l’ip externe du serveur.

J’ai rédigé un article sur ma conf des container pour faire tourner MQTT, je mets le lien ici pour ce qui concerne le réseau si ça peut t’aider: HomeAssistant et MQTT avec Docker | aniketos

Bonjour,
En fait, j’avais installé le broker mqtt plusieurs fois. Une première fois il y a quelques jours avec sudo apt-get install mosquitto et en le lançant avec systemctl start mosquitto et une autre fois via docker. Comme je l’ai installé, configuré, déplacé, effacé, bidouillé, … dans tous les sens je ne savais plus où j’en étais dans mes configurations.
J’ai donc supprimé le docker mqtt (via portainer) et réinstallé proprement selon la procédure ‹ classique › (apt-get install) et là il a démarré sans erreur. Pour faire au plus simple, je l’ai configuré sans user/password (c’est dèjà assez compliqué sans ajouter la couche sécurité).
C’était donc bien un problème avec le broker mqtt.
J’ai installé mqtt-explorer sous Windows et après avoir fait connaissance avec l’application, j’ai réussi à envoyer et recevoir des messages mqtt. Je pense donc que ma configuration Mosquitto est en ordre maintenant.
Pour être sûr de ne pas mélanger différentes version, j’ai désinstallé zigbee2mqtt complètement et je l’ai réinstallé via docker.
J’ai donc une configuration hybride avec zigbee2mqtt qui tourne dans un conteneur et mqtt comme simple service.
@anicet, ton tuto m’a bien aidé pour intégrer mqtt dans homeassistant.
J’ai vu dans le fichier de config de zigbee2mqtt que mon premier interrupteur a été ajouté dans la section device.
Je progresse donc doucement.
J’ai vu dans certains tuto, qu’il y avait une interface pour configurer Zigbee2mqtt accessible via l’urls 1921.168.1.40:8082. J’ai configuré l’adresse 8082 car je ne savais pas si les ports 8081 et 8012 étaient déjà utilisés.
Toujours est-il que cette url ne me donne rien.
Est-ce normal et en ai-je besoin ?

Je continue mes recherches.
Merci pour votre aide.

Bon ça avance.

Concernant le port 8082 je le précise dans l’article, c’est parce que j’utilise déjà les ports 8080 et 8081 pour d’autres conteneurs. J’expose donc le 8082 dans docker, mais il est routé vers le 8080 côté z2m. Essaye avec le 8080, s’il ne sert pas déjà (usuellement ce port sert pour les serveurs web) ça ne posera pas de problème. Par défaut z2m écoute sur le port 8080.

Pour que l’interface web soit accessible il faut que l’option frontend soit à true (dans le fichier /app/data/configuration.yaml) et que le parefeu de la machine laisse passer les requêtes sur le port exposé, vois de ce côté peut-être. Pense bien à relancer le container après les modifs du fichier.

Bonjour,
mon fichier de configuration de z2m contient bien la ligne ‹ front end: true ›.
J’ai relancé le conteneur docker après avoir ajouté cette instruction mais je vois que la configuration docker indique encore 8081. Il y a donc encore quelque chose que je ne contrôle pas complètement.
Pour être sûr que le firewall ne bloquait pas le port 8080, je l’ai désactivé complètement mais je n’arrive toujours pas à accéder à l’interface web de z2m.
Pour l’instant, je vais laisser ce problème de côté.
Je vais maintenant tenter de contrôler l’interrupteur zigbee que j’ai installé. Je passe donc maintenant à l’étape Nodered. Ca m’occupera déjà un petit moment.

À quel réseau est lié le conteneur?

Comment ça? Côté exposé ou côté conteneur? Tu peux faire une capture d’écran?

C’est dommage de s’arrêter là, t’es pas loin je pense.

Je ne compte pas abandonner mais me familiariser davantage avec les histoires de ports du conteneur, ports de ma clé zigbee, ports de chaque application et le lien qu’il y a entre toutes ces configurations.
Voici ma configuration z2m dans Portainer:

C’est cette ligne là qui nous intéresse:
port
Tu exposes le port 8081 sur l’hôte et il mène vers le port 8081 du conteneur.
Il faut qu’il mène vers le port 8080 comme ceci (quand tu édites la config):


Ici c’est le port 8082 mais peu importe. C’est celui que tu mets au bout de ton url quand tu veux te connecter (http://ip:port).

Pour le réseau tu es sur le bridge, c’est bon.

Je comprends ce qu’il faut faire mais où configures-tu la redirection de ce port ?
Je ne retrouve pas ‹ Manual network port publishing › dans mon conteneur de Portainer.

Quand tu es sur la page que tu as mis en capture tu cliques sur duplicate / edit tout en haut, tu le trouveras à peu près en milieu de page. Tu fais ta modif et ensuite tu cliques sur deploy container entre le milieu et le bas de la page, tu valides et normalement ça devrait rouler.

Ah OK. Il fallait le savoir.
En fait je vois que j’ai configuré le port 8081 au moment du lancement du conteneur .

image

Le port est maintenant correctement redirigé mais je n’ai toujours pas accès à la page de configuration de z2m via l’adresse 192.168.1.40:8080.

Voilà, je suis enfin arrivé à accéder à l’interface z2m.
Il fallait que j’ajoute le lignes « frontend: » et « port: 8080 » dans le fichier /app/data/configuration.yaml. Après avoir relancé le conteneur, j’accède à l’interface via l’adresse 192.168.1.40:8081.
Bon pour l’instant, je n’ai qu’un interrupteur Zigbee donc mon graphique de maillage est ridicule mais ça me permettra d’y voir plus clair au fur et à mesure que j’ajouterai des appareils connectés.
Comme j’avais prévu, l’étape suivante consistera à utiliser Nodered.
Merci pour votre aide (et spécialement à Anicet)

Alors là… Perso je n’ai pas ce paramètre dans mon fichier de config et ça fonctionne. :person_shrugging:

Content d’avoir pu t’aider, et bonne continuation avec NR.

Bon, là j’ai progressé dans mon installation. J’ai tout réinstallé avec docker compose (mqtt, ziigbee2mqtt et homeassistant), j’ai mis à jour ma clé sonoff zigbeen 3.0 avec la dernière version du firmware et ça semble tourner nickel (pas d’erreur dans les logs en tous cas). Entretemps j’ai installé quelques interrupteurs zigbee et un capteur d’ouverture de porte Aqara. L’intégration de MQTT dans HA se fait sans problèmes et les 5 appareils ont bien été détectés.
Par contre je n’arrive pas à faire une intégration de Zigbee Automation. Lorsque je fournis le ‹ chemin du périphérique série › (/dev/ttyUSB0), il génère l’erreur ‹ echec de connexion ›.
Dans l’interface web de zigbee2mqtt, je vois bien tous mes appareils mais pas moyen de les piloter. Les commandes d’allumage ou d’extension des interrupteurs ne répondent pas alors qu’elles fonctionnaient avant que je n’aie tout réinstallé.
Il y a donc encore quelque chose qui cloche.
Un idée ?
Merci d’avance.

Salut,

Je suis pas certain de ce qu’est vraiment Zigbee Automation, mais 2 « applications » (z2m et Zigbee Automation) ne peuvent pas partager la même clé