Aqara W100 Zigbee Matter Thread Temperatur- und Feuchtigkeitssensor

Ich habe es mit folgendem versucht

sudo docker run \
   --name gladys-z2m-zigbee2mqtt \
   --restart=unless-stopped \
   --network=host \
   --device=/dev/serial/by-id/usb-1a86_TubesZB_971207DO-if00-port0 \
   -v /var/lib/gladysassistant/zigbee2mqtt/z2m:/app/data \
   -v /run/udev:/run/udev:ro \
   -e TZ=Europe/Paris \
   ghcr.io/koenkk/zigbee2mqtt:2.3.0

Immer noch der Verbindungsfehler.

Ich habe hinzugefügt

--cgroupns=host \

Gleich

--group-add dialout \

Gleich

--privileged \

Gleich

--user 1001:1001 \
--group-add dialout \

Error: EACCES: permission denied, mkdir ‹ /app/data/log/2025-05-19.22-57-37 ›
at Object.mkdirSync (node:fs:1364:26)
at Logger.init (/app/lib/util/logger.ts:75:16)
at new Controller (/app/lib/controller.ts:46:16)
at start (/app/index.js:147:18)

Also immer noch keine Verbindung zu mqtt

Ich habe gerade nachgeschaut, was ich für node-red eingestellt habe.
Dort steht

--privileged \
-u root \
--network=host \

Ich werde es mal damit versuchen, da Gladys nicht die Installation von zigbee2mqtt durchführt, könnte es möglicherweise eine Inkompatibilität bei den Dateiberechtigungen geben.

Das hat nicht funktioniert.
Ich habe Anführungszeichen um das Passwort und den Benutzernamen gesetzt, wie hier erwähnt
MQTT failed to connect: Connection refused: Not authorized · Issue #11148 · Koenkk/zigbee2mqtt · GitHub

In Integration > Konfiguration > MQTT

Das Passwort stimmt nicht mit dem in meiner Datei configuration.yaml von zigbee2mqtt überein, ist das normal?
Ich habe versucht, es zu ändern, aber es gibt immer noch keine Verbindung.
Ich frage mich auch, ob ich den richtigen Port verwendet habe

Ich habe auch bemerkt, dass ich bei meinen Versuchen, wenn ich wiederhole

sudo docker run \
   --name gladys-z2m-zigbee2mqtt \
   --restart=unless-stopped \
   --device=/dev/serial/by-id/usb-1a86_TubesZB_971207DO-if00-port0 \
   -p 8080:8080 \
   -v /var/lib/gladysassistant/zigbee2mqtt/z2m:/app/data \
   -v /run/udev:/run/udev:ro \
   -e TZ=Europe/Paris \
   ghcr.io/koenkk/zigbee2mqtt:2.3.0

Ich bekam

error: 	z2m: MQTT failed to connect, exiting... ()

Und nicht

error: 	z2m: MQTT failed to connect, exiting... (Connection refused: Not authorized)

Ja, das ist normal. Gladys startet 2 separate Mosquitto-Container, einen für die MQTT-Integration und einen für die Zigbee2mqtt-Integration. Es handelt sich nicht um denselben Broker.

Der der Zigbee2mqtt-Integration ist auf Port 1884 verfügbar.

Wenn du nicht network=host angibst, kann es physisch nicht funktionieren :slight_smile: Gladys muss Zugriff auf den Mosquitto-Container haben.

@pierre-gilles
Wenn man « Dienst aktivieren oder deaktivieren » in « Zigbee2mqtt-Dienstkonfiguration » ausführt
Ändert sich dadurch das Passwort, denn ich stelle fest, dass es nicht dasselbe ist wie das, das ich in der Produktion habe, im Vergleich zu dem, das ich in der Sicherung habe. Kurz gesagt, ich habe wahrscheinlich alle meine Tests mit dem falschen Passwort durchgeführt.

Diesmal hat es mit dem richtigen Passwort beim zweiten Mal funktioniert, beim ersten Mal hatte ich das Problem mit den 600 ms.

Die Steckdosen NOUS und ein Smart-Switch D2Z NOUS benötigen ebenfalls ein Update. Ich habe gesehen, dass du es noch nicht gemacht hast und es funktioniert, also warte ich. Ich werde es mit einer nicht kritischen Steckdose testen.

Super, toll, dass es geklappt hat :slight_smile: Funktioniert der Aqara-Thermostat jetzt also einwandfrei?

Für die Steckdosen NOUS verschwindet der Child Lock aus Gladys, wie ich es hier beschrieben habe.
Von meiner Seite aus habe ich das Update nicht durchgeführt, da der Child Lock nur noch über die Oberfläche von z2m zugänglich sein wird.

