Zigbee2mqtt: Docker-Testimage basierend auf Gladys v4

Guten Abend zusammen. Nach langen Wochen des Wartens :drum: :drum: :drum: ist die Arbeit an Zigbee2Mqtt endlich stabil (und zu 100% getestet :rocket:).

Ihr könnt also das Image herunterladen und es auf eurem Raspberry Pi testen (das wird Port 1080 sein).
Alle Rückmeldungen sind willkommen (vor allem zu Geräten, die nicht funktionieren, und zur Benutzererfahrung).

Ein großes Dankeschön an @Reno für den Grundcode :computer: und @lmilcent für die 150 getesteten Images :sweat_smile:

docker run -d \
--log-opt max-size=10m \
--restart=always \
--privileged \
--network=host \
--name gladys-dev-zigbee2mqtt \
-e NODE_ENV=production \
-e SERVER_PORT=1080 \
-e TZ=Europe/Paris \
-e SQLITE_FILE_PATH=/var/lib/gladysassistant/gladys-zigbee2mqtt.db \
-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 \
cicoub13/gladys:dev-zigbee2mqtt

Entschuldige @VonOx, aber ich werde mich erst später um die Hinzufügung eines bereits konfigurierten MQTT-Servers kümmern.

Ich bereinige ein wenig den Code und der Pull Request sollte bis Ende der Woche kommen.

Kein Problem, gute Arbeit :+1:

Hallo, danke für die Arbeit aller!
Ich versuche, das heute Abend zu testen und gebe dir so schnell wie möglich Feedback :grin:

Rebonsoir, kurz zurück zum Thema, auf der MQTT-Seite sehe ich die Verbindungen stattfinden.
Auf der Z2M-Seite sehe ich die Aktionen meiner Peripheriegeräte (zwei Schalter WXKG01LM von Aqara sowie ein Würfel MFKZQ01LM von Aqara).

Allerdings werden die Informationen auf der Gladys-Dashboard-Seite nicht angezeigt. In den Logs scheint es, dass die Zuordnung der physischen Geräte zu den Gladys-Geräten für die drei Geräte nicht korrekt erfolgt:

