Zeitstempel von MQTT Geräten (Sensoren) auslesen?

Allgemeine Fragen zum Thema "Smart Home" und Entscheidungshilfen

Moderator: seppy

Antworten
schwoof
Beiträge: 29
Registriert: 13. Mai 2021 13:27

Zeitstempel von MQTT Geräten (Sensoren) auslesen?

Beitrag von schwoof »

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

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

Re: Zeitstempel von MQTT Geräten (Sensoren) auslesen?

Beitrag von udo1toni »

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:

Code: Alles auswählen

rule "Zeitstempel aktualisieren"
when
    Item MeinItem received update
then
    MeinZeitstemepl.postUpdate(new DateTimeType)
end
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:

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
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...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

limdul79
Beiträge: 28
Registriert: 30. Okt 2018 12:41

Re: Zeitstempel von MQTT Geräten (Sensoren) auslesen?

Beitrag von limdul79 »

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.

Antworten