Ein bisschen Lesestoff zum Test des Aqara W100.

Ja




Allerdings hat der Button zum Zulassen der Verbindung nicht funktioniert;
Wenn ich es auf Gladys aktivierte, stand auf zigbee2mqtt deaktiviert.

Ich habe den Thermostat noch nicht konfiguriert, im Moment habe ich ein Problem mit einem Magnetventil

Das nicht erkannt wurde und ich eine externe Erweiterung gefunden habe, um es zum Laufen zu bringen.
Aber jetzt in 2.3.0 ist meine Datei leer mit einer Erweiterung .invalide am Ende.
Ich habe keine geänderte Datei für die 2.3.0 gefunden
Dieses Ventil flutet meinen Pelletkessel, wenn die Temperatur einen bestimmten Schwellenwert überschreitet.
Ich werde es wahrscheinlich austauschen müssen, wenn ihr welche kennt, die gut funktionieren, reaktiv sind, keine unerwarteten Abmeldungen haben, bin ich interessiert.

Okay, danke für den Hinweis, es gibt sicherlich Anpassungen, die auf Gladys-Seite mit dieser neuen Version von Zigbee2mqtt gemacht werden müssen :slight_smile:

In der Zwischenzeit nutze den Pairing-Button in Zigbee2mqtt!

Also, ich habe diese bestellt:

Aber @pierre-gilles, wenn du auf Gladys links neben unserem Namen und Foto einen „Shop“-Button mit Partnerlinks hinzufügen könntest, die zu Amazon, Domadoo, deinem Mini-PC Gladys+ führen.
Denn ich musste wieder im Forum suchen, um herauszufinden, welchen Code ich zur Domadoo-Link hinzufügen muss, das wäre dann direkt.

@pierre-gilles ich habe ein großes Problem.
Ich habe die Sicherungen durchgebrannt, daher kein Strom mehr für Gladys.
Beim Neustart hat Gladys die Version 1.42.0 neu installiert
et zigbee2mqtt ist im Eimer, da die Konfigurationsdatei configuration.yaml für die Version 2.3.0 ist

argh nicht cool :frowning:
Um all diese Unannehmlichkeiten zu vermeiden, verwende ich docker compose und portainer.
Docker compose ermöglicht es mir, alles einzurichten, was ich möchte, und die Versionen festzulegen, und portainer ermöglicht es mir, all das mit einer schönen grafischen Oberfläche zu verwalten (mit Zugriff auf die Logs, CPU/RAM/Disk-Statistiken usw.).
Du erstellst einmal das Verzeichnis für portainer:

docker volume create portainer_data

Und der docker run, den du startest, ist:

docker run -d -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce

anschließend kannst du dich auf http://meineMaschinenIP:9000 verbinden
Ich habe einen Stack namens gladys-assistant erstellt, in dem ich das docker compose hinterlegt habe:

version: "3"

services:
  gladys:
    image: gladysassistant/gladys:v4
    container_name: gladys
    restart: always
    privileged: true
    network_mode: host
    cgroup: host
    logging:
      driver: "json-file"
      options:
        max-size: 10m
    environment:
      NODE_ENV: production
      SQLITE_FILE_PATH: /var/lib/gladysassistant/gladys-production.db
      SERVER_PORT: 80
      TZ: Europe/Paris
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /var/lib/gladysassistant:/var/lib/gladysassistant
      - /dev:/dev
      - /run/udev:/run/udev:ro

  watchtower:
    image: containrrr/watchtower
    restart: always
    container_name: watchtower
    command: --cleanup --include-restarting
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

et dazu kannst du deinen Matterbridge, deinen z2m hinzufügen, deinen MQTT-Broker, dein zwavejs-ui, node-red usw., wenn du sie natürlich anstelle von Gladys verwalten möchtest.

  matterbridge:
    container_name: matterbridge
    image: luligu/matterbridge:latest # Matterbridge image with the latest tag
    network_mode: host # Ensures the Matter mdns works
    restart: always # Ensures the container always restarts automatically
    volumes:
      - "${HOME}/Matterbridge:/root/Matterbridge" # Mounts the Matterbridge plugin directory
      - "${HOME}/.matterbridge:/root/.matterbridge" # Mounts the Matterbridge storage directory

  zigbee2mqtt:
    image: koenkk/zigbee2mqtt:2.2.1
#    image: koenkk/zigbee2mqtt:1.42.0
    container_name: zigbee2mqtt
    restart: unless-stopped
    environment:
      - PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      - NODE_ENV=production
      - TZ=Europe/Berlin
    volumes:
      - ./data:/app/data:rw
      - /run/udev:/run/udev:ro
    ports:
      - 12000:12000
    network_mode: host
    devices:
        # Make sure this matched your adapter location
        - /dev/serial/by-id/usb-Txxxxxxxyyyyyyyy:/dev/ttyACM0
