Re: Aqara Sensoren in openHAB über zigbee2MQTT
Verfasst: 10. Apr 2023 21:49
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):
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):
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:
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.
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" ]
}
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
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"}