OldReadings von False/True bzw 0/1

Begonnen von GunterB, 07 November 2022, 15:47:31

Vorheriges Thema - Nächstes Thema

GunterB

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) }

rudolfkoenig

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

GunterB

Das OLDREADING wird erst mit setreading d 41_bw 1 auf 0 gesetzt? :-[

OdfFhem

ZitatFor each reading in the list FHEM will internally store the previous value if the readings value changes.

rudolfkoenig

ZitatDas OLDREADING wird erst mit setreading d 41_bw 1 auf 0 gesetzt? :-[
Bessere Vorschlaege?

GunterB

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!

rudolfkoenig

ZitatBei False und True würde aber 0 und 1 als Oldreding gespeichert werden?
Nein, wie das auch mein Experiment weiter oben zeigt.

Jamo

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));

Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/Conbee III, FB7690, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack, Sonos, ESPresence