Runden userReadings monotonic

Begonnen von jkriegl, 31 Dezember 2021, 19:32:11

Vorheriges Thema - Nächstes Thema

jkriegl

Wie kann ich ein userReading monotonic runden? Benutze
energyTotal:energy.* monotonic { ReadingsNum($name,"energy",0,3)}
um einen Zähler der bei Stromverlust zurückgesetzt wird abzuleiten.
Das Runden bei ReadingsNum (3) bringt natürlich nichts.
Gibt es eine bessere Lösung als ein zusätzlich gerundetes userReading zu erzeugen?
Einen Parameter dazu habe ich nicht gefunden.
Rpi 3/4, buster, Fhem, Cul 868, HM-CC-RT-DN, HM-Sec-Sco, HM-ES-PMSw1-Pl, ebus (Vaillant), ECMD, Telegram, HTTPMOD, Xiaomi, Shelly

ch.eick

Zitat von: jkriegl am 31 Dezember 2021, 19:32:11
Wie kann ich ein userReading monotonic runden? Benutze
energyTotal:energy.* monotonic { ReadingsNum($name,"energy",0,3)}
um einen Zähler der bei Stromverlust zurückgesetzt wird abzuleiten.
Das Runden bei ReadingsNum (3) bringt natürlich nichts.
Gibt es eine bessere Lösung als ein zusätzlich gerundetes userReading zu erzeugen?
Einen Parameter dazu habe ich nicht gefunden.
Gab es hierzu mal eine Lösung?
VG  Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Beta-User

Warum braucht es dazu eine Lösung?

Es wird halt in "monotonic" gerechnet, also eine Zahl verarbeitet (Fließkomma). Für die Darstellung im Frontend (in stateFormat & Co) kann man ja runden, aber im laufenden Betrieb ist das m.E. weder nötig noch sinnvoll.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

jkriegl

Habe ein etwas komplexeres stateFormat (s. Bild)
und wenn ich mit [$name:energyTotal:r3] runde, wird zwar gerundet, aber der Rest nicht angezeigt.
seit power 18.328 relay onl_fw temp °C
Ansonsten geht es um die Optik
energy 18.058 2022-03-31 12:48:25
energyTotal 18.3280000000001 2022-03-31 12:48:00

Rpi 3/4, buster, Fhem, Cul 868, HM-CC-RT-DN, HM-Sec-Sco, HM-ES-PMSw1-Pl, ebus (Vaillant), ECMD, Telegram, HTTPMOD, Xiaomi, Shelly

Beta-User

kannst du mal ein raw-list von dem Ding einstellen, damit man etwas "spielen" kann?

Die Mischung aus stateFormat und "set magic" ist erfahrungsgemäß etwas speziell, vielleicht braucht es da auch Zeilenumbrüche.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

jkriegl

Gerne, wenn's hilft
defmod shelly_s_2 MQTT2_DEVICE shellyplug_s_9A3C40
attr shelly_s_2 IODev MQTT2_Server
attr shelly_s_2 devStateIcon relay\
gruen:ampel_gruen gelb:ampel_gelb rot:ampel_rot
attr shelly_s_2 event-min-interval 600
attr shelly_s_2 event-on-change-reading energy:0.002,.*
attr shelly_s_2 model shellyplug
attr shelly_s_2 readingList shellyplug_s_9A3C40:shellies/shellyplug-s-9A3C40/online:.* online\
shellyplug_s_9A3C40:shellies/shellyplug-s-9A3C40/input/0:.* input0\
shellyplug_s_9A3C40:shellies/shellyplug-s-9A3C40/relay/0:.* state\
shellyplug_s_9A3C40:shellies/shellyplug-s-9A3C40/relay/0/power:.* power\
shellyplug_s_9A3C40:shellies/shellyplug-s-9A3C40/relay/0/energy:.* {'energy' => sprintf("%.3f",$EVENT/60/1000)}\
shellyplug_s_9A3C40:shellies/shellyplug-s-9A3C40/relay/0:.* relay\
shellyplug_s_9A3C40:shellies/shellyplug-s-9A3C40/temperature:.* temperature\
shellyplug_s_9A3C40:shellies/shellyplug-s-9A3C40/temperature_f:.* {}\
shellyplug_s_9A3C40:shellies/shellyplug-s-9A3C40/overtemperature:.* overtemperature\
shellyplug_s_9A3C40:shellies/shellyplug-s-9A3C40/announce:.* { json2nameValue($EVENT) }\
shellyplug_s_9A3C40:shellies/shellyplug-s-9A3C40/info:.* {}\
shellyplug_s_9A3C40:shellies/announce:.* { json2nameValue($EVENT) }
attr shelly_s_2 room 2.5 Shelly
attr shelly_s_2 setList off:noArg shellies/shellyplug-s-9A3C40/relay/0/command off\
  on:noArg shellies/shellyplug-s-9A3C40/relay/0/command on\
  x_update:noArg shellies/shellyplug-s-9A3C40/command update_fw
