FHEM Forum

FHEM => Automatisierung => Thema gestartet von: GunterB am 07 November 2022, 15:47:31

Titel: OldReadings von False/True bzw 0/1
Beitrag von: GunterB am 07 November 2022, 15:47:31
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) }
Titel: Antw:OldReadings von False/True bzw 0/1
Beitrag von: rudolfkoenig am 07 November 2022, 16:10:44
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
Titel: Antw:OldReadings von False/True bzw 0/1
Beitrag von: GunterB am 07 November 2022, 16:43:59
Das OLDREADING wird erst mit setreading d 41_bw 1 auf 0 gesetzt? :-[
Titel: Antw:OldReadings von False/True bzw 0/1
Beitrag von: OdfFhem am 07 November 2022, 17:08:39
ZitatFor each reading in the list FHEM will internally store the previous value if the readings value changes.
Titel: Antw:OldReadings von False/True bzw 0/1
Beitrag von: rudolfkoenig am 07 November 2022, 17:45:48
ZitatDas OLDREADING wird erst mit setreading d 41_bw 1 auf 0 gesetzt? :-[
Bessere Vorschlaege?
Titel: Antw:OldReadings von False/True bzw 0/1
Beitrag von: GunterB am 08 November 2022, 07:52:34
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!
Titel: Antw:OldReadings von False/True bzw 0/1
Beitrag von: rudolfkoenig am 08 November 2022, 07:59:06
ZitatBei False und True würde aber 0 und 1 als Oldreding gespeichert werden?
Nein, wie das auch mein Experiment weiter oben zeigt.
Titel: Antw:OldReadings von False/True bzw 0/1
Beitrag von: Jamo am 08 November 2022, 08:20:45
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));