Für wen ist diese Beschreibung?
- Ihr nutzt eine Shelly 3EM um den Stromverbrauch eures Hauses oder Wohnung zu messen.
- Ihr betreibt eine Photovoltaik-Anlage, deren Überschuss über in das öffentliche Netzeingespeist wird (und diese ist nicht an einen separaten Stromzähler oder dergleichen angeschlossen).
- Ihr nutzt HomeAssistant, um euren Energieverbrauch zu messen und eure Home Automation darüber zu steuern.
- Ihr wollt genau sehen, wieviel von eurem produzierten Strom ins Stromnetz eingespeist wird und wie hoch der Eigenverbrauch ist, habt aber das Problem, dass die Shelly 3EM dies leider korrekt darstellen kann, weil die Shelly (noch) nicht saldieren kann.
Warum kann ich nicht direkt in der Shelly 3EM sehen, wieviel Strom ich eingespeist habe?
Grundsätzlich muss man sagen, die Shelly 3EM macht alles korrekt und man sieht den Strom der eingespeist wird technisch korrekt dargestellt. “Abrechnungstechnisch” stimmt das jedoch nicht. Denn wenn ihr den Stromverbrauch in der Shelly mit den auf deinem Stromzähler vergleicht, werdet ihr teils erhebliche Differenzen feststellen.
Warum: Dein Stromzähler saldiert, die Shelly 3EM nicht. Was bedeutet das?
Dazu muss man kurz ausholen: Dein Haushaltsstrom kommt über drei Phasen zu Dir nach nach Hause – das nennt man Dreiphasenwechselstrom und ist ein europäischer Standard. Kurz gesagt: In dein Haus / Wohnung kommen drei Stromleitungen mit 230V Spannung. Jeder deiner Verbraucher (Lampe, Steckdose, usw) hängt an einer der drei Phasen. Auch das Balkonkraftwerk. Wenn dein Balkonkraftwerk mehr Strom erzeugt als die Verbraucher an der Phase gerade an Strom benötigen, wird der überschüssige Strom ins Netz eingespeist. Der überschüssige Strom kann auch nicht auf die anderen beiden Phasen überspringen, das geht technisch nicht.
Dein Stromzähler ist – fast immer – saldierend. Bei saldierenden Zählern werden Verbräuche und Erträge aller drei Phasen noch vor der Anzeige auf dem Stromzähler miteinander verrechnet. Man sieht also nicht, wie viel auf den jeweiligen Phasen verbraucht oder erzeugt wurde, man sieht nur das Ergebnis der Verrechnung. Genauso verhält sich der Zähler wenn du Strom auf einer Phase einspeist. Der saldierende Stromzähler verrechnet die Einspeisung auf einer Phase mit dem Verbrauch der anderen beiden Phasen. Das ist gut so, ansonsten hätte man weniger davon, sich ein Balkonkraftwerk anzuschaffen.
Der Shelly 3EM kann nicht saldieren – er schaut sich Phase für Phase an. Zwar war vor längerem schon man angekündigt worden, dass dieses Feature durch ein Software Update nachgereicht werden soll, aber bis zum aktuellen Zeitpunkt ist das noch nicht der Fall. Das ist aber nicht so schlimm, wir bilden das einfach in HomeAssistant ab, was bei mir ohnehin im Betrieb ist.

In HomeAssistant bekommt man dann auch so schöne Übersichten angezeigt, auf denen man sehr übersichtlich sehen kann wieviel Kilowattstunden man aus den Netz bezogen hat, wieviel Solarenergie produziert worden ist und wieviel selbstbezogen worden ist.
Wie sieht der Aufbau der Anlage aus?

