Dernière mise à jour le 24 mars 2024
Zigbee2mqtt sur docker, installation avec le dongle Sonoff Zigbee 3.0 !
Pourquoi Zigbee2mqtt sur docker ?
Tout d’abord, bonjour et bienvenue sur mon blog Technologie Geek ! Après mon article « Zigbee2mqtt sur Home Assistant » voyons maintenant comment installer Zigbee2mqtt sur docker. Docker vous permet de créer un environnement isolé et facile à mettre à jour pour exécuter notre logiciel. Il vous permet de profiter des fonctionnalités de surveillance, de journalisation, mais aussi de gestion des ressources. Docker vous offre également une portabilité accrue en vous permettant de déployer Zigbee2mqtt sur différentes plateformes.
Les prérequis :
Premièrement, une installation de docker ainsi que Portainer. Ensuite, un broker MQTT comme Mosquitto par exemple et bien sûr Home Assistant.
Comment installer Zigbee2mqtt sur docker :
Pour commencer l’installation de Zigbee2mqtt sur docker, vous devez savoir sur quel port USB est connecté votre dongle zigbee. Pour cela connectez vous en SSH sur votre serveur et taper le code suivant.
sudo ls -l /dev/serial/by-id
Sur l’image ci-dessus la partie importante à retenir est :
« usb-ITEAD_SONOFF_Zigbee_3.0_USB_Dongle_Plus_V2_20221029110558-if00 -> ../../ttyACM0 »
Ensuite, pour déployer Zigbee2mqtt sur docker, aller sur Portainer dans « Local/Stacks » puis en haut à droite cliquer sur « Add stack ». Dans l’onglet « Editor » donner un nom à votre docker-compose puis coller le code ci-dessous :
version: '3.8'
services:
zigbee2mqtt:
container_name: zigbee2mqtt
image: koenkk/zigbee2mqtt
restart: unless-stopped
volumes:
- /opt/docker/zigbee2mqtt:/app/data
- /run/udev:/run/udev:ro
ports:
- 8080:8080
environment:
- TZ=Europe/Paris
devices:
- /dev/serial/by-id/usb-ITEAD_SONOFF_Zigbee_3.0_USB_Dongle_Plus_V2_20221029110558-if00:/dev/ttyACM0
Explication du code pour installer Zigbee2mqtt sur docker :
- Premièrement, version: ‘3.8’ est la version du moteur Docker. Connectez vous en ssh et taper « docker -v ». Ensuite, pour plus d’info aller à la page Docker versioning.
- services: Démarre un nouveau service.
- zigbee2mqtt: Est le nom du service.
- Ensuite, container_name: Est le nom du conteneur.
- image: Est le lien vers l’image utilisée. Rendez-vous sur Docker Hub.
- restart: Lorsque le conteneur est stoppé, nous le redémarrons.
- volumes: Est votre volume pour la persistance des données. Ici nous montons le volume dans le dossier /opt/docker/zigbee2mqtt. le second volume /run/udev:/run/udev:ro donne accès en lecture au gestionnaire de périphériques.
- ports: Nous exposons le port 8080 de notre conteneur.
- environment: Nous déclarons les variables d’environnement, ici nous nous mettons à l’heure de Paris.
- Et enfin devices: Nous donnons un accès à docker sur notre port USB.
Maintenant cliquer sur « Deploy the stack » pour installer Zigbee2mqtt sur docker.
La configuration de Zigbee2mqtt sur docker :
Connectez vous à nouveau en SSH sur votre serveur puis aller dans votre dossier Zigbee2mqtt. Pour ma part « opt/docker/zigbee2mqtt » et éditer le fichier « configuration.yaml ».
sudo nano configuration.yaml
Ensuite, copier le code ci-dessous puis enregistrer votre fichier et enfin redémarrer votre conteneur. Bien sur il faut compléter les parties « mqtt » et « serial » avec vos informations.
homeassistant: true
permit_join: false
mqtt:
base_topic: zigbee2mqtt
server: mqtt://ip-de-votre-serveur:1883
user: votre-utilisateur-mqtt
password: votre-mot-de-passe-mqtt
availability:
active:
timeout: 10
passive:
timeout: 1500
serial:
port: /dev/ttyACM0
frontend:
port: 8080
En conclusion, l’installation de Zigbee2mqtt sur docker est terminé. Rendez vous à l’adresse « http://ip de votre serveur:8080 », pour moi « http://192.168.1.225:8080 ».
-
Comment installer ioBroker sur Docker -
Home Assistant sur votre NSPanel Pro -
Flasher le NSPanel avec Tasmota et Lovelace-ui -
Un assistant vocal intégré à Home Assistant -
Flash Sonoff Zigbee Bridge Pro -
Installer Home Assistant sur Proxmox
76 réponses à “Comment installer Zigbee2mqtt sur Docker”
Bonjour,
J’ai suivi les différentes étapes pour installer zigbee2mqtt sur ma VM proxmox sous docker mais lorsque je lance la commande ls -l /dev/serial/by-id j’ai le message ls: cannot access ‘/dev/serial/by-id’: No such file or directory
D’où cela peut-il venir ?
Bonjour Nicolas,
Dans ta VM proxmox, dans l’onglet matériel, as tu ajouter ton périphérique USB ?
Bonjour Stéphane,
J’ai fini par trouver d’où venait le problème. C’est que le périphérique USB n’était pas monté au démarrage de mon container. J’ai modifié la conf de mon container pour l’ajouter au démarrage et maintenant tout marche bien.
Merci pour ton aide
Bonjour,
Merci pour ton tuto qui est très bien fait. Je bloque sur la fin au niveau du fichier configuration.yamlJ’ai rentré les données en remplaçant les valeurs XXXX mais cela ne fonctionne pas.
Je ne suis pas sûr de ce qu’il faut faire au niveau du port. Peux-tu m’aider ?
Merci
Bonjour Laurent,
Il faut te connecter en ssh sur ton serveur et passe la commande :
sudo ls -l /dev/serial/by-idTu devrais avoir un retour qui ressemble à ça :
lrwxrwxrwx 1 root root 13 12 déc. 20:12 usb-ITEAD_SONOFF_Zigbee_3.0_USB_Dongle_Plus_V2_20221029110558-if00 -> ../../ttyACM0La clé zigbee est connectée sur le port ttyACM0. C’est cette partie que tu dois mettre dans ton fichier configuration.yaml
Bonjour,
Merci pour ton retour. J’ai indiqué le port mais cela ne fonctionne pas. Quand je saisis l’URL dans un navigateur, j’ai l’erreur suivante :
La connexion a échouéFirefox ne peut établir de connexion avec le serveur à l’adresse 192.168.1.53:8080.
Le site est peut-être temporairement indisponible ou surchargé. Réessayez plus tard ;
Si vous n’arrivez à naviguer sur aucun site, vérifiez la connexion au réseau de votre ordinateur ;
Si votre ordinateur ou votre réseau est protégé par un pare-feu ou un proxy, assurez-vous que Firefox est autorisé à accéder au Web.Je ne trouve pas l’origine du problème.
Merci pour ton aide.
Bonjour Laurent,
Désoler pour le décalage des réponses, mais avec les fêtes je n’ai pas eu beaucoup de temps.
Peut-tu regarder dans les logs de ton conteneur dans Portainer ?
Bonjour Stéphane,
D’abord merci pour tes tuto qui m’ont aidé à installer Docker et Portainer sur une VM Debian sous Proxmox.
J’ai aussi installé le broker MQTT grâce à ton tuto et je bloque pour installer Zigbee2mqtt sur Docker.
J’ai le même blocage que Laurent ci-dessus « Firefox ne peut établir de connexion avec le serveur à l’adresse 192.168.1.53:8080 »
Voici le journal du conteneur Zigbee2mqtt dans Portainer :10 | active:
11 | timeout: 10
12 | passive:
13 | timeout: 1500
^
14 | serial:
15 | port: /dev/ttyACM0
at generateError (/app/node_modules/js-yaml/lib/loader.js:183:10)
at throwError (/app/node_modules/js-yaml/lib/loader.js:187:9)
at storeMappingPair (/app/node_modules/js-yaml/lib/loader.js:358:7)
at readBlockMapping (/app/node_modules/js-yaml/lib/loader.js:1173:9)
at composeNode (/app/node_modules/js-yaml/lib/loader.js:1441:12)
at readBlockMapping (/app/node_modules/js-yaml/lib/loader.js:1164:11)
at composeNode (/app/node_modules/js-yaml/lib/loader.js:1441:12)
at readDocument (/app/node_modules/js-yaml/lib/loader.js:1625:3)
at loadDocuments (/app/node_modules/js-yaml/lib/loader.js:1688:5)
at Object.load (/app/node_modules/js-yaml/lib/loader.js:1714:19)
Je n’y comprends rien !Dans le fichier configuration.yaml il faut saisir le server: ‘mqtt://xxx.xxx.x.xxx:1883’ et je ne suis pas sûr de l’adresse que je dois entrer dans mon cas. Est-ce qu’il y a un moyen de connaître l’adresse qui va bien pour moi ?
Merci pour ton aide et Bonne fin d’année !Bonsoir Pierre,
1. Pour la partie « server:’mqtt://xxx.xxx.x.xxx:1883′ », il faut mettre l’adresse de ton serveur Docker, donc dans ton cas
« server:’mqtt://192.168.1.53:1883′ ». Chaque conteneur déployé sur Docker a la même adresse, c’est uniquement le port qui change.2. Lors de l’éxecution de la commande « sudo ls -l /dev/serial/by-id » sur ton serveur, quel retour as-tu ?
3. As-tu testé ton broker MQTT en connectant un appareil, ou alors avec MQTT Explorer par exemple ?
4. Dans ta VM proxmox, dans l’onglet matériel, as tu ajouter ton périphérique USB ?
Merci pour ta réponse.
1
dans la partie « server:’mqtt://xxx.xxx.x.xxx:1883′ », j’ai mis l’adresse de mon serveur Docker.
2
root@dockervm:~# ls -l /dev/serial/by-id
total 0
lrwxrwxrwx 1 root root 13 30 déc. 21:44 usb-ITEAD_SONOFF_Zigbee_3.0_USB_Dongle_Plus_V2_20230525183424-if00 -> ../../ttyACM0
3
Non je n’avais pas testé.le broker MQTT. J’ai installé MQTT Explorer
A chaque fois que je veux lancer une connexion MQTT j’ai un message « Disconnected from server »
Donc je pense que déjà là ça va pas !
Pour l’installation du broker MQTT j’ai suivi ton tuto mais je suis bloqué sur le point N°3 pour la création d’un utilisateur
root@dockervm:/var/lib/docker/volumes/mqtt_config/_data# docker exec -it mqtt sh
Error response from daemon: Container 0fd2b8a5e9b6bea8b7dc79c95459702581e8f4c0f9f1e3c306f7f73e533756ea is restarting, wait until the container is running
root@dockervm:/var/lib/docker/volumes/mqtt_config/_data# mosquitto_passwd -c mosquitto/config/mqtt_passwd admin
-bash: mosquitto_passwd : commande introuvable
Je suis bloqué içi…4
ouiPasse un bon réveillon !
Bonjour Pierre,
1. Zigbee2mqtt à besoin du broker MQTT pour démarrer. Que disent les logs de ton conteneur MQTT ?
2. Ton conteneur MQTT est-il démarré ? Dans « Published Ports » as-tu « 1883:1883 9001:9001 » ?
Bonjour Stéphane
1 Voici les logs du conteneur MQTT
1704010909: Error: Unknown configuration variable « allow ».
1704010909: Error found at /mosquitto/config/mosquitto.conf:6.
1704010970: The ‘port’ option is now deprecated and will be removed in a future version. Please use ‘listener’ instead.
1704010970: Error: Unknown configuration variable « allow ».
1704010970: Error found at /mosquitto/config/mosquitto.conf:6.
1704011030: The ‘port’ option is now deprecated and will be removed in a future version. Please use ‘listener’ instead.
1704011030: Error: Unknown configuration variable « allow ».
1704011030: Error found at /mosquitto/config/mosquitto.conf:6.
Voici le contenu de mosquitto.conf :
port 1883
listener 9001
protocol websockets
persistence true
persistence_location /mosquitto/dat
allow anonymous false
password_filemosquitto/config/mqtt_passwd2 Oui le conteneur est démarré mais il n’y a rien dans « Published Ports »
3 pour le conteneur zigbee2mqtt il n’y a rien non plus dans « Published Ports »
Pour le conteneur Portainer il y 9000:9000 dans « Published Ports »Peut-tu modifier le fichier mosquitto.conf avec la config suivante :
listener 1883
listener 9001
protocol websockets
persistence true
persistence_location /mosquitto/data
allow_anonymous true
#password_file mosquitto/config/mqtt_passwdDans les nouvelles versions de mosquitto l’option « port » est déprécier, il faut la remplacer par « listener ».
Pour la suite on autorise les connexions anonymes et on désactive le fichier « utilisateur/mot de passe ».Ensuite redémarre le conteneur et essaye de te connecter avec MQTT Explorer sans utilisateur et sans mot de passe.
Voilà j’ai modifié le fichier mosquitto.conf comme demandé.
Cette fois j’arrive à me connecter au broker MQTT avec MQTT explorer
Le conteneur MQTT est bien démarré et dans « Published Ports» j’ai maintenant « 1883:1883 9001:9001 »
Je comprends qu’il y a un problème avec le fichier « utilisateur/mot de passe »
Maintenant que le broker MQTT est démarré et fonctionnel, au niveau de l’installation de zigbee2mqtt sur docker le fichier configuration.yaml doit être modifié je pense mais je ne sais pas quoi renseigner pour user/passwordhomeassistant: true
permit_join: false
frontend: truemqtt:
base_topic: zigbee2mqtt
server: ‘mqtt://192.168.1.59:1883’
user: xxxxx
password: xxxxxavailability:
active:
timeout: 10
passive:
timeout: 1500serial:
port: /dev/ttyACM0Car j’ai toujours un échec de connexion à l’adresse 182.168.1.59:8080 « Firefox ne peut établir de connexion avec le serveur à l’adresse 192.168.1.59:8080 »
Le journal du conteneur Zigbee2mqtt dans Portainer est toujours le même.
Pour le conteneur zigbee2mqtt il n’y a toujours rien dans « Published Ports »Pour tester commente les lignes « user » et « password » avec # devant puis redémarre ton conteneur.
Puis il faudra trouver pourquoi le fichier password de Mosquitto ne fonctionne pas.J’ai testé en commentant user/password puis redemarrer.
J’en suis toujours au même point, le status du container zigbee2mqtt dans est toujours « Running for a few second » comme s’il redémarre tout le temps…Peut-tu transmettre les logs ?
Essaye d’ajouter à la fin du fichier du configuration.yaml
frontend:
port: 8080Avec deux espace devant « port: 8080 » on ne les voit pas dans les commentaires
et commente « frontend: true »Je viens de tester chez moi avec la config suivante et cela fonctionne :
homeassistant: true
permit_join: false
mqtt:
base_topic: zigbee2mqtt
server: mqtt://ip-docker:1883
serial:
port: /dev/ttyACM0
frontend:
port: 8080Il faut également nettoyer le cache de ton navigateur internet !
Sans nettoyer le cache et malgré le conteneur en fonction je n’y avais pas accès !
Bonjour Stéphane et MEILLEURS VOEUX pour 2024 !
J’ai modifié le fichier configuration.yaml comme tu l’as suggéré mais rien n’y fait 🙁
Le journal du conteneur zigbeemqtt ca donne ça :
Using ‘/app/data’ as data directory
/app/node_modules/js-yaml/lib/loader.js:183
return new YAMLException(message, mark);
^
YAMLException: duplicated mapping key (50:1)
47 | device_options:
48 | legacy: false
49 | devices: {}
50 | homeassistant:
——^
51 | legacy_entity_attributes: true
52 | legacy_triggers: true
at generateError (/app/node_modules/js-yaml/lib/loader.js:183:10)
at throwError (/app/node_modules/js-yaml/lib/loader.js:187:9)
at storeMappingPair (/app/node_modules/js-yaml/lib/loader.js:358:7)
at readBlockMapping (/app/node_modules/js-yaml/lib/loader.js:1173:9)
at composeNode (/app/node_modules/js-yaml/lib/loader.js:1441:12)
at readDocument (/app/node_modules/js-yaml/lib/loader.js:1625:3)
at loadDocuments (/app/node_modules/js-yaml/lib/loader.js:1688:5)
at Object.load (/app/node_modules/js-yaml/lib/loader.js:1714:19)
at Object.read (/app/lib/util/yaml.ts:7:21)
at read (/app/lib/util/settings.ts:333:20)
Je ne suis pas capable de l’interpréter.
Le conteneur est toujours au statut Running for au few seconds. Il n’y a rien dans Published Ports
J’ai un doute sur la clé SONOFF DONGLE-E, je viens d’en commander une nouvelle.
Merci pour ton aideBonjour Pierre,
MEILLEURS VOEUX à toi aussi !!
Si ton dongle est reconnu sur ton serveur, je ne pense pas que cela vienne de lui.
Vérifie la syntaxe de ton configuration.yaml, tu peut utiliser ce site : https://www.yamllint.com/
Essaye peut-être de supprimer ton conteneur, ton volume persistant et de redémarrer un conteneur propre.
As-tu supprimer la ligne « frontend: true » ? Tu as une erreur de clé dupliqué.
Hourra !!! J’affiche enfin cette page à l’adresse htpp://192.168.1.59:8080 !!!
J’ai repris ton fichier configuration.yaml que j’ai passé dans le vérificateur de syntax (merci pour le ien, j’apprends plein de choses avec toi !)
Cette fois dans les logs j’ai eu :
Connecting to MQTT server at mqtt://ip-docker:1883
MQTT error: getaddrinfo ENOTFOUND ip-docker
MQTT failed to connect, exiting…
Stopping zigbee-herdsman…
J’ai compris que « mqtt://ip-docker:1883 » posait un problème alors j’ai modifié par « mqtt://192.168.1.59:1883 »
Dans les logs du container zigbee2mqtt j’ai eu :
Connected to MQTT server
MQTT publish: topic ‘zigbee2mqtt/bridge/state’, payload ‘{« state »: »online »}’
Started frontend on port 8080
MQTT publish: topic ‘zigbee2mqtt/bridge/state’, payload ‘{« state »: »online »}’
Zigbee2MQTT started!
J’ai compris que c’était OK !
Maintenant il me reste à essayer de comprendre pourquoi le fichier password de MQTT ne fonctionne pas.
Est-ce que je peux laisser sans user/password sans que cela pose un problème de sécurité ?cool !!
Pour le « user/password », tant que tu reste son ton réseau local cela ne pose pas de problème.
Perso, je n’aime pas. Un minimum de sécurité c’est pas mal.
Pour pouvoir faire des tests sans casser ton installation, clone ta VM docker dans proxmox !
Tu pourras alors tester ton broker mqtt et plein d’autres conteneur tranquillement.
Attention, si tu le fait il faut lui donner un nouveau nom et désactiver ton dongle zigbee dans ton clone.
bonjour
j’ai suivi le tuto mais je une erreur quand je saisi la commande ls -l /dev/serial/by-id
erreur:ls: cannot access ‘/dev/serial/by-id’: No such file or directory
une idee merci a vousBonjour Fassi,
Peut-tu m’en dire un peu plus sur ton installation ?
1. Quelle distribution, Debian, Ubuntu…
2. Est ce que tu la virtualise ?
3. Est-tu connecté en root ?merci stéphane : j’utilse docker sur proxmox et une cle sonoff montee sur le pve merci
Dans ta VM proxmox, dans l’onglet matériel, as tu ajouter ton périphérique USB ?
OUI je l ai ajouter
Dans ta VM docker connecte toi en SSH :
1. Débranche ta clé zigbee
2. Passe la commande : dsmeg -C
3. Rebranche ta clé
4. passe la commande : dmesg
Et donne moi le retour.
Bonjour, super tuto, pour moi tout fonctionne bien.
Je souhaite mettre à jour mon Zigbee2mqtt mais je ne trouve pas comment le faire.
Sur une install sur RPI, je savais le faire, mais sur un promox/VM docker, je ne vois plus trop.
Pour info, je suis en version 1.33.2 et la version actuelle est 1.35.1.
Z2M est installé sous docker dans une VM proxomox. Mosquitto se trouve dans un container LXC et tout ce monde communique avec Jeedom qui se trouve dans une autre VM.
Si tu pouvais me venir en aide en me donnant la marche à suivre ?
Merci d’avance
Bonjour,
Je pense que tu utilise Portainer.
1. Tu vas dans Portainer, puis dans Containers et tu supprime le conteneur Z2M.
2. Tu vas dans Stacks, puis tu sélectionne Z2M et enfin tu vas dans l’onglet Editor.
3. Tu clique sur « Update the stack » et tu coche « Re-pull image and redeploy »merci pour cette rapide réponse, je vais faire cela demain et je te tiens au courant.
Pas de risque de perdre les liens sur tous mes modules zigbee ?J’utilise docker depuis 18 mois sur ma domotique, je met à jour mes conteneur régulièrement et je
n’ai jamais eu de problème.Merci beaucoup, j’ai fait la mise à jour comme tu l’as indiqué et ça c’est très bien passé. Suis super content !
Merci à toi pour les bons commentaires, cela fait plaisir !
Bonne soirée !
Bonsoir à vous,
Je n’efforce d’installer sur Portainer (raspberrypi) un petit système domotique.
Je n’ai pas voulu installer HAOS car je veut avoir accès à d’autres fonctions de mon Raspberry…
En fouillant sur Yt et internet je suis arrivé sur votre site, mais mon Zigbee2mqtt « fail to start »…
Sur HomeAssistant, tous mes appareils zigbee sont détectés.
Pourriez-vous m’aider?
Voici ce que me sort le log de mon container..
Cordialement.
Using ‘/app/data’ as data directory
Zigbee2MQTT:info 2024-04-14 22:17:52: Logging to console and directory: ‘/app/data/2024-04-14.22-17-52’ filename: log.txt
Zigbee2MQTT:info 2024-04-14 22:17:52: Starting Zigbee2MQTT version 1.36.0 (commit #86ed71c)
Zigbee2MQTT:info 2024-04-14 22:17:52: Starting zigbee-herdsman (0.35.1)
Zigbee2MQTT:error 2024-04-14 22:18:13: Error while starting zigbee-herdsman
Zigbee2MQTT:error 2024-04-14 22:18:13: Failed to start zigbee
Zigbee2MQTT:error 2024-04-14 22:18:13: Check https://www.zigbee2mqtt.io/guide/installation/20_zigbee2mqtt-fails-to-start.html for possible solutions
Zigbee2MQTT:error 2024-04-14 22:18:13: Exiting…
Zigbee2MQTT:error 2024-04-14 22:18:13: Error: Failed to connect to the adapter (Error: SRSP – SYS – ping after 6000ms)
at ZStackAdapter.start (/app/node_modules/zigbee-herdsman/src/adapter/z-stack/adapter/zStackAdapter.ts:103:27)
at Controller.start (/app/node_modules/zigbee-herdsman/src/controller/controller.ts:132: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)
Bonjour Fabrice,
Si je comprends bien, tu as installé Docker et Portainer sur un raspberry en voulant déployer chaque conteneur à part.
Tous tes appareils Zigbee sont détectés, utilises-tu un autre module comme ZHA sur Home Assistant ? Si oui, désactive le (problème de conflit).
Quel adaptateur utilises-tu ? Zigbee2mqtt ne le trouve pas.
Bonsoir à vous,
Avant toute chose, merci de prendre de votre temps pour répondre.
1er point:
Oui. J’ai installé Docker et Portainer sur mon Raspberry et effectivement, je les déploient séparément et de ce fait il doit y avoir un conflit…
2éme point:
Oui, tous mes appareils sont bien détectés et sont fonctionnels. Je possède plusieurs prises connectées et je récupère bien toutes les informations via la clé SONOFF zigbee 3.0 USB.
Quelques minutes après vous avoir soumis mon message, j’ai désactivé le container zigbee2mqtt dans Portainer et là, plus de conflit…
Est-il possible de faire cohabiter les 2 ?
Ma question peut vous paraitre un peu naïve
Cordialement
Bonjour Fabrice,
Non, il n’est pas possible d’utiliser deux logiciels sur le même dongle.
Par contre, sur Home Assistant core uniquement en déployant chaque conteneur séparément,
tu peux faire fonctionner ZHA (qui est intégré à Home Assistant core) et Zigbee2mqtt avec deux dongle.
Pour ma part, j’utilise une clé Sonoff zigbee 3 USB avec zigbee2mqtt pour le 1er et le 2ème étage et une passerelle
Sonoff zigbee bridge pro (flasher avec Tasmota) avec ZHA pour le rez-de-chaussé.
Bonsoir,
J’ai essayé, dans le fichier « configuration.yaml », de mettre « homeassistant à false » et de me connecter avec:
server: ‘mqtt://mon_@_server:1883′
,mais cela ne fonctionne pas… Lorsque je tape l’ « @ de mon Raspberryh:8080 » la connexion échoue.
Pourtant les ports sont différents.
Par contre, tous mes devices sont désapairés…
Mon idée est-elle réalisable?
Je fait cela car je veux utiliser un appareil qui n’est pas supporté par ZHA.
A terme, mon idée est d’arriver à récupérer mes infos avec NODERED et de me faire un dashboard.
Merci beaucoup pour ces échanges, cela me fait progresser.
Cordialement
Bonjour,
Ton projet est de faire fonctionner Home Assistant, Mosquitto avec Zigbee2mqtt et un dashboard Nodered.
Oui, ton idée est parfaitement réalisable.Reprenons depuis le début :
1. Home Assistant est fonctionnel.
2. Ton broker mqtt (Mosquitto) est-il fonctionnel ?
Peux-tu vérifier les logs de ton conteneur ?Une fois que nous sommes sûr que ton broker fonctionne, nous pourrons passer à Zigbee2mqtt.
Bonsoir à vous,
Oui, tout est bien fonctionnel.
Cordialement
Bonsoir,
1. Est ce que Mosquitto est déployer sur docker et sur ton raspberry ?
2. Désactive ZHA, puis redémarre ton conteneur Home Assistant.
3. Redémarre Zigbee2mqtt et transmet moi les logs.Je regarderais demain matin (je suis crevé et je me lève tôt), bonne soirée !
Oui, Mosquitto est fonctionnel.
Je mets en veille quelques jours…
Cordialement
Bonjour Stéphane
Tout d abord un grand merci pour ton site, j apprends pas mal de choses, car tout est bien expliqué pas à pas, et commenté, ce qui aide vraiment à comprendre ce qu on fait !
je n ai pas encore installé le docker zigbee2mqtt (pour une install Jeedom) mais j avais une question : actuellement sous Conebe2 j envisage de passer sous ce contrôleur en ethernet
https://www.domadoo.fr/fr/box-domotique/7043-smlight-adaptateur-usb-ethernet-poe-zigbee-30-efr32mg21-zigbee2mqtt-et-zha.html
du coup, comment faire pour l étape de configuration du contrôleur dès le début vu qu il n est pas en USB ?
autre question : j ai également sous jeedom le pluginZwaveJS pour l instant via broker en local mais à terme je compte tout mettre sur le MQTT que j ai installé sous docker via ton autre tuto (via VM Proxmox) : ce même broker MQTT peut il gérer les 2 rptocoles (Zwave et Zigbee)?
merci par avance pour ces questions de débutant 😉
Bonjour,
Merci pour ton commentaire !
Pour ta configuration il y a deux solutions :
Premièrement, mais je n’en suis pas sûr (je ne trouve rien dans la documentation de zigbee2mqtt sur Docker).
– Dans ton docker-compose ou stack dans Portainer supprime la partie « devices: »Dans le fichier « configuration.yaml » de zigbee2mqqtt :
1ère solution, l’auto détection :
serial:
port: mdns://slzb-062ème solution :
serial:
port: tcp://ip-de-ton-adapatateur:port-de-ton-adapatateur (tcp://192.168.1.12:6638 par exemple)ATTENTION A LA SYNTAXE YAML !
Je testerais ce week-end avec un zigbee bridge pro si je trouve le temps.
Pour ta deuxième question :
– Ton broker MQTT ne gère que MQTT.
– Zigbee2mqtt « transforme ton zigbee en MQTT ».
– De la même manière, zwavejs2mqtt « transforme ton zwave en MQTT »
En installant zwavejs2mqtt sur Docker par exemple, tu ne devrais pas avoir de problème.
Bonjour.
Merci pour ton site et pour tes tutos qui, même pour une « buse » comme moi paraissent clairs.
Je tente actuellement vainement de créer un conteneur zigbee2mqtt associé au dongle POE SLZB-06.
Je me suis appuyé sur ton tuto mais j’ai beaucoup « patachonné » parce que ma compréhension des volumes dans Docker n’était pas au top (c’est un « euphémisme » …). J’ai donc pris mon courage et mon Docker à 2 mains et après divers tests je pense être au clair désormais.
Je comprends que le fichier « configuration.yaml » de zigbee2mqtt est dans le répertoire « /app/data/ » du conteneur. La déclaration de volume pour faire le lien avec le répertoire de mon NAS Synology prend donc la forme suivante :
/volume1/docker/zigbee2mqtt/data:/app/data
(j’ai un répertoire pour chaque conteneur dans le répertoire /volume1/docker)
A ce stade, j’ai la quasi certitude de ne pas faire d’erreur … Je personnalise donc mon fichier « configuration.yaml » et je lance la création du conteneur avec le docker-compose suivant :
version: ‘3.8’
services:
zigbee2mqtt:
container_name: zigbee2mqtt
image: koenkk/zigbee2mqtt:latest
restart: unless-stopped
volumes:
– /volume1/docker/zigbee2mqtt/data:/app/data
#- /volume1/docker/zigbee2mqtt/config:/data/config
#- /run/udev:/run/udev:ro
ports:
– 8085:8085
environment:
– PUID=1000
– PGID=100
– TZ=Europe/Paris
Sans la ligne « – /run/udev:/run/udev:ro » qui pour moi se rapporte aux devices USB et sans déclaration de « Devices » puisque mon dongle est en ethernet pas en USB (la personnalisation du port ethernet se fait dans le fichier « configuration.yaml »).
Résultat : le conteneur se crée puis démarre et s’arrête indéfiniment avec le journal d’erreurs suivant :
2024/08/18 19:05:59 stdout at start (/app/index.js:91:14)
2024/08/18 19:05:59 stdout at Object.reRead (/app/lib/util/settings.ts:734:5)
2024/08/18 19:05:59 stdout at getInternalSettings (/app/lib/util/settings.ts:449:21)
2024/08/18 19:05:59 stdout at read (/app/lib/util/settings.ts:363:27)
2024/08/18 19:05:59 stdout at interpretValue (/app/lib/util/settings.ts:352:25)
2024/08/18 19:05:59 stdout at Object.read (/app/lib/util/yaml.ts:7:37)
2024/08/18 19:05:59 stdout at Object.readFileSync (node:fs:464:35)
2024/08/18 19:05:59 stdout at Object.openSync (node:fs:596:3)
2024/08/18 19:05:59 stdout Error: ENOENT: no such file or directory, open ‘/app/data/… 3.yaml’
2024/08/18 19:05:58 stdout Using ‘/app/data’ as data directory
Et là … je n’y comprends plus rien puisque la 2ème ligne en partant du bas tend à prouver que mon fichier « configuration.yaml » n’est pas trouvé (c’est du moins ainsi que je l’interprète).
J’ai essayé beaucoup de choses depuis 3 jours. J’ai lu beaucoup de doc. sur docker et je suis au bout de ma compréhension. Je suppose que la buse que je suis a raté un truc énorme, mais je ne le vois pas …
Quelques commentaires de ta part seraient les bienvenus. Merci …
Bonjour Pascal,
Première erreur que je vois dans ton docker compose est la ligne ports, l’interface de Zigbee2mqtt tourne sur le port 8080.
Ta ligne doit être « – 8085:8080 ». Essaye et transmet moi les logs.
Peut-tu également me transmettre ton configuration.yaml ?Une autre question, ton conteneur MQTT foncionne ?
Bonjour.
Merci pour cette première réponse.
Effectivement, à force de modifier le docker-compose et de lancer et relancer la création du conteneur, j’ai commis une erreur sur le port conteneur (le port machine est bon car le port 8080 du NAS est déjà en service avec un autre conteneur).
J’ai modifié le docker-compose et relancé l’opération ave le même résultat. Voici le paquet de lignes du log qui se répète à l’infini (le conteneur démarre et s’arrête puis repart puis …).2024/08/19 14:53:58 stderr at processTicksAndRejections (node:internal/process/task_queues:95:5)
2024/08/19 14:53:58 stderr at start (/app/index.js:130:14)
2024/08/19 14:53:58 stderr at Object.reRead (/app/lib/util/settings.ts:749:5)
2024/08/19 14:53:58 stderr at getInternalSettings (/app/lib/util/settings.ts:466:21)
2024/08/19 14:53:58 stderr at read (/app/lib/util/settings.ts:380:27)
2024/08/19 14:53:58 stderr at interpretValue (/app/lib/util/settings.ts:369:25)
2024/08/19 14:53:58 stderr at Object.read (/app/lib/util/yaml.ts:7:37)
2024/08/19 14:53:58 stderr at Object.readFileSync (node:fs:464:35)
2024/08/19 14:53:58 stderr at Object.openSync (node:fs:596:3)
2024/08/19 14:53:58 stderr Error: ENOENT: no such file or directory, open ‘/app/data/… 3.yaml’
2024/08/19 14:53:57 stdout Starting Zigbee2MQTT without watchdog.
2024/08/19 14:53:55 stdout Using ‘/app/data’ as data directoryCe qui me trouble dans ce log c’est le »/app/data/… 3.yaml’ : le nom devant .yaml ne semble pas une compression de nom trop long et je ne vois pas à quoi cela correspond.
Par acquis de conscience le docker-compose utilisé :
version: ‘3.8’
services:
zigbee2mqtt:
container_name: zigbee2mqtt
image: koenkk/zigbee2mqtt:latest
restart: unless-stopped
network_mode: bridge
volumes:
– /volume1/docker/zigbee2mqtt/data:/app/data
#- /run/udev:/run/udev:ro
ports:
– 8085:8080
environment:
– PUID=1026
– PGID=101
– TZ=Europe/ParisVoici le fichier « /data/configuration.yaml » :
homeassistant: false
frontend: true
mqtt:
base_topic: zigbee2mqtt
#Serveur MQTT
server: mqtt://192.168.1.100:1883
#Identification pour accès au serveur
user: xxx
password: yyy
serial:
# Localisation du dongle POE SLZB-06 (ethernet)
port: tcp://192.168.1.43:6638
baudrate: 115200
adapter: zstack
# Configuration led verte du dongle
disable_led: false
advanced:
# Initialise la puissance de sortie pour le dongle (max = 20)
transmit_power: 20
network_key:
– 188
– 211
– 66
– 142
– 45
– 248
– 59
– 242
– 109
– 0
– 159
– 130
– 231
– 223
– 124
– 110
pan_id: 2371
ext_pan_id:
– 147
– 118
– 203
– 153
– 229
– 76
– 33
– 66Dans ce fichier, tout ce qui concerne le dongle SLZB-06 est donné comme configuration personnalisée par la page web associée au dongle.
Merci encore pour ton aide.
Pascal,
Reprenons depuis le début avec le moins de paramètres possible, peut-tu déployer ton conteneur avec le docker compose suivant :
version: ‘3.8’
services:
zigbee2mqtt:
container_name: zigbee2mqtt
image: koenkk/zigbee2mqtt:latest
restart: unless-stopped
volumes:
– /volume1/docker/zigbee2mqtt/data:/app/data
#- /run/udev:/run/udev:ro
ports:
– 8085:8080
environment:
– TZ=Europe/ParisEnsuite le configuration.yaml suivant :
homeassistant: false #si tu utilise home assistant il faut le mettre à true
mqtt:
base_topic: zigbee2mqtt
server: mqtt://192.168.1.100:1883
user: xxx
password: yyy
serial:
port: mdns://slzb-06 #autodiscovery regarde le site -> https://www.zigbee2mqtt.io/guide/configuration/adapter-settings.html#mdns-zeroconf-discovery
disable_led: false
frontend: #frontend: true ne fonctionne plus
port: 8080 #Démarrage de l’interface sur le port 8080A partir de network_key, supprime tout. Pour les paramètres supplémentaires nous verrons plus tard.
ATTENTION A LA SYNTAXE YAML !!! Le site suivant te permet de corrigé -> https://www.yamllint.com/Transmet moi à nouveau les logs.
Bonsoir.
J’ai fait les modifs suggérées et j’ai passé le fichier « configuration.yaml » à la vérification (merci pour le tuyau … je ne connaissais pas cet outil utile). Le résultat est identique : le conteneur se crée et, indéfiniment, démarre puis s’arrête. A chaque démarrage, le log suivant est édité :2024/08/20 18:53:55 stderr at start (/app/index.js:130:14)
2024/08/20 18:53:55 stderr at Object.reRead (/app/lib/util/settings.ts:749:5)
2024/08/20 18:53:55 stderr at getInternalSettings (/app/lib/util/settings.ts:466:21)
2024/08/20 18:53:55 stderr at read (/app/lib/util/settings.ts:380:27)
2024/08/20 18:53:55 stderr at interpretValue (/app/lib/util/settings.ts:369:25)
2024/08/20 18:53:55 stderr at Object.read (/app/lib/util/yaml.ts:7:37)
2024/08/20 18:53:55 stderr at Object.readFileSync (node:fs:464:35)
2024/08/20 18:53:55 stderr at Object.openSync (node:fs:596:3)
2024/08/20 18:53:54 stderr Error: ENOENT: no such file or directory, open ‘/app/data/… 3.yaml’
2024/08/20 18:53:53 stdout Starting Zigbee2MQTT without watchdog.
2024/08/20 18:53:51 stdout Using ‘/app/data’ as data directoryPetit constat complémentaire :
Lorsque tu crées et démarres le conteneur sans fichier « configuration.yaml », le système en crée un « standard ». Dans le cas qui nous occupe, le « configuration.yaml » existe et est donc conservé mais sa date de modification change (c’est WinSCP qui me le dit). Cela laisse penser que le système le trouve et le modifie « à l’identique » faute, je suppose, d’avoir pu réaliser le démarrage du conteneur. Ceci est d’ailleurs confirmé par Notepad++ qui me dit que le fichier a été modifié par un autre programme.
Je crois que si le conteneur avait démarré correctement, le système aurait ajouté les network_key, pan_id et ext_pan_id.
De cela je retire l’idée que le problème rencontré ne vient pas du fait que le système ne trouve pas le « configuration.yaml », c’est une autre donnée qu’il cherche …Bonsoir,
Deux questions :
1. Ton conteneur MQTT fonctione-t-il ?
2. Est ce que tu modifie tes fichier avec winscp et notepad ?
Bonjour.
Pour que tu aies une vue un peu plus large, voici avec quoi et comment je travaille :
– ma machine de référence est un NAS Synology DS220+sur lequel j’ai installé Docker
– Docker porte actuellement 4 conteneurs :
> syncthing (une appli de synchronisation de fichiers,
> mqtt (eclipse mosquitto),
> portainer (très récent, je maîtrise très mal : j’utilise peu et avec parcimonie),
> domoticz (mon système de domotique actuel qui a un plugin zigbeefordomoticz utilisant un dongle E USB Sonoff).
Avec l’installation de Docker et ma compréhension améliorée de la façon dont le NAS était organisé, je me suis rendu compte qu’il était plus commode de travailler dedans en SSH. J’utillise donc les 2 outils traditionnels que sont putty et WinSCP. Pour la manipulation des fichiers qui s’y prêtent, j’utilise Notepad++
Si tu te poses la question, comme je me la suis posée : si je travaille alors que Domoticz tourne et que le dongle USB est raccordé ou si j’arrête le conteneur Domoticz et que je débranche le dongle USB, je n’obtiens aucune différence de résultat lorsque je travaille sur la création du conteneur z2m.
Actuellement MQTT fonctionne parfaitement et mon réseau domotique avec zigbee aussi …
Pour être complet, je précise que je vise, à terme, une configuration Home assistant + z2m + ESPHome (je crée des modules spécialisés à base d’ESP), chacun de ces applicatifs en conteneur (choix délibéré) et comme mes premiers essais HA + z2m patachonnaient avec z2m, je me suis polarisé sur l’installation de Z2m (l’installation d’Ha se faisant sans aucune difficulté).
Durant mes recherches, je suis tombé par hasard sur un échange récent entre un utilisateur de l’image Docker koenkk/zigbee2mqtt et Koenkk le créateur. Le gars se plaignait que son dongle POE SLZB-06 ne fonctionnait plus depuis la version 1.39.1 de l’image z2m. Je n’ai pas tout compris mais apparemment les pb. du gars ont été résolus. J’ai donc essayé de changer l’image (1.38.0, 1.39.0, 1.39.1, latest_dev) mais rien a changé en termes de résultats et de log. J’ai essayé de prendre contact avec « le plaignant » (un allemand) mais il ne s’est pas montré très réceptif à mes questions …
Encore une fois, merci pour le temps que tu me consacres.
Bonjour Pascal,
Ok pour MQTT.
Je te pose la question pour la modification des fichiers à cause des droits sur ces mêmes fichiers.
Si je comprends bien, tu utilises Notepad++ pour les modifier (peut-être un problème de droit sur le fichier configuration.yaml).
Est-tu connecté en root sur ton nas ?
Te serait-il possible d’installer nano sur ton NAS ? Cela permet d’éditer les fichiers en étant sûr de ne pas modifier les droits.Tes logs nous disent qu’il n’y a pas de dossier ou de fichier /app/data/… 3.yaml
« no such file or directory, open ‘/app/data/… 3.yaml »
Notepad est en mode admin.
Je suis connecté en root sur le NAS.
Par principe, lorsque je modifie un fichier dans le NAS avec Notepad++, je vérifie son état en le rappelant avec WinSCP. Mes fichiers sont donc bien modifiés, les heures de modification en attestent.
Je suis d’accord pour le log … mais je ne comprends pas le message … En effet, si le système ne trouve pas le fichier « configuration.yaml », il en crée un standard (j’ai refait le test). En outre, comme je te l’ai dit, le système modifie le fichier « configuration.yaml » … c’est une certitude. J’imagine donc qu’il y a quelque chose qu’il ne trouve pas dans ce fichier …
J’essaye de remonter via github au contenu de l’image du conteneur pour trouver l’endroit d’édition du message et surtout, ce qui le provoque mais pour moi c’est chercher une aiguille dans une botte de foin …
Sur les fichiers que tu modifies il y à les droits d’accès que tu peut gérer sur linux
avec la commande CHMOD et l’appartenance des fichiers « groupe (GID) + utilisateur (UID) » que tu peut gérer
avec la commande CHOWN.Lorsque tu modifies les fichiers avec notepad++ je ne suis pas sûr que tu conserves les droits
d’accès et l’appartenance au groupe et à l’utilisateur d’où le log « no such file or directory, open ‘/app/data/… 3.yaml ».
Z2M n’a peut être plus le droit de lire et d’écrire le fichier configuration.yamlPour tester cette hypothèse, il faut supprimer le conteneur et son volume persistant (le dossier zigbee2mqtt dans /volume1/docker/)
Installer nano sur ton NAS.
Déployer un nouveau conteneur et modifier tes fichiers avec nano.
Bonsoir …
J’ai pu vérifier avec Putty et WinSCP que Notepad++ ne modifie ni l’utilisateur, ni le groupe d’appartenance, ni les droits d’accès du fichier.
Cependant, j’ai procédé comme tu me l’as indiqué (ce qui m’a permis d’apprendre des choses nouvelles …) :
– suppression du conteneur zigbee2mqtt,
– effacement total du répertoire /docker/zigbee2mqtt,
– recréation des répertoires /docker/zigbee2mqtt et /docker/zigbee2mqtt/data avec Putty,
– installation de nano sur le NAS,
– création du fichier « configuration.yaml » avec nano,
– changement, via Putty, du droit d’accès sur ce fichier afin d’avoir la certitude qu’il est lisible, modifiable et exécutable par l’installateur du conteneur z2m.
Le résultat est … hélas … toujours le même, avec le même log d’erreurs … crispant …
Bonsoir,
Une dernière question, créer-tu manuellement le dossier zigbee2mqtt ?
Si oui, comment ?
1. Avec la commande « docker volume create »
2. Avec « mkdir »Normalement tu n’a pas besoin de créer de répertoire manuellement.
Dans ton docker compose la ligne « – /volume1/docker/zigbee2mqtt/data:/app/data »
va créer automatiquement les dossiers et paramétrer les droits.Si tu veut bien, supprime de nouveau ton conteneur et ton dossier Z2M, puis
lance le docker compose ci-dessous sans créer de dossiers manuellement.
Laisse aussi le volume « udev » au cas ou.Une fois cette méthode testée, nous aurons fait le tour des droits, groupes et utilisateurs.
Il faudra chercher ailleurs !Attention à la syntaxe yaml…
version: ‘3.8’
services:
zigbee2mqtt:
container_name: zigbee2mqtt
image: koenkk/zigbee2mqtt:latest
restart: unless-stopped
volumes:
– /volume1/docker/zigbee2mqtt:/app/data
– /run/udev:/run/udev:ro
ports:
– 8085:8080
environment:
– TZ=Europe/ParisBonjour.
Lors de ma dernière création de conteneur j’avais tout effacé et recréé les répertoires en SSH avec mkdir. Lorsque tu effaces tous les répertoires et que tu lances le docker-compose, le système se bloque et te dit que les répertoires n’existent pas et il ne les crée pas. J’ai donc recréé les répertoires ‘/docker/zigbee2mqtt’ et ‘/docker/zigbee2mqtt/data’ avec mkdir.
J’ai repris ensuite un test déjà fait (à force; je finis par oublier le détail des résultats de certains tests …) : je n’ai pas créé le fichier ‘configuration.yaml’. Voici le log d’exécution :
2024/08/23 12:07:25 stdout [2024-08-23 12:07:25] [31merror[39m: z2m: Error: Error: No such file or directory, cannot open /dev/ttyACM0
2024/08/23 12:07:25 stdout [2024-08-23 12:07:25] [31merror[39m: z2m: Exiting…
2024/08/23 12:07:25 stdout [2024-08-23 12:07:25] [31merror[39m: z2m: Check https://www.zigbee2mqtt.io/guide/installation/20_zigbee2mqtt-fails-to-start.html for possible solutions
2024/08/23 12:07:25 stdout [2024-08-23 12:07:25] [31merror[39m: z2m: Failed to start zigbee
2024/08/23 12:07:25 stdout [2024-08-23 12:07:25] [31merror[39m: z2m: Error while starting zigbee-herdsman
2024/08/23 12:07:25 stdout [2024-08-23 12:07:25] [32minfo[39m: zh:zstack:znp: Opening SerialPort with {« path »: »/dev/ttyACM0″, »baudRate »:115200, »rtscts »:false, »autoOpen »:false}
2024/08/23 12:07:25 stdout [2024-08-23 12:07:25] [31merror[39m: zh:zstack:znp: Failed to determine if path is valid: ‘Error: ENOENT: no such file or directory, lstat ‘/dev/ttyACM0 »
2024/08/23 12:07:24 stdout [2024-08-23 12:07:24] [32minfo[39m: z2m: Starting zigbee-herdsman (0.55.3)
2024/08/23 12:07:24 stdout [2024-08-23 12:07:24] [32minfo[39m: z2m: Starting Zigbee2MQTT version 1.39.1 (commit #e132316)
2024/08/23 12:07:24 stdout [2024-08-23 12:07:24] [32minfo[39m: z2m: Logging to console, file (filename: log.log)
2024/08/23 12:07:19 stdout Starting Zigbee2MQTT without watchdog.
2024/08/23 12:07:17 stdout Creating configuration file…
2024/08/23 12:07:17 stdout Using ‘/app/data’ as data directoryQuelques commentaires :
– évidemment, il ne trouve pas le coordinateur zigbee USB et crache les erreurs correspondantes mais note bien sur la 7ème ligne en partant du bas qu’il se plante parce qu’il
ne peut pas accéder à un répertoire ou un fichier associé au coordinateur zigbee et non parce qu’i n’a pas de fichier « configuration.yaml » ;
– tu notes la 2ème ligne en partant du bas : « Creating configuration file… ». c’était le but de la manoeuvre : s’il crée lui même le fichier et que je le modifie (en vérifiant que les propriétés de fichier n’ont pas variées) … ensuite il ne peut pas ne pas pouvoir y accéder …
Voici le fichier créé :homeassistant: false
frontend: true
mqtt:
base_topic: zigbee2mqtt
server: mqtt://localhost
serial:
port: /dev/ttyACM0
advanced:
network_key:
– 248
– 111
– 127
– 162
– 222
– 146
– 105
– 150
– 234
– 73
– 8
– 18
– 35
– 127
– 148
– 5
pan_id: 53807
ext_pan_id:
– 254
– 238
– 57
– 196
– 28
– 9
– 243
– 206Je modifie le fichier « configuration.yaml » ainsi :
homeassistant: false
frontend: true
mqtt:
base_topic: zigbee2mqtt
server: mqtt://192.168.1.100:1883
user: xxx
password: yyy
serial:
port: tcp://192.168.1.43:6638
baudrate: 115200
adapter: zstack
disable_led: false
advanced:
transmit_power: 20
network_key:
– 248
– 111
– 127
– 162
– 222
– 146
– 105
– 150
– 234
– 73
– 8
– 18
– 35
– 127
– 148
– 5
pan_id: 53807
ext_pan_id:
– 254
– 238
– 57
– 196
– 28
– 9
– 243
– 206J’arrête le conteneur et je le relance. Voici le log (histoire connue …) :
2024/08/23 12:43:59 stderr at start (/app/index.js:130:14)
2024/08/23 12:43:59 stderr at Object.reRead (/app/lib/util/settings.ts:749:5)
2024/08/23 12:43:59 stderr at getInternalSettings (/app/lib/util/settings.ts:466:21)
2024/08/23 12:43:59 stderr at read (/app/lib/util/settings.ts:380:27)
2024/08/23 12:43:59 stderr at interpretValue (/app/lib/util/settings.ts:369:25)
2024/08/23 12:43:59 stderr at Object.read (/app/lib/util/yaml.ts:7:37)
2024/08/23 12:43:59 stderr at Object.readFileSync (node:fs:464:35)
2024/08/23 12:43:59 stderr at Object.openSync (node:fs:596:3)
2024/08/23 12:43:59 stderr Error: ENOENT: no such file or directory, open ‘/app/data/… 3.yaml’
2024/08/23 12:43:58 stdout Starting Zigbee2MQTT without watchdog.
2024/08/23 12:43:58 stdout Using ‘/app/data’ as data directorySauf que maintenant, j’ai la quasi conviction que le répertoire ou le fichier manquant est lié à l’instruction « adapter: zstack » du fichier de configuration.
Bonsoir Pascal,
Je suis d’accord avec toi, nous savons maintenant que le conteneur démarre avec les bon droits.
Il reste la configuration. Essaye de commenter la ligne « adapter: zstack » et redémarre le conteneur.
Si cela ne marche pas, commente les lignes « advanced: transmit_power: 20 » en plus et redémarre.
Bonjour.
Mort de rire … enfin, c’est une façon de parler …
J’ai commenté les 2 lignes préconisées et redémarré le conteneur. Le journal d’exécution est … exactement le même que les derniers que nous avons obtenus. Autant dire que la ligne « adapter: zstack » laisse le système de marbre … 😂
Bonsoir,
Je viens de tester chez moi avec un sonoff zigbee bridge pro flasher avec tasmota et voici mes logs :
[2024-08-24 21:02:38] info: z2m: Logging to console, file (filename: log.log)
[2024-08-24 21:02:38] info: z2m: Starting Zigbee2MQTT version 1.39.1 (commit #e132316)
[2024-08-24 21:02:38] info: z2m: Starting zigbee-herdsman (0.55.3)
[2024-08-24 21:02:39] info: zh:zstack:znp: Opening TCP socket with 192.168.1.248:8888
[2024-08-24 21:02:39] info: zh:zstack:znp: Socket connected
[2024-08-24 21:02:39] info: zh:zstack:znp: Socket ready
[2024-08-24 21:02:39] info: zh:zstack:znp: Writing CC2530/CC2531 skip bootloader payload
[2024-08-24 21:02:40] info: zh:zstack:znp: Skip bootloader for CC2652/CC1352
[2024-08-24 21:04:34] info: zh:controller: Wrote coordinator backup to ‘/app/data/coordinator_backup.json’
[2024-08-24 21:04:36] info: z2m: zigbee-herdsman started (reset)
[2024-08-24 21:04:36] info: z2m: Coordinator firmware version: ‘{« meta »:{« maintrel »:1, »majorrel »:2, »minorrel »:7, »product »:1, »revision »:20220219, »transportrev »:2}, »type »: »zStack3x0″}’
[2024-08-24 21:04:36] info: z2m: Currently 0 devices are joined:
[2024-08-24 21:04:36] info: z2m: Zigbee: disabling joining new devices.
[2024-08-24 21:04:36] info: z2m: Connecting to MQTT server at mqtt://192.168.1.226:1883
[2024-08-24 21:04:36] info: z2m: Connected to MQTT server
[2024-08-24 21:04:36] info: z2m:mqtt: MQTT publish: topic ‘zigbee2mqtt/bridge/state’, payload ‘{« state »: »online »}’
[2024-08-24 21:04:37] info: z2m: Started frontend on port 8080
[2024-08-24 21:04:37] info: z2m: Zigbee2MQTT started!Le docker compose :
version: ‘3.8’
services:
zigbee2mqtt:
container_name: zigbee2mqtt
image: koenkk/zigbee2mqtt
restart: unless-stopped
volumes:
– zigbee2mqtt:/app/data
ports:
– 8085:8080
environment:
– TZ=Europe/Paris
volumes:
zigbee2mqtt:le configuration.yaml
homeassistant: false
frontend: true
mqtt:
base_topic: zigbee2mqtt
server: mqtt://192.168.1.226:1883
user: xxx
password: xxx
serial:
port: tcp://192.168.1.248:8888
advanced:
network_key:
– 111
– 196
– 162
– 237
– 128
– 18
– 211
– 148
– 16
– 4
– 61
– 131
– 70
– 107
– 63
– 19
pan_id: 26628
ext_pan_id:
– 11
– 234
– 28
– 67
– 231
– 255
– 156
– 197
homeassistant_legacy_entity_attributes: false
legacy_api: false
legacy_availability_payload: false
device_options:
legacy: falseZigbee2mqtt ne détecte pas ton adaptateur, as-tu des réglage ? J’ai vu que tu pouvais le paramétrer.
Bonsoir …
Petit moment de silence de ma part ma Dame estimant que les obligations familiales ont la priorité sur l’installation d’un coordinateur zigbee … Quelle idée !… 😂
Voilà une démonstration que j’aime et je t’en remercie infiniment …
le SLZB-06 embarque un CC2652P + un ESP32. Il a une page web sur laquelle tu disposes de nombreuses informations et où tu peux faire quelques réglages ainsi qu’une mise à jour en ligne du firmware. Incidemment, cette page web te donne la personnalisation à faire figurer dans ton « configuration.yaml » (ce que j’ai fait). Les seuls réglages que j’ai fait sont de sélectionner le mode de fonctionnement du dongle (coordinateur zigbee) et le mode de connexion (ethernet). L’adresse IP est délivrée par mon routeur. J’ai paramétré cette IP pour qu’elle soit statique. Je vois le dongle sur mon réseau.
Je pense qu’il y a peut-être un problème lié au pare-feu du NAS …
Bonjour …
Nouvelle déception,
– j’ai remis à plat le pare-feu de mon NAS Synology après avoir relu la doc. et quelques tutoriels bien faits que j’ai fini par comprendre (je crois …) ;
– j’ai remis à plat le réseau docker après avoir relu la doc. et fait tout une série de tests. A ce stade mon réseau docker est composé de réseaux de type bridge que j’ai définis et qui, si j’ai bien compris Docker, se trouvent et peuvent échanger entre eux à partir de leurs noms de conteneurs respectifs.
J’ai relancé le docker compose et le résultat est … sans changement.
Faute d’avoir une absolue certitude côté pare-feu, j’ai relancé l’opération en le neutralisant totalement … même résultat …
J’avoue avoir un petit coup de blues car les pistes pour poursuivre … m’échappent « un peu » …
re(bonjour) …
Si je ne me suis pas trompé, j’ai tenté de « pinger » l’IP du dongle POE depuis le conteneur « mqtt » avec la commande « docker exec -it mqtt ping 192.168.1.43 ». Le dongle a répondu …
Partant du principe que lorsque je le crée, le conteneur « zigbee2mqtt » démarre puis s’arrête et enchaîne cette séquence à l’infini, j’ai tenté la même manœuvre et … le dongle a répondu …
Si je n’ai pas commis d’erreur, cela signifie que le problème rencontré n’est pas lié à la connectivité.
Bonsoir Pascal,
J’ai commandé un SLZB-06 que je dois recevoir demain ! Cela me permettras de faire des tests et de remplacer mon dongle USB au 2ème étage et mon Sonoff zigbee bridge pro au rez-de-chaussé et par la même occasion de faire un article et peut être de trouver ton problème.
Je reviens vers toi demain (si je suis livré) après mes premiers tests !re(bonsoir),
Le problème et peut-être lié à docker (droit, installation ou paramétrage sur un NAS), lit les commentaires de l’article « Installation Home Assistant sur Docker » concernant l’installation sur un NAS WD MyCloudEx2Ultra. Tous les conteneurs fonctionnaient hormis Home Assistant, en plus il s’appelait Pascal !! 😂
Bonjour Pascal,
Je viens de tester chez moi et cela à marcher avec la procédure suivante :
1. Dans l’interface du slzb-06, dans l’onglet « mode » j’ai activé « Zigbee Coordinator » puis je l’ai redémarré.
2. Démarrage du conteneur Z2M avec le docker-compose suivant :
version: '3.8'
services:
zigbee2mqtt:
container_name: zigbee2mqtt
image: koenkk/zigbee2mqtt
restart: unless-stopped
volumes:
- zigbee2mqtt:/app/data
- udev:/run/udev:ro
ports:
- 8085:8080
environment:
- TZ=Europe/Paris
volumes:
zigbee2mqtt:
udev:
3. Dans le fichier « configuration.yaml » j’ai mis le code suivant en conservant la partie « advanced » et « network_key » :
homeassistant: false
frontend: true
mqtt:
base_topic: zigbee2mqtt
server: mqtt://xxx.xxx.x.xxx:1883
user: xxxx
password: xxxx
serial:
port: tcp://xxx.xxx.x.xxx:6638
4. Après redémarrage du conteneur, j’ai les logs suivants :
[2024-08-27 14:31:59] info: z2m: Logging to console, file (filename: log.log)
[2024-08-27 14:31:59] info: z2m: Starting Zigbee2MQTT version 1.39.1 (commit #e132316)
[2024-08-27 14:31:59] info: z2m: Starting zigbee-herdsman (0.55.3)
[2024-08-27 14:31:59] info: zh:zstack:znp: Opening TCP socket with 192.168.1.149:6638
[2024-08-27 14:31:59] info: zh:zstack:znp: Socket connected
[2024-08-27 14:31:59] info: zh:zstack:znp: Socket ready
[2024-08-27 14:31:59] info: zh:zstack:znp: Writing CC2530/CC2531 skip bootloader payload
[2024-08-27 14:32:00] info: zh:zstack:znp: Skip bootloader for CC2652/CC1352
[2024-08-27 14:32:21] info: zh:controller: Wrote coordinator backup to ‘/app/data/coordinator_backup.json’
[2024-08-27 14:32:21] info: z2m: zigbee-herdsman started (reset)
[2024-08-27 14:32:21] info: z2m: Coordinator firmware version: ‘{« meta »:{« maintrel »:1, »majorrel »:2, »minorrel »:7, »product »:1, »revision »:20221226, »transportrev »:2}, »type »: »zStack3x0″}’
[2024-08-27 14:32:21] info: z2m: Currently 0 devices are joined:
[2024-08-27 14:32:21] info: z2m: Zigbee: disabling joining new devices.
[2024-08-27 14:32:21] info: z2m: Connecting to MQTT server at mqtt://192.168.1.226:1883
[2024-08-27 14:32:21] info: z2m: Connected to MQTT server
[2024-08-27 14:32:21] info: z2m:mqtt: MQTT publish: topic ‘zigbee2mqtt/bridge/state’, payload ‘{« state »: »online »}’
[2024-08-27 14:32:21] info: z2m: Started frontend on port 8080
[2024-08-27 14:32:21] info: z2m: Zigbee2MQTT started!
Bonsoir.
Tu implantes ton docker sur quelle machine ?
Peux-tu me donner le log de création du conteneur ?
Peux tu relancer la création du conteneur sans le Bind mount « – udev:/run/udev:ro » pour voir ce qui se passe ?
J’ai relu la doc de docker sur les volumes mappés et les volumes managés et je ne comprends pas pourquoi tu doubles ta déclaration de volumes mappés avec une déclaration de volumes managés. Mon docker-compose ne la prend d’ailleurs pas …
Je reconnais une certaine lassitude à patachonner sans savoir dans quelle direction avancer et sans détail pour identifier l’anomalie rencontrée … 🥵 … Tant que je ne saurai pas identifier à quoi se rapporte l’erreur
Error: ENOENT: no such file or directory, open ‘/app/data/… 3.yaml’ je doute de pouvoir avancer
La gestion des droits dans un NAS Synology est pour moi globalement incompréhensible … A chaque fois que j’essaye de comprendre, je tombe sur un contre-exemple. Pourtant mon cas est simple, j’ai 2 accès : moi (PUID = 1026) dans le groupe administrateur (PGID=101) et … moi dans le groupe utilisateur (PGID=100) …
Lorsque je lance un docker-compose avec Putty, je suis en root (PGID=0, PUID=0) .
Il n’y a pas de problème de droit pour accéder au répertoire « /volume1/docker/zigbee2mqtt » puisque lorsque je lance le docker-compose sans fichier « configuration.yaml », le système peut le créer et lorsqu’il est présent, il peut le modifier … Il n’y a pas non plus de problème de droits d’accès dus aux propriétés des répertoires et fichiers : tous ont été passés en « rwxrwxrwx ». En outre, j’ai essayé de lancer le docker compose avec tous les couples (PGID, PUID) de type « administrateur » et rien ne change. Via WinSCP j’ai changé les propriétés des répertoires et fichiers de « root root » à « Pascal administrators » et « Pascal users » … rien ne change.
J’ai installé 4 conteneurs avec des installations standard sans me prendre la tête et je n’ai jamais eu de problème de droits …
Merci pour tout tes efforts …
Bonjour,
Mon serveur :
– Carte mère supermicro H11SSLi
– Processeur AMD Epyc 7551p 32 coeurs
– 128G de RAMMon installation :
– Proxmox en OS principal
– Une VM debian avec dockerLes logs lors de la première création du conteneur :
[2024-08-27 14:27:35] info: z2m: Logging to console, file (filename: log.log)
[2024-08-27 14:27:35] info: z2m: Starting Zigbee2MQTT version 1.39.1 (commit #e132316)
[2024-08-27 14:27:35] info: z2m: Starting zigbee-herdsman (0.55.3)
[2024-08-27 14:27:35] error: zh:zstack:znp: Failed to determine if path is valid: ‘Error: ENOENT: no such file or directory, lstat ‘/dev/ttyACM0 »
[2024-08-27 14:27:35] info: zh:zstack:znp: Opening SerialPort with {« path »: »/dev/ttyACM0″, »baudRate »:115200, »rtscts »:false, »autoOpen »:false}
[2024-08-27 14:27:35] error: z2m: Error while starting zigbee-herdsman
[2024-08-27 14:27:35] error: z2m: Failed to start zigbee
[2024-08-27 14:27:35] error: z2m: Check https://www.zigbee2mqtt.io/guide/installation/20_zigbee2mqtt-fails-to-start.html for possible solutions
[2024-08-27 14:27:35] error: z2m: Exiting…
[2024-08-27 14:27:35] error: z2m: Error: Error: No such file or directory, cannot open /dev/ttyACM0Après paramétrage du « configuration.yaml », mon conteneur affiche les logs transmit précédemment.
J’ai relancé mon conteneur sans le volume « udev », il démarre sans problème.
Je ne double pas ma déclaration de volume. La première déclaration me sers à donner le nom du volume persistant et le chemin du volume dans le conteneur. La deuxième déclaration demande à docker de le créer et de le gérer, un équivalent de la commande « docker create volume » dans ton docker compose. Sous cette forme mes volumes sont crées dans le dossier « /var/lib/docker/volumes » et sont gérables à partir de Portainer.
Je pense de plus en plus que cette erreur est lier à l’installation et au paramétrage de docker sur ton NAS.
Docker dispose d’un fichier de configuration nommé « daemon.json » normalement situé dans le dossier « etc/docker » (sur le nas je ne suis pas sûr), peut-tu me le transmettre ?
Bonjour.
J’ai balayé tous les fichiers et répertoires du NAS sans trouver de fichier « daemon.json » par contre, dans le répertoire « /etc/docker » j’ai trouvé le fichier « key.json » qui contient les données suivantes :
{« crv »: »P-256″, »d »: »rxFSNxcDheynX3i7wuomwULlI-xvtpwRmRAxdX1hGIw », »kid »: »YIAP:SKRZ:VWAP:2JMK:5O3K:Q7VN:X72Q:SLBI:MJEP:YRST:UQE2:3ZKS », »kty »: »EC », »x »: »Z1_7TwO7HUseNm0evXibw4aiDmJLwm2hALV8sfdP8Ow », »y »: »R_gbr9fbFmKE1qm1T2IPigM9VkX1d4XGKohjhJf7y1Q »}
Mis en forme cela donne :
crv : P-256
d : rxFSNxcDheynX3i7wuomwULlI-xvtpwRmRAxdX1hGIw
kid : YIAP:SKRZ:VWAP:2JMK:5O3K:Q7VN:X72Q:SLBI:MJEP:YRST:UQE2:3ZKS
kty : EC
x : Z1_7TwO7HUseNm0evXibw4aiDmJLwm2hALV8sfdP8Ow
y : R_gbr9fbFmKE1qm1T2IPigM9VkX1d4XGKohjhJf7y1Q
Bonne journée …
re(bonjour).
Je continue de potasser et de réfléchir …
Pour revenir à ta remarque concernant l’installation et le paramétrage de Docker, il convient que je te précise que sur les NAS Synology, l’installation de Docker passe par l’installation de « Container manager », appli pure Synology qui joue un peu le rôle de Portainer et qu’il y a 0 paramétrage lorsqu’on l’installe …
YES … 🥳 …😉 … TOUT EST OK …
Lorsque je programme des ESP et que je me retrouve en face d’un gros bug … je sais que l’erreur vient de moi. Et plus le bug est gros, plus l’erreur est énorme et basique. C’est à peu près la même chose ici : je me suis décidé à reprendre tout de zéro, création des répertoires, puis création du conteneur sans fichier « configuration.yml » présent, puis modification du fichier « configuration.yml » mais cette fois par étapes. Dans un premier temps j’ai seulement configuré le SLZB-06 et … le coordinateur est reconnu et connecté. A ce stade je n’ai évidemment pas de MQTT puisque je n’ai pas personnalisé les paramètres de connexion. Je personnalise et le conteneur se plante … Tel que je rentre le « user » et le « mot de passe », cela correspond à la connexion au NAS. Je fais sauter ces 2 données et ne laisse que l’IP de connexion MQTT et … tout redevient normal, le conteneur se connecte à MQTT.
J’ai laissé tourner un peu et j’ai vu que la connexion n’était pas super stable. Dans la page web du SLZB-06, dans l’onglet « Paramètres et outils », il y a un onglet « Mise à jour du firmware ». Vérifie l’état des firmwares dongle et zigbee car pour moi ils avaient significativement changé.
Je vais maintenant m’attaquer au conteneur Home assistant …
J’ai vu dans le journal la ligne suivante :
[2024-08-28 16:01:20] info: z2m:mqtt: MQTT publish: topic ‘zigbee2mqtt/bridge/config’, payload ‘{« commit »: »e132316″, »coordinator »:{« meta »:{« maintrel »:1, »majorrel »:2, »minorrel »:7, »product »:1, »revision »:20240710, »transportrev »:2}, »type »: »zStack3x0″}, »log_level »: »info », »network »:{« channel »:11, »extendedPanID »: »0x6e8dbd9db7f76e17″, »panID »:8838}, »permit_join »:false, »version »: »1.39.1″}’
J’interprète cela comme une publication MQTT sur le topic de configuration « zigbee2mqtt/bridge/config ». Comment se gère les topics lorsque Home assistant sera raccordé ?
Voilà (pour l’instant …). Avec les objectifs que je me suis fixé, je pense avoir d’autres occasions de t’interroger. En attendant un grand merci pour ton aide et ta disponibilité. Je me tiens à ta disposition si tu veux des retours d’expérience sur le NAS Synology utilisé en domotique …
Bonsoir Pascal,
Contant pour toi !!! Et oui c’est bien un topic mqtt. Dans le configuration.yaml tu mes une ligne « homeassistant: true » et cela remonte automatiquement dans HA et mqtt.
Si pas de fichier « daemon.json », c’est qu’il n’y a aucune configuration spécifique (je t’invite à lire la doc sur ce fichier qui peut être très utile).
N’hésite pas à me donner des nouvelles et à revenir en cas de bug. Perso, j’ai déjà passé, comme toi des jours complets sur des paramétrages.Bonne soirée !!
Bonjour Stéphane.
L’installation de Home assistant s’est faite sans histoire, la liaison Home assistant / MQTT pas davantage. J’ai intégré mon premier device (un thermostat de radiateur) et j’ai bien récupéré tous ses paramètres. Pour mémoire, je n’avais jamais réussi à intégrer ce device dans Domoticz (via zigbeefordomoticz), c’est d’ailleurs une des raisons de mes orientations et tests actuels.
L’étape suivante est de pouvoir contrôler les paramètres de Home assistant (par exemple la température de consigne de radiateur) via un module domotique construit autour d’un ESP, ce que je sais très bien faire avec Domoticz. Je suppose que cela passe par ESPHome et une bonne connaissance de Home assistant … domaines dans lesquels j’ai « juste » tout à apprendre …
Bonne fin de journée.
Bonjour Pascal,
Pour la partie ESP tu as deux solutions :
1. ESPHome, tu trouveras le tuto d’installation sur le blog.
2. Tasmota (plus complexe), tu peut l’utiliser avec MQTT, matter(ESP32) et HTML. Lors de la connexion de ton premier module(MQTT) Home Assistant te propose l’intégration, l’installe et la paramètre automatiquement.
Pour la partie automatisation, Home Assistant le gère très bien et très facilement.Bonne soirée !
Laisser un commentaire