Aqara Sensoren in openHAB über zigbee2MQTT

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Benutzeravatar
udo1toni
Beiträge: 15241
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Aqara Sensoren in openHAB über zigbee2MQTT

Beitrag von udo1toni »

Aaaaalso...

Erst mal: Man kann in den things Dateien die Verknüpfung zwischen Bridge und Thing auf zwei verschiedene Arten konfigurieren.
Möglichkeit 1 (wobei die eher unüblich ist, aber sei's drum):

Code: Alles auswählen

Bridge mqtt:broker:Mosquitto [ host="192.168.200.61", port=1883, username="geheim", password="supergeheim" ]

// Thing mit Kennzeichnung des Addons (mqtt), Typ des Things (topic) sowie dem Rest der UID (die aus dem Broker UND dem Thing Namen besteht)
// jeweils mit Doppelpunkt getrennt, nach dem Label in runden Klammern die vollständige UID der Bridge)
Thing mqtt:topic:Mosquitto:MultiSensorSZ "MultiSensorSZ" (mqtt:broker:Mosquitto) {
    Channels:
    Type number : temp "Temperatur" [ stateTopic = "zigbee2mqtt/MultiSensorSZ", transformationPattern="JSONPATH:$.temperature", unit="°C" ]
    Type number : hum "Feuchtigkeit" [ stateTopic = "zigbee2mqtt/MultiSensorSZ", transformationPattern="JSONPATH:$.humidity", unit="%" ]
    Type number : bat "Batteriestatus" [ stateTopic = "zigbee2mqtt/MultiSensorSZ", transformationPattern="JSONPATH:$.battery", unit="%" ]
    Type number : quality "Link" [ stateTopic = "zigbee2mqtt/MultiSensorSZ", transformationPattern="JSONPATH:$.linkquality" ]
}
Ich nutze das selbst nicht in dieser Form, weil ich es umständlich finde. Der Vorteil liegt allerdings darin, dass man Bridge und Things komplett unabhängig voneinander definieren kann, also notfalls auch in getrennten Dateien oder das eine über die UI, das andere als Textdatei (bitte nicht, auch wenn das ohne Probleme funktioniert und vollkommen korrekt ist).

Möglichkeit 2 (die Things sind Kinder der Brisge):

Code: Alles auswählen

Bridge mqtt:broker:Mosquitto [ host="192.168.200.61", port=1883, username="geheim", password="supergeheim" ] { // ab hier Kinder der Bridge
// Da das Thing zwingend zur Bridge gehört, müssen weder Binding noch Bridge angegeben werden
// lediglich der Typ des Things (topic) sowie der Name (Teil der UID), hier zwingend OHNE Doppelpunkte
    Thing topic MultiSensorSZ "MultiSensorSZ" {
        Channels:
        Type number : temp "Temperatur" [ stateTopic = "zigbee2mqtt/MultiSensorSZ", transformationPattern="JSONPATH:$.temperature", unit="°C" ]
        Type number : hum "Feuchtigkeit" [ stateTopic = "zigbee2mqtt/MultiSensorSZ", transformationPattern="JSONPATH:$.humidity", unit="%" ]
        Type number : bat "Batteriestatus" [ stateTopic = "zigbee2mqtt/MultiSensorSZ", transformationPattern="JSONPATH:$.battery", unit="%" ]
        Type number : quality "Link" [ stateTopic = "zigbee2mqtt/MultiSensorSZ", transformationPattern="JSONPATH:$.linkquality" ]
    }
} // schließende Klammer der Bridge
Der Vorteil von Methode 1 ist derNachteil von Methode 2, alle Things müssen innerhalb der Bridge definiert werden. Dafür sparst Du aber jede Menge Tipparbeit (keine doppelte extra Nennung der Bridge, keine Doppelpunkte, keine weitere Angabe des Bindings)

Wenn Du das Thing über VS Code angelegt hast, bietet es sich an, die Items vollautomatisch mittels VS Code erstellen zu lassen. Dazu wechselst Du den Focus in eine *.items Datei, am besten ans Ende der Datei oder zumindest in eine leere Zeile.
Anschließend wechselst Du im linken Seitenmenü in die openHAB Ansicht und wählst das Thing aus. Taucht es noch incht auf, so klickst Du das Refresh-Symbol. Taucht das Thing immer noch nicht auf, so hast Du einen Fehler in der Definition (oder vergessen, die *.things Datei zu speichern...)
Hast Du das Thing in der Liste gefunden, machst Du einen Rechtsklick und wählst "create Items from channels", woraufhin Du unmittelbar eine vollständige Liste aller Channel als Items erhältst. In der Textdatei kannst Du anschließend nach Herzenslust editieren, aber die Links bitte nicht mehr verändern :)

Im vorliegenden Fall sollten die Items so definiert sein:

Code: Alles auswählen

