FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: NewbieNew am 20 März 2022, 09:27:37

Titel: gelöst: userreading 3 Werte addieren
Beitrag von: NewbieNew am 20 März 2022, 09:27:37
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
Titel: Antw:userreading 3 Werte addieren
Beitrag von: CoolTux am 20 März 2022, 09:34:35
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.
Titel: Antw:userreading 3 Werte addieren
Beitrag 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.
Titel: Antw:userreading 3 Werte addieren
Beitrag von: NewbieNew am 20 März 2022, 09:47:15
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.

Titel: Antw:userreading 3 Werte addieren
Beitrag von: NewbieNew am 20 März 2022, 09:49:22
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?
Titel: Antw:userreading 3 Werte addieren
Beitrag von: Nobbynews am 20 März 2022, 09:52:44
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?
Titel: Antw:userreading 3 Werte addieren
Beitrag von: NewbieNew am 20 März 2022, 09:56:20

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     :


Titel: Antw:userreading 3 Werte addieren
Beitrag von: CoolTux am 20 März 2022, 09:59:05
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.
Titel: Antw:userreading 3 Werte addieren
Beitrag von: CoolTux am 20 März 2022, 09:59:40
Sieht so aus als wenn alles zur selben Zeit aktuallisiert wird. Also dann Variante 1 nehmen.
Titel: Antw:userreading 3 Werte addieren
Beitrag von: NewbieNew am 20 März 2022, 10:04:37

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)}
Titel: Antw:userreading 3 Werte addieren
Beitrag von: CoolTux am 20 März 2022, 10:09:06
Wieso sieht dein Userreading nicht so aus wie meines welches ich nachweislich getestet habe? Was soll das monotonic da drin. Nimm das raus.
Titel: Antw:userreading 3 Werte addieren
Beitrag von: Nobbynews am 20 März 2022, 10:10:53
Entferne mal im gesamten Userreading hinter den jeweiligen Kommas die führenden Leerzeichen.
Titel: Antw:userreading 3 Werte addieren
Beitrag von: Nobbynews am 20 März 2022, 10:18:32
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.
Titel: Antw:userreading 3 Werte addieren
Beitrag von: CoolTux am 20 März 2022, 10:28:58
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
Titel: Antw:userreading 3 Werte addieren
Beitrag von: Nobbynews am 20 März 2022, 10:31:30
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.... ::)
Titel: Antw:userreading 3 Werte addieren
Beitrag von: NewbieNew am 20 März 2022, 10:36:09
Ja,
sorry, die 3 ist mein blöder Fehler.

jetzt sieht es so aus:

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_2_power",0)}


Die ersten 3 Readings wollte ich zum Formatieren der Anzeige. Stören die hier?

und

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)},

diese Zeile war im ShellyEM3 Template. Hinter den Sinn bin ich noch nicht gekommen. Jetzt, wo es raus ist, werden plötzlich viel mehr Readings angezeigt.

aber emeter_ges_power fehlt immer noch
Titel: Antw:userreading 3 Werte addieren
Beitrag von: Nobbynews am 20 März 2022, 10:38:34
Wenn schon korrigieren, dann bitte auch konsequent.....
emeter_ges_power:emeter_3_power:.* {ReadingsNum($name,"emeter_0_
Das muss heißen:
Zitatemeter_ges_power:emeter_2_power:.* {ReadingsNum($name,"emeter_0_
Titel: Antw:userreading 3 Werte addieren
Beitrag von: NewbieNew am 20 März 2022, 10:41:38
Oh Mann....
ich könnte mich verkriechen.......

Kaum macht man es richtig, schon geht es. Großes Dankeschön und einen schönen Sonntag.

PS: was sollte das ....monotonic.... aus dem Temlate?
Titel: Antw:userreading 3 Werte addieren
Beitrag von: CoolTux am 20 März 2022, 10:43:21
Da mal im Shelly Thread oder Forumbereich fragen.
Titel: Antw:userreading 3 Werte addieren
Beitrag von: Nobbynews am 20 März 2022, 10:44:02
Das "monotonic" sichert Dir die letzten Werte bei z.B. einem Stromausfall.
Die Shellies fangen dann nämlich wieder bei 0 an.
Und das will ja keiner.
Titel: Antw:userreading 3 Werte addieren
Beitrag von: NewbieNew am 20 März 2022, 10:48:17
Ok, danke,
also sollte die Zeile doch wieder rein?
Titel: Antw:userreading 3 Werte addieren
Beitrag von: Nobbynews am 20 März 2022, 10:48:57
Ja.
Titel: Antw:gelöst: userreading 3 Werte addieren
Beitrag von: NewbieNew am 20 März 2022, 10:51:36
Danke und einen schönen Sonntag