# run a rootless container with Docker Compose by adding the following attributes
    # group_add:
    #     - dialout
    # user: 1000:1000

Das sind Beispiele, die man an seine Konfiguration anpassen muss, insbesondere bei der Erstellung dieser Verzeichnisse.

Jedenfalls ist das, was ich mache, und es funktioniert bei mir recht gut, ich kann mit den verschiedenen Versionen „spielen“, immer mit Backup davor!
Mit dieser Methode kann ich mir auch einen Gladys-Test erstellen, zum Beispiel:

version: '3'

services:
  gladys:
#    image: cicoub13/gladys:tuya-rain
    image: gladysassistant/gladys:matter-integration
#    image: sescandell/gladys-test:zjs-battery
#    image: sescandell/gladys-test:pr-zwaveJsMeter
#    image: gladysassistant/gladys:zigbee2mqtt-tuya-me201wz
#    image: gladysassistant/gladys:dashboad-add-other-aggregate-functions
    container_name: gladys-test
    restart: always
    privileged: true
    network_mode: host
    logging:
      driver: "json-file"
      options:
        max-size: 10m
    environment:
      NODE_ENV: production
      SQLITE_FILE_PATH: /var/lib/gladysassistant/gladys-production.db
      SERVER_PORT: 8001
      TZ: Europe/Paris
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./gladysassistant-test:/var/lib/gladysassistant
      - /dev:/dev
      - /run/udev:/run/udev:ro

  mosquitto:
    image: eclipse-mosquitto:2.0.20
    container_name: gladys-test-mqtt
    restart: unless-stopped
#    command: mosquitto -c /mosquitto-no-auth.conf
    environment:
      - PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      - VERSION=2.0.20
      - DOWNLOAD_SHA256=azszderzbenrac6
      - GPG_KEYS=azszderzbenr
      - LWS_VERSION=4.2.1
      - LWS_SHA256=azszderzbenr
    volumes:
      - ./mqtt-test/config:/mosquitto/config:rw
      - ./mqtt-test/data:/mosquitto/data:rw
      - ./mqtt-test/log:/mosquitto/log:rw
    ports:
      - 1888:1888
    network_mode: host

  matterbridge:
    image: luligu/matterbridge:latest
    container_name: gladys-test-matterbridge
    restart: always
    network_mode: host
    volumes:
      - ./matterbridge-test/Matterbridge:/root/Matterbridge
      - ./matterbridge-test/.matterbridge:/root/.matterbridge

Für deinen Fall denke ich, dass es gut wäre, z2m darüber zu verwalten.
Du musst jedoch die Verwaltung von z2m durch Gladys deaktivieren, dann erstellst du deinen portainer, startest einen Stack (mit z2m mit 2.3.0 für die Version z. B.) und startest ihn. Du kehrst dann zu Gladys zurück und fügst deinen externen Docker z2m hinzu:


Ich hoffe, du findest alle deine kleinen Dinge wieder.

Ich habe so viele Neuinstallationen durchgeführt, dass ich nur noch fünf Minuten für eine neue brauche.
Ich habe alle Befehle in einer Datei.

und ich 5s :joy:

Ich muss Docker woanders als in /var/lib/gladysassistant/zigbee2mqtt/z2m installieren
Denn das hat nicht funktioniert
Ich habe
error: z2m: MQTT konnte nicht verbunden werden, beende... (connect ECONNREFUSED 127.0.0.1:1884)

@mutmut ich weiß nicht, warum ich am Ende deiner Nachricht gesehen hatte.
Also, da es nicht funktioniert hatte, habe ich die Installation von Gladys aus neu gestartet
Ich musste erneut angeben, wo mein Koordinator angeschlossen war und das Modell, aber der Port wurde automatisch auf 12000 geändert
Ich habe ein funktionierendes Gladys zurückerhalten, aber zigbee2mqtt auf 12000
In Version 1.42.0 habe ich die Verbindung zu einer bestehenden Installation ausgewählt, die MQTT-Adresse angegeben
Docker gestoppt, die Datei configuration.yaml geändert, Docker gelöscht und 2.3.0 neu installiert. Erster Versuch, Fehler 600ms, ich lösche Docker, starte die Installation neu und es funktioniert.
Ich trenne meinen MiniPC vom Netz, um einen Stromausfall zu simulieren, und er startet mit 2.3.0 neu
Also, es ist OK

Gut, ich beginne mit der Konfiguration meines W100