2021-03-10T21:17:21+0100 <info> installZ2mContainer.js:25 (Zigbee2mqttManager.installZ2mContainer) Zigbee2mqtt wird als Docker-Container installiert...
2021-03-10T21:17:21+0100 <info> installZ2mContainer.js:26 (Zigbee2mqttManager.installZ2mContainer) Pulling koenkk/zigbee2mqtt:latest image...
2021-03-10T21:17:50+0100 <info> installZ2mContainer.js:29 (Zigbee2mqttManager.installZ2mContainer) Vorbereitung der Zigbee2mqtt-Umgebung...
2021-03-10T21:17:50+0100 <info> installZ2mContainer.js:38 (Zigbee2mqttManager.installZ2mContainer) Konfiguration des Geräts /dev/ttyACM0
2021-03-10T21:17:50+0100 <info> installZ2mContainer.js:41 (Zigbee2mqttManager.installZ2mContainer) Erstellung des Containers...
2021-03-10T21:17:52+0100 <info> installZ2mContainer.js:44 (Zigbee2mqttManager.installZ2mContainer) Zigbee2mqtt erfolgreich als Docker-Container installiert
2021-03-10T21:17:52+0100 <info> installZ2mContainer.js:57 (Zigbee2mqttManager.installZ2mContainer) Zigbee2mqtt wird gestartet...
2021-03-10T21:17:58+0100 <info> installZ2mContainer.js:69 (Zigbee2mqttManager.installZ2mContainer) Zigbee2mqtt erfolgreich gestartet
2021-03-10T21:17:58+0100 <info> connect.js:23 (MqttClient.<anonymous>) Verbunden mit MQTT-Container mqtt://localhost:1884
2021-03-10T21:17:58+0100 <info> subscribe.js:12 (Zigbee2mqttManager.subscribe) Abonnieren des MQTT-Themas zigbee2mqtt/#
2021-03-10T21:20:15+0100 <warn> handleMqttMessage.js:83 (Zigbee2mqttManager.handleMqttMessage) Zigbee2mqtt-Thema zigbee2mqtt/bridge/config/devices/get leere Nachricht.
2021-03-10T21:20:21+0100 <warn> handleMqttMessage.js:104 (Zigbee2mqttManager.handleMqttMessage) Zigbee2mqtt-Gerät 0x00158d00027bb168 nicht in Gladys konfiguriert.
2021-03-10T21:20:23+0100 <warn> handleMqttMessage.js:104 (Zigbee2mqttManager.handleMqttMessage) Zigbee2mqtt-Gerät 0x00158d00027bb168 nicht in Gladys konfiguriert.
2021-03-10T21:20:25+0100 <warn> handleMqttMessage.js:83 (Zigbee2mqttManager.handleMqttMessage) Zigbee2mqtt-Thema zigbee2mqtt/bridge/config/devices/get leere Nachricht.
2021-03-10T21:22:50+0100 <warn> handleMqttMessage.js:83 (Zigbee2mqttManager.handleMqttMessage) Zigbee2mqtt-Thema zigbee2mqtt/bridge/config/devices/get leere Nachricht.
2021-03-10T21:22:51+0100 <warn> handleMqttMessage.js:83 (Zigbee2mqttManager.handleMqttMessage) Zigbee2mqtt-Thema zigbee2mqtt/bridge/config/devices/get leere Nachricht.
2021-03-10T21:22:54+0100 <warn> handleMqttMessage.js:83 (Zigbee2mqttManager.handleMqttMessage) Zigbee2mqtt-Thema zigbee2mqtt/bridge/config/devices/get leere Nachricht.
2021-03-10T21:22:57+0100 <warn> handleMqttMessage.js:104 (Zigbee2mqttManager.handleMqttMessage) Zigbee2mqtt-Gerät 0x00158d0003748a21 nicht in Gladys konfiguriert.
2021-03-10T21:23:00+0100 <warn> handleMqttMessage.js:83 (Zigbee2mqttManager.handleMqttMessage) Zigbee2mqtt-Thema zigbee2mqtt/bridge/config/devices/get leere Nachricht.
2021-03-10T21:23:47+0100 <warn> handleMqttMessage.js:104 (Zigbee2mqttManager.handleMqttMessage) Zigbee2mqtt-Gerät 0x00158d0003748a46 nicht in Gladys konfiguriert.
2021-03-10T21:23:48+0100 <warn> handleMqttMessage.js:83 (Zigbee2mqttManager.handleMqttMessage) Zigbee2mqtt-Thema zigbee2mqtt/bridge/config/devices/get leere Nachricht.
2021-03-10T21:27:39+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt-Gerät 0x00158d00027bb168, Feature action nicht in Gladys konfiguriert.
2021-03-10T21:27:39+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt-Gerät 0x00158d00027bb168, Feature battery nicht in Gladys konfiguriert.
2021-03-10T21:27:39+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt-Gerät 0x00158d00027bb168, Feature linkquality nicht in Gladys konfiguriert.
2021-03-10T21:27:39+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt-Gerät 0x00158d00027bb168, Feature voltage nicht in Gladys konfiguriert.
2021-03-10T21:28:43+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt-Gerät 0x00158d0003748a21, Feature action nicht in Gladys konfiguriert.
2021-03-10T21:28:43+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt-Gerät 0x00158d0003748a21, Feature battery nicht in Gladys konfiguriert.
2021-03-10T21:28:43+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt-Gerät 0x00158d0003748a21, Feature linkquality nicht in Gladys konfiguriert.
2021-03-10T21:28:43+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt-Gerät 0x00158d0003748a21, Feature voltage nicht in Gladys konfiguriert.
2021-03-10T21:28:43+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt-Gerät 0x00158d0003748a21, Feature battery nicht in Gladys konfiguriert.
2021-03-10T21:28:43+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt-Gerät 0x00158d0003748a21, Feature click nicht in Gladys konfiguriert.
2021-03-10T21:28:43+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt-Gerät 0x00158d0003748a21, Feature linkquality nicht in Gladys konfiguriert.
2021-03-10T21:28:43+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt-Gerät 0x00158d0003748a21, Feature voltage nicht in Gladys konfiguriert.
2021-03-10T21:28:43+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt-Gerät 0x00158d0003748a46, Feature action nicht in Gladys konfiguriert.
2021-03-10T21:28:43+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt-Gerät 0x00158d0003748a46, Feature battery nicht in Gladys konfiguriert.
2021-03-10T21:28:43+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt-Gerät 0x00158d0003748a46, Feature linkquality nicht in Gladys konfiguriert.
2021-03-10T21:28:43+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt-Gerät 0x00158d0003748a46, Feature voltage nicht in Gladys konfiguriert.
2021-03-10T21:28:43+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt-Gerät 0x00158d0003748a46, Feature battery nicht in Gladys konfiguriert.
2021-03-10T21:28:43+0100 <warn> handleMqttMessage.js:100 () Zigbee2mqtt-Gerät 0x00158d0003748a46, Feature click nicht in Gladys konfiguriert.

