Shelly EM3 Energiemessung passt nicht

Moin,
ich habe längere Zeit die Energiewerte des Shelly em3 zur Darstellung im Energiedashboard im Homeassistant genutzt:

sensor:
- name: “Total Energy Use”
  unique_id: total_energy_use
  device_class: energy
  state_class: total_increasing
  unit_of_measurement: “kWh”
  state: >
  {{
  states(‘sensor.shelly_em3_channel_a_energy’) | float(0) +
  states(‘sensor.shelly_em3_channel_b_energy’) | float(0) +
  states(‘sensor.shelly_em3_channel_c_energy’) | float(0)
  }}

sensor:
 -  name: “Total Energy Returned”
    unique_id: “Total_Energy_Returned”
    device_class: energy
    state_class: total_increasing
    unit_of_measurement: kWh
    state: >
    {{
    states(‘sensor.shelly_em3_channel_a_energy_returned’)| float(0) +
    states(‘sensor.shelly_em3_channel_b_energy_returned’)| float(0) +
    states(‘sensor.shelly_em3_channel_c_energy_returned’)| float(0)
    }}

Die Werte stimmen überhaupt nicht mit den Werten überein, die ich am Zähler auslese.
Jetzt habe ich das geändert und nutze die Gesamtleistung vom Shelly und sende sie durch die Integralsumme von Herrn Riemann. Siehe da, die Werte stimmen mit den Zählerwerten überein.
Habt ihr das schon mal kontrolliert?
Mache ich einen Denkfehler?

Grüße aus dem Norden

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)
s.a.: (Neues Update & Features - Hier in der Community 🫶)

Das ist seit jeher ein Thema und letztlich hilft da nur der Integralsensor. Gibt dazu schon etliche Beiträge hier im Forum.

Danke für den Hinweis. ich hatte hier nichts dazu gefunden.
Was sagen die bei Shelly zu dem Thema?

Was sollen die denn dazu sagen? Die rechnen ja richtig.
Aber was du willst ist ein saldierender Zähler, dazu mußt du alle 3 Phasen betrachten und darfst danach erst nach use/returned aufteilen.
Du berechnest nach deinen Template sensoren nicht saldierend.

a = 1 kWh
b = -0.5 kWh
c = -0.5 kWh

Du machst daraus:

Use: 1 kWh
Returned: 1kWh

Saldierend wären es aber:
Use: 0 kWh
Returned: 0 kWh

Du mußt also alle 6 Werte zusammenzählen und dann je nach Vorzeichen einem der beiden zuweisen oder du benutzt ein Template für den Powersensor a,b,c und läßt darauf einen Riemann oder einen sql-sensor laufen. Danach mußt du noch aufteilen nach use/returned.

Gruß Ralf

3 „Gefällt mir“

mein Vorredner meint das so :slight_smile:

Einspeisung - Leistung: (Helfer Template-Sensor)

{% if (states('sensor.stromzahler_channel_a_power')|float + states('sensor.stromzahler_channel_b_power')|float + states('sensor.stromzahler_channel_c_power')|float) < 0 %}
            {{ (states('sensor.stromzahler_channel_a_power')|float + states('sensor.stromzahler_channel_b_power')|float + states('sensor.stromzahler_channel_c_power')|float) * -1 }}
          {% else %}
            {{ 0 }}
          {% endif %}

Netzbezug - Leistung: (Helfer Template-Sensor)

{% if (states('sensor.stromzahler_channel_a_power')|float + states('sensor.stromzahler_channel_b_power')|float + states('sensor.stromzahler_channel_c_power')|float) > 0 %}
            {{ (states('sensor.stromzahler_channel_a_power')|float + states('sensor.stromzahler_channel_b_power')|float + states('sensor.stromzahler_channel_c_power')|float)  }}
          {% else %}
            {{ 0 }}
          {% endif %}

Dann aus diesen Helfern jeweils 1 Integralsensor (linker Riemann) erstellen


Danke nochmal für die Info. Genau so habe ich das ja jetzt auch gelöst und die Werte stimmen dann mit dem Zähler überein.