PV-Anlage in FHEM – Die Datenbasis für das Dashboard

Neulich habe ich bereits einen ersten Überblick gegeben, welche Geräte ich aus meiner Solaranlage in FHEM eingebunden habe. Heute möchte ich tiefer ins Detail gehen und den ersten Schritt der Umsetzung darstellen. In diesem Artikel geht es also konkret darum, welche FHEM-Module ich genutzt habe und welche Daten ich in erster Linie ermittle. In einem weiteren Beitrag gehe ich dann auf die Visualisierung der entsprechenden PV-Werte ein. Wahrscheinlich wird es dann noch einen weiteren Beitrag geben, der sich mit der Prognoseermittlung und -darstellung beschäftigen wird.

Meine Photovoltaik Geräte und die zugehörigen abrufbaren Daten

Unsere Photovoltaikanlage besteht komplett aus SMA Geräten. Natürlich wird ein Wechselrichter benötigt, der aus dem Gleichstrom der PV-Module den Wechselstrom für den Hausgebrauch umwandelt. Zusätzlich haben wir noch einen sogenannten EnergyMeter im Einsatz. Mit diesem Gerät kann der Netzbezug ermittelt werden aber auch die Einspeisung ins Netz. In unserem Fall haben wir den Sunny HomeManager 2.0 von SMA im Einsatz. Hier ist der EnergyMeter mittlerweile direkt integriert. Der HomeManager übernimmt dann zusätzlich die Kommunikation mit dem SunnyPortal – einer Cloud-Lösung – und unterstützt die entsprechenden Funktionen zur Steuerung der eingebundenen Verbraucher. Leider besteht hier mittlerweile kein direkter Zugriff mehr auf entsprechende Informationen.

Daten des Wechselrichters

Über den Wechselrichter lässt sich nun ermitteln, wieviel Sonnenenergie erzeugt werden konnte. Wir haben einen 3-Phasen Wechselrichter, so dass grundsätzlich für jede einzelne Phase die Spannungs- und Stromwerte ermittelt werden können. Die Werte lassen sich einmal für die Gleichstromseite (DC) und für die Wechselstromseite (AC). Also den Werten, die über die Solarmodule erzeugt werden und den Werten, die dem Haus nach der Umwandlung zur Verfügung gestellt werden.

Über eine Webseite des Wechselrichters können auch noch diverse andere Informationen und Parameter ermittelt werden, die für den normalen Gebrauch allerdings nicht so relevant sind.

SMA Wechselrichter – Dashboard

In der Grafik ist das Dashboard des SMA Wechselrichters zu sehen. Hier sieht man die aktuell erzeugte Solarleistung, allgemeine Ertragsinfos sowie den Netzbezug. Der Netzbezug wird allerdings nicht direkt vom Wechselrichter ermittelt, sondern über den EnergyMeter gelesen und hier nur zusätzlich dargestellt. In der Grafik „Leistung am Netzanschlusspunkt“ wird gerade angezeigt, dass 389W ins Netz eingespeist werden. Auch diese Info kommt vom EnergyMeter.

Daten des Energy Meter

An die Daten des Energy Meters kommt man als normaler Anwender grundsätzlich nur indirekt über den HomeManager. Der HomeManager selbst wird über das Sunny Portal gesteuert und dort können dann auch die entsprechenden Informationen abgerufen werden.

Wie schon erwähnt liefert das Energy Meter-Gerät pro Phase die Spannungs- und Stromwerte, die vom Netz bezogen werden sowie die Werte, die ins Netz eingespeist werden. Er macht im Prinzip also das gleiche, was auch der Zweirichtungszähler macht, der vom Netzbetreiber installiert wird.

Sunny Portal Übersicht – Statusinfos, die u.a. vom Energy Meter kommen

FHEM Modul für den SMA Wechselrichter

Für den Wechselrichter von SMA gibt es bei FHEM das Modul SMAInverter, welches ich für den Zugriff auf die Daten nutze. Die Definition ist relativ simpel und man benötigt die IP-Adresse und das Passwort.

define <name> SMAInverter <pin bzw. passwort> <hostname/ip>

Das Modul hat ein Attribut „detail-level“ mit dem man den Umfang der Readings definieren kann. Ich lasse mir aktuell alle Readings anzeigen, auch wenn ich diese nicht wirklich benötige. Die verfügbaren Werte sind alle in der Beschreibung des Moduls enthalten, so dass ich diese nicht im Detail vorstellen muß.

