userReadings bei bestimmten Event

Begonnen von AnBad, 03 November 2023, 19:47:05

Vorheriges Thema - Nächstes Thema

AnBad

Hallo, ich habe einen Bewegungsmelder, welche alle halbe Stunde ein SingOfLive sendet, und damit auch ein "state=off".
Ich brauche jedoch ein Reading (userReadings), was mir den letzten Zeitpunkt des Wechsel von 'off' zu 'on' festhält. Und auch ein zweites Reading, welches mir den Zeitupunkt 'on' zu 'off' festhält.
Also in der Art:

LastOn { (if Zustandswechsel und Event = "on") {return localtime}},
LastOff { (if Zustandswechsel und Event = "on") {return localtime}}

Über eine Aufruf einer Sub würde ich das hinbekommen. Aber es geht doch vlt. auch einfacher über userReadings? Im FHEMWiki gibt es eine Erläuterung, aber ich bekomme es einfach nicht hin..

Vielen Dank und schönen Abend.

Jamo

Das geht etwa so, da Du aber nur Pseudocode geschrieben hast, hier auch nur Pseudocode in RAW formstLastOff:Zustand:.off {ReadingsTimestamp($name,'Zustand','1970-01-01 01:01:01')}, \
LastOn:Zustand:.on   {ReadingsTimestamp($name,'Zustand','1970-01-01 01:01:01')}
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/Conbee III, FB7690, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack, Sonos, ESPresence

KölnSolar

#2
korrekt.

Anstatt dem timestamp(der wird ja eh im userreading gesetzt) vielleicht einen counter ?

{my $counter = ReadingsVal($name,'counterOn',0) + 1}
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

betateilchen

mich würde ja mal wieder die tatsächliche Aufgabenstellung interessieren, für die man sowas braucht...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

AnBad

Zitat von: Jamo am 03 November 2023, 20:05:49Das geht etwa so, da Du aber nur Pseudocode geschrieben hast, hier auch nur Pseudocode in RAW formstLastOff:Zustand:.off {ReadingsTimestamp($name,'Zustand','1970-01-01 01:01:01')}, \
LastOn:Zustand:.on   {ReadingsTimestamp($name,'Zustand','1970-01-01 01:01:01')}

Hallo, so weit funktioniert es. Vielen Dank

AnBad

Zitat von: betateilchen am 03 November 2023, 20:49:58mich würde ja mal wieder die tatsächliche Aufgabenstellung interessieren, für die man sowas braucht...


Hallo,
eine andere Sub soll den tats. Zeitpunkt der letzten "On"-Schaltung auslesen. Da das SignOfLive alle 30 Minuten die Readings aktuallisiert, werden entsprechend die Timestamps auch überschrieben. Mit dem userReading hoffe ich die aktuelle On-Schaltung zu "speichern". Mit Event-On-Change usw. hat das nicht geklappt.

Ich bin mir noch nicht sicher, ob damit wirklich funktioniert.

lastOn:motion:.on {
my $timestamp = localtime;
return $timestamp;
}