[GELÖST] Zeit seit Event / Statusänderung berechnen & anzeigen

Begonnen von msome, 22 August 2016, 23:07:50

Vorheriges Thema - Nächstes Thema

msome

Hallo, ich bin aktuell etwas ratlos.

Ich versuche, in einem Reading eine vergangene Zeit anzeigen zu lassen. Wenn sie dann in einem (User-?)Reading ist, kann ich sie auch als direkt im FHEM als StatusFormat nutzen und darstellen.

1. Die Zeit seit ein Bewegungsmelder das letzte Mal "motion" erkannt hat, z.B. "letzte Bewegung vor 1 Stunde und 6 Minuten erkannt". D.h diese Zeit muss zum Event starten und mit jedem Event neustarten.

2. Die Zeit seit sich der Status der Anwesenheitserkennung (PRESENCE) geändert hat, z.B. "abwesend seit 3 Stunden und 2 Minuten". Leider kommt hier im Status-Reading bei jeder Ausführung des PRESENCE der gleiche Status "absent", d.h. hier ist eine Reaktion auf das Event selbst nicht möglich - es muss eine Statusänderung als Startbedingung der Zeit erkannt werden.

Aktuell habe ich keine Ahnung wie ich beginnen soll. Ich habe es mit einem HOURCOUNTER versucht, aber der zählt imho nur die Zeitspanne wenn sie zu Ende ist. Ich kann nicht z.B. jede Minute berechnen lassen, wie lange ein Zustand angelegen hat. Dadurch zeigt er mir z.B. beim PRESENCE die Abwesenheits-Zeit erst an, nachdem die Abwesenheits-Phase zu Ende ist. Ich hätte die Zeit aber gerne kontinuierlich berechnet.

Vielen Dank für jeden Tipp in welcher Richtung ich weitermachen kann.
FHEM auf ODROID-C4 & FHEM auf Raspberry 3B+
IO: HMUARTLGW (wired), Velux KLF200, DuoFernStick, DeConz, HMUSB-2, JeeLink, ModBus, RS232, WiFi,
Geräte: so ziemlich alles was es an Geräten von HM gibt, PCA301, SDM630M, Hue Lampen & Steckdosen

KernSani

Zitat von: msome am 22 August 2016, 23:07:50
Ich versuche, in einem Reading eine vergangene Zeit anzeigen zu lassen. Wenn sie dann in einem (User-?)Reading ist, kann ich sie auch als direkt im FHEM als StatusFormat nutzen und darstellen.
Da gibt es eine kleine Erweiterung: https://forum.fhem.de/index.php?topic=30385.0, die dir ALLE timestamps umformatiert.

Zitat von: msome am 22 August 2016, 23:07:50
2. Die Zeit seit sich der Status der Anwesenheitserkennung (PRESENCE) geändert hat, z.B. "abwesend seit 3 Stunden und 2 Minuten". Leider kommt hier im Status-Reading bei jeder Ausführung des PRESENCE der gleiche Status "absent", d.h. hier ist eine Reaktion auf das Event selbst nicht möglich - es muss eine Statusänderung als Startbedingung der Zeit erkannt werden.
schau dir mal die Doku zu event-on-change-reading an... Wenn du das entsprechend setzt, wird der Status nur beim ersten "absent" gesetzt.

Viel Erfolg,

Oli
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

betateilchen

Wenn Du mit event-on-change sicherstellst, dass ein reading wirklich nur bei einer Zustandsänderung aktualisiert wird, kannst Du einfach mit ReadingsAge() das "Alter" des readings (in Sekunden) ermitteln.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

KernSani

Zitat von: betateilchen am 23 August 2016, 09:48:17
kannst Du einfach mit ReadingsAge() das "Alter" des readings (in Sekunden) ermitteln.
Oh cool. Wieder was gelernt :-)
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

msome

#4
Zitat von: betateilchen am 23 August 2016, 09:48:17
kannst Du einfach mit ReadingsAge() das "Alter" des readings (in Sekunden) ermitteln.

Das ist genau was ich gesucht hatte. Vielen Dank !

Zitat von: KernSani am 23 August 2016, 01:31:21
Da gibt es eine kleine Erweiterung: https://forum.fhem.de/index.php?topic=30385.0, die dir ALLE timestamps umformatiert.

Schaut auch gut aus - ich hab zwar zur Umformatierung schon selber eine kleine Perl Funktion die ich für schöne Dauer-Anzeigen in PushOver Meldungen genutzt habe - aber nicedates schaut wirklich gut aus. Auch, da es auf die komplette Anzeige im FHEM zu wirken scheint. Mal sehen ob ich damit meine Funktion ersetzen kann.
[Update] Ich kann meine Funktion damit scheinbar nicht ersetzen, da das nicedate als JavaScript auf dem Client läuft. [/Update]

Vielen Dank für die Hilfe !
FHEM auf ODROID-C4 & FHEM auf Raspberry 3B+
IO: HMUARTLGW (wired), Velux KLF200, DuoFernStick, DeConz, HMUSB-2, JeeLink, ModBus, RS232, WiFi,
Geräte: so ziemlich alles was es an Geräten von HM gibt, PCA301, SDM630M, Hue Lampen & Steckdosen