Hallo!
Die Darstellung in FHEMWEB mit Hilfe von stateFormat unter Verwendung der Funktion ReadingsVal oder einer if-Strukur funktioniert ausgezeichnet. Ich möchte aber auch mit ReadingsAge die letzte Änderung eines Readings anzeigen. Gleich nach dem Setzen des Attributes zeigt mir FHEMWEB zwar einen korrekten Wert an, allerdings liefert die Funktion ReadingsAge später keine Werte mehr.
In meinem nachfolgenden Beispiel verwende ich ein DUMMY, dass Messwerte eines HM-ES-PMSw1-Pl an einer Waschmaschine nimmt, um mir den Energieverbrauch und die Laufzeit eines vergangenen Waschganges bzw. die aktuelle Leistung und die aktuelle Laufzeit eines laufenden Waschganges anzuzeigen.
attr ST_Waeschetrockner stateFormat
{
if (ReadingsVal($name,'state','') eq 'off')
{
"zuletzt E = ".sprintf("%d",ReadingsVal($name,'cPwr','')).
" Wh; t = ".sprintf("%d",ReadingsVal($name,'cTime',''))." min";
}
else
{
"LÄUFT P = ".sprintf("%d",ReadingsVal('PM_Waschmaschine_SenPwr','state','')).
" W; t = ".sprintf("%d",ReadingsAge('ST_Waschmaschine','state','')/60).
" min";
}
}
Gibt es irgendwelche Einschränkungen was die Verwendung von Funktionen im Attribut stateFormat betrifft?
Bitte um Unterstützung!
lG
Michael
Zitat von: CommandREFstateFormat: Die Auswertung passiert bei jeder Änderung eines Readings.
Eines Readings des Devices des stateFormat natürlich. Ändert sich was in deinem Dummy?
Zitatliefert die Funktion ReadingsAge später keine Werte mehr
Das passiert dann, wenn das angegebene Reading (hier state) nicht existiert, z.Bsp. weil man FHEM neu gestartet hat, ohne zu speichern. Und '' als default ist ungluecklich gewaehlt, wenn man es durch 60 dividieren will.
Hallo!
Tatsächlich wird stateFormat nur ausgewertet, wenn sich ein Reading des betreffenden Devices ändert. Ich bin von der falschen Annahme ausgegangen, dass dieser Wert dann errechnet wird, wenn ich ihn aufrufe, also zB in FHEMWEB angezeigt wird.
Da muss ich mir was Neues einfallen lassen.
Danke für den Hinweis!
lG
Michael