- Das PV Modul hängt an eurem Mikrowechselrichter. Bei mir nennt man das Balkonkraftwerk (BKW).
- Der Mikrowechselrichter ist mit einem Shelly Plug S verbunden. Dieser smarte Aus- und Einschalter misst den Stromverbrauch, hier die Stromgenerierung durch das PV Modul.
- Der generierte Strom des PV Moduls landet an einer der drei Phasen im “Sicherungskasten”.
- Im Sicherungskasten ist die Shelly 3EM installiert und überwacht die Stromverbräuche – sowohl den bezogenen Strom als auch den eingespeisten Strom. Eine Anleitung wie man die Shelly 3EM installiert findet ihr hier.
Vorraussetzung
Diese Anleitung geht davon aus, das eure Shelly 3EM korrekt in Betrieb ist und in eurem Netzwerk eingebunden ist. Ebenfalls setzt diese Anleitung voraus, dass im gleichen Netzwerk Home Assistant installiert ist und dort bereits die Shelly 3EM mit der Shelly Integration eingebunden ist.
Schritt für Schritt Anleitung
1. Das File Editor Add-On in Home Assistant installieren
Um in Home Assistant die Konfigurationsdatei zu öffnen, solltet ihr euch das Addon “File Editor” installieren. So kann man am einfachsten die Konfiguration verändern. Macht dazu folgendes:
- Öffne HomeAssistant in einem Browser
- Klicke auf “Settings”
- Klicke dann auf “Add-ons”
- Klicke auf “Add-On Store”
- Gibt im Suchfeld “File editor” an
- Klicke auf “Installieren”.
- Aktiviere folgende Parameter:
“Start on Boot”
“Show in Sidebar” - Nach der Installation solltet ihr im Menü an der linken Seite den Menüpunkt “File editor” sehen, klickt auf diesen.
- Danach solltet ihr oben einen Ordner-Symbol sehen, dieses anklicken.
- In der Dateiliste dann die Datei “configuration.yaml” öffnen
2. Die “configuration.yaml” ändern
Als nächstes kopiert den nachstehenden Yaml-Code in die Datei “configuration.yaml”, die ihr mit dem File Editor aus dem vorherigen Schritt geöffnet habt. Fügt es einfach ganz am Ende an und verändert die bestehende Konfiguration nicht.
Es kann sein, dass ihr etwas Anpassen müsst: In der Datei findet ihr wiederkehrend die drei Namen der Phasen der Shelly 3EM in Home Assistant sensor.shelly3em_channel_a_power, sensor.shelly3em_channel_b_power, sensor.shelly3em_channel_c_power.
Diese müsst ihr mit euren jeweiligen Namen für die “Power” Entity der Shelly 3EM ersetzen. Bei mir wurden die Namen automatisch bei der Integration der Shelly 3EM in HomeAssistant so benannt. Habt ihr die gleichen Namen, dann ist alles gut.
sensor: - platform: template sensors: # Template sensor for values of power import (active_power > 0) power_import: friendly_name: "Power Import" unit_of_measurement: 'W' value_template: >- {% if (states('sensor.shelly3em_channel_a_power')|float + states('sensor.shelly3em_channel_b_power')|float + states('sensor.shelly3em_channel_c_power')|float) > 0 %} {{ states('sensor.shelly3em_channel_a_power')|float + states('sensor.shelly3em_channel_b_power')|float + states('sensor.shelly3em_channel_c_power')|float }} {% else %} {{ 0 }} {% endif %} availability_template: "{{ [ states('sensor.shelly3em_channel_a_power'), states('sensor.shelly3em_channel_b_power'), states('sensor.shelly3em_channel_c_power') ] | map('is_number') | min }}" # Template sensor for values of power export (active_power < 0) power_export: friendly_name: "Power Export" unit_of_measurement: 'W' value_template: >- {% if (states('sensor.shelly3em_channel_a_power')|float + states('sensor.shelly3em_channel_b_power')|float + states('sensor.shelly3em_channel_c_power')|float) < 0 %} {{ (states('sensor.shelly3em_channel_a_power')|float + states('sensor.shelly3em_channel_b_power')|float + states('sensor.shelly3em_channel_c_power')|float) * -1 }} {% else %} {{ 0 }} {% endif %} availability_template: "{{ [ states('sensor.shelly3em_channel_a_power'), states('sensor.shelly3em_channel_b_power'), states('sensor.shelly3em_channel_c_power') ] | map('is_number') | min }}" # Template sensor for values of power consumption power_consumption: friendly_name: "Power Consumption" unit_of_measurement: 'W' value_template: >- {% if (states('sensor.power_export')|float(0)) > 0 and (states('sensor.power_solargen')|float(0) - states('sensor.power_export')|float(0)) < 0 %} {% elif (states('sensor.power_export')|float(0)) > 0 and (states('sensor.power_solargen')|float(0) - states('sensor.power_export')|float(0)) > 0 %} {{ (states('sensor.power_solargen')|float(0)) - states('sensor.power_export')|float(0) }} {% else %} {{ states('sensor.power_import')|float(0) + states('sensor.power_solargen')|float(0) }} {% endif %} # Sensor for Riemann sum of energy import (W -> Wh) - platform: integration source: sensor.power_import name: energy_import_sum unit_prefix: k round: 2 method: left # Sensor for Riemann sum of energy export (W -> Wh) - platform: integration source: sensor.power_export name: energy_export_sum unit_prefix: k round: 2 method: left # Sensor for Riemann sum of energy consumption (W -> Wh) - platform: integration source: sensor.power_consumption name: energy_consumption_sum unit_prefix: k round: 2 method: left utility_meter: energy_import_daily: source: sensor.energy_import_sum name: Energy Import Daily cycle: daily energy_import_monthly: source: sensor.energy_import_sum name: Energy Import Monthly cycle: monthly energy_export_daily: source: sensor.energy_export_sum name: Energy Export Daily cycle: daily energy_export_monthly: source: sensor.energy_export_sum name: Energy Export Monthly cycle: monthly energy_consumption_daily: source: sensor.energy_consumption_sum name: Energy Consumption Daily cycle: daily energy_consumption_monthly: source: sensor.energy_consumption_sum name: Energy Consumption Monthly cycle: monthly
Nachdem ihr die Konfiguration am Ende der “configuration.yaml” angefügt habt bitte die folgenden Schritte durchführen:
- Klicke unten links im Hauptmenü auf “Developer Tools”
- Klicke dann auf “Check configuration”
- Kommt dann die Meldung “Configuration will not prevent Home Assistant from starting” passt alles.
- Klickt danach auf “Restart”
- Nach 1-2 Minuten ist HomeAssistant wieder erreichbar und hat die neue Konfiguration geladen.
3. Das Energy Dashboard konfigurieren
Im letzten Schritt konfigurieren wir noch das Energy Dashboard, damit die neuen Entities dort auch eingebunden sind und die richtigen Werte angezeigt werden. Dazu gehen wir wie folgt vor:
- Klicke unten links im Hauptmenü auf “Settings”.
- Klicke dann auf “Dashboards”.
- Klicke dann auf das “Energy” Dashboard.
- Füge die neue Entity “Energy Import Daily” bei “Grid Consumption” hinzu.
- Füge die neue Entity “Energy Export Daily” bei “Return to Grid” hinzu (Achtung: Unter Umständen dauert es einige Stunden, bis diese Entity auswählbar ist!)
- Bei den “Solar Panels” bitte den Zähler für eure PV Produktion hinzufügen. In meinem Fall sind das zwei Shelly Plug S, weil ich zwei Module habe.
Am Ende sieht die Konfiguration bei mir wie folgt aus:


So sieht es dann im Home Assistant Energy Dashboard aus
Ihr seht nun schon übersichtlich den Stromverbrauch aus dem Netz und eurer Photovoltaik Anlage und wieviel eures selbst produzierenden Stroms durch euch verbraucht worden ist – zumindest rechnerisch.





