Der Shelly 3EM erfasst den Stromverbrauch nicht saldierend. Das bedeutet, dass die angezeigten Verbräuche bei gleichzeitiger Einspeisung von Solarstrom in das Netz von den tatsächlichen abweichen können. Die Ursache hierfür liegt darin, dass der Shelly 3EM die Verbräuche nicht verrechnet, sondern lediglich die Summe der einzelnen Phasen anzeigt. Dadurch kann es zu einer Doppelzählung von Strom kommen, der sowohl verbraucht als auch eingespeist wird.
Eine mögliche Lösung für dieses Problem ist die Verwendung einer zusätzlichen Zählerentität, die die Einspeisung des Solarstroms erfasst. Diese Zählerentität kann dann verwendet werden, um die tatsächlichen Verbräuche zu berechnen, indem die eingespeiste Strommenge von der Summe der angezeigten Verbräuche abgezogen wird.
Falls der Shelly schon eine Weile im Einsatz ist, sollte man darüber nachdenken die Messwerte im Shelly zurückzusetzen, um einen sauberen Einstieg für die kommende Auswertung zu haben.
Voraussetzungen
- Shelly 3EM (Fw 20230913-114244/v1.14.0-gcb84623) Gen1
- Werte werden per Shelly Integration in HA eingebunden
- Entität sensor.l1_power -> Leistung Phase 1
- Entität sensor.l2_power -> Leistung Phase 2
- Entität sensor.l3_power -> Leistung Phase 3
- es werden 2 Hoymiles Wechselrichter verwendet (HM800 & HM1200), die über eine Ahoy-DTU (Release 0.8.140) ihre Werte per MQTT an Home Assistent senden
- Entität sensor.hm_800_p_ac -> stellt die aktuelle AC Solarleistung des HM800 in Watt dar, Wert wird durch DTU geliefert
- Entität sensor.hm_1200_p_ac -> stellt die aktuelle AC Solarleistung des HM1200 in Watt dar, Wert wird durch DTU geliefert
Sensorenüberblick
Für die korrekte Berechnung von Verbrauch, Einspeisung und Rückvergütung habe ich folgende zusätzliche Sensoren erstellt:
- HM-800 P AC korrigiert
- verhindert die Anzeige im Dashboard „nicht verfügbar / unbekannt“ wenn keine Leistung erzeugt wird
- HM-1200 P AC korrigiert
- verhindert die Anzeige im Dashboard „nicht verfügbar / unbekannt“ wenn keine Leistung erzeugt wird
- Total Energy Haus (kWh)
- gesamte Energie, die vom Shelley 3EM über alle 3 Phasen gemessen wird (in kWh)
- Total Power Haus (W)
- gesamte Leistung, die vom Shelly 3EM über alle 3 Phasen gemessen wird (in W)
- Power vom Netz (W)
- momentane Leistung in Watt, die aus dem Netz bezogen wird (Solarleistung ist kleiner als momentanter Verbrauch)
- Power ins Netz (W)
- momentane Leistung in Watt, die ins Netz eingespeist wird (Solarleistung ist größer als momentanter Verbrauch)
- Energy vom Netz (kWh)
- aufsummierte Energie in kWh, die aus dem Netz bezogen wird
- Energy ins Netz (kWh)
- aufsummierte Energie in kWh, die in das Netz eingespeist wird
- Power Solar gesamt (W)
- Gesamte Solarleistung, die von allen PV Modulen erzeugt wird
- Energy Solar gesamt DTU (kWh)
- liest den gesamten Ertrag der Wechselrichter aus, die über die DTU verbunden sind
- Solar Eigenverbrauch (W)
- momentaner Eigenverbrauch der erzeugten Solarleistung
- Solar Eigenverbrauch gesamt (kWh)
- aufsummierter gesamter Eigenverbrauch (kWh)
- Strompreis
- Sensor für den Stompreis
- HA nach Erstellung der Sensoren neu starten!
Sensoren erstellen
Template Sensor HM-800 P AC korrigiert bzw. HM-1200 P AC korrigiert
Einstellungen -> Geräte & Dienste -> Helfer + Helfer erstellen -> Sensor Template
- Name: HM-800 P AC korrigiert bzw. HM-1200 P AC korrigiert
- Maßeinheit: W
- Geräteklasse: Leistung
- Zustandsklasse: Messung
- Gerät: HM-800 bzw. HM-1200
# Zustandstemplate*
{{ states('sensor.hm_800_p_ac') | float(0) }}
Template Sensor – Total Power Haus (W)
Summiert alle Phasen die der Shelly 3EM misst auf und gibt die momentane Gesamtleistung aus. Der Wert wird auf Null gesetzt, falls nicht gemessen wird.
- Einstellungen -> Geräte & Dienste -> Helfer + Helfer erstellen -> Sensor Template
- die Entitäten für die Phasen sensor.l1.power, sensor.l2.power, sensor.l3.power müssen auf die eigene Umgebung angepasst werden
- er handelt sich hierbei jeweils um den momentanten Verbrauch der Phase
# ZUSTANDSTEMPLATE*
{% set invalid = ['none', 'unavailable', 'unknown'] %}
{% set a = states('sensor.l1_power') %}
{% set b = states('sensor.l2_power') %}
{% set c = states('sensor.l3_power') %}
{% set a = (a | float) if a not in invalid else 0 %}
{% set b = (b | float) if b not in invalid else 0 %}
{% set c = (c | float) if c not in invalid else 0 %}
{{ a + b + c }}
Template Sensor – Total Energy Haus (kWh)
Sensor zeigt den gesamten Energieverbrauch in kWh an und summiert diesen auf.
- Einstellungen -> Geräte & Dienste -> Helfer
- + Helfer erstellen -> Sensor Template
- Name: Total Energy Haus (kWh)
- Maßeinheit: kWh
- Geräteklasse: Energie
- Zustandsklasse: Gesamt steigend
- Gerät: Shelly 3EM
- die Entitäten für die Phasen sensor.l1.energy, sensor.l2.energy, sensor.l3.energy müssen auf die eigene Umgebung angepasst werden
# ZUSTANDSTEMPLATE*
{% set invalid = ['none', 'unavailable', 'unknown'] %}
{% set a = states('sensor.l1_energy') %}
{% set b = states('sensor.l2_energy') %}
{% set c = states('sensor.l3_energy') %}
{% set a = (a | float) if a not in invalid else 0 %}
{% set b = (b | float) if b not in invalid else 0 %}
{% set c = (c | float) if c not in invalid else 0 %}
{{ a + b + c }}
Template Sensor – Power vom Netz (W)
Misst die Werte von Total Power (W) die größer Null sind, also Energie die aus dem Netz bezogen wird. Hierbei ist die aktuelle Solarleistung also kleiner als der momentane Verbrauch.
- Einstellungen -> Geräte & Dienste -> Helfer + Helfer erstellen -> Sensor Template
- Name: Power vom Netz (W)
- Maßeinheit: W
- Geräteklasse: Leistung
- Zustandsklasse: Messung
- Gerät: Shelly 3EM
- mißt die Werte von Total Power (W) die größer als Null sind, also Energie die aus dem Netz bezogen wird und schreibt diese in den Sensor
- hierbei ist die aktuelle Solarleistung also kleiner als der momentane Verbrauch
# ZUSTANDSTEMPLATE*
{% if states('sensor.total_power_haus_w') | float(0) >= 0 %}
{{states('sensor.total_power_haus_w') | float(0) | round (3) }}
{% else %}
{{(states ('0.0') | float(0)) |round(3) }}
{% endif %}
Template Sensor – Power in das Netz (W)
Misst die Werte von Total Power (W) die kleiner als Null sind, also Energie die in das Netz eingespeist wird und gibt ihnen ein positives Vorzeichen. Hierbei ist die aktuelle Solarleistung also größer als der momentane Verbrauch.
- Einstellungen -> Geräte & Dienste -> Helfer
- + Helfer erstellen -> Sensor Template
- Name: Power ins Netz (W)
- Maßeinheit: W
- Geräteklasse: Leistung
- Zustandsklasse: Messung
- Gerät: Shelly 3EM
# ZUSTANDSTEMPLATE*
{% if states('sensor.total_power_haus_w') | float(0) < 0 %}
{{(states('sensor.total_power_haus_w') | float(0))*-1 | round (3) }}
{% else %}
{{(states ('0.0') | float(0)) |round(3) }}
{% endif %}
Template Sensor – Energy vom Netz (kWh)
Sensor summiert die Energie auf, die aus dem Netz bezogen wird.
- Einstellungen -> Geräte und Dienste -> Helfer -> + HELFER ERSTELLEN -> Integralsensor -> Riemann Summenintegralsensor erstellen
- Name: Energy vom Netz (kWh)
- Metrisches Präfix: k (kilo)
- Zeiteinheit: Stunden
- Eingangssensor: Power vom Netz (W)
- Integrationsmethode: Linke Riemannsche Summe
- Genauigkeit: 2
Template Sensor – Energy ins Netz (kWh)
Sensor summiert die Energie auf, die in das Netz eingespeist wird.
- Einstellungen -> Geräte und Dienste -> Helfer -> + HELFER ERSTELLEN -> Integralsensor -> Riemann Summenintegralsensor erstellen
- Name: Energy ins Netz (kWh)
- Metrisches Präfix: k (kilo)
- Zeiteinheit: Stunden
- Eingangssensor: Power ins Netz (W)
- Integrationsmethode: Linke Riemannsche Summe
- Genauigkeit: 2
Template Sensor – Power Solar gesamt (W)
Gesamte AC Solarleistung, die von allen Wechselrichtern erzeugt wird. Sensoren müssen auf eigene Umgebung angepasst werden.
- Einstellungen -> Geräte & Dienste -> Helfer + Helfer erstellen -> Sensor Template
- Name: Power Solar Gesamt (W)
- Maßeinheit: W
- Geräteklasse: Leistung
- Zustandsklasse: Messung
- Gerät: –
# ZUSTANDSTEMPLATE*
{{ (states('sensor.hm_800_p_ac') | float(0)) + (states('sensor.hm_1200_p_ac') | float(0)) }}
MQTT Sensor – Energy Solar DTU gesamt (kWh)
MQTT Sensor in configuration.yaml hinzufügen. Ggf. ist das state_topic auf die eigenen Umgebung anzupassen. Ein gutes Hilfmittel dazu ist der mqtt.explorer.
mqtt:
sensor:
- name: "Energy Solar DTU gesamt (kWh)"
state_topic: "inverter/total/YieldTotal"
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
value_template: "{{ value | float(0) }}"
Template Sensor – Solar Eigenverbrauch (W)
- Name: Solar Eigenverbrauch (W)
- Maßeinheit: W
- Geräteklasse: Leistung
- Zustandsklasse: Messung
- Gerät: Shelly 3EM
# ZUSTANDSTEMPLATE*
{% if states('sensor.total_power_haus_w') | float(0) < 0 %}
{{ ( (states('sensor.total_power_haus_w') | float(0) ) + (states('sensor.power_solar_gesamt_w') | float(0) ) ) | round (3) }}
{% else %}
{{ states('sensor.power_solar_gesamt_w') | round (3) }}
{% endif %}
Template Sensor – Solar Eigenverbrauch gesamt (kWh)
- Name: Solar Eigenverbrauch gesamt (kWh)
- Metrisches Präfix: k (kilo)
- Zeiteinheit: Stunden
- Eingangssensor: Solar Eigenverbrauch (W)
- Integrationsmethode: Linke Riemannsche Summe
- Genauigkeit: 0
Template Sensor – Strompreis
Um später den Strompreis einfach über das Dashboard ändern zu können, erstelle ich noch einen Helfer für den Strompreis. Diesen Helfer können wir dann später im Energiedashboard angeben um korrekte Berechnungen zu bekommen.
- Einstellungen -> Geräte & Dienste -> Helfer + Helfer erstellen -> Sensor Template -> Zahlenwert-Eingabe
- Name: Strompreis
- Symbol: €
- Maßeinheit: EUR/kWh
Template Sensor – Solar Ersparnis
Berechnet die Preiseinsparung durch die Solaranlage anhand des Eigenverbrauches.
- Name: Solar Ersparnis
- Maßeinheit: EUR
- Geräteklasse: –
- Zustandsklasse: Gesamt steigend
- Gerät: –
# ZUSTANDSTEMPLATE*
{{ states('solar_eigenverbrauch_gesamt')|float(0) * states('input_number.strompreis')|float(0) }}
Energie-Dashboard einrichten
- zum Engerie-Dashboard wechseln
- Konfiguration aufrufen (3 Pkt. Menü rechts oben)
- Netzbezug hinzufügen – Energy vom Netz (kWh)
- Strompreis als Entität für aktuellen Strompreis eintragen
- Netzeinspeisung hinzufügen – Energy ins Netz (kWh)
- Strompreis als Entität für aktuellen Strompreis eintragen
- PV-Module hinzufügen – HM-800 YieldDay & HM-1200 YielDay (MQTT Werte aus der DTU)
Quellen
- simon42.com – Shelly 3EM in Home Assistant einbinden und dabei diverse Fehlerquellen entdecken und vermeiden
- iamklaus.org – Shelly 3EM, Photovoltaik und Home Assistant: Richtig saldieren.
- youtube.de – Shelly 3EM und Energy Dashboard einrichten in Home Assistant
- youtube.de – Balkonkraftwerk in Home Assistant mit Ersparnis Berechnung