Number:Temperature MultiSensorSZ_TEMP "Temperatur"  <temperature>        {channel="mqtt:topic:Mosquitto:MultiSensorSZ:temp"}
Number:Dimensionless MultiSensorSZ_HUMIDITY "MultiSensorSZ HUMID"            {channel="mqtt:topic:Mosquitto:MultiSensorSZ:hum"}
Number:Dimensionless MultiSensorSZ_BATTERY "MultiSensorSZ BAT" <battery>   {channel="mqtt:topic:Mosquitto:MultiSensorSZ:bat"}
Number MultiSensorSZ_LINKQUALITY "MultiSensorSZ [%d]"                  {channel="mqtt:topic:Mosquitto:MultiSensorSZ:quality"}
Es handelt sich um Channel, die zu einem Thing vom Typ topic gehören. Der Channelname muss exakt so angegeben werden, wie er in der Channelliste definiert ist. Aber wie gesagt, lass VS Code die Arbeit selbst erledigen, es soll ja möglichst komfortabel sein.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
Homiehabbie
Beiträge: 17
Registriert: 27. Mär 2023 14:43
Answers: 0

Re: Aqara Sensoren in openHAB über zigbee2MQTT

Beitrag von Homiehabbie »

Hallo @udo1toni,

das hat super geklappt, danke! Die Items werden nun alle als "online" angegeben. Müsste ich bei der Auswahl eines Items den letzten gemessenen Wert sehen können? Dort wird bei allen "NULL" angezeigt...
openHAB3.4.2 auf einem Raspi 4B mit openHABian, steuert Aqara Sensoren über Zigbee

Benutzeravatar
udo1toni
Beiträge: 15241
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Aqara Sensoren in openHAB über zigbee2MQTT

Beitrag von udo1toni »

Dann funktioniert etwas noch nicht. In VS Code (in der openHAB UI sowieso) sollte bei einem Mouseover über das Item (egal an welcher Stelle - also in der *.items Datei, in einer Rule, in einer Sitemap, in der linken Seitenleiste im Items-Bereich) stets der aktuelle Wert angezeigt werden (evtl. erst nach einem Update der Liste über das Refresh Symbol)

Auf zur Fehlersuche...
Erster Schritt: Sicherstellen, dass überhaupt etwas in openHAB ankommt. Dazu legst Du einen zusätzlichen string Channel an:

Code: Alles auswählen

Type string : json "JSON" [ stateTopic = "zigbee2mqtt/MultiSensorSZ" ]
Diesen verlinkst Du mit einem String Item.
Nun musst Du (unmittelbar, das Topic wurde ja bereits eingelesen) das gesamte JSON Objekt als Inhalt des String Items sehen können.

JSONPATH ist installiert?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
Homiehabbie
Beiträge: 17
Registriert: 27. Mär 2023 14:43
Answers: 0

Re: Aqara Sensoren in openHAB über zigbee2MQTT

Beitrag von Homiehabbie »

Das AddOn "JSONPath Transformation" ist installiert. Das Item habe ich angelegt:
Snip20230413_1.png
Wo müsste ich jetzt die Werte sehen? :roll:

PS: Ich habe übrigens kontrolliert, dass der Sensor Daten schickt; ich sehe sie im MQTT Explorer.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
openHAB3.4.2 auf einem Raspi 4B mit openHABian, steuert Aqara Sensoren über Zigbee

Benutzeravatar
udo1toni
Beiträge: 15241
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Aqara Sensoren in openHAB über zigbee2MQTT

Beitrag von udo1toni »

Und wie sieht der Code des Things aus? (Kein Bild, bitte, sondern in der UI Thing Ansicht auf den rechten Reiter Code wechseln und den gesamten Text kopieren und hier als Code einfügen)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
Homiehabbie
Beiträge: 17
Registriert: 27. Mär 2023 14:43
Answers: 0

Re: Aqara Sensoren in openHAB über zigbee2MQTT

Beitrag von Homiehabbie »

Code: Alles auswählen

Bridge mqtt:broker:Mosquitto
 [ 
  host="192.168.200.61", 
  port=1883, 
  username="sachichnich", 
  password="gehtdichnixan" 
  ]
{ 
  // ab hier Kinder der Bridge
  // Da das Thing zwingend zur Bridge gehört, müssen weder Binding noch Bridge angegeben werden
  // lediglich der Typ des Things (topic) sowie der Name (Teil der UID), hier zwingend OHNE Doppelpunkte
  Thing topic MultiSensorSZ "MultiSensorSZ" {
    Channels:
      Type number : temp "Temperatur" [ stateTopic = "zigbee2mqtt/MultiSensorSZ", transformationPattern="JSONPATH:$.temperature", unit="°C" ]
      Type number : hum "Feuchtigkeit" [ stateTopic = "zigbee2mqtt/MultiSensorSZ", transformationPattern="JSONPATH:$.humidity", unit="%" ]
      Type number : bat "Batteriestatus" [ stateTopic = "zigbee2mqtt/MultiSensorSZ", transformationPattern="JSONPATH:$.battery", unit="%" ]
      Type number : quality "Link" [ stateTopic = "zigbee2mqtt/MultiSensorSZ", transformationPattern="JSONPATH:$.linkquality" ]
      Type string : json "JSON" [ stateTopic = "zigbee2mqtt/MultiSensorSZ" ]
  }
}
openHAB3.4.2 auf einem Raspi 4B mit openHABian, steuert Aqara Sensoren über Zigbee

