[TUTORIEL] Zigbee2mqtt

Bonjour à tous,

J’ai décidé de créer un github dédié à l’utilisation de Zigbee2mqtt avec Gladys de façon à mettre à disposition des scripts, associés aux diverses manipulations.

Vous trouverez donc le Tuto à l’adresse suivante :

Pour pouvoir avancer sur les tests du module Zigbee2mqtt et simplifier ceux-ci, je me suis permis de générer une image de Gladys intégrant le service Zigbee2mqtt .
Cela permet d’éviter à tous de se créer une machine de développement, ce qui n’est pas forcément trivial pour celui qui n’a pas l’habitude.
@Pierre-Gilles, si cette façon de procéder ne te convient pas, n’hésite pas à le dire et je supprimerai cette version du Docker Hub.

Après utilisation du Tuto, si ça ne fonctionne pas comme indiqué ou si votre objet ne semble pas bien intégré, venez en parler sur le forum en précisant le nom du modèle et en ajoutant les parties des logs Zigbee2mqtt et Gladys qui vous semblent intéressantes.

Enfin, si votre objet fonctionne correctement, laissez quand même un commentaire sur le forum avec le nom du modèle, ça permettra de mettre à jour une liste du matéreil testé et ça fera toujours plaisir aux développeurs… :wink:

Bonne lecture !!!

6 Likes

Ce post est dédié au matériel testé :

Au top, il me tarde de recevoir mes capteurs / switch / dongle USB pour tester tout ça :slight_smile:

Merci pour le tuto, je viendrai faire des retours sur le forum

Super tuto, je m’en inspirerai pour créer une page sur la doc gladys v4.

Hâte de tester ça ce soir :+1:

Wow, quel tutoriel @Reno ! Je suis impressionné ! :clap:

Bravo pour ce développement @AlexTrovato @Reno, j’ai vraiment hâte de merger ça.

Vous pensez en être où du développement / des tests ? C’est stable à quel point ?

1 Like

Pour les dev, a part ajouter un lien vers la doc, je pense qu’on est OK, on a préparé l’intégration de presque tous les devices compatibles (92 sur le site zigbee2mqtt), sans pouvoir tous les tester, mais @Reno pu en valider quelques uns.

J’ai suivis le tuto mais sa ne fonction pas.

Sur mon Raspberry Gladys en SSH

Je pensai installer le service mais je crois que c’est l’image Gladys avec zigbee2mqtt que ces commande installe.

Je suis un peu perdu …

Quelle partit du tuto explique l’installation sur un Gladys existant ?

D’après l’erreur, le port http est déjà utilisé, je te conseille donc de stopper temporairement l’image gladys beta “originale” pour pouvoir démarrer celle du zigbee2mqttt.
@Reno peut-être générer une image sur un autre port ?

Edit: ou changer la ligne -p 80:80 par -p 81:80

Super Taf @Reno et @AlexTrovato !
Et ce README! :heart_eyes:

1 Like

Je ne c’est pas comment stopper temporairement l’image Gladys beta pour démarrer celle du zigbee2mqtt.

et si je remplace -p 80:80 par -p 81:80 maintenant j’ai une erreur lié au précédente manip…

Ok je laisse les experts Docker apporter leur aide.

Malgré l’erreur sur le port 80 que tu as eue, le container gladys-zigbee2mqtt a été créé.
Il faut donc que tu supprimes d’abord ce container avant de le recréer avec le nouveau port.
Pour cela, on fait :

  • docker stop gladys-zigbee2mqtt
  • docker rm gladys-zigbee2mqtt

Après ça, tu pourras relancer le container.
Du coup, dans ton navigateur, tu pourras aller sur la version officielle de Gladys en tapant IP_de_ta_rpi et aller sur la version avec Zigbee2mqtt en tapant IP_de_ta_rpi:81.

Par contre, il faut bien garder à l’esprit que cette image est une version de test du service Zigbee2mqtt. Dès qu’on aura assez de retour pour valider que le service est stable, @pierre-gilles le mergera dans Gladys.

Pour stopper un container :

docker stop nom_du_container

Tu peux ensuite le relancer avec :

docker restart nom_du_container

En attendant vos réponses j’ai tenté deux trois trucs et plus rien ne fonctionne. Je réinstalle Gladys demain soir et je recommence… :sweat_smile:

Tu n’as normalement pas besoin de tout réinstaller. C’est ça l’avantage de Docker.
Tu peux regarder les containers arrêtés sur ta machine avec la commande docker ps -a et les relancer (docker start), les stopper (docker stop) à volonté.

Si tu as utilisé docker rm, tu as pu supprimer un container.
Mais là encore, rien de grave : les containers sont basés sur des images. Celles-ci sont téléchargées lors du premier lancement du container et reste sauvegardées en local.
Il suffit donc de relancer le container et c’est beaucoup plus rapide qu’au premier lancement.
Pour vérifier quelles images sont stockées sur une machine, il faut utiliser docker images qui les listent toutes.
Sur ta RPi, tu devrais donc trouver dans la liste :

  • gladysassistant/gladys 4.0.0-beta-arm
  • r6n0/gladys-zigbee2mqtt 4.0.0-beta-arm

Pour relancer le Gladys officiel, il faut donc taper

docker run -d
–restart=always
–privileged
–name gladys
-p 80:80
-e NODE_ENV=production
-e SERVER_PORT=80
-e TZ=Europe/Paris
-e SQLITE_FILE_PATH=/var/lib/gladysassistant/gladys-production.db
-v /var/run/docker.sock:/var/run/docker.sock
-v /var/lib/gladysassistant:/var/lib/gladysassistant
-v /dev:/dev
gladysassistant/gladys:4.0.0-beta-arm

Pour relancer gladys-zigbee2mqtt

./zigbee2mqtt_run.sh

dans lequel est modifié -p 81:80

nouvelle erreur :

1

Désolé c’est une erreur dans le script : il faut remplacer par --device=/dev/…

Après avoir écrit le tuto, j’ai réalisé des tests des différentes étapes. C’est pour cela que j’ai écrit les scripts qui sont disponibles sur le Github.
Par contre, j’ai du oublier de corriger certaines erreurs dans le tuto mais les scripts, eux, sont à jour.

Je ne c’est pas comment utiliser les script…

nouvelle erreur avec --device :

Tu copies les scripts (tous les .sh) dans un répertoire dédié sur ta RPi.
Puis tu tapes

./gladys-zigbee2mqtt_run.sh

Ce script fait appel aux autres pour lancer les différents containers.

Si tu as une erreur type permission non accordée, il faut que tu changes le droit en exécution de chacun de ces scripts. Pour cela, il faut utiliser la commande :

chmod +x nom_du_script

Dans ton cas, chmod +x *.sh permettra de changer les droits de tous les scripts (finissant par sh) en une seule commande.

Bon courage, tu y es presque !