#erledigt# Wert in UserReadings abziehen

Begonnen von Helmi55, 30 Dezember 2021, 17:43:53

Vorheriges Thema - Nächstes Thema

Helmi55

Hallo Gemeinde,
ich habe div. Shellies im #einsazt die mir den aktuellen Verbrauch melden.
Nun möchte ich z.B. zum Jahreswechsel oder bei der Stromablese, die Kosten auf Null setzen.
Ich berechne so:
relay_0_energy_kWh:relay_0_energy.* monotonic {ReadingsVal($NAME,"relay_0_energy",0)/60/1000.0}, Kosten:relay_0_energy_kWh.* { sprintf("%.2f",ReadingsVal($NAME,"relay_0_energy_kWh",0)*.2);;}

Wenn ich nun den "Stand" abziehen möchte:

relay_0_energy_kWh:relay_0_energy.* monotonic {ReadingsVal($NAME,"relay_0_energy",0)/60/1000.0}, Kosten:relay_0_energy_kWh.* { sprintf("%.2f",ReadingsVal($NAME,"relay_0_energy_kWh -1.0",0)*.2);;}

Wobei -1.0 der Stand vom Vortag ist, bleiben noch immer 0.3475 kWh über und die müssten nun berechnet werden?

ich glaube das mit dem -1.0 stelle ich mir zu einfach vor??

Hier ein List :

Internals:
   CID        shelly1pm_E09806A9DB91
   DEF        shelly1pm_E09806A9DB91
   DEVICETOPIC Brunnen_Heizung
   FUUID      61a61678-f33f-b033-336c-da6852207f8689b9
   IODev      myBroker
   LASTInputDev myBroker
   MSGCNT     5248
   NAME       Brunnen_Heizung
   NR         558
   STATE      9.4
   TYPE       MQTT2_DEVICE
   myBroker_CONN myBroker_10.0.0.159_7467
   myBroker_MSGCNT 5248
   myBroker_TIME 2021-12-30 17:43:10
   READINGS:
     2021-12-30 17:43:10   0_hwID          28db600222200170
     2021-12-30 17:43:10   0_tC            9.4
     2021-12-30 17:43:10   0_tF            49.0
     2021-12-30 15:41:40   IODev           myBroker
     2021-12-30 17:42:48   Kosten          0.00
     2021-12-30 15:41:46   actions_stats_skipped 0
     2021-12-30 15:41:46   cfg_changed_cnt 0
     2021-12-30 15:41:46   cloud_connected false
     2021-12-30 15:41:46   cloud_enabled   false
     2021-12-30 15:41:46   event           
     2021-12-30 15:41:46   event_cnt       0
     2021-12-30 15:41:46   ext_sensors_temperature_unit C
     2021-12-30 17:43:10   ext_temperature_0 9.4
     2021-12-30 15:41:46   ext_temperature_0_hwID 28db600222200170
     2021-12-30 15:41:46   ext_temperature_0_tC 7.00
     2021-12-30 15:41:46   ext_temperature_0_tF 44.60
     2021-12-30 17:43:10   ext_temperature_f_0 49.0
     2021-12-30 15:41:46   fs_free         149345
     2021-12-30 15:41:46   fs_size         233681
     2021-12-30 15:41:46   fw_ver          20211109-130756/v1.11.7-g682a0db
     2021-12-30 15:41:46   has_update      false
     2021-12-30 15:41:46   id              shelly1pm-E09806A9DB91
     2021-12-30 17:42:48   input_0         0
     2021-12-30 15:41:46   inputs_1_event 
     2021-12-30 15:41:46   inputs_1_event_cnt 0
     2021-12-30 15:41:46   inputs_1_input  0
     2021-12-30 15:41:46   ip              10.0.0.159
     2021-12-30 15:41:46   mac             E09806A9DB91
     2021-12-30 15:41:46   meters_1_counters_1 0.000
     2021-12-30 15:41:46   meters_1_counters_2 0.000
     2021-12-30 15:41:46   meters_1_counters_3 0.000
     2021-12-30 15:41:46   meters_1_is_valid true
     2021-12-30 15:41:46   meters_1_overpower 0.00
     2021-12-30 15:41:46   meters_1_power  0.00
     2021-12-30 15:41:46   meters_1_timestamp 1640878906
     2021-12-30 15:41:46   meters_1_total  31863
     2021-12-30 15:41:46   model           SHSW-PM
     2021-12-30 15:41:46   mqtt_connected  true
     2021-12-30 15:41:46   new_fw          false
     2021-12-30 15:41:46   online          true
     2021-12-30 17:42:48   overtemperature 0
     2021-12-30 15:41:46   ram_free        37732
     2021-12-30 15:41:46   ram_total       50472
     2021-12-30 17:42:48   relay_0         off
     2021-12-30 17:42:48   relay_0_energy  83982
     2021-12-30 17:42:48   relay_0_energy_kWh 1.34751666666667
     2021-12-30 17:42:48   relay_0_power   0.00
     2021-12-30 15:41:46   relays_1_has_timer false
     2021-12-30 15:41:46   relays_1_ison   false
     2021-12-30 15:41:46   relays_1_overpower false
     2021-12-30 15:41:46   relays_1_source mqtt
     2021-12-30 15:41:46   relays_1_timer_duration 0
     2021-12-30 15:41:46   relays_1_timer_remaining 0
     2021-12-30 15:41:46   relays_1_timer_started 0
     2021-12-30 15:41:46   serial          1029
     2021-12-30 17:13:25   state           relay_0
     2021-12-30 17:42:48   temperature     32.65
     2021-12-30 17:42:48   temperature_f   90.76
     2021-12-30 17:42:48   temperature_status Normal
     2021-12-30 15:41:46   time            15:41
     2021-12-30 15:41:46   tmp_is_valid    true
     2021-12-30 15:41:46   tmp_tC          26.37
     2021-12-30 15:41:46   tmp_tF          79.47
     2021-12-30 15:41:46   unixtime        1640875306
     2021-12-30 15:41:46   update_has_update false
     2021-12-30 15:41:46   update_new_version 20211109-130756/v1.11.7-g682a0db
     2021-12-30 15:41:46   update_old_version 20211109-130756/v1.11.7-g682a0db
     2021-12-30 15:41:46   update_status   idle
     2021-12-30 15:41:46   uptime          2600536
     2021-12-30 15:41:46   wifi_sta_connected true
     2021-12-30 15:41:46   wifi_sta_ip     10.0.0.159
     2021-12-30 15:41:46   wifi_sta_rssi   -33
     2021-12-30 15:41:46   wifi_sta_ssid   Dahoam