Der wichtigste Werte ist wohl SPOT_PACTOT, der die aktuelle Erzeugung anzeigt. Das Abfrageintervall habe ich auf 60 Sekunden belassen, so dass jede Minute der aktuelle Wert ermittelt wird. Interessant dürften dann noch die Werte SPOT_ETODAY und SPOT_ETOTAL. Diese Werte informieren über den Tagesertrag und den Gesamtertrag seit Installation der Anlage.

Hilfreich sind dann eventuell noch die Werte avg_power_lastminutes_05(10/15), die den Durchschnittsertrag der letzten 5, 10 und 15 Minuten anzeigen. Diese Werte kann man ganz gut für die graphische Darstellung verwenden.

FHEM Modul für den SMA Energy Meter

Für die Eindbindung des Energy Meter von SMA nutze ich das FHEM Modul SMAEM. Die Definition ist noch einfacher und besteht im Prinzip nur aus der Angabe des gewünschten Namen. Die Kommunikation erfolgt über ein Multicast Netzwerk, so dass das Modul selbstständig das Energy Meter Gerät findet und Daten empfangen kann.

define <name> SMAEM [<Interface>]

Standardmäßig wird im Namen der Readings die Seriennummer eingebaut. Möchte man seine Readings lesbarer halten, kann man dies Seriennummern mit dem Attribut „disableSernoInReading“ ausschalten. Das Modul bietet weiterhin die Möglichkeit, dass man den Preis festlegen kann, den man für die Einspeisung bekommt und den Preis, den man für den Netzbezug bezahlt. Diese Infos nutze ich allerdings nicht, da mir ehrlicherweise auch nicht ganz klar ist, was die entsprechenden „Diff“-Readings bedeuten. Die Doku ist hier etwas zurückhaltend und ich habe auch nicht danach gesucht, weil ich mir zusätzlich noch weitere Zählermodule für meine Datenermittlung eingerichtet habe (siehe nachfolgend).

Die wichtigsten Werte des Moduls sind Bezug_Wirkleistung sowie Bezug_Wirkleistung_Zaehler. Der Zählerwert gibt den Gesamtertrag in kWh an, seit dem die Anlage in Betrieb genommen wurde. Der Wert Bezug_Wirkleistung zeigt den jeweils aktuellen Ertrag in Wh an. Die entsprechenden Pendants sind dann die Werte für die Einspeisung Einspeisung_Wirkleistung und Einspeisung_Wirkleistung_Zaehler. Zusätzlich können diese Werte dann auch noch für alle Phasen einzeln ermittelt werden.

FHEM Zählermodule für weitere Informationen

Wenn man neben den aktuellen Werten sowie den Gesamtwerten noch zusätzliche Informationen sammeln möchte, dann könnte man sich natürlich eigene Funktionen schreiben, die einem diese Werte berechnen. Glücklicherweise gibt es aber auch hier recht interessante FHEM Module, die ich für meine Zwecke eingesetzt habe.

Das Modul ElectricityCalculator liefert eigentlich alles, was man wahrscheinlich für diverse historische Werte benötigt. Dieses Modul kann für diverse Möglichkeiten genutzt werden, wo man bestimmte Werte, wie mit einem Zähler dokumentieren möchte. Die Definition erfolgt mittels Regex-Ausdruck, der angibt, worher der Wert kommt, den das Modul zählen soll.

define <name> ElectricityCalculator <regex>

Ich habe mir damit drei verschiedene Zähler-Objekte angelegt. Jeweils einen für den Netzbezug, die Einspeisung sowie den PV-Ertrag. Nachfolgend das Beispiel für meinen Stromzähler, also den Netzbezug.

define myStromzaehler ElectricityCalculator smaenergy:Bezug_Wirkleistung_Zaehler:.*

Wie man sieht besteht das Regex-Ausdruck aus dem Namen meines Energy Meter und dem Zählerwert für den Netzbezug. Nachdem man das Modul angelegt hat werden diverse Zählerwerte und auch Kosteninformationen angezeigt. So werden tägliche, monatliche und jährliche Summen gebildet. Es lässt sich also immer feststellen, welcher Netzbezug heute vorlag, gestern, im aktuellen und im letzten Monat sowie im aktuellen und im letzten Jahr.

Über die Attribute kann ein Preis pro kWh definiert werden und auch eine jährliche Grundgebühr kann definiert werden. Damit werden dann auch immer die entsprechenden Kosten zu den jeweiligen Zählerwerten angezeigt. Gibt man dann noch seine monatlichen Abschläge ein, wird zusätzlich auch die Differenz zu den aktuellen Kosten auf Basis des tatsächlichen Verbrauchs berechnet. Man kann also sehen, ob man etwas zurück bekommt oder eine Nachzahlung fällig ist.

