Hallo,
ich versuche nun schon einige Zeit, dem Departure-Modul oldreading-Werte zu entlocken. Das Forum habe ich nun schon intensiv durchsucht, bin aber noch nicht fündig geworden.
Das Attribut oldreadings habe ich definiert, im List erscheint der OLDREADINGS-Abschnitt, es erscheint dort aber kein Reading, geschweige denn ein Wert.
Internals:
BASE_URL https://transport.stefan-biermann.de/publictransportapi/rest
DEF 300
FUUID 63982479-f33f-1769-13c1-25bc5829ea988518
Interval 300
NAME Departure_BRB
NR 1061
STATE RE 73769 Brandenburg Hbf 2022-12-18T11:21+0100 (0)
TRIGGERTIME 1671358983.9801
TRIGGERTIME_FMT 2022-12-18 11:23:03
TYPE Departure
eventCount 1932
OLDREADINGS:
READINGS:
2022-12-18 11:18:09 departure_0_delay 0
2022-12-18 11:18:09 departure_0_number RE 73769
2022-12-18 11:18:09 departure_0_text Brandenburg Hbf
2022-12-18 11:18:09 departure_0_time 2022-12-18T11:21+0100
2022-12-18 11:18:09 departure_0_timeInMinutes 3
2022-12-18 11:18:09 departure_0_time_human_readable 18.12.2022, 10:21 Uhr
...
Wenn ich das Reading mit setreading verändere, wird auch OldReadings gesetzt.
OLDREADINGS:
2022-12-18 17:13:28 departure_0_delay 0
READINGS:
2022-12-18 17:15:18 departure_0_delay 11
Sobald das Modul die Daten aber wieder auf normalem Weg aktualisiert, ist der OLDREADINGS-Wert wieder weg.
OLDREADINGS:
READINGS:
2022-12-18 17:16:27 departure_0_delay 1
Was läuft hier verkehrt? Ich stehe vor einem Rätsel...
Grüße
Zitat von: commandrefoldreadings
Dieses Attribut enthält eine durch Kommata getrennte Liste von Readings. regex sind erlaubt. Für jedes Reading aus der Liste speichert FHEM intern den vorherigen Wert wenn sich das Reading ändert. Zum Zugriff auf die Werte gibt es die OldReadings.* Routinen.
https://fhem.de/commandref_modular_DE.html#perl :
Zitat von: commandref
OldReadingsVal(<devicename>,<reading> ,<defaultvalue>)
OldReadingsNum(<devicename>,<reading>, <defaultvalue>,<round>)
OldReadingsTimestamp(<devicename>,<reading> ,<defaultvalue>)
OldReadingsAge(<devicename>,<reading>,< defaultvalue>)
analog zu den Routinen oben, aber zum Zugriff auf die vorherigen Werte. siehe: oldreadings
Hallo,
die commandref dazu habe ich gelesen.
OldReadingsVal liefert immer nur den Standardwert. Außer, ich setze das Reading mit setreading manuell, dann kommt auch bei OldReadingsVal as an.
setreading departure_BRB departure_0_text Ziel1
liefert
OldReadingsVal("departure_BRB", "departure_0_text", "leer")
Brandenburg Hbf
setreading departure_BRB departure_0_text Ziel2
liefert
OldReadingsVal("departure_BRB", "departure_0_text", "leer")
Ziel1
set departure_BRB update
liefert
OldReadingsVal("departure_BRB", "departure_0_text", "leer")
leer
Nach den setreadings gibt es im List bei OLDREADINGS eine Zeile "departure_BRB" mit dem entsprechenden Wert. Nach dem "set departure_BRB update" ist der Eintrag wieder weg, siehe erster Beitrag.
Was habe ich in der commandref übersehen?
Grüße
Weil im Anschluss des "set departure_BRB update" irgendwann mal die Funktion Departure_ParseDeparture aufgerufen wird und damit alle Readings gelöscht werden ? Ich weiß es nicht, zu wenig Verständnis und beschäftigt damit.
sub Departure_ParseDeparture(@) {
my ($param, $err, $data) = @_;
my $hash = $param->{hash};
my $name = $hash->{NAME};
my $timeoffset = AttrVal($name, "departure_time_to_go_to_station",undef);
my $res;
fhem("deletereading $name departure.*", 1);
...
https://github.com/uniqueck/fhem-departure/blob/develop/FHEM/98_Departure.pm