Installation Zigbee2mqtt sur docker

Bonjour à tous et merci pour ce tuto et tous les participants.

Je viens d’analyser les 278 posts sans résultat en espérant trouver des pistes à mon problèmes…

Je vais essayer de résumer au maximum mon installation/configuration!

Matériel, je suis sous DSM Synology, home assistant est dans un container docker.

L’ensemble est installé avec un docker-compose avec home assistant, mqtt qui tourne déjà depuis pas mal de temps pour un autre matériel, fileeditor, esphome et nodered!
J’ai donc ajouté zigbee2mqtt (koenkk/zigbee2mqtt) au docker-compose.

J’ai une passerelle Sonoff ZBBridge Pro Zigbee Gateway (ZBBridge-P) que j’ai remis à zéro qui fonctionnait parfaitement sous ZHA (complètement désinstallé) avec de multiple devices.

Voici la configuration.yaml de z2m:

homeassistant: false
frontend: true
mqtt:
  base_topic: zigbee2mqtt
  server: 'mqtt://localhost:1883'
  user: l****t
  password: K*****8
  
serial:
    port: 'tcp://192.168.1.171:8888'
    adapter: ember
    zigbee_herdsman_debug: true
advanced:
  network_key:
    - 152
    - 57
    - 224
    - 63
    - 140
    - 156
    - 158
    - 21
    - 252
    - 36
    - 255
    - 77
    - 62
    - 67
    - 141
    - 198
  pan_id: 4038
  ext_pan_id:
    - 204
    - 169
    - 144
    - 92
    - 184
    - 180
    - 162
    - 152

La partie de mon docker-compose :

#zigbee2mqtt
 
version: '3.8'
services:
  zigbee2mqtt:
    container_name: zigbee2mqtt
    image: koenkk/zigbee2mqtt
    restart: always
    volumes:
      - ${RACINE}/zigbee2mqtt/data:/app/data
      - ${RACINE}/zigbee2mqtt/run/udev:/run/udev:ro
    ports:
      - 8888:8080
    network_mode: bridge
    environment:
      - TZ=Europe/Paris

 

Et le log via Portainer de zigbee2mqtt ne voulant pas se lancer :

