Hallo,
ich möchte für den Gasverbrauch den Offset und Umrechnungswert in ein User Attribut legen und dann im Userreading die Berechnung für "value" machen.
Wie lautet das korrekte Statement für das "userReadings value"?
Internals:
DEF EseraCount_ESERA_1C0000000FF1501D:count2
DEVICE EseraCount_ESERA_1C0000000FF1501D
FUUID 5dbf0103-f33f-55bb-bb4f-b365b3d1b1a6bbcb
NAME counter_gas
NOTIFYDEV global,EseraCount_ESERA_1C0000000FF1501D
NR 189
NTFY_ORDER 50-counter_gas
READING count2
STATE 7722.70 m3
TYPE readingsProxy
CONTENT:
EseraCount_ESERA_1C0000000FF1501D 1
READINGS:
2019-11-09 08:40:36 state 393715
2019-11-09 08:40:36 value 7722.7
Attributes:
event-on-change-reading state
multiplier 0.01
offset 3785.55
stateFormat {sprintf("%.2f m3",ReadingsVal($name,"state","?")/100+3785.55 )}
userReadings value { ReadingsVal("counter_gas","state",0)*0.01+3785.55 }
#value { ReadingsVal("counter_gas","state",0)*ReadingsVal("counter_gas","multiplier",0)+ReadingsVal("counter_gas","offset",0) }
userattr offset multiplier
@uxtuner
Neben ReadingsVal gibt es noch AttrVal und InternalVal.
Und die entsprechenden, numerischen Varianten.
- AttrVal(<devicename>,<attribute>,<defaultvalue>)
Gibt das entsprechende Attribut des Gerätes zurück
- AttrNum(<devicename>,<attribute>, <defaultvalue>,<round>)
Gibt die erste Zahl aus dem Attributwert zurück. Falls <round> spezifiziert ist, wird sie auf diese Anzahl von Dezimalstellen gerundet.
- InternalVal(<devicename>,<internal>, <defaultvalue>)
Gibt den Inhalt der "internal" zurück (den Inhalt der in dem "Internals"-Abschnitt von "list device" angezeigt wird)
- InternalNum(<devicename>,<internal>, <defaultvalue>,<round>)
Gibt die erste Zahl aus dem "internal" zurück. Falls <round> spezifiziert ist, wird sie auf diese Anzahl von Dezimalstellen gerundet.
- ReadingsVal(<devicename>,<reading>,<defaultvalue>)
Gibt den Inhalt der "readings" zurück (den Inhalt der in dem "Readings"-Abschnitt von "list device" angezeigt wird)
- ReadingsNum(<devicename>,<reading>, <defaultvalue>,<round>)
Gibt die erste Zahl aus dem Readingswert zurück. Falls <round> spezifiziert ist, wird sie auf diese Anzahl von Dezimalstellen gerundet.
Danke!
ich habe meinen obigen Versuch so geändert:
value { ReadingsVal("counter_gas","state",0)*AttrVal("counter_gas","multiplier",0)+AttrVal("counter_gas","offset",0) }
und schon funktionierts :-)