Hallo an alle Forumbenutzer,
gibt es eine möglichkeit den Status eines Homie-MQTT-Devices abzurufen?
Ich habe ein WeMos mit der Homie-Konvention (3.0) erstellt der über Mosquitto seine Daten an OpenHab 2.5.4 sendet.
Das funktioniert auch alles so weit.
Ich habe die Werte in PaperUI, und auch auf dem BasicUI über .items und .sitemap konfiguriert.
Wie schon gesagt würde ich mir gerne den Status der Verbingung in meiner .sitemap anzeigen lassen. Ich kann den Status in der PaperUI unter Configuration - Things (grün "ONLINE") sehen aber wie komme ich an diesen Wert ran?
Meine vermutung ist, dass es der Werte "homie/WeMosSensor2/$state" ist. Auf den kann ich aber nicht zugreifen. Vermutlich sind alle Werte mit einem $-Zeichen nicht öffentlich!
Vielen Dank für die Hilfe
Status von Homie-Device abfragen
- udo1toni
- Beiträge: 15249
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Status von Homie-Device abfragen
Nein. Es geht hier ja um einen openHAB-internen Wert. Du kannst das in einer Rule abfragen, der passende Trigger lautet
Eine entsprechende Rule wird also triggern, wenn sich der Status des Things ändert. Innerhalb der Rule könntest Du dann z.B. ein Item auf ON oder OFF setzen, welches mit keinen weiteren Channels verknüpft ist.
Man muss allerdings dazu sagen, dass die Anzeige ONLINE/OFFLINE nicht unbedingt zuverlässig ist. In mqtt gibt es einen anderen Mechanismus, das ist das LWT (Last Will & Testament) Topic. Im Wemos ist das LWT vermutlich mit "offline" belegt und anschließend sendet das Wemos auf diesem Topic ein online.
Solange der Broker noch Kontakt zum Wemos hat, also Telegramme empfängt, passiert nichts. Sobald der Kontakt verloren geht, setzt der Broker das LWT für diesen Wemos auf offline, weil das "der letzte Wille" ist. Soweit ich weiß, unterstützen alle Implementationen von mqtt diesen Weg, ob nun Tasmota, ESPeasy...
Code: Alles auswählen
Thing <thingUID> changed [from <status>] [to <status>]
Man muss allerdings dazu sagen, dass die Anzeige ONLINE/OFFLINE nicht unbedingt zuverlässig ist. In mqtt gibt es einen anderen Mechanismus, das ist das LWT (Last Will & Testament) Topic. Im Wemos ist das LWT vermutlich mit "offline" belegt und anschließend sendet das Wemos auf diesem Topic ein online.
Solange der Broker noch Kontakt zum Wemos hat, also Telegramme empfängt, passiert nichts. Sobald der Kontakt verloren geht, setzt der Broker das LWT für diesen Wemos auf offline, weil das "der letzte Wille" ist. Soweit ich weiß, unterstützen alle Implementationen von mqtt diesen Weg, ob nun Tasmota, ESPeasy...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 3
- Registriert: 29. Apr 2020 16:01
Re: Status von Homie-Device abfragen
Vielen Dank für die schnelle Antwort.
Ich hab es hinbekommen!
Hier mal meine (Test)-Code aus der Test.rules Datei als Beispiel:
Ich hatte mir in der Zwischenzeit noch eine zweite Bridge in einer Test.things Datei erstellt. Mit dieser kann ich nun direkt den auf den WeMos-Homie /./$state zugreifen. Der liefert mir dann "lost, init, ready", welche ich mir dann auch irgendwie zuorden könnte.
Beide Lösungen (müssen) auf dem LWT beruhen, da sie bei Verbindungsverlust triggern.
Für mich ich die Sache gelöst und kann geschlossen werden.
Nochmal vielen Dank
Ich hab es hinbekommen!
Hier mal meine (Test)-Code aus der Test.rules Datei als Beispiel:
Code: Alles auswählen
rule "Device Contact"
when
Thing "mqtt:homie300:FirstMosquittoBroker:WeMosSensor2" changed
then
var Status = getThingStatusInfo("mqtt:homie300:FirstMosquittoBroker:WeMosSensor2").getStatus()
logInfo("Test.Contact.event", "WeMos " + Status)
if (Status.toString() == "OFFLINE") {
logInfo("Test.Contact.event", "WeMos is OFFLINE")
OG_Office_Contact.sendCommand(OFF)
}
else {
logInfo("Test.Contact.event", "WeMos ONLINE")
OG_Office_Contact.sendCommand(ON)
}
end
Beide Lösungen (müssen) auf dem LWT beruhen, da sie bei Verbindungsverlust triggern.
Für mich ich die Sache gelöst und kann geschlossen werden.
Nochmal vielen Dank