Using '/app/data' as data directory
[2024-06-10 05:13:34] info: 	z2m: Logging to console, file (filename: log.log)
[2024-06-10 05:13:34] info: 	z2m: Starting Zigbee2MQTT version 1.38.0 (commit #fe048e6)
[2024-06-10 05:13:34] info: 	z2m: Starting zigbee-herdsman (0.49.2)
[2024-06-10 05:13:34] info: 	zh:ember: Using default stack config.
[2024-06-10 05:13:34] info: 	zh:ember: ======== Ember Adapter Starting ========
[2024-06-10 05:13:34] info: 	zh:ember:ezsp: ======== EZSP starting ========
[2024-06-10 05:13:34] info: 	zh:ember:uart:ash: ======== ASH NCP reset ========
[2024-06-10 05:13:34] info: 	zh:ember:uart:ash: Socket ready
[2024-06-10 05:13:34] info: 	zh:ember:uart:ash: ======== ASH starting ========
[2024-06-10 05:13:37] info: 	zh:ember:uart:ash: ======== ASH NCP reset ========
[2024-06-10 05:13:37] info: 	zh:ember:uart:ash: ======== ASH starting ========
[2024-06-10 05:13:39] info: 	zh:ember:uart:ash: ======== ASH NCP reset ========
[2024-06-10 05:13:39] info: 	zh:ember:uart:ash: ======== ASH starting ========
[2024-06-10 05:13:42] info: 	zh:ember:uart:ash: ======== ASH NCP reset ========
[2024-06-10 05:13:42] info: 	zh:ember:uart:ash: ======== ASH starting ========
[2024-06-10 05:13:44] info: 	zh:ember:uart:ash: ======== ASH NCP reset ========
[2024-06-10 05:13:44] info: 	zh:ember:uart:ash: ======== ASH starting ========
[2024-06-10 05:13:47] error: 	z2m: Error while starting zigbee-herdsman
[2024-06-10 05:13:47] error: 	z2m: Failed to start zigbee
[2024-06-10 05:13:47] error: 	z2m: Check https://www.zigbee2mqtt.io/guide/installation/20_zigbee2mqtt-fails-to-start.html for possible solutions
[2024-06-10 05:13:47] error: 	z2m: Exiting...
[2024-06-10 05:13:47] error: 	z2m: Error: Failed to start EZSP layer with status=HOST_FATAL_ERROR.
    at EmberAdapter.initEzsp (/app/node_modules/zigbee-herdsman/src/adapter/ember/adapter/emberAdapter.ts:850:19)
    at EmberAdapter.start (/app/node_modules/zigbee-herdsman/src/adapter/ember/adapter/emberAdapter.ts:2683:24)
    at Controller.start (/app/node_modules/zigbee-herdsman/src/controller/controller.ts:127:29)
    at Zigbee.start (/app/lib/zigbee.ts:62:27)
    at Controller.start (/app/lib/controller.ts:109:27)
    at start (/app/index.js:107:5)

J’ai checké ce lien bien entendu, mais je m’y perds…

J’espère que vous pourrez m’éclaircir sur l’erreur suivante car je suppose que le problème viendrait de ça: z2m: Error: Failed to start EZSP layer with status=HOST_FATAL_ERROR.

Merci!!

Bonjour,
En parallèle, le forum anglais m’a fait progresser, mais je reste dans une impasse.
Je pense que c’est lié au faite que j’utilise des containers sur DSM Synology.

Voici mes paramètres actuels,
Pour la passerelle, il faut que je sois en adapter: zstack.
Voici le configuration.yaml de zigbee2mqtt

homeassistant: false
frontend: true
mqtt:
  base_topic: zigbee2mqtt
  server: mqtt://192.168.1.55:1883
  user: ******
  password: *******
serial:
  port: tcp://192.168.1.171:8888
  adapter: zstack
  zigbee_herdsman_debug: true
advanced:
  network_key:
    - 152
    - 57
    - 224
    - 63
    - 140
    - 156
    - 158
    - 21
    - 252
    - 36
    - 255
    - 77
    - 62
    - 67
    - 141
    - 198
  pan_id: 4038
  ext_pan_id:
    - 204
    - 169
    - 144
    - 92
    - 184
    - 180
    - 162
    - 152
  homeassistant_legacy_entity_attributes: false
  legacy_api: false
  legacy_availability_payload: false
device_options:
  legacy: false

Les données mqtt ont été validé avec mqtt explorer (ip login pass).

Voici mon docker-compose actuel:

#zigbee2mqtt
 
#source: https://technologie-geek.fr/comment-installer-zigbee2mqtt-sur-docker/
 
version: '3.8'
services:
  zigbee2mqtt:
    container_name: zigbee2mqtt
    image: koenkk/zigbee2mqtt
    restart: always
    volumes:
      - ${RACINE}/zigbee2mqtt/data:/app/data
      - ${RACINE}/zigbee2mqtt/run/udev:/run/udev:ro
    ports:
      - 8888:8080
    network_mode: bridge
    environment:
      - TZ=Europe/Paris

 

Je me pose la question sur le network_mode: bridge.
Est-il correct ? Je pense que c’est la communication entre les containers qui bloque.
Merci pour votre aide!

Bonjour,
j’ai créé un nouveau sujet, car le tuto de Zigbee2mqtt est avec les Addon de HA.
Sous docker, c’est un peu différent.

1 « J'aime »

Salut

Je parie que ça c’est pas bon… Et ça ne m’étonne pas qu’il ne trouve pas la clé

- /run/udev:/run/udev:ro

ça ira mieux (si en plus les drivers USB sont installés sur le syno)

Bonjour, et merci, effectivement, ça sera plus clair.

Bonjour Pulpy-Luke.

Sous docker, je dois indiquer au container le volume auquel il appartient, ce qui correspond à la racine + /zigbee2mqtt sur mon NAS.

Ma passerelle sonoff est distante (wifi), je demande justement à zigbee2mqtt de se connecter dessus via l’ip mqtt://192.168.1.55:1883. elle n’est pas physiquement branchée au NAS.

J’essaye de donner le plus de détail possible.
Ce n’est pas évident.
Merci pour votre aide.

Actuellement, avec la configuration ci dessus, j’ai cette erreur
Je confirme qu’avec mqtt explorer, le serveur indiqué ainsi avec les login/password sont corrects.

Using '/app/data' as data directory
[2024-07-06 04:51:01] info: 	z2m: Logging to console, file (filename: log.log)
[2024-07-06 04:51:01] info: 	z2m: Starting Zigbee2MQTT version 1.38.0 (commit #fe048e6)
[2024-07-06 04:51:01] info: 	z2m: Starting zigbee-herdsman (0.49.2)
[2024-07-06 04:51:01] info: 	zh:zstack:znp: Opening TCP socket with 192.168.1.171:8888
[2024-07-06 04:51:01] info: 	zh:zstack:znp: Socket connected
[2024-07-06 04:51:01] info: 	zh:zstack:znp: Socket ready
[2024-07-06 04:51:01] info: 	zh:zstack:znp: Writing CC2530/CC2531 skip bootloader payload
[2024-07-06 04:51:02] info: 	zh:zstack:znp: Skip bootloader for CC2652/CC1352
[2024-07-06 04:51:05] info: 	z2m: zigbee-herdsman started (resumed)
[2024-07-06 04:51:05] info: 	z2m: Coordinator firmware version: '{"meta":{"maintrel":1,"majorrel":2,"minorrel":7,"product":1,"revision":20220219,"transportrev":2},"type":"zStack3x0"}'
[2024-07-06 04:51:05] info: 	z2m: Currently 0 devices are joined:
[2024-07-06 04:51:05] info: 	z2m: Zigbee: disabling joining new devices.
[2024-07-06 04:51:06] info: 	z2m:mqtt: Connecting to MQTT server at mqtt://192.168.1.55:1883
[2024-07-06 04:51:36] error: 	z2m:mqtt: MQTT error: connack timeout
[2024-07-06 04:51:36] error: 	z2m: MQTT failed to connect, exiting...
[2024-07-06 04:51:36] info: 	z2m: Stopping zigbee-herdsman...
[2024-07-06 04:52:07] error: 	z2m:mqtt: MQTT error: connack timeout
[2024-07-06 04:52:38] error: 	z2m:mqtt: MQTT error: connack timeout
[2024-07-06 04:53:09] error: 	z2m:mqtt: MQTT error: connack timeout
[2024-07-06 04:53:12] info: 	zh:controller: Wrote coordinator backup to '/app/data/coordinator_backup.json'
[2024-07-06 04:53:12] info: 	zh:zstack:znp: closing
[2024-07-06 04:53:12] info: 	z2m: Stopped zigbee-herdsman
/app/node_modules/winston/node_modules/readable-stream/lib/_stream_writable.js:264
  var er = new ERR_STREAM_WRITE_AFTER_END();

           ^
Error: write after end
    at writeAfterEnd (/app/node_modules/winston/node_modules/readable-stream/lib/_stream_writable.js:264:12)
    at DerivedLogger.Writable.write (/app/node_modules/winston/node_modules/readable-stream/lib/_stream_writable.js:300:21)
    at DerivedLogger.log (/app/node_modules/winston/lib/winston/logger.js:252:14)
    at Logger.log (/app/lib/util/logger.ts:164:25)
    at Logger.info (/app/lib/util/logger.ts:177:14)
    at Znp.onPortClose (/app/node_modules/zigbee-herdsman/src/adapter/z-stack/znp/znp.ts:113:16)
    at Object.onceWrapper (node:events:632:26)
    at Socket.emit (node:events:529:35)
    at TCP.<anonymous> (node:net:350:12)

Salut,
Vérifie l’user et pass MQTT qu’il soit correct. La connexion au MQTT ne se fait pas.

Salut

Il y a 3 notions différentes là dedans.

  • ton volume data qui fonctionne comme tu l’indique. C’est là dedans que le container trouve ses fichiers de config et écrit les logs. Donc tu dedie ce répertoire et tu le place où tu veux. Tu as choisi une notion de racine, pourquoi pas mais derrière il faut voir ça comme un raccourci /mapping : répertoire réel de l’hôte <=> répertoire dans le container.

  • l’accès à la clé et aux périphériques système avec /run/dev. C’est aussi un répertoire mais celui de l’hôte est imposé par le système Linux de ton nas, forcément. D’ailleurs tu regardera le lien dans ton docker compose, c’est explicitement écrit sans cette notion de racine. Dans ton cas ta clé est distante donc je comprends que tu as monté la clés dans un répertoire spécifique. Donc OK pour utiliser la notion de racine. Mais à toi de vérifier que le résultat de ton montage est correct.
    Ton démarrage indique que la clé n’est pas reconnue/vue

  • La partie mqtt, elle sert à la communication avec HA. Là tout est donné dans le fichier yaml, rien à voir avec la notion de volume.
    Et rien à voir non plus avec la clé.

Salut WarC0zes
mqtt explorer me confirme que mes id sont corrects (ainsi que le server utilisé)
Merci

Salut! Merci pour ces détails.

Je confirme que mon « ${RACINE} » est bien un raccourci d’un emplacement sur mon NAS.

Mon emplacement me semble correct, j’utilise ce raccourci pour mes docker-compose, puis ils sont divisés pour créer différentes stacks.

J’ai tout de même testé ta proposition, j’ai toujours l’erreur de connexion au serveur mqtt.

Sur le deuxième point, tu indiques que m’a clé n’est pas reconnue, pourtant, le log indique bien que le coordinator est prêt, j’ai peut-être mal interprété ?

[2024-07-06 13:44:05] info: 	zh:zstack:znp: Opening TCP socket with 192.168.1.171:8888
[2024-07-06 13:44:05] info: 	zh:zstack:znp: Socket connected
[2024-07-06 13:44:05] info: 	zh:zstack:znp: Socket ready
[2024-07-06 13:44:05] info: 	zh:zstack:znp: Writing CC2530/CC2531 skip bootloader payload
[2024-07-06 13:44:06] info: 	zh:zstack:znp: Skip bootloader for CC2652/CC1352
[2024-07-06 13:44:10] info: 	z2m: zigbee-herdsman started (resumed)
[2024-07-06 13:44:10] info: 	z2m: Coordinator firmware version: '{"meta":{"maintrel":1,"majorrel":2,"minorrel":7,"product":1,"revision":20220219,"transportrev":2},"type":"zStack3x0"}'
[2024-07-06 13:44:10] info: 	z2m: Currently 0 devices are joined:
[2024-07-06 13:44:10] info: 	z2m: Zigbee: disabling joining new devices.

Sur le troisième point, je suis bien d’accord, mon configuration.yaml est visible sur le premier post, et je pense comme WarC0zes à un problème de communication entre mqtt (docker) et zigbee2mqtt (docker également).

Mon broker fonctionne bien, je m’en sers quotidiennement avec une carte relais qui gère des luminaires extérieures.

Merci encore!

Bonsoir,

ports : correspond au port du serveur Z2M pourquoi tu n’as pas laissé 8080:8080 ?

Cette commande te permettra d’avoir accès au serveur HTTP Z2M (lorsque tout fonctionnera) en faisant http://x.x.x.x:8080

Comme ton device n’est pas en USB mais en réseau il faut s’assurer que ton adresse réseau peut être atteignable par Z2M docker.

Il faut lancer une console de commande du Docker Z2M (/bin/sh)

En étant dans la console du docker
nc adresse_ip_device port; echo $?

Si ton docker Z2M ne réussi pas à joindre l’adresse réseau de ta clé il faut résoudre ce problème.

Lit ce lien tu devrais trouver la solution

Salut,

Moi je vois plutot ça :

Et cette partie là à la fin, c’est forcement la clé

Bonjour
J’arrive un peu tard mais j’ai l’impression que ça n’a pas été évoqué mais depuis DSM7 la gestion des ports usb est bloquée sous docker sur les synology, je m’étais confronté à ce problème il y a quelques mois, à moins que ça ait changé dans les dernières mises a jour

Bonjour Dan92

Merci pour ton aide, le lien donné est très intéressant.

Pour le port, je l’utilisais pour un autre container, mais je l’ai libéré car je n’en avais plus l’utilité.

Malheureusement, en changeant les ports, Z2M ne démarre plus et donc, ça me refuse l’accès à la console.

Je vois bien l’idée d’interroger la passerelle à partir du container, je garde cette manipulation du coup.
Je vais reprendre de zéro avec le lien donné.
Je fais un retour rapidement.
Merci

Merci pour ces précisions.
La clé, c’est bien ma passerelle dans mon cas ?
L’erreur que j’ai maintenant confirme ce que tu dis en tout cas.

Je vais reprendre l’installation d’après le lien de Dan92 et je fais un retour.

@pctetra
Merci pour cette précision, dans mon cas, c’est une passerelle wifi donc ça devrait être bon.
Merci encore !

Oups :neutral_face: effectivement

1 « J'aime »

@Dan92
@Pulpy-Luke

Bonsoir,

Malheureusement, je n’arriverai pas à mes fins ce soir.
Z2M trouve la passerelle, c’est flagrant car si je mets un autre port, j’ai une erreur de socket…

Mais soit Z2M ne finalise pas la connexion et me met l’erreur, qui indique que le chipset est probablement pas assez puissant.

[2024-07-07 23:32:37] error: z2m: Check Zigbee2MQTT fails to start | Zigbee2MQTT for possible solutions

Soit Z2M ne trouve pas le serveur mqtt, j’ai pu testé car ça arrive à ce lancer parfois, et la commande nc 192.168.1.55 1883; echo $? n’abouti pas.

Je suis prêt à prendre une autre passerelle si nécessaire, mais laquelle serait optimal dans mon cas ? DSM7 / docker…

Merci!

Salut

J’ai pas remonté le fil mais MQTT Explorer avec exactement les infos de connexion que z2m, ça fonctionne ?

Oui, le broker étant déjà en place pour une carte relais, l’ip et le port sont bons.
Confirmé à nouveau par mqtt explorer. Merci