Configuration du dongle usb interrompue au redémarrage du conteneur docker

Hi

(Toutes mes excuses pour le mauvais français, j’utilise google translate.)

J’utilise docker-compose pour exécuter Gladys. J’ai configuré Zigbee2MQTT et cela fonctionne parfois. Mais chaque fois que le conteneur redémarre, le dongle USB n’est plus connecté. Le message indique « Aucun dongle USB Zigbee2mqtt n’est attaché à Gladys ».

Deux périphériques sont toujours répertoriés : /dev/ttyUSB0 et /dev/AMA0. Ce qui résout généralement le problème est de choisir un périphérique qui n’est pas sélectionné et de cliquer sur « Sauvegarder ». Peu importe lequel des deux est choisi.

Je dois pouvoir redémarrer les conteneurs sans surveillance, sans utiliser l’interface utilisateur pour modifier la configuration à chaque fois. Quelqu’un peut-il m’aider à comprendre ce qui ne va pas? Merci.

Salut @orval

Google Traduction fait un assez bon travail, ne t’inqui

Hi @VonOx

Ceci est mon fichier compose:

version: '3'

services:
  gladys:
    image: gladysassistant/gladys:v4
    restart: always
    privileged: true
    network_mode: host
    environment:
      NODE_ENV: production
      SQLITE_FILE_PATH: /var/lib/gladysassistant/gladys-production.db
    volumes:
      - /data/myhub/gladysassistant:/var/lib/gladysassistant
      - /var/run/docker.sock:/var/run/docker.sock
      - /dev:/dev
    ports:
      - '80:1443'
      - '443:1443'
      - '8080:8080'
  watchtower:
    image: containrrr/watchtower
    restart: always
    command: --cleanup --include-restarting
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

Le zigbee2mqtt container est en cours d’exécution et continue de fonctionner correctement. Je peux accéder à http://gladys-ip:8080/#/dashboard et voir les appareils. Mais gladys ne voit pas qu’il est en cours d’exécution. Ça montre « Aucun dongle USB Zigbee2mqtt configuré, veuillez vous rendre sur… » Puis je clique sur « Sauvegarder » et ça refonctionne.

Ce sont les containers qui tournent :

$ docker ps --all
CONTAINER ID   IMAGE                       COMMAND                  CREATED         STATUS         PORTS      NAMES
eb14c756a72c   gladysassistant/gladys:v4   "docker-entrypoint.s…"   6 minutes ago   Up 6 minutes              myhub_gladys_1
abcc0834603d   containrrr/watchtower       "/watchtower --clean…"   6 minutes ago   Up 6 minutes   8080/tcp   myhub_watchtower_1
322d22c2fa6a   koenkk/zigbee2mqtt:latest   "docker-entrypoint.s…"   3 days ago      Up 3 days                 gladys-z2m-zigbee2mqtt
eb10f041a2a2   eclipse-mosquitto:2         "/docker-entrypoint.…"   8 days ago      Up 8 days                 gladys-z2m-mqtt

Je n’ai pas réussi à déboguer ce problème. @pierre-gilles, avez-vous des suggestions ?

Watchtower a redémarré mon conteneur « myhub_gladys_1 » aujourd’hui, puis tous les appareils ont disparu.

Pour que cela fonctionne, je devais aller sur /dashboard/integration/device/zigbee2mqtt/setup et éteindre et rallumer « Activer Zigbee2MQTT ». Cela a redémarré les « gladys-z2m-mqtt » et « gladys-z2m-zigbee2mqtt » et tout a fonctionné à nouveau.

Lorsque Gladys échoue comme ça, je peux toujours accéder à http://:8080/#/dashboard et voir tous les appareils fonctionner correctement, donc ce n’est pas un problème avec le dongle ou le moustique/zigbee2mqtt. Que puis-je faire pour rendre Gladys plus stable ?

J’ai compris que pour que cela fonctionne, je dois faire une requête POST à ​​https://host/api/v1/service/zigbee2mqtt/connect après le redémarrage du container.