Das Ziel ist es, die Steuerung der Heizung eines elektrischen Heizkörpers (Toastgrill-Typ) im Badezimmer durch die Kunden zu verwalten.

Von oben nach unten
Ich habe ein fiktives MQTT-Gerät Thermostat erstellt, das ich benannt habe:
ref-temperature-sb-chambre-6
Der aktuelle Wert beträgt 27° C
Darunter der Schalter NOUS 4-1-20
Der den Strom zum elektrischen Heizkörper gibt oder nicht.
Dann die Signalstärke des Schalters NOUS 4-1-20
Danach die Raumtemperatur, die vom W100 hier 77,2 °F aufgezeichnet wird (siehe Erklärung hier)
Dann der vom W100 aufgezeichnete Feuchtigkeitswert
Der mittlere Tastendruck des W100
et zum Schluss die Signalstärke des W100

Ich habe eine Szene Temperaturzähler Ch6 erstellt
mit dem Auslöser des Drucks auf die Plus-Taste des W100
ein den Einstellungen habe ich Plus-Taste gedrückt gewählt

Dann hole ich den Referenzwert der gewünschten Temperatur von meinem fiktiven Thermostat ab.

Ich setze das Verfahren fort, wenn der Wert unter 35°C liegt

Überprüfung der korrekten Funktion der Szene;
Ich sende mir per Telegram den vom Thermostat abgerufenen Wert und warte 1 Sekunde, um fortzufahren.

Ich füge +1 zum Wert meines Thermostats hinzu

Ich hole den neuen Wert meines Thermostats ab

Überprüfung der korrekten Funktion der Szene;
Ich sende mir per Telegram den neuen vom Thermostat abgerufenen Wert.

Ich teste es, es funktioniert nicht.
Ich ändere den Auslöser in einen einfachen Xiaomi-Tastendruck.
Es funktioniert, der Wert meines Thermostats wird um 1 erhöht, von 27°C auf 28°C.
Ich wollte dann eine Szene erstellen, die den Referenzwert mit dem Raumtemperaturwert vergleicht und den Schalter NOUS 4-1-20 entsprechend aktiviert oder deaktiviert.
Und versuchen, den Referenzwert der Temperatur auf dem W100 anzuzeigen, wie die Poolwassertemperatur in dem von @mutmut geteilten Link angezeigt wird.

Ein bisschen Lesestoff über den Test des Aqara W100.

Das Problem liegt wahrscheinlich am (Tastendruck) des W100, der Keinen aufgezeichneten Wert an Gladys zurückgibt.
In zigbee2MQTT haben wir

Tastendruck Ergebnis Zgbee2MQTT Tastenfreigabe Ergebnis Zgbee2MQTT
Plus-Taste 1 kurzer Druck single_plus
Mittlere Taste 1 kurzer Druck single_center
Minus-Taste 1 kurzer Druck single_minus
Plus-Taste 2 kurze Drücke double_plus
Mittlere Taste 2 kurze Drücke double_center
Minus-Taste 2 kurze Drücke double_minus
Plus-Taste 1 langer Druck hold_plus Plus-Taste langer Freigabe release_plus
Mittlere Taste 1 langer Druck hold_center Mittlere Taste langer Freigabe release_center
Minus-Taste 1 langer Druck hold_minus Minus-Taste langer Freigabe release_minus

Meiner Meinung nach wird das so nicht direkt funktionieren, da man keine Berechnung an einen Sensor senden kann.
Ich empfehle dir, einen Blick auf das Tutorial von @prohand zur Hausautomatisierung der Waschmaschine zu werfen.
Tatsächlich wirst du für deine Thermostattemperatur 2 Funktionen erstellen müssen: 1 zum Abrufen der Temperatur (Sensor) und 1 zum Berechnen (Aktor).
Im Tutorial wird das als Sender (Sensor) und Listener (Aktor) bezeichnet.

EDIT: Nach erneuter Durchsicht deines Posts scheint es zu funktionieren, da du 28 nach dem +1 erhältst.
Wenn du dir den Wert deines Knopfes über Telegram schickst, was wird dir dann als Zahl zurückgegeben? (Es wird nicht das Ergebnis von z2m, sondern eine normale Zahl zurückgegeben)
Wenn nichts angezeigt wird, musst du ein neues Thema erstellen, um die Spezifikationen des Aqara W100 in Gladys hinzuzufügen.

Hier ist, was meine Szene mir über Telegram mit dem Xiaomi-Knopfklick zurückgibt

Und im Dashboard ist der Wert meines fiktiven Thermostats tatsächlich gestiegen.

Beim Klick auf den W100 passiert nichts, keine Telegram-Benachrichtigung, die Szene wird nicht ausgelöst.