stateFormat mit ReadingsAge

Begonnen von Moeti, 13 August 2017, 18:20:43

Vorheriges Thema - Nächstes Thema

Moeti

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
RaspberryPi 2, FHEM, Homematic, CUL, HMLAN, homebridge, Sonoff/Tasmota, Shelly, mqtt2
WH1080 per pywws, RaspiCam, Kostal PIKO 5.5,
Hörmann Supramatic mit UAP1, HM-SCI-3-FM, HM-LC-SW4-BA-PCB
Automower, Nissan Leaf/Carwings, Ochsner WP per ModbusAttr
Homebridge

amenomade

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?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

rudolfkoenig

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.

Moeti

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
RaspberryPi 2, FHEM, Homematic, CUL, HMLAN, homebridge, Sonoff/Tasmota, Shelly, mqtt2
WH1080 per pywws, RaspiCam, Kostal PIKO 5.5,
Hörmann Supramatic mit UAP1, HM-SCI-3-FM, HM-LC-SW4-BA-PCB
Automower, Nissan Leaf/Carwings, Ochsner WP per ModbusAttr
Homebridge