FHEM Forum

FHEM => Frontends => FHEMWEB => Thema gestartet von: Moerk am 01 Februar 2021, 11:05:53

Titel: TimeStamp als UserReading mit OldReadingsVal
Beitrag von: Moerk am 01 Februar 2021, 11:05:53
Hallo,

ich verzweifle an einer vermutlich recht simplen Aufgabe.
Und zwar möchte ich wissen wie lange meine Fenster schon auf sind, um nach XX Minuten eine Warnung anzuzeigen.

Die Fenster(kontakte) sind nicht direkt an FHEM sondern über eine Homematic CCU3, welche die Statuswerte übermittelt. Da dies auch sporadisch geschieht, kann das Alter der letzten Änderung nicht einfach dem State-Timestamp entnommen werden.

Mein Gedanke ist nun also ein UserReading zu erstellen, das wenn sich der aktuelle vom vorherigen Fensterstatus unterscheidet als Wert die aktuelle Zeit erhält. So könnte ich dann zuverlässig sagen wie lange die letzte Änderung her ist.

Das Device heißt RESERVE01 und das Reading mit dem Status ist state.

Ich habe nun ein UserReading hinzugefügt:
attr RESERVE01 userReadings LastChange { if(ReadingsVal("RESERVE01","state",0) <> OldReadingsVal("RESERVE01","state",0)) {time} };

Und dann das Attribut oldreadings gesetzt:
attr RESERVE01 oldreadings state

Allerdings weiß ich nicht mal ob das OldReadingsVal überhaupt in PERL verfügbar ist? Und kann ich einen time-Wert als Value speichern?
Es gibt keine Meldung im LOG, keinen Hinweis im EventMonitor, aber eben auch kein Ergebnis. Ich sehe nicht mal das neue Reading LastChange.

Ich stehe auf dem Schlauch und freue mich wenn man mir da runter hilft  :-\
Titel: Antw:TimeStamp als UserReading mit OldReadingsVal
Beitrag von: MadMax-FHEM am 01 Februar 2021, 11:19:03
Wenn sich der Wert immer wieder "sporadisch" ändert, dann ändert sich ja (verm.) auch das OldReading ;)

Wie wäre es mit event-on-change-reading, dann wird (sollte) das Reading nur aktualisiert werden, wenn sich auch der Wert geändert hat.
(tut es bei mir, allerdings Homematic mittels CUL_HM)

Dann einfach die Zeit seit der letzten Änderung mittels ReadingsAge("Devicename", "Readingname", 0) abfragen...

Gruß, Joachim
Titel: Antw:TimeStamp als UserReading mit OldReadingsVal
Beitrag von: guhu am 01 Februar 2021, 12:01:38
schau Dir das Modul HOMEMODE an. Seit dem ich das im Einsatz habe, sind bei mir jede Menge DOIFS, notifys etc weggefallen. Du kannst auch Deine Fragestellung damit ganz einfach erledigen.
Titel: Antw:TimeStamp als UserReading mit OldReadingsVal
Beitrag von: Moerk am 01 Februar 2021, 14:08:12
Danke für eure Antworten!

event-on-change-reading war das was hier geholfen hat, das HOMEMODE ist mir zu mächtig - da traue ich mich grade nicht ran  ::)