Bonsoir,
Cela fait quelque temps que je tente de lancer Gladys édition Zigbee via docker-compose
plutôt que via docker simple.
Il y a cependant deux problèmes avec le conteneur MQTT qui est créé et lancé par le Service Z2M.
Le premier problème semble être un problème de droits d’accès linux, le fichier mosquitto.conf ne parvient pas à se créer dans le dossier MQTT. Le dossier des fichiers de configuration de MQTT ne semble pas être accessible par le conteneur.
Le deuxième problème est un problème lié au chemin des fichiers de persistance de Z2M et de MQTT. Lors de la création de l’image il est possible de changer le chemin de persistance pour ne pas l’avoir dans “/var/lib/gladys…” le problème c’est que les dossiers mqtt et z2m ne suivent pas le changement et s’enregistre toujours dans le dossier “/var/lib/gladysassistant/”.
Sur l’image de Gladys officiel, le conteneur Mqtt n’a pas ces deux problèmes, je n’ai pas regardé encore la différence entre les deux gestions de conteneurs mais il serait intéressant de garder la même façon de créer et lancer le conteneur mosquitto pour Mqtt.
Ci joint le docker-compose en question si vous avez le temps d’essayer de
reproduire le problème :
Effectivement je suis d’accord c’est un problème que ces dossiers soient en dur, j’ai eu le même problème en essayant de tester ces intégrations sur une instance ou Gladys existe déjà: c’est impossible
Hello, super travail, de mon côté juste une remarque, il semblerait que certains mapping ait sauté pour les deux seuls types d’appareils que j’ai (deux switchs WXKG01LM Aquara ainsi qu’un cube MFKZQ01LM Aquara).
Le problème avait été corrigé mais il semble que ça ne soit plus le cas.
Sinon je pense que les points évoqués plus haut sont bien corrigés, en tout cas je n’ai pas vu d’autres problèmes
Je viens de corriger le type de tes deux devices. Est-ce que tu peux mettre à jour l’image et tester à nouveau ?
Actuellement, les valeurs single, double, hold sont transformées en valeurs numériques.
Les autres sont traitées comme des chaînes de caractères : triple, quadruple, release, many et toutes celles de ton cube shake, wakeup, fall, tap, slide, flip180, flip90, rotate_left, rotate_right.
Alors comme test j’ai commencé par supprimé le container Gladys (mais pas Z2M et MQTT) pour le recréer après avoir pull la nouvelle image, j’ai alors observé le même comportement, je me suis dit que c’était surement un problème venant de la BD.
J’ai donc recréé le tout avec la persistance dans un nouveau dossier, malheureusement la création automatique du conteneur mqtt ne fonctionne pas, il semble qu’il y ait encore un problème de droit d’accès au dossier, ou alors mqtt ne sais pas ou trouver son fichier de config, dans le log de MQTT j’ai ceci : 1616604311: Error: Unable to open config file /mosquitto/config/mosquitto.conf.
Je pense qu’il reste encore des endroits ou le path est en dur. En effet quand je change le dossier de persistance pour /var/lib/z2m-test quand on active le service zeegbee2mqtt un nouveau dossier se créé ici /var/lib/gladysassistant.
J’ai donc un doublon de dossier qui est créé par le service :
$ ls -al gladysassistant/zigbee2mqtt/
mqtt/ z2m/
$ ls -al z2m-test/zigbee2mqtt/
mqtt/ z2m/
EDIT : par contre c’est bien dans le nouveau dossier de persistance /var/lib/z2m-test/zigbee2mqtt/mqtt/ que les fichiers de configs de mosquitto se trouvent et pas dans le dossier doublon dans le path /var/lib/gladysassistant donc l’ancien path est probablement en dur dans mqtt
Oui pardon. Il faut que tu supprimes les devices pour qu’ils aient les bons types de feature dans la base.
Pour les paths et droits, est-ce que tu as supprimé tous les containers depuis le 22 mars au soir ? Sinon, les containers Z2M et MQTT sont toujours sur les anciens paths.
Le fix que j’ai fait modifie les paths à la création, mais ne gère pas la modification post création.
Tu montes ton dossier host /var/lib/z2m-test dans le container en tant que /var/lib/gladysassistant
Puis tu dis à Gladys de fonctionner avec /var/lib/gladysassistant, ce qu’il fait quand il crée les fichiers de configuration Mosquito et Z2M. C’est d’ailleurs pour cela que tu retrouves bien les fichiers de configuration dans /var/lib/z2m-test dans ton host.
Lorsque Gladys crée les autres containers (Mosquito et Z2M), il utilise la variable SQLITE_FILE_PATH pour monter les volumes. Donc le /var/lib/gladysassistant de ton host… C’est là où ça ne va pas. Je ne sais pas comment détecter que /var/lib/gladysassistant est en fait un montage de /var/lib/z2m-test.
Je te propose d’essayer avec ce fichier docker-compose :
Les fichiers de configuration doivent être écrits par Gladys sur ton host quelque part. J’ai décidé d’utiliser SQLITE_FILE_PATH comme le dossier où écrire ces fichiers. Mais sans penser au cas où tu montes ce dossier depuis un autre path sur ton host.
Mais peut-être qu’il faudrait utiliser une autre variable pour cela ? Genre HOST_PATH_Z2M_FILES ?
Je ne suis pas d’accord, toutes les images que j’ai utilisé jusqu’à maintenant te permette d’utiliser un chemin de persistance différent de chemin officiel.
Le réel problème qu’on a ici c’est de devoir spécifier plusieurs chemin si on utilise un chemin alternatif.
A-t-on vraiment besoin de spécifier un chemin pour la base données, ne peut on pas tout simplement mettre tous les fichiers au sein du conteneur dans un même dossier, ici surement /var/lib/gladysassistant donc fixer la valeur du SQLITE_FILE_PATH (et donc de le supprimer de la config et ensuite simplement demander à l’utilisateur de remplir la valeur PERSISTANCE_FOLDER (par exemple) qui ferait un mapping entre le dossier du conteneur et l’hote ?
La on est dans un cas ou si on veut tester plusieurs images de gladys on doit modifier tous les chemins de la config, le SQLITE_FILE_PATH puis le dossier dans le conteneur et le dossier de mapping sur l’hôte.
Effectivement tout fonctionne bien maintenant, c’est vrai que comme mon message l’indique d’au dessus on soit obligé de changer trois valeurs pour faire ça, mais tous les problèmes sont résolus.
Les deux types d’appareils aquara que j’ai fonctionnent bien, le chemin des fichiers est bien modifié comme il faut et la remontée des infos se fait bien sur le dashboard, bravo pour le taff à tout ceux qui ont bossé sur cette intégration.