Hallo,
ich verzweilfe gerade ein wenig mit dem oldreadings.
Als ich mit die Werte mit True und False geschickt hatte, gab es gar keine OLDREADINGS.
Jetzt habe ich es auf 0 und 1 geändert und die OLDREADINGS werden als True und False gespeichert.
Was mir auch noch auffällt, dass die 41_bw fehlt !
Könnte mir hierbei jemand helfen?
Internals:
STATE ???
TYPE MQTT2_DEVICE
OLDREADINGS:
2022-11-07 15:31:32 42_bw False
2022-11-07 15:31:43 43_bw False
2022-11-07 15:31:51 44_bw False
2022-11-07 15:32:00 46_bw False
2022-11-07 15:32:09 47_bw False
READINGS:
2022-11-07 15:41:44 41_b_ptp 2920.0
2022-11-07 15:41:44 41_bw 0
2022-11-07 15:41:44 41_g_ptp 3229.0
2022-11-07 15:38:02 42_bw 0
...
Attributes:
oldreadings \d+_bw
readingList surv:tele/surv/motion:.* { json2nameValue($EVENT) }
ZitatKönnte mir hierbei jemand helfen?
Das kann ich nicht ausschliessen, ich aber nicht, da ich es nicht nachstellen kann:
fhem> define d dummy
fhem> attr d oldreadings \d+_bw
fhem> setreading d 41_bw 0
fhem> setreading d 41_bw 1
fhem> l d
Internals:
CFGFN
FUUID 63691f54-f33f-c296-5696-7875503da2b4f859
NAME d
NR 11
STATE ???
TYPE dummy
eventCount 2
OLDREADINGS:
2022-11-07 16:08:29 41_bw 0
READINGS:
2022-11-07 16:08:33 41_bw 1
Attributes:
oldreadings \d+_bw
Das OLDREADING wird erst mit setreading d 41_bw 1 auf 0 gesetzt? :-[
ZitatFor each reading in the list FHEM will internally store the previous value if the readings value changes.
ZitatDas OLDREADING wird erst mit setreading d 41_bw 1 auf 0 gesetzt? :-[
Bessere Vorschlaege?
Ich war davon ausgegangen, dass das OLDREDINGS angekegt werden, wenn diese nicht vorhanden sind. Dann würde das OLDREDING aber dem aktuellen Reading entrsprechen.
Und schon wieder habe ich den wichtigen Punkt in der Commandref überlesen :-\
Bei False und True würde aber 0 und 1 als Oldreding gespeichert werden?
Danke für die Hilfe!
ZitatBei False und True würde aber 0 und 1 als Oldreding gespeichert werden?
Nein, wie das auch mein Experiment weiter oben zeigt.
Wenn Du willst, das OldReadingsVal schon vorbesetzt ist, wenn dieses noch gar nicht vorhanden ist, kannst Du auch den default einfach auf den vorhandenen Wert setzen.
Damit wird beim ersten mal der "Jetzt"-Wert genommen, danach immer der alte.
my $TempAJetzt = ReadingsNum('Temp_Aussen','temperature',0);
my $AlteTemperatur = OldReadingsNum('Temp_Aussen','temperature',$TempAJetzt);
Oder in kurz: my $AlteTemperatur = OldReadingsNum('Temp_Aussen','temperature',ReadingsNum('Temp_Aussen','temperature',0));