Ich präzisiere, dass die drei Geräte nur die Funktion « Schalter » haben.

Tolle Arbeit :clap::clap:

Bevor du dein PR erstellst, denk daran, den gesamten Code im Vergleich zum Master Gladys durchzusehen:

  • Sind die geänderten Dateien tatsächlich Dateien, die mit der zigbee2mqtt-Integration zusammenhängen, und nicht Dateien, die nichts damit zu tun haben?
  • Wurden Abhängigkeiten hinzugefügt, die nicht notwendig sind?

Danach gehen wir zur technischen Überprüfung des PR über (ich bin für jede Hilfe dabei, jeder ist willkommen, um den Code durchzusehen).

Parallel dazu sind alle möglichen funktionalen Rückmeldungen ebenfalls willkommen, damit wir sicherstellen können, dass der PR wie vorgesehen funktioniert!

Ich hoffe, es geht schnell in Gladys :blush: nochmals herzlichen Glückwunsch für die geleistete Arbeit!

Ich habe das Bild mit den richtigen Funktionen für diese beiden Geräte aktualisiert.

Tatsächlich, das Problem ist behoben, alles funktioniert korrekt für diese beiden Gerätetypen, die Anzeige im Dashboard erfolgt einwandfrei.
Ultra-schnelle Korrektur, bravo :slight_smile:

Jetzt muss nur noch die Funktionsweise mit den Szenen getestet werden :wink:

Hallo,
Ich versuche schon eine Weile, Gladys Edition Zigbee über docker-compose
anstatt über einfaches Docker zu starten.

Es gibt jedoch zwei Probleme mit dem MQTT-Container, der vom Z2M-Service erstellt und gestartet wird.

Das erste Problem scheint ein Linux-Berechtigungsproblem zu sein. Die Datei mosquitto.conf kann nicht im MQTT-Ordner erstellt werden. Der Konfigurationsdatei-Ordner von MQTT scheint für den Container nicht zugänglich zu sein.

Das zweite Problem betrifft den Pfad der Persistenzdateien von Z2M und MQTT. Beim Erstellen des Bildes kann der Persistenzpfad geändert werden, um ihn nicht in « /var/lib/gladys… » zu haben. Das Problem ist, dass die Ordner mqtt und z2m der Änderung nicht folgen und immer im Ordner « /var/lib/gladysassistant/ » gespeichert werden.

Im offiziellen Gladys-Bild hat der MQTT-Container diese beiden Probleme nicht. Ich habe noch nicht den Unterschied zwischen den beiden Container-Verwaltungssystemen geprüft, aber es wäre interessant, die gleiche Methode zum Erstellen und Starten des Mosquitto-Containers für Mqtt beizubehalten.

Anbei das docker-compose, falls Sie Zeit haben, das Problem zu
reproduzieren:

version: "2.4"

services:
  gladys-z2m:
    image: cicoub13/gladys:dev-zigbee2mqtt
    container_name: Gladys_Z2M_DEV
    restart: always
    privileged: true
    logging:
      options:
        max-size: "10m"
    network_mode: host
    environment:
      - "TZ=${TZ}"
      - "NODE_ENV=production"
      - "SERVER_PORT=1080"
      - "SQLITE_FILE_PATH=/var/lib/gladys-z2m/gladys-z2m-production.db"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
      - "/dev:/dev"
      - "/run/udev:/run/udev:ro"
      - "./data/gladys_zigbee:/var/lib/gladys-z2m"
    labels:
      - "com.centurylinklabs.watchtower.enable=true"

Bearbeitung: Ich habe es mit dem offiziellen Gladys-Bild sowie mit HypriotOS versucht und das Problem ist dasselbe.

Ja, ich bin auch der Meinung, dass es ein Problem ist, dass diese Ordner hartcodiert sind. Ich hatte dasselbe Problem, als ich versuchte, diese Integrationen auf einer Instanz zu testen, auf der Gladys bereits existiert: Es ist unmöglich :confused:

Genau das Gleiche gilt für den von Gladys vorgeschlagenen MQTT-Container (der Code ist davon inspiriert).
Aber ich schaue mal :slight_smile:

Ich weiß, das ist ein Problem auf beiden Seiten :slight_smile:

Vielleicht sollten wir die Variable

SQLITE_FILE_PATH

recuperieren und die Konfiguration an derselben Stelle speichern, anstatt alles hart zu codieren.

Hallo zusammen!

Zur Information: Nach den Änderungen von @cicoub13 im Pull Request habe ich eine technische und funktionale Überprüfung des Pull Requests durchgeführt.

Mein Review-Bericht ist auf GitHub verfügbar: https://github.com/GladysAssistant/Gladys/pull/1098#issuecomment-803718817

Bearbeitung: Ich warte auch auf die Korrektur hier:

Wie im PR erwähnt:

  • Verwaltung des SQLITE_FILE_PATH :white_check_mark:
  • Behebung der Click-Werte für die Schaltflächen :white_check_mark:

Mir bleibt nur noch das kleine Demo-Video und die Dokumentation in gladys-website :memo:

Hallo, super Arbeit, von meiner Seite nur ein Hinweis, es scheint, dass einige Mappings für die beiden einzigen Gerätetypen, die ich habe (zwei Switches WXKG01LM von Aqara sowie ein Würfel MFKZQ01LM von Aqara), übersprungen wurden.

Das Problem war behoben worden, aber es scheint, dass das nicht mehr der Fall ist.
Ansonsten denke ich, dass die weiter oben erwähnten Punkte gut behoben sind, zumindest habe ich keine weiteren Probleme gesehen :slight_smile:

Hallo @Albenss

Ich habe gerade den Typ deiner beiden Geräte korrigiert. Kannst du das Bild aktualisieren und noch einmal testen?
Derzeit werden die Werte single, double, hold in numerische Werte umgewandelt.

Die anderen werden als Zeichenketten behandelt: triple, quadruple, release, many und alle die von deinem Würfel shake, wakeup, fall, tap, slide, flip180, flip90, rotate_left, rotate_right.

Du kannst den folgenden Thread posten/ansehen: Scène avec un bouton (double ou simple clic)

Also als Test habe ich damit begonnen, den Container Gladys (aber nicht Z2M und MQTT) zu löschen, um ihn nach dem Pull des neuen Images neu zu erstellen. Dann habe ich das gleiche Verhalten beobachtet und mir gedacht, dass es wahrscheinlich ein Problem mit der Datenbank gibt.

Also habe ich alles mit der Persistenz in einem neuen Ordner neu erstellt, leider funktioniert die automatische Erstellung des MQTT-Containers nicht, es scheint, dass es immer noch ein Problem mit den Zugriffsrechten auf den Ordner gibt oder MQTT weiß nicht, wo es seine Konfigurationsdatei finden soll. In den MQTT-Logs habe ich dies:
1616604311: Error: Unable to open config file /mosquitto/config/mosquitto.conf.

Ich denke, es gibt immer noch Stellen, an denen der Pfad hartcodiert ist. Tatsächlich, wenn ich den Persistenzordner zu /var/lib/z2m-test ändere, wird beim Aktivieren des Zeegbee2mqtt-Dienstes ein neuer Ordner hier erstellt: /var/lib/gladysassistant.

Ich habe also einen doppelten Ordner, der vom Dienst erstellt wird:

$ ls -al gladysassistant/zigbee2mqtt/
mqtt/ z2m/  

$ ls -al z2m-test/zigbee2mqtt/
mqtt/ z2m/

EDIT: Allerdings befinden sich die Konfigurationsdateien von Mosquitto tatsächlich im neuen Persistenzordner /var/lib/z2m-test/zigbee2mqtt/mqtt/ und nicht im doppelten Ordner im Pfad /var/lib/gladysassistant, daher ist der alte Pfad wahrscheinlich in MQTT hartcodiert.

Ja entschuldige. Du musst die Geräte löschen, damit sie in der Datenbank die richtigen Feature-Typen haben.

Hast du alle Container seit dem 22. März abends gelöscht? Andernfalls sind die Z2M- und MQTT-Container noch auf den alten Pfaden. Der Fix, den ich gemacht habe, ändert die Pfade bei der Erstellung, aber er verwaltet keine Änderungen nach der Erstellung.

Ja, ich hatte alle Container tatsächlich gelöscht. Ich werde es in 30 Minuten noch einmal versuchen, nachdem ich auch die Bilder gelöscht habe, um zu testen.

Immer noch das gleiche Problem leider…