Da ich in meinem Stromzähler noch diverse Userreadings angelegt habe, sind im nachfolgenden Bild die Readings von dem Erzeugungszähler zu sehen, also den Werten aus dem Wechselrichter. Das Modul ist recht gut dokumentiert, so dass ich hier nicht näher auf die Einstellungen eingehe, die über die Attribute möglich sind. Wichtig ist hier eventuell der Wert ElectricityCounterOffset. Damit kann der Zähler dann beispielsweise mit dem realen Zähler abgestimmt werden.

Darüber hinaus ist in der Dokumentation sehr schön beschrieben, welche Werte man mit einem setreading-Befehl setzen sollte, damit man nicht 12 Monate warten muss. Hat man beispielsweise seinen Zähler zum Jahreswechsel abgelesen, dann kennt man den Wert für das Reading „…_CounterYear1st“ und kann diesen entsprechend setzen. Eventuell kann man die Werte auch aus seiner PV-Anlage auslesen. Der Tageswert ist sowieso nach einem Tag richtig und zum nächsten Monatsersten wäre auch der Monatswert in Ordnung.

Readings des FHEM Modul ElectricityCalculator für die PV-Erzeugung

Mit Userreadings zusätzliche Infos bereit stellen

Wie oben bereits erwähnt, habe ich noch diverse Userreadings erstellt, um unterschiedlichste berechnete Werte bereit zu stellen. Die interessantesten Werte sind wahrscheinlich die Autarkie sowie der Eigenverbrauchsanteil. Darüber hinaus habe ich mir noch kalkulatorische Kosten für den Eigenverbrauch und entsprechende Umsatzsteuer-Infos berechnet. Geplant war, dass ich damit die monatliche Umsatzsteuervoranmeldung recht einfach erstellen kann. Hier habe ich aber noch ein paar kleine Bugs drin, so dass ich bei Interesse gerne eine eigenen Beitrag zu diesem Thema veröffentlichen kann.

Die Userreadings habe ich mir alle in meinem Stromzähler angelegt und nutze diese Werte dann natürlich auch zur Anzeige in meinem PV-Dahsboard.

FHEM Tablet - PV Ansicht
FHEM Tablet – PV Ansicht

Berechnung der Autarkie

Die Autarkie gibt an, wieviel von der aktuell benötigten Energie durch die Sonnenenergie abgedeckt wird. Eine Autarkie von 100% bedeutet also, dass der komplette Stromverbrauch durch die aktuelle Erzeugung gedeckt werden kann. Die Berechnung ergibt sich also grundsätzlich durch folgende Formel:

Autarkiegrad = Eigenverbrauch / Gesamtverbrauch

Schaut man sich die Werte an, die man zur Berechnung benötigt, dann sind diese bisher in meinen Beschreibungen noch gar nicht aufgetaucht. Wir haben bisher die PV-Erzeugung, einen Wert für den Netzbezug und einen Wert für die Einspeisung. Sowohl der Eigenverbrauch als auch der Gesamtverbrauch müssen also mit diesen Werten berechnet werden.

Beginnen wir mit dem Eigenverbrauch oder auch Selbstverbrauch genannt. Das ist die Energie, die man vom erzeugten Solarstrom benötigt. Der eingespeiste Strom ist ja der PV-Strom, der nach dem Strom, welchen die aktuellen Verbraucher gerade alle benötigen, übrigbleibt. Dieser Eigenverbrauch lässt sich also durch folgende Berechnung ermitteln:

Eigenverbrauch = PV-Erzeugung – Einspeisung

Nachdem wir nun den Eigenverbrauch kennen, lässt sich der Gesamtverbrauch auch recht einfach ermitteln. Das ist die Summe aus dem Netzbezug und dem Eigenverbrauch also:

Gesamtverbrauch = Eigenverbrauch + Netzbezug

Damit sind alle Werte vorhanden und wir können in unserem Zähler nun beispielsweise das Userreading für die Autarkie auf Basis der Tageswerte berechnen:

EigenverbrauchDay {ReadingsNum("mySMA_WR","SPOT_ETODAY",0)/1000-ReadingsNum("myEinspeisezaehler","smaenergy_Einspeisung_Wirkleistung_Zaehler_EnergyDay",0)}