Benutzeravatar
udo1toni
Beiträge: 15241
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Aqara Sensoren in openHAB über zigbee2MQTT

Beitrag von udo1toni »

Nein, das ist die Textdefinition als Thing. Ich will den Code aus der UI sehen (gerne auch den der Bridge).
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
Homiehabbie
Beiträge: 17
Registriert: 27. Mär 2023 14:43
Answers: 0

Re: Aqara Sensoren in openHAB über zigbee2MQTT

Beitrag von Homiehabbie »

Ich kann keine weiteren Sensoren mehr mit zigbee2mqtt koppeln und habe daher den Raspi neu gestartet und den Dongleport noch einmal explizit angegeben und jetzt sehe ich Daten (Koppeln kann ich allerdings immer noch nicht aber das ist ein anders Thema).

Danke für die Unterstützung!
openHAB3.4.2 auf einem Raspi 4B mit openHABian, steuert Aqara Sensoren über Zigbee

J-N-K
Beiträge: 126
Registriert: 20. Jun 2020 12:21
Answers: 4
Wohnort: Gelsenkirchen, NRW

Re: Aqara Sensoren in openHAB über zigbee2MQTT

Beitrag von J-N-K »

Es gibt einen ziemlich fiesen Bug, der dazu führt dass Änderungen an .things Dateien im laufenden Betrieb nicht korrekt geladen werden: https://github.com/openhab/openhab-core/issues/3527. Dies betrifft insbesondere Änderungen an der Konfiguration von Channeln oder der Konfiguration von Things, wenn Werte von A zu B und wieder zurück zu A geändert werden. Hinzufügen/Löschen/Umbenennen oder den Typ von Channeln ändern geht aber. Ein Neustart behebt das Problem ebenfalls, deswegen finde ich, dass hört sich etwas wie Dein Problem an. UI Things nicht davon nicht betroffen.
openHAB 4.0.0-SNAPSHOT - - local build -
APU2, 4GB RAM, 32GB SSD, Debian Buster
openHAB Core/Distro/Addons & SmartHome/J Maintainer

Selter
Beiträge: 73
Registriert: 9. Mär 2018 16:06
Answers: 0
Wohnort: Bremen

Re: Aqara Sensoren in openHAB über zigbee2MQTT

Beitrag von Selter »

Hallo,
ich klinke mich mal hier ein, da ich eine Frage zum Aqara Sensor über Zigbee2MQTT habe:

Das .thing ist wie folgt konfiguriert:

Code: Alles auswählen

Thing topic TempAqaraZ1 "Aqara Temp Sensor Z1" @ "Zigbee" {
    Channels:
        Type number : temp    "Temperatur"     [ stateTopic = "zigbee2mqtt/TempAqaraZ1", transformationPattern="JSONPATH:$.temperature", unit="°C" ]
        Type number : hum     "Feuchte"        [ stateTopic = "zigbee2mqtt/TempAqaraZ1", transformationPattern="JSONPATH:$.humidity", unit="%" ]
        Type number : press   "Druck"          [ stateTopic = "zigbee2mqtt/TempAqaraZ1", transformationPattern="JSONPATH:$.pressure", unit="hPa" ]
        Type number : volt    "Spannung"       [ stateTopic = "zigbee2mqtt/TempAqaraZ1", transformationPattern="JSONPATH:$.voltage", unit="V" ]
        Type number : bat     "Batteriestatus" [ stateTopic = "zigbee2mqtt/TempAqaraZ1", transformationPattern="JSONPATH:$.battery", unit="%" ]
        // Type number : quality "Link"           [ stateTopic = "zigbee2mqtt/TempAqaraZ1", transformationPattern="JSONPATH:$.linkquality" ]
    }

Im Log erhalte ich diese Warnungen bzgl. Voltage und Battery im JSON:

Code: Alles auswählen

Executing the JSONPATH-transformation failed: Invalid path '$.voltage' in '{"humidity":53.3,"linkquality":163,"pressure":1014.6,"temperature":22.41}'
Executing the JSONPATH-transformation failed: Invalid path '$.battery' in '{"humidity":50.99,"linkquality":171,"pressure":1014.6,"temperature":22.54}'
Wie kann das behoben werden?
openHAB 3.2 in einer Debian-VM mit openHABian unter Proxmox 8.3.3 auf Intel NUC 5i3ryh // WiFi (UniFi-APs) + Aqara Gateway + Zigbee2MQTT@SLZB-06 + Aeon Z-Wave // viele Shellies / Sonoffs mit Tasmota / viele Aqara Sensoren über Gateway / diverse Sensoren über Z2M // Grafana (InfluxDB)

Antworten