Hallo zusammen,
nach langer Zeit habe ich mich wieder verstärkt um meine Hausautomatisierung gekümmert...
Kurz zum Setup: OH3 auf einem Raspberry. ZigBee auf einem weiteren Raspberry, der einige Xiaomi Kleinsensoren ausliest und übermittelt. (Temperatur, Luftfeuchtigkeit, Batteriestatus, Linkqualität)
Das läuft soweit auch prinzipiell, jedoch muss ich manchmal die Sensoren nochmal "anklicken", damit Werte übermittelt werden.
Natürlich gibt es weit bessere Geräte, aber ich möchte erst einmal weiter damit arbeiten.
Nun zur Frage:
Ich möchte einen Zeitstempel der letzten Übermittlung auslesen. (So dass ich sehen kann, von wann die Temperatur ist...
gibt es eine Möglichkeit, wie ich in OH (oder woanders) dies speichern und dann in meinem Widget anzeigen lassen kann?
Die Suche im Forum hat u.a. diesen Thread hier hervorgebracht: viewtopic.php?p=16487&hilit=zeitstempel+sensor#p16487
Ich frage mich nur, ob es da ggf. eine einfachere Möglichkeit gibt. Ich brauche im Prinzip keine historischen Werte, sondern immer nur den letzten Wert..
Danke im voraus.
Grüße
Christian
Zeitstempel von MQTT Geräten (Sensoren) auslesen?
Moderator: seppy
-
- Beiträge: 29
- Registriert: 13. Mai 2021 13:27
- udo1toni
- Beiträge: 13942
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Zeitstempel von MQTT Geräten (Sensoren) auslesen?
Der Zeitstempel des letzten Updates ist im Item selbst gespeichert. Ich bin mir allerdings nicht sicher, ob der Wert unter allen Umständen zur Verfügung steht. Zur Anzeige musst Du den Wert aber ohnehin in ein Item überführen, so dass es vermutlich einfacher ist, so eine Rule anzulegen:
Es kann sein, dass der zu verwendende Wert inzwischen etwas anders aussieht (Umstellung Joda nach JavaTime), aber grundsätzlich ist es das.
Wenn Du mehrere Items hast, frü die Du diese Funktion brauchst, ist es sinnvoll, diese zu gruppieren und die zugehörigen DateTime Items so zu benennen, dass sich ihr Name aus dem zugehörigen Itemnamen ableiten lässt. Dann ginge sowas:
Der Filter sucht hier aus der zweiten Gruppe das Item heraus, dessen Name mit dem Namen des Items beginnt, welches die Rule getriggert hat.
Eine Rule, sie alle zu finden und ewig zu binden...
Code: Alles auswählen
rule "Zeitstempel aktualisieren"
when
Item MeinItem received update
then
MeinZeitstemepl.postUpdate(new DateTimeType)
end
Wenn Du mehrere Items hast, frü die Du diese Funktion brauchst, ist es sinnvoll, diese zu gruppieren und die zugehörigen DateTime Items so zu benennen, dass sich ihr Name aus dem zugehörigen Itemnamen ableiten lässt. Dann ginge sowas:
Code: Alles auswählen
rule "Zeitstempel aktualisieren" // kümmert sich um alle Zeitstempel
when
Member of gMeineItems received update
then
gMeineZeitstempel.members.filter[i|i.name.startsWith(triggeringItem.name)].head..postUpdate(new DateTimeType)
end
Eine Rule, sie alle zu finden und ewig zu binden...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 28
- Registriert: 30. Okt 2018 12:41
Re: Zeitstempel von MQTT Geräten (Sensoren) auslesen?
Alternativ, sofern du Zigbee2mqtt nutzt, gibt es da den Datenpunkt "last_seen", denn man in der Konfiguration aktivieren kann. Dann wird bei jedem payload auch immer ein "last_seen" mitgeschickt.
Kann man entweder über die Web-UI aktivieren oder in der Konfig, genau Option finde ich gerade aber nicht.
Kann man entweder über die Web-UI aktivieren oder in der Konfig, genau Option finde ich gerade aber nicht.