Die PV-Erzeugung wird direkt aus dem Wechselrichter-Modul ermittelt (SPOT_ETODAY) und den Tageswert für die Einspeisung habe ich aus dem Zählermodul für die Einspeisung ermittelt. Hier konnte ich nicht direkt auf das Modul für den Energy Meter zugreifen, weil das Modul keinen Tageswert liefert.

Der Wert für den Gesamtverbrauch sieht als Userreading wie folgt aus:

VerbrauchDay {ReadingsVal("mySMA_WR","SPOT_ETODAY",0)/1000-ReadingsVal("myEinspeisezaehler","smaenergy_Einspeisung_Wirkleistung_Zaehler_EnergyDay",0)+ReadingsVal("myStromzaehler","smaenergy_Bezug_Wirkleistung_Zaehler_EnergyDay",0)}

Hier hätte man in der Berechnung natürlich auch das Userreading „EigenverbrauchDay“ nehmen können, statt nochmals die Basiswerte für den Eigenverbrauch zu nutzen. Der Wert für den Netzbezug habe ich auch wieder aus dem Zählermodul ermittelt.

Nun kann das Userreading für den täglichen Autarkiegrad erstellt werden:

AutarkieDay {ReadingsVal("myStromzaehler","EigenverbrauchDay",0) / ReadingsVal("myStromzaehler", "VerbrauchDay",0)*100}

Für die Monats- und Jahreswerte sowie für die Werte der vorherigen Zeiträume kann man dann die Autarkie entsprechend berechnen. In meinem Dashboard werden die Werte im Kasten „Effizienz“ rotierend dargestellt.

Berechnung des Eigenverbrauchanteils

Die Berechnung des Eigenverbrauchsanteils ist nun relativ einfach. Der Eigenverbrauchsanteil gibt an, wieviel Prozent von der erzeugten Sonnenenergie für den aktuellen Gesamtverbrauch benötigt wird. Bei einem Verbrauch von 500 Watt und einer PV-Erzeugung von 1000 Watt liegt der Anteil bei 50%. Anders ausgedrückt heißt dies, das 50% des erzeugten Solarstroms nicht benötigt wird und damit ins Netz als Einspeisung fließt.

Die Berechnungsformel sieht also wie folgt aus:

Anteil-Selbstverbrauch = Gesamtverbrauch / PV-Erzeugung * 100

Das entsprechende Userreading sieht bei mir dann so aus:

EigenverbrauchAnteilDay {ReadingsNum("myErzeugungszaehler","mySMA_WR_SPOT_ETOTAL_EnergyDay",0) == 0 ? 0 : (ReadingsNum("myStromzaehler","EigenverbrauchDay",0)/ReadingsVal("myErzeugungszaehler","mySMA_WR_SPOT_ETOTAL_EnergyDay",0)*100)}

Aus dem Einspeisezähler für den Wechselrichter kommt der Tageswert für die Erzeugung. Hier hätte ich auch direkt das Wechselrichtermodul abfragen können. Der Stromzähler liefert den Eigenverbrauch. Ihr seht, dass es an ein paar Stellen noch ein paar Code-Optimierungen gibt, die ich nach meinen ersten Lösungsansätzen noch durchführen könnte ;-).

Damit sind sicherlich die grundlegenden Daten der PV-Anlage in meine FHEM Haussteuerung eingebunden. Falls euch sonstige Informationen fehlen, nutzt gerne die Kommentarfunktionen. Ich nehme immer gerne auch Anregungen auf, worüber ich sonst noch entsprechende Beiträge erfassen kann.

