Seite 1 von 1

Zeitstempel von MQTT Geräten (Sensoren) auslesen?

Verfasst: 9. Feb 2022 11:03
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

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

Verfasst: 9. Feb 2022 16:59
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...

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

Verfasst: 13. Feb 2022 14:44
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.