gelöst: userreading 3 Werte addieren

Begonnen von NewbieNew, 20 März 2022, 09:27:37

Vorheriges Thema - Nächstes Thema

NewbieNew

Hallo an alle,
ich stehe schon wieder auf dem Schlauch.

Ich habe 3 Werte:

emeter_0_power
emeter_1_power
emeter_3_power

Diese möchte ich addieren und als userreading emeter_ges_power anzeigen lassen.

Kann mir jemand das Brett vorm Kopf entfernen? Ich suche schon 2 Stunden......

Dankeschön

CoolTux

Weißt Du zufällig ob immer alle 3 Readings zur selben Zeit aktualisiert werden? Oder kann es auch Mal sein das nur emeter_0_power aktualisiert wird und 5 Minuten später vielleicht emeter_1_power oder so.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Nobbynews

#2
Na ja, unabhängig von einer gleichzeitigen Änderung der einzelnen Readings und unter der Annahme das die Readings von einem device kommen wohl ungetestet soetwas:

emeter_ges_power:emeter:.* {ReadingsNum($name,"emeter_0_power",0)+ReadingsNum($name,"emeter_1_power",0)+ReadingsNum($name,"emeter_3_power",0)}
Den Trigger emeter:.* musst Du natürlich anpassen. Weitere Info fehlt halt.

NewbieNew

Hallo,
die Werte kommen von einem Device. Das ist jeweils der Verbrauch pro Phase. Das hätte ich gerne zum Anschauen addiert, um den jetzigen Gesamtverbrauch zu sehen.


NewbieNew

Zitat von: Nobbynews am 20 März 2022, 09:41:09
Na ja, unabhängig von einer gleichzeitigen Änderung der einzelnen Readings und unter der Annahme das die Readings von einem device kommen wohl ungetestet soetwas:

emeter_ges_power:emeter:.* {ReadingsNum($name,"emeter_0_power",0)+ReadingsNum($name,"emeter_1_power",0)+ReadingsNum($name,"emeter_3_power",0)}
Den Trigger emeter:.* musst Du natürlich anpassen. Weitere Info fehlt halt.

Welche Info kann ich noch liefern?

Nobbynews

Zitat von: NewbieNew am 20 März 2022, 09:49:22
Welche Info kann ich noch liefern?
Ein list vom device wäre ganz hilfreich.
Da aber alle Readings von einem device kommen, sollte mein Vorschlag funktionieren.
Ausprobiert?

NewbieNew


Ausprobiert ja, aber Das userreading erscheint noch nicht.

list:
Internals:
   CID        shellyem3_BCFF4DFD1577
   DEF        shellyem3_BCFF4DFD1577
   DEVICETOPIC Leu_Stromverbrauch
   FUUID      6235f771-f33f-2a92-1a30-ebd45e9dec440f11
   IODev      mqtt2s
   LASTInputDev mqtt2s
   MSGCNT     80334
   NAME       Leu_Stromverbrauch
   NR         95
   STATE      Relay: off,<br>P1: 27.80 W / Total P1: unknown kWh<br>P2: 24.52 W / Total P2: unknown kWh<br>P3: 17.01 W / Total P3: unknown kWh
   TYPE       MQTT2_DEVICE
   mqtt2c_MSGCNT 1
   mqtt2c_TIME 2022-03-20 02:55:37
   mqtt2s_CONN mqtt2s_192.168.1.15_12137
   mqtt2s_MSGCNT 80333
   mqtt2s_TIME 2022-03-20 09:54:43
   Helper:
     DBLOG:
       emeter_0_power:
         LogDB:
           TIME       1647766482.82764
           VALUE      27.80
       emeter_1_power:
         LogDB:
           TIME       1647766483.01989
           VALUE      24.52
   OLDREADINGS:
   READINGS:
     2022-03-20 02:55:23   IODev           mqtt2s
     2022-03-20 08:36:39   attrTemplateVersion 20210126
     2022-03-20 09:54:42   emeter_0_current 0.14
     2022-03-20 09:53:59   emeter_0_energy 28
     2022-03-20 09:53:59   emeter_0_energy_total 69
     2022-03-20 09:54:42   emeter_0_pf     1.00
     2022-03-20 09:54:42   emeter_0_power  27.80
     2022-03-20 09:53:59   emeter_0_returned_energy 0
     2022-03-20 09:54:42   emeter_0_total  880.0
     2022-03-20 09:54:42   emeter_0_total_returned 2.4
     2022-03-20 09:54:42   emeter_0_voltage 234.86
     2022-03-20 09:54:43   emeter_1_current 0.27
     2022-03-20 09:53:59   emeter_1_energy 27
     2022-03-20 09:53:59   emeter_1_energy_total 275
     2022-03-20 09:54:43   emeter_1_pf     1.00
     2022-03-20 09:54:43   emeter_1_power  24.52
     2022-03-20 09:53:59   emeter_1_returned_energy 0
     2022-03-20 09:54:43   emeter_1_total  3945.0
     2022-03-20 09:54:43   emeter_1_total_returned 24.0
     2022-03-20 09:54:43   emeter_1_voltage 234.86
     2022-03-20 09:54:43   emeter_2_current 0.32
     2022-03-20 09:53:59   emeter_2_energy 17
     2022-03-20 09:53:59   emeter_2_energy_total 17
     2022-03-20 09:54:43   emeter_2_pf     1.00
     2022-03-20 09:54:43   emeter_2_power  17.01
     2022-03-20 09:54:00   emeter_2_returned_energy 0
     2022-03-20 09:54:43   emeter_2_total  1726.2
     2022-03-20 09:54:43   emeter_2_total_returned 1.8
     2022-03-20 09:54:43   emeter_2_voltage 234.65
     2022-03-20 09:54:42   relay_0         off
     2022-03-20 09:54:43   total_0_kWh     0.880
     2022-03-20 09:54:43   total_1_kWh     3.945
     2022-03-20 09:54:43   total_2_kWh     1.726
     2022-03-20 08:36:39   x_mqttcom       set announce
   helper:
     _98_statistics myStatDevice