11 comments

  1. Moin,

    wenn ich Deine Beschreibungen und das Modul SMAEM richtig verstehe, dann sollte es doch auch funktionieren, wenn man einen „normalen“ smarten Zweiwege-Zähler vom Versorger hat, den man z.B. mit dem Obis-Modul ausliest? Solche Dinge wie die Einspeisevergütung oder Bezugspreis müßte man dann nur über User-Readings einfügen

    Gruß, Christoph

  2. Wenn man von diesem Zähler die Werte für Einspeisung und Netzbezug auslesen kann. Dann kann man die Kosten natürlich mit Userreadings abbilden. Wenn man das auch für Tages-, Monats-, Jahreswerte darstellen möchte, dann sollte man sich das FHEM-Modil EnergyCalculator anschauen.

  3. Hallo Jürgen,

    ich habe mich jetzt eine Weile nicht weiter damit beschäftigt…
    Wenn ich das jetzt richtig sehe, kann ich doch alle Daten mit dem Modul ElectricityCalculator aus dem Zwei-Richtungs-Zähler sowie dem Wechselrichter (ich habe einen SMA 7000TL-20) generieren. Z.B. Im Reading „MyObis_total_feed_PowerCurrent“ für das Einspeise-Zählwerk steht doch der aktuelle Wert, der gerade abgegeben wird, analog dazu in den entsprechenden Readings Bezugs- bzw. Erzeugungswert, oder liege ich da jetzt falsch. Ebenso müsste doch in „_EnergyDay“ der Tageswert zu Mitternacht stehen.

    Mit diesen Werten müsste ich doch jene Werte, die Du aus dem SMAEM erhälst, ersetzen können (den EM bekommt man im Moment – wenn überhaupt, nur überteuert oder erst gegen Ende des Jahres…)

    Gruß, Christoph

  4. Hallo Jürgen,

    sehr interessanter Artikel und schön, wie umfangreich du das in FHEM eingebunden hast.
    Mir ist leider doch nicht klar wie du die Readings:
    – myEinspeisezaehler
    – myErzeugungszaehler
    erzeugst. Kannst du mir da auf die Sprünge helfen?

    Besten Dank und viele Grüße,
    Alex

  5. Bei myEinsoeisezaehler und myErzeugungszaehler handelt es sich um virtuelle Geräte, die mit dem FHEM-Modul ElectricityCalculator erstellt wurden. Dies habe ich im Abschnitt „FHEM Zählermodule für weitere Werte“ kurz erläutert. Oder habe ich deine Frage vielleicht falsch verstanden?

  6. Hallo Jürgen,
    Klasse Erklärungen!
    Die Berechnungen habe ich bei mir inzwischen implementiert, funktioniert alles wie beschrieben.

    Könnte ich evt. auch die Definitionen für Deine Instrumente haben? Ich bin weit davon weg, das ich mir Diese selbst erstellen könnte.

    Vielen Dank für diesen Blog
    Claus

  7. Ich stelle gerne die verwendeten Module zur Verfügung,kann aber wahrscheinlich bis zum WE dauern.

  8. Thorsten Müller

    Hallo Jürgen,
    deine Erklärung find ich auch echt super.
    Bin neu in der Materie und zum weiterlernen würden mich deine Definitionen für die Instrumente sehr weiter bringen. Kannst du mir diese schicken?
    Das wäre echt super!
    Dankeschön!
    Thorsten

  9. Claus hatte ein paar Kommentare vorher auch schon mal nach den Definitionen gefragt. Damit ich besser verstehe, was ihr genau benötigt, wäre ein kleiner Hinweis hilfreich. Die eigentlichen Definitionen hatte ich ja im Artikel aufgeführt. Vielleicht benötigt ihr aber noch etwas anderes.

  10. Hallo Jürgen,
    mir geht es um Dein Dashboard „FHEM Tablet – PV Ansicht“ und zusätzlich noch über Deine Übersicht wie z.B. „Unser Photovoltaikertrag im Oktober 2023“ (falls diese auch via FHEM gemacht ist).

    Die Berechnungen zu Deinem Dashboard habe ich gefunden und nachvollziehen können, die Config für das Dashboard selbst konnte ich nicht finden (hab eben nochmal gesucht, kann aber durchaus sein, dass ich an der falschen Stelle schaue).

    Kannst Du damit was anfangen?

  11. Alles klar, jetzt habe ich verstanden, was du benötigst. Eine Version meines Dashboards habe ich über Google Drive freigegeben (https://drive.google.com/drive/folders/19jrUeW0NKGsXGy6P2fMeJF4u5Qqq8rTm?usp=drive_link). Die ist zwar schon etwas älter, sollte aber im Prinzip den Darstellungen in meinen Blogbeiträgen entsprechen.

    Die Darstellungen aus den Beiträgen der PV Statistik kommen aus dem SMA Sunny Portal. In meinem Dashboard habe ich teilweise Grafana eingesetzt. Seit einiger Zeit versuche ich auch mein Dshboard auf die neueste Version des FTUI umzustellen, komme aber zeitlich bisher nicht dazu das Dashboard komplett umzustellen.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

Why ask?

x

Check Also

Wirtschaftlichkeit und Amortisation unserer Photovoltaikanlage – Status 2023

Nachdem ich bereits einen Rückblick auf die Ertragsstatistik unserer PV-Anlage für 2023 dargestellt habe, gibt ...