Attributes:
   group      Temperatur
   readingList shelly1pm_E09806A9DB91:shellies/shelly1pm-E09806A9DB91/ext_temperature/0:.* ext_temperature_0
shelly1pm_E09806A9DB91:shellies/shelly1pm-E09806A9DB91/ext_temperature_f/0:.* ext_temperature_f_0
shelly1pm_E09806A9DB91:shellies/shelly1pm-E09806A9DB91/ext_temperatures:.* { json2nameValue($EVENT) }
shelly1pm_E09806A9DB91:shellies/shelly1pm-E09806A9DB91/ext_temperatures_f:.* { json2nameValue($EVENT) }
shelly1pm_E09806A9DB91:shellies/shelly1pm-E09806A9DB91/relay/0:.* relay_0
shelly1pm_E09806A9DB91:shellies/shelly1pm-E09806A9DB91/input/0:.* input_0
shelly1pm_E09806A9DB91:shellies/shelly1pm-E09806A9DB91/relay/0/power:.* relay_0_power
shelly1pm_E09806A9DB91:shellies/shelly1pm-E09806A9DB91/relay/0/energy:.* relay_0_energy
shelly1pm_E09806A9DB91:shellies/shelly1pm-E09806A9DB91/temperature:.* temperature
shelly1pm_E09806A9DB91:shellies/shelly1pm-E09806A9DB91/temperature_f:.* temperature_f
shelly1pm_E09806A9DB91:shellies/shelly1pm-E09806A9DB91/overtemperature:.* overtemperature
shelly1pm_E09806A9DB91:shellies/shelly1pm-E09806A9DB91/temperature_status:.* temperature_status
shelly1pm_E09806A9DB91:shellies/shelly1pm-E09806A9DB91/input_event/0:.* { json2nameValue($EVENT) }
shelly1pm_E09806A9DB91:shellies/shelly1pm-E09806A9DB91/online:.* online
shelly1pm_E09806A9DB91:shellies/shelly1pm-E09806A9DB91/announce:.* { json2nameValue($EVENT) }
shelly1pm_E09806A9DB91:shellies/shelly1pm-E09806A9DB91/info:.* { json2nameValue($EVENT) }
   room       Brunnen,Favoriten,MQTT2_DEVICE
   setList    relay_0:iconSwitch,on,li_wht_off,off,li_wht_on shellies/shelly1pm-E09806A9DB91/relay/0/command $EVTPART1
