Lancement la semaine prochaine de la compatibilité Debian 11 + améliorations pour Unraid/Synology?

Voici ce que j’avais dans les logs avec une erreur qui s’est répétée un paquet de fois et à la fin ça finit par passer:

gandalf@hal9000:~ $ docker container logs --follow 26e90d537c66
Using '/app/data' as data directory
Zigbee2MQTT:info  2022-03-19 09:35:10: Logging to console and directory: '/app/data/log/2022-03-19.09-35-08' filename: log.txt
Zigbee2MQTT:info  2022-03-19 09:35:10: Starting Zigbee2MQTT version 1.24.0 (commit #7a2ddf2)
Zigbee2MQTT:info  2022-03-19 09:35:10: Starting zigbee-herdsman (0.14.20)
Zigbee2MQTT:error 2022-03-19 09:36:15: Error while starting zigbee-herdsman
Zigbee2MQTT:error 2022-03-19 09:36:15: Failed to start zigbee
Zigbee2MQTT:error 2022-03-19 09:36:15: Check https://www.zigbee2mqtt.io/guide/installation/20_zigbee2mqtt-fails-to-start.html for possible solutions
Zigbee2MQTT:error 2022-03-19 09:36:15: Exiting...
Zigbee2MQTT:error 2022-03-19 09:36:15: Error: network commissioning timed out - most likely network with the same panId or extendedPanId already exists nearby
    at ZnpAdapterManager.beginCommissioning (/app/node_modules/zigbee-herdsman/src/adapter/z-stack/adapter/manager.ts:347:23)
    at ZnpAdapterManager.start (/app/node_modules/zigbee-herdsman/src/adapter/z-stack/adapter/manager.ts:92:17)
    at Controller.start (/app/node_modules/zigbee-herdsman/src/controller/controller.ts:123:29)
    at Zigbee.start (/app/lib/zigbee.ts:58:27)
    at Controller.start (/app/lib/controller.ts:100:27)
    at start (/app/index.js:101:5)
[...]
Zigbee2MQTT:info  2022-03-19 10:30:41: Logging to console and directory: '/app/data/log/2022-03-19.10-30-39' filename: log.txt
Zigbee2MQTT:info  2022-03-19 10:30:41: Starting Zigbee2MQTT version 1.24.0 (commit #7a2ddf2)
Zigbee2MQTT:info  2022-03-19 10:30:41: Starting zigbee-herdsman (0.14.20)
Zigbee2MQTT:error 2022-03-19 10:31:47: Error while starting zigbee-herdsman
Zigbee2MQTT:error 2022-03-19 10:31:47: Failed to start zigbee
Zigbee2MQTT:error 2022-03-19 10:31:47: Check https://www.zigbee2mqtt.io/guide/installation/20_zigbee2mqtt-fails-to-start.html for possible solutions
Zigbee2MQTT:error 2022-03-19 10:31:47: Exiting...
Zigbee2MQTT:error 2022-03-19 10:31:47: Error: network commissioning timed out - most likely network with the same panId or extendedPanId already exists nearby
    at ZnpAdapterManager.beginCommissioning (/app/node_modules/zigbee-herdsman/src/adapter/z-stack/adapter/manager.ts:347:23)
    at ZnpAdapterManager.start (/app/node_modules/zigbee-herdsman/src/adapter/z-stack/adapter/manager.ts:92:17)
    at Controller.start (/app/node_modules/zigbee-herdsman/src/controller/controller.ts:123:29)
    at Zigbee.start (/app/lib/zigbee.ts:58:27)
    at Controller.start (/app/lib/controller.ts:100:27)
    at start (/app/index.js:101:5)
Using '/app/data' as data directory
Zigbee2MQTT:info  2022-03-19 13:01:45: Logging to console and directory: '/app/data/log/2022-03-19.13-01-43' filename: log.txt
Zigbee2MQTT:info  2022-03-19 13:01:45: Starting Zigbee2MQTT version 1.24.0 (commit #7a2ddf2)
Zigbee2MQTT:info  2022-03-19 13:01:45: Starting zigbee-herdsman (0.14.20)
Zigbee2MQTT:info  2022-03-19 13:01:58: zigbee-herdsman started (resumed)
Zigbee2MQTT:info  2022-03-19 13:01:58: Coordinator firmware version: '{"meta":{"maintrel":1,"majorrel":2,"minorrel":7,"product":1,"revision":20210708,"transportrev":2},"type":"zStack3x0"}'
Zigbee2MQTT:info  2022-03-19 13:01:58: Currently 0 devices are joined:
Zigbee2MQTT:info  2022-03-19 13:01:58: Zigbee: disabling joining new devices.
Zigbee2MQTT:info  2022-03-19 13:01:58: Connecting to MQTT server at mqtt://localhost:1884
Zigbee2MQTT:info  2022-03-19 13:01:58: Connected to MQTT server
Zigbee2MQTT:info  2022-03-19 13:01:58: MQTT publish: topic 'zigbee2mqtt/bridge/state', payload 'online'
Zigbee2MQTT:info  2022-03-19 13:01:58: Started frontend on port 0.0.0.0:8080
Zigbee2MQTT:info  2022-03-19 13:01:58: MQTT publish: topic 'zigbee2mqtt/bridge/config', payload '{"commit":"7a2ddf2","coordinator":{"meta":{"maintrel":1,"majorrel":2,"minorrel":7,"product":1,"revision":20210708,"transportrev":2},"type":"zStack3x0"},"log_level":"info","network":{"channel":11,"extendedPanID":"0x00124b00258de31f","panID":6754},"permit_join":false,"version":"1.24.0"}'
^C

Par contre impossible d’associer les périphériques, le capteur de température n’est pas trouvé du tout :frowning:

sur vos RPIs vous avez le SSD plus la clé ? La doc indique éventuellement d’utiliser un hub USB alimenté. J’ai pourtant une alim officielle qui délivre 3A et je ne retrouve pas de hub USB chez moi LOL

Bon j’arrête les tests pour aujourd’hui.

Sur RPI 32 bits tout fonctionne parfaitement. J’ai pu refaire la découverte des périphériques sans aucun souci tout a été détecté facilement.

Sur ma machine fixe sur debian bullseye 64 bits (proc intel archi x86_64 “classique”), tout fonctionne parfaitement également (l’installation est super rapide)

Les périphériques MQTT on été reconnus de suite (capteur de température et de mouvement), je n’ai même pas eu a refaire une détection tout est apparu nickel.

Sur RPI bullseye 64 bits, la détection ne semble pas fonctionner correctement. Le capteur de température finit par apparaître comme non reconnu (et je pense que Zigbee2mqtt ne parvient pas à bien dialoguer avec le capteur) et je ne peux rien en faire.

Ce qu’il faudrait que je teste c’est éventuellement d’acheter un hub USB car la FAQ Zigbee le mentionne pour les erreurs que j’ai eu dans les logs. Le RPI alimente déjà le SSD donc peut être que le SSD plus la clé Zigbee Sonoff ça fait trop et du coup la clé ne fonctionne pas correctement. Je n’ai aucune autre piste d’investigation.

Ah si je pourrais repasser sur la carte SD et voir si ça passe sans le SSD du coup, si c’est un problème d’alimentation insuffisante …

BINGO (Update) !!

j’avais dit que j’arrêtais, mais je voulais en avoir le coeur net. J’ai redémarré sur la carte SD (toujours en bullseye 64 bits). Mise à jour, installation de Gladys et zou tout fonctionne. Donc, il semblerait bien que sur mon RPI 4 (8Gb), le SSD plus la clé Zigbee SONOFF ça fasse trop pour une alim “officielle” 3A et 5,1V soit 15,3W (le RPI 4 32 bits était sur carte SD).

Donc de mon côté tout est bon aussi. Au passage je ne sais pas combien de fois j’ai déployé Gladys aujourd’hui, mais c’est tout de même d’une extraordinaire simplicité. Une commande docker, 2 minutes de configuration et c’est parti. Du coup désolé d’avoir crié au loup, je n’ai aucun souci avec Gladys, mais il reste bon de savoir que si vous utilisez un SSD, il faut peut être envisager un hub USB alimenté indépendamment du RPI.

1 « J'aime »

La suite de la suite :slight_smile:

J’ai réussi à lancer avec un cidfile en trichant ( le owner du cidfile c’est l’utilisateur pi )

docker run -d \
    --cidfile ~/GladysContainerId \
    --restart=always \
    --privileged \
    --network=host \
    --log-opt max-size=5m \
    --name gladys \
    --cap-add SYS_RAWIO \
    -e NODE_ENV=production \
    -e SERVER_PORT=80 \
    -e SQLITE_FILE_PATH=/var/lib/gladysassistant/gladys-production.db \
	-v ~/GladysContainerId:/var/lib/gladysassistant/containerId:ro \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /var/lib/gladysassistant/:/var/lib/gladysassistant/ \
    -v /dev:/dev \
    -v /run/udev:/run/udev:ro \
    -v /sys/class/gpio:/sys/class/gpio \
    -v /etc/localtime:/etc/localtime:ro \
    -v /etc/timezone:/etc/timezone:ro \
    gladysassistant/gladys:dev

Mais là il se passe des choses bizarres ( à noter qu’à chaque fois je supprime la db les folders etc… )

Lors du premier démarrage de gladys l’intégration MQTT fait ça vie ^^ , je n’ai même pas encore créé d’utilisateur.

2022-03-21T09:25:35+0100 <info> 20210129155044-multi-user.js:23 (Object.up) Multi-user migration: 0 users found
2022-03-21T09:25:35+0100 <info> job.purge.js:17 (Job.purge) Deleting all background jobs created before = Mon Mar 14 2022 09:25:35 GMT+0100 (Central European Standard Time)
Initialising OpenZWave 1.6.0 binary addon for Node.JS.
        OpenZWave Security API is ENABLED
        ZWave device db    : /usr/local/etc/openzwave
        User settings path : /src/server/services/zwave/node_modules/openzwave-shared/build/Release/../../
        Option Overrides : --Logging false --ConsoleOutput false --SaveConfiguration true
2022-03-21T09:25:40+0100 <info> index.js:19 (Object.start) Starting example service
2022-03-21T09:25:40+0100 <info> index.js:64 (Object.start) Starting CalDAV service
2022-03-21T09:25:40+0100 <info> index.js:16 (Object.start) Starting MQTT service
2022-03-21T09:25:40+0100 <info> updateContainer.js:13 (MqttHandler.updateContainer) MQTT: checking for required changes...
2022-03-21T09:25:40+0100 <info> updateContainer.js:18 (MqttHandler.updateContainer) MQTT: update to mosquitto v2 required...
2022-03-21T09:25:40+0100 <info> installContainer.js:19 (MqttHandler.installContainer) MQTT broker is being installed as Docker container...
2022-03-21T09:25:40+0100 <info> installContainer.js:23 (MqttHandler.installContainer) Check Gladys network...
2022-03-21T09:25:40+0100 <info> installContainer.js:29 (MqttHandler.installContainer) Pulling eclipse-mosquitto:2 image...
2022-03-21T09:25:42+0100 <info> installContainer.js:33 (MqttHandler.installContainer) Preparing broker environment...
2022-03-21T09:25:42+0100 <info> installContainer.js:37 (MqttHandler.installContainer) Creating container...
2022-03-21T09:25:43+0100 <info> installContainer.js:45 (MqttHandler.installContainer) MQTT broker successfully installed as Docker container
2022-03-21T09:25:44+0100 <info> updateContainer.js:39 (MqttHandler.updateContainer) MQTT: update to mosquitto v2 done
2022-03-21T09:25:44+0100 <info> service.start.js:40 (Service.start) Service mqtt is not configured, so it was not started.
2022-03-21T09:25:44+0100 <info> index.js:14 (Object.start) starting GoogleActions service
2022-03-21T09:25:44+0100 <info> init.js:36 (Zigbee2mqttManager.init) Zigbee2mqtt USB dongle not attached
2022-03-21T09:25:44+0100 <info> index.js:18 (Object.start) Starting TP-Link service

Je me retrouve donc dans un état bancale, impossible d’en sortir.

Ah ouai je vois, mais du coup là le docker run est propre au Raspberry Pi, et en plus mettre toute la data dans /home/pi pas fou.

Je préfère la version que j’ai mise plus haut !

Top !! :smiley: Tant mieux si ça a finit pas fonctionner pour toi :slight_smile:

Et moi la 3ème :slight_smile:

aha, t’as envoyé ton message pendant que je tapais le mien, pas vu !

C’est déjà mieux, mais bon est-ce que le folder home de l’utilisateur c’est vraiment un endroit ou on doit stocker des informations critique à l’exécution de Gladys ? C’est comme si une app stockait sur ton bureau un fichier super important, fichier si tu le supprime l’app fonctionne plus bien…

Trop risqué en l’état, je préfère toujours la 1ère version sans le cidfile

On part du postulat que l’utilisateur ne doit pas faire de ssh etc… et que Gladys est sécurisée mais on s’expose beaucoup plus.

On peut avoir le même discours avec le folder /var/lib/gladysassistant , si l’utilisateur le supprime tout est pété :slight_smile:


Toujours est il qu’il y’a un bug au niveau de la gestion des containers, je vois pas pourquoi Gladys me créé une conf mosquitto au 1er démarrage

ça c’est dans le cas où l’utilisateur utilise l’image qu’on a pré-conçu, mais il y a quand même un nombre non négligeable de gens qui installent Gladys sur une machine qui a d’autres containers (Pi-Hole, etc…), et qui lance Gladys avec le docker run. Cette expérience est aussi importante :slight_smile:

Ces gens là, pas sûr que 6 mois après si ils reviennent et qu’il y a un fichier dans /home/pi tu te souviens si il faut le garder.

Il y a quand même une différence entre le dossier où tu arrives (l’équivalent du bureau), et le dossier /var/lib qui contient un dossier par application.

Tu es sûr à 100% d’avoir bien stoppé + supprimé les containers avant de relancer Gladys ?

Le code est assez clair là dessus:

Il fait un getContainers et voit ce qui revient

Ouai là on chippote, je l’ai mis là pour tester, mais ~/.config/gladys va très bien aussi

J’avais déjà le mosquitto effectivement ( qui pourrait très bien déjà exister), si c’est le cas l’erreur doit être gérée ( conteneur existant mais service non configuré/sans conf )

Prenons le problème dans l’autre sens alors, qu’est ce qui ne va pas avec l’option --cgroupns=host selon toi ?

C’était le comportement par défaut jusque-là sous Docker non ?

Je suis d’accord, tu créé une issue Github ?

C’est une couche exposée supplémentaire ( dont on se fichait jusqu’à présent je te l’accorde )

Oui le namespace par défaut était celui de l’host. ( c’est ce qui nous a posé problème avec cgroupsv2 + systemd )

Ce qui est fortement conseillé d’utiliser maintenant c’est le namespace user par sécurité.


Pour conclure, pas de cidfile sur l’image rpi, mais on laisse la possibilité quand même pour ceux qui ne souhaitent pas utiliser --cgroupns=host ?

Ok je vois.

Encore une fois, je comprend ces sécurités dans un contexte Cloud (pour un hébergeur qui lance des containers de client qui doivent bien être isolé), dans notre cas un peu moins.

Si le cidfile fonctionnait facilement et sans problèmes j’aurais été motivé pour passer par le cidfile, sauf que de l’expérience qu’on a tous les deux avec (et je pense pas qu’on soit des nuls en Docker! :stuck_out_tongue: ), je vois déjà les messages pleuvoir sur le forum pour tous ceux qui veulent adapter le docker run pour leur installation.

Là où le cgroup ça marche bien et c’est universel.

Je pense qu’on va partir sur ça.

Le --cgroupns=host partout: dans l’image Rpi, sur le site, pour Synology/Unraid.

Je laisse le bout de code du cidfile dans la codebase, ça nous laisse une corde à notre arc le jour où ça change à nouveau côté cgroup, et si jamais quelqu’un veut lancer Gladys dans un contexte particulier sans cgroupns=host, on a l’option :slight_smile: Par contre je communique pas dessus sur le site.

:pray: ça me va :smiley:

Parfait ! :slight_smile:

Comme les retours sont positifs sur ce build, et que cette release va débloquer pas mal de cas (Synology/Unraid/Raspberry Pi OS 64 bits), je commence la préparation pour une release soon !

Je vous tiens au courant.

1 « J'aime »