Attributes:
   DbLogInclude emeter_0_power,emeter_1_power,emeter_3_power
   alias      Stromverbrauch
   comment    To get appropriate loadState values: Change the default limit "100" in readingList to your needs.
   devStateIcon {my $onl = ReadingsVal($name,"online","false") eq "true"?"10px-kreis-gruen":"10px-kreis-rot"; my $light = ReadingsVal($name,"state","off"); my $cons1 = ReadingsVal($name,"emeter_0_power","unknown"); my $cons2 = ReadingsVal($name,"emeter_1_power","unknown"); my $cons3 = ReadingsVal($name,"emeter_2_power","unknown"); my $total1 = ReadingsVal($name,"total_0_kWh","unknown"); my $total2 = ReadingsVal($name,"total_1_kWh","unknown"); my $total3 = ReadingsVal($name,"total_2_kWh","unknown"); my $total_sum = $total1+$total2+$total3; "<a href=\"http://".ReadingsVal($name,"ip","none")." \"target=\"_blank\">".FW_makeImage($onl)."</a> <a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">".FW_makeImage($light)."</a><div>P1: $cons1 W / Total P1: $total1 kWh<br>P2: $cons2 W / Total P2: $total2 kWh<br>P3: $cons3 W / Total P3: $total3 kWh<br>3 Phases total: $total_sum kWh</div>"}
   group      00
   model      shelly3em
   readingList shellies/fhem3/online:.* online
  shellies/fhem3/announce:.* { json2nameValue($EVENT) }
  shellies/announce:.* { $EVENT =~ m,..id...fhem3...mac.*, ? json2nameValue($EVENT) : return }
  shellies/fhem3/relay/0:.* state
  shellies/fhem3/input_event/0:.* { json2nameValue($EVENT) }
  shellies/fhem3/input/0:.* input0
  shellies/fhem3/online:.* online
  shellies/fhem3/emeter/0/power:.* emeter_0_power
  shellies/fhem3/emeter/0/pf:.* emeter_0_pf
  shellies/fhem3/emeter/0/current:.* emeter_0_current
  shellies/fhem3/emeter/0/voltage:.* emeter_0_voltage
  shellies/fhem3/emeter/1/power:.* emeter_1_power
  shellies/fhem3/emeter/1/pf:.* emeter_1_pf
  shellies/fhem3/emeter/1/current:.* emeter_1_current
  shellies/fhem3/emeter/1/voltage:.* emeter_1_voltage
  shellies/fhem3/emeter/2/power:.* emeter_2_power
  shellies/fhem3/emeter/2/pf:.* emeter_2_pf
  shellies/fhem3/emeter/2/current:.* emeter_2_current
  shellies/fhem3/emeter/2/voltage:.* emeter_2_voltage
  shellies/fhem3/emeter/0/energy:.* emeter_0_energy
  shellies/fhem3/emeter/0/returned_energy:.* emeter_0_returned_energy
  shellies/fhem3/emeter/0/total:.* emeter_0_total
  shellies/fhem3/emeter/0/total:.* {'emeter_0_kWh' => sprintf("%.2f",$EVENT/1000)}
  shellies/fhem3/emeter/0/total_returned:.* emeter_0_total_returned
  shellies/fhem3/emeter/1/energy:.* emeter_1_energy
  shellies/fhem3/emeter/1/returned_energy:.* emeter_1_returned_energy
  shellies/fhem3/emeter/1/total:.* emeter_1_total
  shellies/fhem3/emeter/1/total:.* {'emeter_1_kWh' => sprintf("%.2f",$EVENT/1000)}
  shellies/fhem3/emeter/1/total_returned:.* emeter_1_total_returned
  shellies/fhem3/emeter/2/energy:.* emeter_2_energy
  shellies/fhem3/emeter/2/returned_energy:.* emeter_2_returned_energy
  shellies/fhem3/emeter/2/total:.* emeter_2_total
  shellies/fhem3/emeter/2/total:.* {'emeter_2_kWh' => sprintf("%.2f",$EVENT/1000)}
  shellies/fhem3/emeter/2/total_returned:.* emeter_2_total_returned
shellyem3_BCFF4DFD1577:shellies/fhem3/gartenstrom/relay/0:.* relay_0
shellyem3_BCFF4DFD1577:shellies/fhem3/gartenstrom/emeter/0/power:.* emeter_0_power
shellyem3_BCFF4DFD1577:shellies/fhem3/gartenstrom/emeter/0/pf:.* emeter_0_pf
shellyem3_BCFF4DFD1577:shellies/fhem3/gartenstrom/emeter/0/current:.* emeter_0_current
shellyem3_BCFF4DFD1577:shellies/fhem3/gartenstrom/emeter/0/voltage:.* emeter_0_voltage
shellyem3_BCFF4DFD1577:shellies/fhem3/gartenstrom/emeter/0/total:.* emeter_0_total
shellyem3_BCFF4DFD1577:shellies/fhem3/gartenstrom/emeter/0/total_returned:.* emeter_0_total_returned
shellyem3_BCFF4DFD1577:shellies/fhem3/gartenstrom/emeter/1/power:.* emeter_1_power
shellyem3_BCFF4DFD1577:shellies/fhem3/gartenstrom/emeter/1/pf:.* emeter_1_pf
shellyem3_BCFF4DFD1577:shellies/fhem3/gartenstrom/emeter/1/current:.* emeter_1_current
shellyem3_BCFF4DFD1577:shellies/fhem3/gartenstrom/emeter/1/voltage:.* emeter_1_voltage
shellyem3_BCFF4DFD1577:shellies/fhem3/gartenstrom/emeter/1/total:.* emeter_1_total
shellyem3_BCFF4DFD1577:shellies/fhem3/gartenstrom/emeter/1/total_returned:.* emeter_1_total_returned
shellyem3_BCFF4DFD1577:shellies/fhem3/gartenstrom/emeter/2/power:.* emeter_2_power
shellyem3_BCFF4DFD1577:shellies/fhem3/gartenstrom/emeter/2/pf:.* emeter_2_pf
shellyem3_BCFF4DFD1577:shellies/fhem3/gartenstrom/emeter/2/current:.* emeter_2_current
shellyem3_BCFF4DFD1577:shellies/fhem3/gartenstrom/emeter/2/voltage:.* emeter_2_voltage
shellyem3_BCFF4DFD1577:shellies/fhem3/gartenstrom/emeter/2/total:.* emeter_2_total
shellyem3_BCFF4DFD1577:shellies/fhem3/gartenstrom/emeter/2/total_returned:.* emeter_2_total_returned
shellyem3_BCFF4DFD1577:shellies/fhem3/gartenstrom/emeter/0/energy:.* emeter_0_energy
shellyem3_BCFF4DFD1577:shellies/fhem3/gartenstrom/emeter/0/returned_energy:.* emeter_0_returned_energy
shellyem3_BCFF4DFD1577:shellies/fhem3/gartenstrom/emeter/1/energy:.* emeter_1_energy
shellyem3_BCFF4DFD1577:shellies/fhem3/gartenstrom/emeter/1/returned_energy:.* emeter_1_returned_energy
shellyem3_BCFF4DFD1577:shellies/fhem3/gartenstrom/emeter/2/energy:.* emeter_2_energy
shellyem3_BCFF4DFD1577:shellies/fhem3/gartenstrom/emeter/2/returned_energy:.* emeter_2_returned_energy
   room       1.0_Garten,MQTT2_DEVICE
   setList    relay0:on,off,toggle shellies/fhem3/relay/0/command $EVTPART1
  toggle:noArg shellies/fhem3/relay/0/command toggle
  off:noArg shellies/fhem3/relay/0/command off
  on:noArg shellies/fhem3/relay/0/command on
  x_update:noArg shellies/fhem3/command update_fw
  x_mqttcom shellies/fhem3/command $EVTPART1
   setStateList on off toggle
   stateFormat { my $light = ReadingsVal($name,"state","off"); my $cons1 = ReadingsVal($name,"emeter_0_power","unknown"); my $cons2 = ReadingsVal($name,"emeter_1_power","unknown"); my $cons3 = ReadingsVal($name,"emeter_2_power","unknown"); my $total1 = ReadingsVal($name,"emeter_0_kWh","unknown"); my $total2 = ReadingsVal($name,"emeter_1_kWh","unknown"); my $total3 = ReadingsVal($name,"emeter_2_kWh","unknown"); return qq(Relay: $light,<br>P1: $cons1 W / Total P1: $total1 kWh<br>P2: $cons2 W / Total P2: $total2 kWh<br>P3: $cons3 W / Total P3: $total3 kWh) }
   userReadings emeter_0_energy_total:emeter_0_energy:.* monotonic {ReadingsNum("$name","emeter_0_energy",0)}, emeter_1_energy_total:emeter_1_energy:.* monotonic {ReadingsNum("$name","emeter_1_energy",0)}, emeter_2_energy_total:emeter_2_energy:.* monotonic {ReadingsNum("$name","emeter_2_energy",0)},
total_0_kWh {sprintf("%.3f",ReadingsVal($name,"emeter_0_total",0)/1000)},
total_1_kWh {sprintf("%.3f",ReadingsVal($name,"emeter_1_total",0)/1000)},
total_2_kWh {sprintf("%.3f",ReadingsVal($name,"emeter_2_total",0)/1000)},
emeter_ges_power:emeter:.* {ReadingsNum($name,"emeter_0_power",0)+ReadingsNum($name,"emeter_1_power",0)+ReadingsNum($name,"emeter_3_power",0)}
   webCmd     :



CoolTux

emeter_ges_power:emeter_3_power:.* {ReadingsNum($name,"emeter_0_power",0)+ReadingsNum($name,"emeter_1_power",0)+ReadingsNum($name,"emeter_3_power",0)}

Sofern alle zur selben Zeit aktuallisiert werden.

emeter_ges_power:emeter_[0-3]_power:.* {ReadingsNum($name,"emeter_0_power",0)+ReadingsNum($name,"emeter_1_power",0)+ReadingsNum($name,"emeter_3_power",0)}

Wenn unterschiedlich aktuallisiert wird.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Sieht so aus als wenn alles zur selben Zeit aktuallisiert wird. Also dann Variante 1 nehmen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

NewbieNew


Habs probiert, leider erscheint das userreading nicht.

Mein Userreading sieht jetzt so aus:

emeter_0_energy_total:emeter_0_energy:.* monotonic {ReadingsNum("$name","emeter_0_energy",0)}, emeter_1_energy_total:emeter_1_energy:.* monotonic {ReadingsNum("$name","emeter_1_energy",0)}, emeter_2_energy_total:emeter_2_energy:.* monotonic {ReadingsNum("$name","emeter_2_energy",0)},
total_0_kWh {sprintf("%.3f",ReadingsVal($name,"emeter_0_total",0)/1000)},
total_1_kWh {sprintf("%.3f",ReadingsVal($name,"emeter_1_total",0)/1000)},
total_2_kWh {sprintf("%.3f",ReadingsVal($name,"emeter_2_total",0)/1000)},
emeter_ges_power:emeter_3_power:.* {ReadingsNum($name,"emeter_0_power",0)+ReadingsNum($name,"emeter_1_power",0)+ReadingsNum($name,"emeter_3_power",0)}

CoolTux

Wieso sieht dein Userreading nicht so aus wie meines welches ich nachweislich getestet habe? Was soll das monotonic da drin. Nimm das raus.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Nobbynews

#11
Entferne mal im gesamten Userreading hinter den jeweiligen Kommas die führenden Leerzeichen.

Nobbynews

#12
Zitat von: NewbieNew am 20 März 2022, 10:04:37
Habs probiert, leider erscheint das userreading nicht.
Kann auch nicht funktionieren.
Es gibt nur die readings "emeter_(0|1|2)_power".
Das reading "emeter_3_power" existiert nicht.

CoolTux

Zitat von: Nobbynews am 20 März 2022, 10:18:32
Kann auch nicht funktionieren.
Es gibt nur die readings "emeter_(0|1|2)_power".
Das reading "emeter_3_power" existiert nicht.

Stimmt hast Recht. Hatte mich da zu sehr auf die erste Angabe verlassen.

emeter_ges_power:emeter_2_power:.* {ReadingsNum($name,"emeter_0_power",0)+ReadingsNum($name,"emeter_1_power",0)+ReadingsNum($name,"emeter_2_power",0)}

So sollte es aber gehen
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Nobbynews

Zitat von: CoolTux am 20 März 2022, 10:28:58
Stimmt hast Recht. Hatte mich da zu sehr auf die erste Angabe verlassen.
Hätte der TE mit der Methode des scharfen Hinsehens auch selbst drauf kommen können.... ::)