Bitte beachten:
1. Es dauert eine Weile bis ihr Daten im Energie Dashboard seht. Es dauert mindestens eine Stunde, kann aber auch bis zu 3 Stunden benötigen. Habt ein wenig Geduld! Insbesondere wird unten in den Kommentaren oft berichtet, dass “Energy Export Daily” nicht ausgewählt werden kann.
2. Ich habe zu Testzwecken eine neue Home Assistant Installation gemacht. Ich konnte dies reproduzieren, “Energy Export Daily” war unmittelbar nicht auswählbar. Aber nach einige Stunden hingegen war er vorhanden und ich konnte ihn einbinden. Habt ein wenig Geduld. Jede weitere Veränderung der Konfiguration führt unweigerlich dazu, dass es noch länger dauert!
3. “Energy Export Daily” wird erst dann auf tauchen, wenn ihr Stromüberschuss ins Netz eingespeist habt. Ist das noch nicht erfolgt, wird die Riemann Integration nicht aktiv. Siehe Kommentar von @Uwe.
Hinterlasst mir gerne Kommentare wenn die Beschreibung Schwächen hat, oder verbessert werden kann! Vielen Dank an James von dem die Ursprungsversion kam.
Hi
das ist eine super Anleitung, ich habe dazu aber eine Frage und zwar, gibt es auch ein Code bei dem das BKW noch vor dem Shelly sitzt oder kann man diese konfiguration nicht richtig auslesen?
Wenn die PV Anlage im Stromkreis vor der Shelly sitzt, dann wüsste ich nicht, wie das funktionieren soll. Du kannst dann nicht mehr unterscheiden, ob der selbst benötigte Strom aus dem Netz oder von der PV Anlage kommt. Kannst du es nicht ändern, dass die PV Einspeisung hinter der Shelly stattfindet?
Das dürfte nicht funktionieren. Ich kann es mir zumindest nicht vorstellen. Kannst du die Einspeisung nicht hinter die Shelly hängen?
Super Anleitung. Eine Verständnisfrage hätte ich noch, der ‘sensor.power_solargen’ bei “Power Consumption” wird ebenfalls durch die “Power” Entity des Shelly EM beim BKW (in meinem Fall) ersetzt?
Richtig! Und wenn du mehrer “Zähler” hast, zählst du die am besten vorab zusammen:
# Template sensor for values of energy Solar generation (solar_power > 0)
power_solargen:
friendly_name: “Power Solar Generation”
unit_of_measurement: ‘W’
value_template: >-
{% if (states(‘sensor.pv_power’)|float(0) + states(‘sensor.pv_power_2’)|float(0)) > 0 %}
{{ (states(‘sensor.pv_power’)|float(0) + states(‘sensor.pv_power_2’)|float(0)) }}
{% else %}
{{ 0 }}
{% endif %}
Hallo Klaus,
ich hab einen Shelly Pro 3EM im Zählerschrank und einen EM beim Balkonkraftwerk. Wie wirkt sich das auf die Datei aus? Was muss ich ändern?
Grüße
Vielen Dank für die tolle Anleitung! Bei mir kann ich leider die Entitäten nicht auswählen. Scheinen aus dem Skript nicht übernommen zu sein. Leider weis ich nicht wie ich überprüfen kann wo der Fehler liegt. “Check configuration” ist bestanden. In den logs nichts zu sehen. Jemand eine Idee wo ich suchen sollte oder woran es liegen könnte?
Hast du nachdem du die neue Konfiguration getestet hast, Home Assistant auch neu gestartet?
Wenn ja, dann lösche mal den Cache deines Browsers. Home Assistant cached recht viel am Client.
Ich habe es hin bekommen. Fehler war:
In meiner configuration.yaml habe ich “sensor:” über einen Ordner inkludiert. Darin befinden sich wiederum einzelne *.yaml.
Habe dein Skript natürlich mit “Sensor:” am Anfang übernommen. Das weg, , formatiert, nun funktioniert es wie beschrieben. Vielen dank nochmal, auch für den schnellen Support!
Super, ich freu mich, dass es klappt!
Die Arbeit von Ihnen finde ich sehr gut. Bei mir ist das Problem das ich diese “Energy Export Daily” Entitität nicht aus wählen kann in dem Reiter “Return to Grid”.
Ich finde die Ursache dafür jedoch nicht. Hat jemand eine Idee woran das liegen kann?
Wäre für Hilfe dankbar
Aber den Energy Import kannst du hingegen auswählen? Vielleicht kannst du Online mal deine Konfiguration hochladen, damit ich mal einen Blick darauf werfen kann.
Habe leider das gleiche Problem.
Alles wie im Beispiel übernommen, die Entitäten sind auch vorhanden und zählen fleissig aber ich kann sie nicht auswählen..
Auch schade, dass die utility_meter-Entitäten nicht unter Helfer angezeigt werden, wie die manuell erstellten.
Fehler gefunden.
Da HA so abartig viel loggt und DB somit viel zu schnell wächst, habe ich die recorder-config so angepasst, dass ich nur include-entities als Statistik aufzeichne.
Dort müssen dann auch die Sensoren vom utility-meter rein.
recorder:
include:
entity_globs:
– sensor.energy_consumption_*
Nach einem HA-Neustart haben die Entitäten einen Verlauf und können dann auch im Energy-Dashboard ausgewählt werden..
Hattest du schon vorher an der Recorder Config was gemacht? Bei mir ist die noch jungfräulich und bislang konnte ich dein Problem nicht reproduzieren.
Den Energy Import Daily kann ich ja auswählen. Meinst Du die Config.yaml die ich laden soll ? Gerne hänge ich die hier mal an:
sensor:
– platform: template
sensors:
# Template sensor for values of power import (active_power > 0)
power_import:
friendly_name: “Power Import”
unit_of_measurement: ‘W’
value_template: >-
{% if (states(‘sensor.shelly3em_channel_a_power’)|float + states(‘sensor.shelly3em_channel_b_power’)|float + states(‘sensor.shelly3em_channel_c_power’)|float) > 0 %}
{{ states(‘sensor.shelly3em_channel_a_power’)|float + states(‘sensor.shelly3em_channel_b_power’)|float + states(‘sensor.shelly3em_channel_c_power’)|float }}
{% else %}
{{ 0 }}
{% endif %}
availability_template: “{{
[ states(‘sensor.shelly3em_channel_a_power’),
states(‘sensor.shelly3em_channel_b_power’),
states(‘sensor.shelly3em_channel_c_power’)
] | map(‘is_number’) | min
}}”
# Template sensor for values of power export (active_power –
{% if (states(‘sensor.shelly3em_channel_a_power’)|float + states(‘sensor.shelly3em_channel_b_power’)|float + states(‘sensor.shelly3em_channel_c_power’)|float) –
{% if (states(‘sensor.power_export’)|float(0)) > 0 and (states(‘sensor.power_solargen’)|float(0) – states(‘sensor.power_export’)|float(0)) 0 and (states(‘sensor.power_solargen’)|float(0) – states(‘sensor.power_export’)|float(0)) > 0 %}
{{ (states(‘sensor.power_solargen’)|float(0)) – states(‘sensor.power_export’)|float(0) }}
{% else %}
{{ states(‘sensor.power_import’)|float(0) + states(‘sensor.power_solargen’)|float(0) }}
{% endif %}
# Sensor for Riemann sum of energy import (W -> Wh)
– platform: integration
source: sensor.power_import
name: energy_import_sum
unit_prefix: k
round: 2
method: left
# Sensor for Riemann sum of energy export (W -> Wh)
– platform: integration
source: sensor.power_export
name: energy_export_sum
unit_prefix: k
round: 2
method: left
# Sensor for Riemann sum of energy consumption (W -> Wh)
– platform: integration
source: sensor.power_consumption
name: energy_consumption_sum
unit_prefix: k
round: 2
method: left
utility_meter:
energy_import_daily:
source: sensor.energy_import_sum
name: Energy Import Daily
cycle: daily
energy_import_monthly:
source: sensor.energy_import_sum
name: Energy Import Monthly
cycle: monthly
energy_export_daily:
source: sensor.energy_export_sum
name: Energy Export Daily
cycle: daily
energy_export_monthly:
source: sensor.energy_export_sum
name: Energy Export Monthly
cycle: monthly
energy_consumption_daily:
source: sensor.energy_consumption_sum
name: Energy Consumption Daily
cycle: daily
energy_consumption_monthly:
source: sensor.energy_consumption_sum
name: Energy Consumption Monthly
cycle: monthly
Hallo Klaus,
Bitte um Hilfe, habe soeben im HA die configuration.yaml wie oben beschrieben angepasst, geprüft, neu gestartet, kann aber leider die 2 Entitäten (Energy Import Daily, Energy Export Daily)im Energy Dashboard nicht auswählen, fällt dir an meiner configuration.yaml etwas besonderes auf?
# Loads default set of integrations. Do not remove.
default_config:
# Load frontend themes from the themes folder
frontend:
themes: !include_dir_merge_named themes
# Text to speech
tts:
– platform: google_translate
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
sensor:
– platform: template
sensors:
# Template sensor for values of power import (active_power > 0)
power_import:
friendly_name: “Power Import”
unit_of_measurement: “W”
value_template: >-
{% if (states(‘sensor.shelly3em_channel_a_power’)|float + states(‘sensor.shelly3em_channel_b_power’)|float + states(‘sensor.shelly3em_channel_c_power’)|float) > 0 %}
{{ states(‘sensor.shelly3em_channel_a_power’)|float + states(‘sensor.shelly3em_channel_b_power’)|float + states(‘sensor.shelly3em_channel_c_power’)|float }}
{% else %}
{{ 0 }}
{% endif %}
availability_template: “{{
[ states(‘sensor.shelly3em_channel_a_power’),
states(‘sensor.shelly3em_channel_b_power’),
states(‘sensor.shelly3em_channel_c_power’)
] | map(‘is_number’) | min
}}”
# Template sensor for values of power export (active_power –
{% if (states(‘sensor.shelly3em_channel_a_power’)|float + states(‘sensor.shelly3em_channel_b_power’)|float + states(‘sensor.shelly3em_channel_c_power’)|float) –
{% if (states(‘sensor.power_export’)|float(0)) > 0 and (states(‘sensor.power_solargen’)|float(0) – states(‘sensor.power_export’)|float(0)) 0 and (states(‘sensor.power_solargen’)|float(0) – states(‘sensor.power_export’)|float(0)) > 0 %}
{{ (states(‘sensor.power_solargen’)|float(0)) – states(‘sensor.power_export’)|float(0) }}
{% else %}
{{ states(‘sensor.power_import’)|float(0) + states(‘sensor.power_solargen’)|float(0) }}
{% endif %}
# Sensor for Riemann sum of energy import (W -> Wh)
– platform: integration
source: sensor.power_import
name: energy_import_sum
unit_prefix: k
round: 2
method: left
# Sensor for Riemann sum of energy export (W -> Wh)
– platform: integration
source: sensor.power_export
name: energy_export_sum
unit_prefix: k
round: 2
method: left
# Sensor for Riemann sum of energy consumption (W -> Wh)
– platform: integration
source: sensor.power_consumption
name: energy_consumption_sum
unit_prefix: k
round: 2
method: left
utility_meter:
energy_import_daily:
source: sensor.energy_import_sum
name: Energy Import Daily
cycle: daily
energy_import_monthly:
source: sensor.energy_import_sum
name: Energy Import Monthly
cycle: monthly
energy_export_daily:
source: sensor.energy_export_sum
name: Energy Export Daily
cycle: daily
energy_export_monthly:
source: sensor.energy_export_sum
name: Energy Export Monthly
cycle: monthly
energy_consumption_daily:
source: sensor.energy_consumption_sum
name: Energy Consumption Daily
cycle: daily
energy_consumption_monthly:
source: sensor.energy_consumption_sum
name: Energy Consumption Monthly
cycle: monthly
Danke.
Hallo, ich hatte das gleiche Problem. Bei mir lag es wohl das meine Sensoren anders heißen. Anstelle von
sensor.shelly3em_channel_…
=>
sensor.shelly_em3_channel_…
Nach der Änderung und Neustart konnte ich beide auswählen. Vielleicht mal das prüfen.
Grüße
Scheinbar bin ich ja nicht der einzige der das Problem hat ! Ich habe jetzt testweise erstmal “Energy Export Monthly” ist die kleinste Option die ich dort auswählen kann.
Hat sonst noch keiner eine Lösung für unser Problem gefunden ?
Gruß Lothar
Schau mal unter Entwicklerwerkzeuge / Statistik, bei mir war da ein Problem mit energy_export daily wegen der Einheit, da kannst du auf beheben klicken, dass hat bei mir geholfen.
Markus
Hi Markus,
habe das selbe Problem der Energy Export Daily wird einfach nicht als Sensor bei Return to Grid angezeigt, allerdings kann ich in der Statistik nicht auf beheben klicken, der Punkt wird mir nicht angezeigt.
Alle anderen Sensoren haben eine Einheit (kwh) nur das Feld bei Energy Export Daily ist leer.
Hat jemand eine Idee.
Ich habe zu Testzwecken eine neue Home Assistant Installation gemacht. Ich konnte dies reproduzieren, “Energy Export Daily” war unmittelbar nicht auswählbar. Aber nach einige Stunden hingegen war er vorhanden und ich konnte ihn einbinden. Habt ein wenig Geduld. Jede weitere Veränderung der Konfiguration führt unweigerlich dazu, dass es noch länger dauert!
Ich erhalte im Dashboard leider die Fehlermeldung: statistics_not_defined (für sensor.energy_import_daily
sensor.energy_export_daily)
Woran kann das liegen?
Viele Grüße und vielen Dank für die tolle Anleitung
Benny
Hallo Klaus,
vielen Dank für die Anleitung.
Danke für die super Anleitung.
Eine Frage hätte ich aber noch. Nimmt man bei dem Energiedashboard bei Solar Produktion den Sensor kWh Total oder Wh daily?
Gruß Phil
Hi,
hier keine der “Hilfs”-Variablen aus der yaml-Konfiguration nehmen. Hier musst du deine “PV-Produktionszähler” hinzufügen. Bei mir sind das zwei Shelly Plug S. Siehe Bild unter 3) im Blog Beitrag.
Grüsse,
Klaus
Hallo, das mit dem Produktionszähler ist schon klar, aber hier muss ich doch den Tageswert nehmen, da du bei grid consumption doch auch einen Tageswert nimmst ( Energy import daily)
Oder sehe ich das falsch?
Ja, genau. wenn du alles gleich benannt hast, dann folge genau diesen Schritten mit diesen Bezeichnungen:
1. Klicke unten links im Hauptmenü auf “Settings”.
2. Klicke dann auf “Dashboards”.
3. Klicke dann auf das “Energy” Dashboard.
4. Füge die neue Entity “Energy Import Daily” bei “Grid Consumption” hinzu.
5. Füge die neue Entity “Energy Export Daily” bei “Return to Grid” hinzu.
6. Bei den “Solar Panels” bitte den Zähler für eure PV Produktion hinzufügen. In meinem Fall sind das zwei Shelly Plug S, weil ich zwei Module habe.
Hallo Klaus,
super ausführliche Anleitung! Danke dafür :)
Ich habe das Problem das ich bei Return to Grid die “Energy Export Daily” Entität nicht auswählen kann.
Den Code habe ich 1:1 von dir kopiert, lediglich den Name des Shelly EM3 habe ich geändert, hast du eine Idee an was das liegen kann?
Gruß
Erik
Der Code dürfte nicht vollständig erklärt werden – habe das gleiche Problem. Es reicht offenbar nicht nur die drei Phasen umzubenennen – sondern offenbar müssen auch auch “sensor.power_export” und “sensor.power_solargen” in der jeweiligen Installation angepasst werden. Nur ist mir im Moment nicht ganz klar, was ich da nehmen soll (habe keine Shelly, sondern die SolisCloud wo ich die Verbräuche geliefert bekomme)
Hallo Klaus,
ich hänge mich mal an die Frage von Erik, denn ich habe dasselbe Problem und dieselben Voraussetzungen (Code kopiert, Name des Shellys angepasst, Energy Import Daily kann ich auswählen, Energy Export kommt nicht in der Auswahl vor)
Grüße Sebastian
Hallo Erik,
ich hatte ebenfalls das Problem. Anfangs konnte ich Energy Export Daily und Monthly nicht im Dashboard wählen. Die Energy Import Daily und Monthly standen gleich zur Verfügung. Unter Entwicklerwerkzeug – Statistik waren bei diesen die Einheit leer. Am nächsten Tag war die Einheit bei Energy Export Monthly von alleine verfügbar. Bei Energy Export Daily hat sich auch nach mehreren Tagen/Neustarts keine Einheit “gebildet” obwohl im Verlauf die Leistung angezeigt wurde.
Unter Entwicklerwerkzeug – Zustände habe ich dann die fehlenden Einträge analog der funktionierten ergänzt (unit_of_measurement: kWh und device_class: energy). Ich bin HA Laie muss ich anmerken, die eigentliche Ursache zu finden wäre natürlich besser. Ich habe den Code kopiert und nur den Namen der der Shelly geändert.
Gruß
Mario
Ich habe zu Testzwecken eine neue Home Assistant Installation gemacht. Ich konnte dies reproduzieren, “Energy Export Daily” war unmittelbar nicht auswählbar. Aber nach einige Stunden hingegen war er vorhanden und ich konnte ihn einbinden. Habt ein wenig Geduld. Jede weitere Veränderung der Konfiguration führt unweigerlich dazu, dass es noch länger dauert!
Hallo,
super Arbeit. Ich habe den code auch 1:1 übernommen.
Auch ich habe das Problem das “Energy Export Daily” im Energy Dashboard nicht ausgewählt werden kann.
In den Statistiken der Entwicklertools konnte ich sehen das das Entity “Energy Export Daily” das einzige Entity ist welches keine Unit aufweist. Also kein kWh wie alle anderen gelisteten Entitys. Ich denke deshalb kann es nicht ausgewählt werden. Werte sind vorhanden. Nun ist die Frage warum bei dem Entity der Unit Wert “kWh” nicht vom Sensor übernommen wird.
Irgend jemand eine Idee wie dies gefixt werden kann? Home Assistant bietet mir keinen automatischen fix an.
Gruß
Cleo
Ich habe zu Testzwecken eine neue Home Assistant Installation gemacht. Ich konnte dies reproduzieren, “Energy Export Daily” war unmittelbar nicht auswählbar. Aber nach einige Stunden hingegen war er vorhanden und ich konnte ihn einbinden. Habt ein wenig Geduld. Jede weitere Veränderung der Konfiguration führt unweigerlich dazu, dass es noch länger dauert!
Hallo nochmal,
für alle die Probleme haben “Energy Export Daily” bei der Konfiguration des Energy Dashboards aus zu wählen kann ich einen workaround anbieten. Ich habe keine Ahnung warum es nicht funktioniert vielleicht ist es ein bug im home assistant.
Mir hat es geholfen im GUI einen neuen “Energy Export Daily2” zu erzeugen und diesen Einzubinden.
Hier das Vorgehen:
Links im GUI Einstellungen-> Geräte & Dienste-> Tab Helfer wählen.
Unten rechts Helfer erstellen-> Verbrauchszähler
Neuen Namen vergeben
Bei Eingangszähler “energy_export_sum” wählen
Zähler reset Zyklus “Täglich”
Rest auf standard lassen und Absenden drücken.
Anschließend den gerade erstellten Verbrauchszähler wie oben beschrieben ins Energy Dashboard einbinden.
Bei mir hats geklappt.
Danke dir für den Workaround, jetzt kann ich den “neuen” Zähler angeben.
Er zeigt mir allerdings statistics_not_defined sensor.strom_ruckgabe in der Dashboard config an.
Im Dashboard selbst steht “Netzneutralität konnte nicht berechnet werden” sowie “Selbst verbrauchte Solarenergie konnte nicht berechnet werden”
Hat jemand ähnliche Phänomene, oder muss mir hier auch erstmal 2 Stunden warten bis das Dashboard richtig rechnet?
Gruß
Erik
Bitte warte min 2 Stunden, dann sollten die Meldungen verschwunden sein!
Hallo zusammen,
ich hätte auch eine kurze Frage bzw. zwei:
1. Das sensor.power_solargen wird genau durch was ersetzt? Die Phase wo das BKW drauf hängt vom 3EM oder kommt hier der shelly vom BKW rein? Es kommt ja insgesamt 4 mal vor, wo kommt genau was rein?
Bei mir saldiert das Skript aktuell die Einspeisung plus den Netzbezug zusammen, was ja falsch ist.
2. Der Sensor Daily export erscheint bei mir, allerdings habe ich in der config beim Dashboard folgenden Fehler dazu: Unerwartete Geräteklasse
Die folgenden Entitäten haben nicht die erwartete Geräteklasse:
sensor.energy_export_daily
Wie behebe ich dieses Problem?
Vielen Dank vorab
Hallo gemeinsam,
ich versuche gerade die Anzeige im Energy Dashboard von Kilowatt auf Watt bzw. von Kilowattstunden auf Wattstunden anzupassen.
Wo bzw. wie kann ich das denn ändern?
VG J
Hallo Johannes,
das weiß ich offen gesagt auch nicht. Hat jemand anderes eine Idee?
Grüsse,
Klaus
Hallo!
Vielen danke für die Anleitung!
Habe leider ein Problem welches ich nicht in den griff bekomme :(
Unter Entwicklerwerkzeuge->Zustände steht “sensor.energy_export_monthly” und “sensor.energy_export_sum” auf unknown.
Folglich kann ich auch im Energiedashboard “Energy export Daily” nicht auswählen.
Habe mittlerweile 24 stunden gewartet.. Davor schon x-male meine Shelly Sensoren überprüft, komme aber auf keinen Fehler. Mich verlässt langsam der Mut :(
Über eine Hilfestellung oder Tipp würde ich mich sehr freuen, bin leider noch blutiger Anfänger was Home Assistant angeht.
Anbei meine config.yaml
# Loads default set of integrations. Do not remove.
default_config:
# Load frontend themes from the themes folder
frontend:
themes: !include_dir_merge_named themes
# Text to speech
tts:
– platform: google_translate
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
sensor:
– platform: template
sensors:
# Template sensor for values of power import (active_power > 0)
power_import:
friendly_name: “Power Import”
unit_of_measurement: ‘W’
value_template: >-
{% if (states(‘sensor.shellyem3_485519dc3fef_channel_a_power’)|float + states(‘sensor.shellyem3_485519dc3fef_channel_b_power’)|float + states(‘sensor.shellyem3_485519dc3fef_channel_c_power’)|float) > 0 %}
{{ states(‘sensor.shellyem3_485519dc3fef_channel_a_power’)|float + states(‘sensor.shellyem3_485519dc3fef_channel_b_power’)|float + states(‘sensor.shellyem3_485519dc3fef_channel_c_power’)|float }}
{% else %}
{{ 0 }}
{% endif %}
availability_template: “{{
[ states(‘sensor.shellyem3_485519dc3fef_channel_a_power’),
states(‘sensor.shellyem3_485519dc3fef_channel_b_power’),
states(‘sensor.shellyem3_485519dc3fef_channel_c_power’)
] | map(‘is_number’) | min
}}”
# Template sensor for values of power export (active_power –
{% if (states(‘sensor.shellyem3_485519dc3fef_channel_a_power’)|float + states(‘sensor.shellyem3_485519dc3fef_channel_b_power’)|float + states(‘sensor.shellyem3_485519dc3fef_channel_c_power’)|float) –
{% if (states(‘sensor.power_export’)|float(0)) > 0 and (states(‘sensor.power_solargen’)|float(0) – states(‘sensor.power_export’)|float(0)) 0 and (states(‘sensor.power_solargen’)|float(0) – states(‘sensor.power_export’)|float(0)) > 0 %}
{{ (states(‘sensor.power_solargen’)|float(0)) – states(‘sensor.power_export’)|float(0) }}
{% else %}
{{ states(‘sensor.power_import’)|float(0) + states(‘sensor.power_solargen’)|float(0) }}
{% endif %}
# Sensor for Riemann sum of energy import (W -> Wh)
– platform: integration
source: sensor.power_import
name: energy_import_sum
unit_prefix: k
round: 2
method: left
# Sensor for Riemann sum of energy export (W -> Wh)
– platform: integration
source: sensor.power_export
name: energy_export_sum
unit_prefix: k
round: 2
method: left
# Sensor for Riemann sum of energy consumption (W -> Wh)
– platform: integration
source: sensor.power_consumption
name: energy_consumption_sum
unit_prefix: k
round: 2
method: left
utility_meter:
energy_import_daily:
source: sensor.energy_import_sum
name: Energy Import Daily
cycle: daily
energy_import_monthly:
source: sensor.energy_import_sum
name: Energy Import Monthly
cycle: monthly
energy_export_daily:
source: sensor.energy_export_sum
name: Energy Export Daily
cycle: daily
energy_export_monthly:
source: sensor.energy_export_sum
name: Energy Export Monthly
cycle: monthly
energy_consumption_daily:
source: sensor.energy_consumption_sum
name: Energy Consumption Daily
cycle: daily
energy_consumption_monthly:
source: sensor.energy_consumption_sum
name: Energy Consumption Monthly
cycle: monthly
Hallo,
würde das ganze auch mit einer FritzDect 200 Steckdose in Verbindung mit dem Shelly 3m funktionieren?
Ja, das müsste auch mit einer Fritzdect klappen, wenn du diese in HomeAssistant integrieren kannst. Davon gehe ich aber aus!
Vielen Dank,
es hat tatsächlich geklappt mit der Fritz Dect Steckdose.
Dank deiner Beiträge kann sogar ich als absoluter Anfänger etwas mit Homeassistant basteln.
Anfänglich hatte ich Probleme, da mein Shelly3em mit komplett anderen Bezeichnungen als in deinem Script daher kam. Konnte es aber fixen durch umbenennen der Entitäten heißt es glaub.
Als nächstes möchte ich eine Powerstation bei Stom Überschuss laden, da hast du ja auch eine schöne Anleitung um die entsprechende Steckdose zu schalten.
Danke nochmals
Hallo,
das Projekt läuft ja jetzt theoretisch schon eine Weile. Hast du mal die Werte vom Zähler mit den Werten in HomeAssistant verglichen? Passt das zueinander? mich würde mal interessieren wie groß die Abweichung ist.
Beste Grüße
Hallo Christian,
leider habe ich erst vor 4 Wochen einen Zweirichtungszähler durch den Netzbetreiber installiert bekommen. Auf Basis des ersten Monats liegt die Abweichung bei 5%, sowohl beim Bezug aus dem Netz als auch für die Einspeisung. in 2-3 Monaten mach ich hier mal ein Update mit validen Vergleichen.
Grüsse, Klaus
Hallo aus Wien,
zuerst danke für den tollen Skript! Ich als Laie, würde das so nicht hinbekommen ohne mich sehr in Python einzuarbeiten.
Ich habe die Namen des 3EM Shelly angepasst und aktuell läuft alles gut. Nur auf den Sensor “Energy Export Daily” warte ich schon seit mehr als einen halben Tag. Der Sensor “Energy Export Monthly” war nach ein paar Stunden verfügbar und habe ihn temporär eingesetzt anstelle des Daily Sensors.
Ist das so normal, oder habe ich etwas falsch gemacht? Welcher Sensor misst den Solarstrom (habe den Shelly EM in Verwendung)
LG Rudi
Hast du HomeAssistant testweise auch mal neu gestartet?
ja schon mehrmals
LG Rudi
Was mir aufgefallen ist, ist dass der Export Daily sensor im Übersichtsdashboard sichtbar ist und Daten anzeigt. Allerdings ohne Einheiten Kwh.
ja genau das problem habe ich auch …. auch nach 48 stunden
wenn man unter zustand bei export daily = unit_of_measurement: kWh einfügt geht es auch für paar stunden bis es wieder auf ohne kWh angepasst wird
Hallo,
ich habe leider das selbe Problem. Auch nach mehreren Tagen ist Export Daily nicht auswählbar.
Auch bei mir ist der Sensor unter Statistik sichtbar mit Daten, aber ohne Einheit.
Ich habe mehrfach neugestartet, gewartet und auch schon das Skript entfernt und neu aufgesetzt.
Leider komme ich nicht weiter.
Hat noch jemand eine Idee?
Gruß
Sascha
Hallo,
bei mir das gleiche Problem. Export Daily sensor lässt sich auch nach Neuinstallation, tagelangen Warten etc. nicht integrieren. Bei mir wird der sensor auch unter Statistik angezeigt, nur ebenfalls ohne Einheit.
Hat noch jemand eine Idee, ich bin am Verzweifeln?
Danke
Sascha
Hallo zusammen, erstmal vielen Dank für die Zusammenfassung.
Ich habe das Script so übernommen (ausschließlich die Entitäts-ID angepasst).
Allerdings steht überall “Unbekannt” oder “Nicht verfügbar”, Wartezeit ca. 2h. Muss ich noch länger warten oder wie kann ich mir den Fehler erklären?
Vielen Dank und Gruß
Erst einmal, super Arbeit! Das hat mir extrem geholfen. Zudem ist die Genauigkeit auch wirklich gut! Alles klappt.
Aber ich habe eine Verständnisfrage.
Im Export / Return to grid, werden natürlich die Daten sauber erfasst. Dass soll ja so auch sein.
Problem ist aber, in der Gesamttabelle wird dieser Wert ebenfalls mit einbezogen so das die „return to grid“ Werte vom Verbrauch Einfalls abgezogen werden. Das stimmt doch bei den neuen Smart Metern nicht mehr. Der Strom den ich einspeise, der ist ja quasi futsch.
Also müsste der Wert doch aus der Berechnungstabelle ausgenommen werden?!?
Hallo,
danke für das tolle script. Ich bastele auch schon seit Tagen an meiner Solar Inegration.
Habe eine Frage an alle Shellyem3 Benutzer:
states(‘sensor.shelly3em_channel_a_power’),
states(‘sensor.shelly3em_channel_b_power’),
states(‘sensor.shelly3em_channel_c_power’)
das scheinen ja die einzelnen Leistungsmessungen der drei Phasen zu sein, gemessen in Watt.
Wenn jetzt die Solaranlage bei euch auf einer Phase mehr einspeist als verbraucht wird, wird der Wert dann negativ beim Shelly? und wird Dieser dann als z.B “Phase A: -120W” angezeigt?
Danke und Gruß
Dirk
Yes, da sollte dann ein negativer Wert stehen. Schau mal ich habe im einen Screenshot von Homeassistant eingefügt: Meine PV läuft auf Phase C und da ist es negativ:
@IAMKLAUS:
Dankeschööön!
Habe keinen Shelly, versuche das aber gerade für mein Home Energy Meter Gen5 System anzupassen ;-)
Die Fehlermeldung “Unerwartete Geräteklasse” beim Hinzufügen der Entitäten zum Energie Dashboard hatte ich auch. Lösung ist, die Template Sensoren wie power_import, power_export, power_consumption, power_solar benötigen jeweils noch folgende Zeile:
device_class: power
Die Fehlermeldung beim Hinzufügen der Entitäten zum Energie Dashboard, dass diese keine Statistik haben, hatte ich auch, hier war die Lösung, dass mach sicher stellen muss, dass die Recorder Komponente nicht nur die Sensoren sondern auch die Utility Meter mit aufzeichnet, also auch die mit _sum und _sum_cost am Ende. Beispiel:
recorder:
include:
entities:
– sensor.power_export
– sensor.power_import
– sensor.power_consumption
– sensor.power_solar
– sensor.energy_consumption_sum
– sensor.energy_consumption_sum_cost
– sensor.energy_export_sum
– sensor.energy_export_sum_cost
– sensor.energy_import_sum
– sensor.energy_import_sum_cost
– sensor.energy_solar_sum
– sensor.energy_solar_sum_cost
Hallo (IAM)Klaus, auch von mir ein herzliches Dankeschön für diesen Blogbeitrag, der mir sehr geholfen hat, mehr vom ganzen Thema zu verstehen.
Anfangs ging es mir wie vielen, die hier kommentiert haben, dass nichts ging. Daher habe ich versucht zu verstehen, woran es liegen kann und habe mir erstmal https://siytek.com/home-assistant-automation-tutorial-for-dummies/ angesehen um das Thema Entity und ID zu verstehen.
Dabei ist mir klargeworden, dass man das obige Skript nur 1:1 nutzen kann, wenn man die verwendeten Entitäten der Shelly auch so benennt, wie sie im Skript stehen, oder im Skript so benennt, wie sie nach der Integration der Shelly benannt wurden.
Ich habe daher mit Notepad++ im Skript
‚sensor.shellyem3_‘ durch ‚sensor.shellyem3_485519dc0971_‘ ersetzt, wobei shellyem3_485519dc0971 die unikale ID meiner Shelly ist und ihr natürlich Eure nehmen müsst.
Voila nach 1h klappt alles. Ich würde mich freuen, wenn es anderen hilft.
Ich möchte mich dem Dank der Vorredner an Klaus anschließen :-)
Leider muss ich mich auch in die Reihe derer einreihen, die „Energy Export Daily“ im Energiedashboard nicht auswählen können :-(
Ich habe alles beachtet und versucht (Neu starten, geduldig warten). Ich kann im Dashboard eine Gauge mit “Energy Export Daily” erstellen, *NUR* im Energy-Dashboard ist die Entität nicht auswählbar.
In meiner Not habe ich mal probiert einen zweiten Sensor für die Riemann-Summe des Exports und ein Utility Meter (Energy Export Daily3) zu erstellen. Es war sofort auswählbar und nach wenigen Minuten begann die Statistik.
Hat irgendjemand eine Idee, warum das so ist?
Hallo mit einander ,
vielem dank erstmal für die tolle Anleitung. Ich habe siebumgesetzt und sie funktioniert auch.
Nur ich habe noch ein Problem! Ich habe insgesamt 3 shelly 3em. Wie kann ich jetzt alle 3 hinzufügen? Welchen Namen muss ich dann alles ändern? reicht es das Skript 3 mal auszuführen mit 3 verschiedenen shelly namen angepasst? Da komme ich grade nicht weiter. Weiß einer Rat? Danke!
Hast du eine Übersicht wie dein Aufbau aussieht? Hast du 3 Stromanschlüsse in einem Haus die du überwachen willst oder hast du 3 Häuser?
Nach 2 Tagen intensiver Analyse und den beiden oben stehenden “verzweifelt-hoffenden” posts glaube ich die Ursache für das Problem mit “Energy Export Daily” gefunden zu haben – auch warum es bei manchen gleich geht und bei manchen auch nach längerer Wartezeit nicht. Bei mir ist es nämlich aktuell noch so, dass ich mit der 3em erstmal testweise messe und dort wo ich messe erfolgt Null-Stromeinspeisung. Also ist der Wert für “power_export” konstant Null (Zeile 30). Mit einem konstanten Wert startet allerdings die Berechnung der Riemannsumme (Zeile 60) nicht/nie. Ich habe daher in Zeile 30 folgendes eingesetzt:
{{ -(range(1, 49) | random) }}
Damit liefert der sensor “power_export” eine Zufallszahl, die allerdings weiterhin konstant ist und nichts geht.
Es klappt erst, wenn man am Ende des Skriptes noch dafür sorgt, dass der Sensor z.B. 1x pro Sekunde aktualisiert wird.
Bei den Script-Snippets hat mir ChatGPT super geholfen.
Ich hoffe das hilft auch dem einen oder anderen :-)
#### Am Ende einfügen
automation:
– alias: “Update Random Number Sensor”
trigger:
platform: time_pattern
minutes: “/1”
action:
service: homeassistant.update_entity
entity_id: sensor.power_export
Danke für deine investigative Tätigkeit :-) Ich habe deinen Hinweis oben in der Anleitung mit aufgenommen.
Halo Uwe,
danke für Deine Recherche. Leider führt aber die Erweiterung:
Zeile 44 (bei mir):
{{ -(range(1, 49) | random) }}
und am Ende zugefügt:
automation:
– alias: “Update Random Number Sensor”
trigger:
platform: time_pattern
minutes: “/1”
action:
service: homeassistant.update_entity
entity_id: sensor.power_export
zu vielen Fehermeldungen:
=============
duplicated mapping key (116:1)
113 | source: sensor.energy_consu …
114 | name: Energy Consumption Mo …
115 | cycle: monthly
116 | automation:
——-^
117 | – alias: “Update Random Number …
118 | trigger:
============
Wenn man bei den Entwicklerwerkzeuge das YAML prüfen lässt kommt folgendes:
Integration error: service – Integration ‘service’ not found.
Integration error: entity_id – Integration ‘entity_id’ not found.
Integration error: minutes – Integration ‘minutes’ not found.
Integration error: – – Integration ‘–’ not found.
Integration error: platform – Integration ‘platform’ not found.
Integration error: trigger – Integration ‘trigger’ not found.
Integration error: action – Integration ‘action’ not found.
Gruß
Rudi
Hallo Rudolf,
der Fehler “duplicated mapping key” wird mir im Fileeditor auch angezeigt. Trotzdem klappt es (irgendwie).
Unter Entwicklerwerkzeuge finde ich keine weiteren Fehler. Komisch. Mir ging es eigentlich auch nur drum zu verstehen, warum es bei Manchen (und mir) gar nicht ging.
Nimm mal die Invertierung der Zufallszahl in besagter Zeile raus: Aus
{{ -(range(1, 49) | random) }} mache {{ range(1, 49) | random }}. Da hatte bei mir im Energy-Dashboard was falsch saldiert.