FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Moeti am 13 August 2017, 18:20:43

Titel: stateFormat mit ReadingsAge
Beitrag von: Moeti am 13 August 2017, 18:20:43
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
Titel: Antw:stateFormat mit ReadingsAge
Beitrag von: amenomade am 13 August 2017, 19:04:03
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?
Titel: Antw:stateFormat mit ReadingsAge
Beitrag von: rudolfkoenig am 14 August 2017, 09:19:51
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.
Titel: Antw:stateFormat mit ReadingsAge
Beitrag von: Moeti am 14 August 2017, 12:57:27
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