x_mqttcom shellies/shelly1pm-E09806A9DB91/command $EVTPART1
   stateFormat ext_temperature_0
   userReadings relay_0_energy_kWh:relay_0_energy.* monotonic {ReadingsVal($NAME,"relay_0_energy",0)/60/1000.0}, Kosten:relay_0_energy_kWh.* { sprintf("%.2f",ReadingsVal($NAME,"relay_0_energy_kWh -1.0",0)*.2);;}
   verbose    0
   webCmd     relay_0
   webCmdLabel :


Danke für die Hilfe
Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

MadMax-FHEM

Ich weiß ja nicht so ganz genau was du willst (ja hätte mich einlesen können ;)  )...
...aber das hier ist doch irgendwie "komisch":

Zitat
ReadingsVal($NAME,"relay_0_energy_kWh -1.0",0)

Heißt dein Reading wirklich "relay_0_energy_kWh -1.0" ?

Wenn du eins abziehen willst, dann doch nach der ReadingsVal-Abfrage! Also dort wo du auch multiplizierst.
Aber halt mit (runden) Klammern, da ja "Punkt vor Strich" ;)

Und ich bin auch unsicher wegen deiner "Aufreigung" von userReadings, weil es ja heißt: Komma-separierte Liste und nicht "Komma und Leerzeichen"-separierte Liste...
(manchmal ist fhem da sehr genau ;) )

Und: wenn du mit Zahlen rechnest: ReadingsNum statt ReadingsVal...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Helmi55

#2
Hallo Joachim,

das Readings heißt "relay_0_energy_kWh" und sendet 1.34...
Nun möchte ich zum Jahreswechsel alles Nullen (von Neuem anfangen)
Jetzt dachte ich das ich am 1.1.22. ganz easy (wie sich das der als Mann vorstellt) die 1.34 abziehe und wieder neu anfange

Das userReadings sieht so aus
relay_0_energy_kWh:relay_0_energy.* monotonic {ReadingsVal($NAME,"relay_0_energy",0)/60/1000.0}, Kosten:relay_0_energy_kWh.* { sprintf("%.2f",ReadingsVal($NAME,"relay_0_energy_kWh",0)*.2);;}

Wo und wie muss ich da bitte den Wert abziehen?


Oder gibt es eine schönere Lösung dafür.
Denke ich bin nicht der einzige der seine "Kosten auf Null stellen will?
Herzlichen Dank

Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

MadMax-FHEM

#3
Nur mal zur Sicherheit: du willst "nur" das Reading relay_0_energy_kWh auf 0 setzen?

-> setreading Brunnen_Heizung relay_0_energy_kWh 0

Aber kommt der Wert dann nicht wieder vom Gerät, also vom Shelly?
Merkt sich der Shelly da was?
Dann hilft es ja nichts das Reading auf 0 zu setzen...

EDIT: ok das ist ja auch ein userReadings...

Irgendwie verstehe ich noch nicht genau bzw. kommt mir immer noch das gepostete (und list vom Device) userReadings mit dem -1 im Namen komisch vor...
...oder ist das nur dein Versuch 1 abzuziehen?

Wenn das nur ein "falscher" Versuch ist und du nur 1 abziehen willst, dann wie geschrieben:


{ sprintf("%.2f",(ReadingsVal($NAME,"relay_0_energy_kWh",0) - 1.0)*.2)}


Und wie ebenfalls schon geschrieben (und das solltest du doch mittlerweile besser wissen ;)  ) besser mit ReadingsNum:

{ sprintf("%.2f",(ReadingsNum($NAME,"relay_0_energy_kWh",0) - 1.0)*.2)}


Und: ich habe bei mir in den userReadings überall $name statt $NAME drin stehen...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MadMax-FHEM

Zitat von: Helmi55 am 30 Dezember 2021, 18:16:47
Oder gibt es eine schönere Lösung dafür.
Denke ich bin nicht der einzige der seine "Kosten auf Null stellen will?

Ich denke dazu gibt es Thread(s) im Forum, weil eben glaube ich dann nach dem Nullsetzen wieder irgendwelche Werte vom Shelly kommen?

Zumindest gibt es rund um das Thema einiges im Forum...

Ich selbst habe keine Shelly mit Leistungsmessung...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Helmi55

Hallo Joachim,

herzlichen Dank für deine Zeit und Geduld.
So hat es funktioniert

{ sprintf([b]([/b]"%.2f",(ReadingsVal($NAME,"relay_0_energy_kWh",0) - 1.0)*.2)}

Ja dadurch das der Shelly immer wieder die aktuellen Werte funkt, muss ich einen aktuellen Stand (in diesem Fall "1" als Beispiel) abziehen
Werde es beobachten, aber so sollte es funktionieren.


Danke
Gesund bleiben und einen guten Rutsch
Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

MadMax-FHEM

Gerne!
Danke, ebenso und guten Rutsch!

Noch mal: evtl. auf ReadingsNum umstellen, wenn du eh "nur" mit Zahlen willst...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Helmi55

Guten Abend hab noch nicht auf ReadingsNum umgestellt

Kann diese Fehlermeldung damit zusammenhängen?

2021.12.30 20:24:22 1: PERL WARNING: Useless use of a constant ("%.2f") in void context at (eval 17440) line 1.
2021.12.30 20:24:22 3: eval: { sprintf(("%.2f",ReadingsVal($NAME,"relay_0_energy_kWh",0) - 1.0)*.2);;}
2021.12.30 20:24:53 1: PERL WARNING: Useless use of a constant ("%.2f") in void context at (eval 17460) line 1.
2021.12.30 20:24:53 3: eval: { sprintf(("%.2f",ReadingsVal($NAME,"relay_0_energy_kWh",0) - 1.0)*.2);;}
2021.12.30 20:25:22 1: PERL WARNING: Useless use of a constant ("%.2f") in void context at (eval 17489) line 1.
2021.12.30 20:25:22 3: eval: { sprintf(("%.2f",ReadingsVal($NAME,"relay_0_energy_kWh",0) - 1.0)*.2);;}
2021.12.30 20:25:52 1: PERL WARNING: Useless use of a constant ("%.2f") in void context at (eval 17510) line 1.
2021.12.30 20:25:52 3: eval: { sprintf(("%.2f",ReadingsVal($NAME,"relay_0_energy_kWh",0) - 1.0)*.2);;}
2021.12.30 20:26:22 1: PERL WARNING: Useless use of a constant ("%.2f") in void context at (eval 17539) line 1.
2021.12.30 20:26:22 3: eval: { sprintf(("%.2f",ReadingsVal($NAME,"relay_0_energy_kWh",0) - 1.0)*.2);;}
2021.12.30 20:26:53 1: PERL WARNING: Useless use of a constant ("%.2f") in void context at (eval 17561) line 1.
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

MadMax-FHEM

Was spricht gegen ausprobieren?

Dauert keine 10s... ;)

Ansonsten evtl. mal stacktrace anwerfen, vielleicht sieht man mehr...
...evtl. auch mal Ausschnitte aus dem Eventmonitor, da sieht man ja die Werte direkt...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Otto123

#9
Useless use :) { sprintf(("%.2f",12345.678 - 1.0)*.2)}
versus wie gewollt gerundet
{ sprintf("%.2f",(12345.678 - 1.0)*.2)}
8)
Als Probe für die FHEM Kommandozeile.

Guten Rutsch
Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Helmi55

Danke euch beiden.
@Joachim.  Das mit Num und Val werde ich nächstes Jahr testen.
@Otto Danke das wars. Klammern waren noch nie meine Freunde  8)

Jetzt läuft es so wie es soll.

Wünsche euch einen guten Rutsch - gesund bleiben.

Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/