Existe-t-il un moyen d’amener Gladys à faire cet appel au démarrage ?

Gladys fait déjà cela au démarrage.

Je peux vous suggérer de ne pas utiliser Compose et de suivre la documentation, mqtt et zigbee2mqtt sont créés en dehors de la stack (je ne sais pas si c’est la cause principale). Compose n

eh bien, clairement pas d’une manière qui fonctionne réellement.

C’est littéralement juste l’équivalent docker-compose des commandes run dans la documentation: Install Gladys Assistant with Docker | Gladys Assistant

Cela a de la valeur pour moi, puisque c’est ainsi que tous mes conteneurs sont déployés, via community.docker.docker_compose dans Ansible.

Et alors ? Voulez-vous dire que les bugs ne sont examinés

[quote=« orval, post:7, topic:7565 »]
Et

J’ai supprimé docker-compose de l’équation.

Ce problème se produit toujours lors de l’utilisation des commandes « docker run » comme indiqué dans la documentation.

Si le container gladys est redémarré, la connexion USB est perdue : « Gladys is not attached to any Zigbee2mqtt USB Dongle. »

Quel est le système d’exploitation de l’hôte ?

Pour une raison quelconque, Gladys ne peut pas accéder au dongle.

Le service zigbee2mqtt ne démarre pas lorsque le conteneur redémarre car il est marqué comme « arrêté manuellement ».

$ journalctl CONTAINER_NAME=gladys | grep -i zigbee2m
Oct 12 21:40:06 dpi02 b2c767401a3d[724]: 2022-10-12T21:40:06+0100 \u003cinfo\u003e service.startAll.js:30 () Service zigbee2mqtt was manually stopped, so it is ignored at startup
Oct 12 21:42:40 dpi02 b2c767401a3d[724]: 2022-10-12T21:42:40+0100 \u003cinfo\u003e init.js:47 () Zigbee2mqtt USB dongle attached to /dev/ttyUSB0
Oct 12 21:42:40 dpi02 b2c767401a3d[724]: 2022-10-12T21:42:40+0100 \u003cinfo\u003e installMqttContainer.js:105 (Zigbee2mqttManager.installMqttContainer) MQTT broker container successfully started
Oct 12 21:42:40 dpi02 b2c767401a3d[724]: 2022-10-12T21:42:40+0100 \u003cinfo\u003e installZ2mContainer.js:73 (Zigbee2mqttManager.installZ2mContainer) Zigbee2mqtt container successfully started
Oct 12 21:42:40 dpi02 b2c767401a3d[724]: 2022-10-12T21:42:40+0100 \u003cinfo\u003e subscribe.js:12 (Zigbee2mqttManager.subscribe) Subscribing to MQTT topic zigbee2mqtt/#

L’entrée de journal de init.js:47 n’apparaît qu’après que je clique sur Enregistrer les paramètres dans l’interface, ce qui a lieu deux minutes après le démarrage du conteneur.

[edit] la plateforme est Raspberry Pi OS sur un Pi v4

[edit2] il semble que la table des services dans la base de données n’a pas été mise à jour depuis longtemps :

$ echo "select enabled, updated_at, status from t_service where name = 'zigbee2mqtt';"|sqlite3 gladys-production.db
1|2022-09-18 23:17:48.594 +00:00|STOPPED

Il tourne maintenant et fonctionne.

Alors j’ai trouvé la page /dashboard/settings/service et tous les services étaient réglés sur Arrêté. Je ne comprends pas comment quoi que ce soit pouvait fonctionner dans ces conditions, mais bon. J’ai changé Zigbee2mqtt en En cours et maintenant le service démarre comme prévu au redémarrage du conteneur.

3 « J'aime »

Cool !

Oui, c’est pour ça que je demandais dans mon message précédent.

Erreur de ma part. Je ne réalisais pas que le service était quelque chose de distinct de « Enable Zigbe2mqtt » défini sur la page Zigbe2mqtt configuration. J’utilise plusieurs appareils Zigbee dans Gladys depuis quelques semaines sans que le service ne tourne !

1 « J'aime »