attr shelly_s_2 stateFormat seit power energyTotal\
relay\
onl_fw\
temp °C
attr shelly_s_2 userReadings onl_fw:power:.* {ReadingsVal($name,"online","false") eq "false" ? "rot" : ReadingsVal($name,"new_fw","false") eq "true" ? "gelb" : "gruen"},\
\
energyTotal:energy.* monotonic {ReadingsNum($name,"energy",0)},\
\
temp {sprintf("%.1f",ReadingsVal($name,"temperature","--?--")-4.1)}, \
\
seit {if (ReadingsVal($NAME,"state",0) ne ReadingsVal($NAME,".usr",0)) \
{sprintf("%s", substr(ReadingsTimestamp($NAME,"state",""),8,8))}\
else{ReadingsVal($NAME,"seit",0)}},\
.usr {ReadingsVal($NAME,"state",0)}
attr shelly_s_2 webCmd :

setstate shelly_s_2 17 17:33 67.27 18.3380000000001\
on\
gruen\
17.0 °C
setstate shelly_s_2 2022-03-31 13:41:01 .usr on
setstate shelly_s_2 2022-03-23 16:23:06 IODev MQTT2_Server
setstate shelly_s_2 2022-03-31 13:41:01 energy 18.070
setstate shelly_s_2 2022-03-31 13:39:01 energyTotal 18.3380000000001
setstate shelly_s_2 2022-03-23 16:23:13 fw_ver 20220209-094058/v1.11.8-g8c7bb8d
setstate shelly_s_2 2022-03-23 16:23:13 id shellyplug-s-9A3C40
setstate shelly_s_2 2022-03-23 16:23:13 ip 192.168.xxx.xx
setstate shelly_s_2 2022-03-23 16:23:13 mac E098069A3C40
setstate shelly_s_2 2022-03-23 16:23:13 model SHPLG-S
setstate shelly_s_2 2022-03-23 16:23:13 new_fw false
setstate shelly_s_2 2022-03-31 13:41:01 onl_fw gruen
setstate shelly_s_2 2022-03-23 16:23:13 online true
setstate shelly_s_2 2022-03-31 13:41:01 overtemperature 0
setstate shelly_s_2 2022-03-31 13:41:01 power 67.27
setstate shelly_s_2 2022-03-31 13:41:01 relay on
setstate shelly_s_2 2022-03-31 13:41:01 seit 17 17:33
setstate shelly_s_2 2022-03-31 13:41:01 state on
setstate shelly_s_2 2022-03-31 13:41:01 temp 17.0
setstate shelly_s_2 2022-03-31 13:41:01 temperature 21.10
Rpi 3/4, buster, Fhem, Cul 868, HM-CC-RT-DN, HM-Sec-Sco, HM-ES-PMSw1-Pl, ebus (Vaillant), ECMD, Telegram, HTTPMOD, Xiaomi, Shelly

Beta-User

Wenn du schon "Pseudo-Perl" (via "set magic") nimmst, muss es vermutlich vollständig sein:
attr shelly_s_2 stateFormat [$name:seit] \
[$name:power]\
[$name:energyTotal:r3]\
[$name:relay]\
[$name:onl_fw]\
[$name:temp] °C


Ansonsten sind userReadings ohne Trigger "bäh", und die event-on- Familie kennt auch "timestamp-on-change-reading".
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

jkriegl

Rpi 3/4, buster, Fhem, Cul 868, HM-CC-RT-DN, HM-Sec-Sco, HM-ES-PMSw1-Pl, ebus (Vaillant), ECMD, Telegram, HTTPMOD, Xiaomi, Shelly

Bison

Hallo jkriegl.


bin gerade bei dem gleichen Problem. Konntest du es lösen?

Gruß

Bison
Raspberry, Homematic, CUL, 50 Device, 260 Entities