____ _ _ ____ _ _ ____ ____ ______ _ ____ . |: _ \( \/ ) ____ |:___)|:\|:||:___)|: _ \/ .___/|.||:___) . _ . -_____+ |:___/ \::/ |____| |:__) |:\ :||:__) |: /|:(_\ \|:||:__) · (_) · | LFP | |_| \/ |____)|_|\_||____)|_|\_\\_____/|_||____) . . . |_____|
____ _ _ ____ _ _ ____ ____ ______ _ ____ . |: _ \( \/ ) ____ |:___)|:\|:||:___)|: _ \/ .___/|.||:___) . _ . -_____+ |:___/ \::/ |____| |:__) |:\ :||:__) |: /|:(_\ \|:||:__) · (_) · | LFP | |_| \/ |____)|_|\_||____)|_|\_\\_____/|_||____) . . . |_____|

Live Auswertung von EVCC, Victron und Shelly Daten.

Hier findet ihr mein Skript das Daten von
EVCC, Victron und Shelly direkt abfragt und
sehr schön aufbereitet auf einer eigenen Webseite
in Echtzeit ausgibt.
Das Skript könnt Ihr natürlich
auf euere Gegebenheiten beliebig anpassen.
Ziel des Skriptes ist, durch die bessere Übersicht,
noch mehr selbst erzeugten Strom zu nutzen.

2025-12-23 © ctaas.de, Arno Schröder § Impressum




HINWEIS:
Diese Webseite befindet sich noch im Aufbau.
Textlich ist alles nur grob geschrieben, das wird noch überarbeitet.
Die Skripte selbst sind so wie beschrieben zu 100 % Funktionell einsetzbar.


Hallo alle!

Die Installation ist eigentlich nicht schwer und ich werde auf alles wichtige soweit notwendig eingehen.
Ich versuche alles wichtige Schritt-für-Schritt zu erklären.

Dieses Skript richtet sich aber dennoch eher an Profis.
Der Umgang mit einem Webserver, kleinere HTML-Kentnisse, Linux Kenntnisse wären von Vorteil.

Vorab vielleicht für euch wichtig:
Ihr könnt mit dem Skript nichts an eueren Alagen kaputt machen, da hier nur lesend zugegriffen wird.
Die Daten werden nur von den jeweiligen Systemen gelesen und grafisch aufbereitet schön ausgegeben.

Wie das ganze aussehen kann wenn es fertig ist könnt ihr hier über den Link einsehen:

💡 https://hxukms0cyqj47dvn.myfritz.net:8081/all.php


Nun zum Aufbau:
1.) Das Skript welches hier beschrieben ist fragt Shelly (alle 2 Sekunden ab),
EVCC (alle 2 Sekunden ab),
Victron (unser Stromspeicher) derzeit nur alle 30 Sekunden (das könnte man noch verbessern).

2.)
Das Skript läuft bei mir auf einem RaspberryPi mit selbst aufgesetztem Ubuntu 24.04.xx (ständig aktualisiert) als minimized Server Version.
Ihr könnt hier natürlich ein beliebig anderes System nutzen. Bei mir läuft das Skript direkt mit auf dem RaspberryPi
wo auch die EVCC installation läuft.

3.)
Auf diesem Server habe ich den schlanken und dadurch auch sehr sicheren lighttpd Webserver installiert.
lighttpd würde ich jedem vor apache für solch kleine Zwecke empfehlen da die Konfiguration um einiges leichter ist.
Wie man den Webserver lighttpd installiert hatte ich hier schon mal beschrieben.
Zur Installation verweise ich hier mal auf eine andere Doumentation von mir die die Installation beschreibt.
Zukünftig pflege ich das hier vielleicht noch mal mit ein (wenn irgendwie Zeit ist).

Link zur lighttpd Installation:

💡 https://ctaas.de/OpenVPN_Server_Ubuntu_howto.htm#share_log_with_lighttpd



Vorarbeiten:

Dieses Debug-Skript liest ja Daten von EVCC aus.

Mit EVCC meine ich hier die offene Ladelösung von evcc.io welche ich sehr empfehlen kann.
Da EVCC in der Regel auch Zugriff auf den Stromspeicher hat, können wir hier also gleich diese Daten auslesen.
Dann sparen wir uns die Victron-Anlage selbst abzufragen.

Um erst mal hier roh alle Daten an zu zeigen empfiehlt sich folgendes Debug-Skript:

Hier soll zum Beispiel erkannt werden ob:

Das Debug-Skript könnt ihr hier herunterladen:

💡 evcc-debug.php.txt (.txt Endung entfernen)

Passt zunächst im Skript die IP-Adresse von eurer EVCC Instanz an.
Ändert hier: 192.168.0.37 auf euere IP-Adresse.
Das Skript gibt alle Daten von evcc nur die Rohdaten unformatiert aus.

Diese 'Rohdaten' können Hilfreich sein wenn Ihr die Daten an euere Umgebung anpassen wollt.
Beachtet dabei, falls Ihr bei EVCC die Vorhersage aktiviert habt, dann erhaltet ihr relativ viele Daten.
Diese solltet ihr kürzen, falls Ihr die Daten an die KI zur Weiterverarbeitung weiterreicht.
Die KI erkennt die Kürzung selbst. Ohne Kürzung sind die Daten meist zu lang.

Dieses Debug-Skript ist nicht notwendig, es erleichtert aber ggf. die Fehlersuche.
Nun aber weiter zum Shelly Skript.



EVCC, Victron, Shelly Skipt:

Hinweise vorab:

Ich entwickle das Skript immer weiter, da wir auch mehrere PV-Anlagen parallel betreiben.
Es gibt also vom Skript immer mehrere Versionen die nach unten hin (in dieser Anleitung) immer Komplexer werden.
Die Skripte bauen aufeinander auf werden von oben nach unten immer besser.
Schaut daher bei Interesse hier immer mal vorbei - Updates mit einem Shelly 3EM-63W werden folgen.



Shelly Skript Variante 1:

Ausgangssituation:

💡 all.php.2025-12-17_all_OK_vor_Einbindung_63T.txt (.txt Endung in .php ändern)

Das Skript lief so bei mir mehrere Wochen ohne Fehler.



Skript Variante 2 (erweitert):

Ausgangssituation:

💡 all.php.2025-12-17_1155_mit_63T_summe_title_ok.txt (.txt Endung in .php ändern)





Besonderheiten und ergänzende Erklärungen für die Shelly-Skripte:

Das Skript setzt vieles intelligent um was auf den ersten Blick vielleicht nicht direkt ersichtlich ist.
Daher hier ein paar Erklärungen dazu.

1.)
Im Skript ist ein intelligenter Dark-Mode eingebaut der angenähert den Sonnenaufgang und den Sonnenuntergang ermittelt.
Die Koordinaten dazu könnt ihr mit Längen und Breitengrad im Skript als Variable anpassen.
Tagsüber stellt das Skript den Hintergrund gleichmäßig hellgrau dar.
Nach der Dämmerung und zum Sonnenaufgang hin wird die Farbe vom Hintergrund langsam dunkler.
Der Zeitpunkt wenn der Hintergrund dunkel dargestellt wird passt sich also intelligent auf jeden Tage an.
Im Sommer bleibt der Hintergund entsprechend länger hell als im Winter.

2.)
Der Netzanschluss wird ebenso farblich hervorgehoben.
Ein eher roter Hintergund bedeutet eher Netzbezug.
Ein grüner Hintergrund bedeutet PV-Überschuss also Einspeisung.
Wenn der Hintergrund weiß ist, bedeutet dies das aktuell mehr oder weniger praktisch fast kein Netzbezug stattfindet.
Es ist hier aktuell eine Schwelle um die 100 W (im Skript anpassbar) eingestellt.
Dies wurde so realisiert damit sich nicht durch kleine Schwankungen die notwendigerweise durch den Speicher bestehen keine Auswirkungen haben.
Die Farben würden sonst bei keinem Netzbezug und keinem Überschuss (wenn also der Strom intelligent vom Stromspeicher kommt) dauernd wechseln.
Um das zu umgehen wurde dieser Schwellwert eingebaut.

Die Farbliche hervorhebung beim Stromspeicher sind im prinzip wie ein Ampelprinzip - grün - weiß - rot.
Dadurch macht auf den ersten Blick besser sichtbar wann man Strom wie nutzt.
Und es wird klarer wenn Überschuss (farbe grün) vorhanden ist.

Die Farben vom Hintergund vom Netzbezug ändern sich hierbei abhängig vom Netzbezug.
Je mehr Einspeisung um so grüner je mehr Netzbezug um so roter (es gibt hier also Farbnuancen).

3.)
Analog dazu ähnlich verhält sich die PV-Hervorhebung.
Wenn keine Sonne scheint, ist der Hintergrund nur weiß.
Wenn die Sonne aber scheint wird bis zu einem gewissen Wert der Hintergrund immer grüner.
Angedacht ist hier ein Schwellwert der Sinnvollerweise dem Netzverbrauch im Haus entsprechen sollte.
Dieser Wert kann auch im Slript angepasst werden.
Was ich meine.
Unser mehrgenerationen Haus (wir nutzen es alles zusammen) hat durch mehrere Haushalte einen Grundbedarf von ca. 500 W.
Der grünste Ton sollte hier erst erreicht werden, wenn die 500 W von PV abgedeckt sind.
Um das Skript einfach zu halten wird der Wert aktuell für jede PV-Anlage separat ermittelt.

4.)
Bei der Ausgabe der PV-Leistung wird parallel dazu neben dem eigentlichen PV-Ertrag der Wert PV-Leistung pro kWp ermittelt.
Es wird hier also gerechnet:

Ertrag : installierte Peak-Leistung = kWh/kWp

Interessant wird dies hauptsächlich dann, wenn man mehrere Anlagen betreut oder kennt und diese vergleichen will.
Hier ergeben sich durch die Unterschiedlichen Anlagen, Wechselrichter, Arten der Anlage, Ausrichtung, Gegegebenheiten vor Ort usw. ja doch durchaus verschiedenste Leistungen.
Man kann hier dann aber durchaus die Werte gut vergleichen.
Unsere Fassaden-Anlage obwohl sie ziemlich klein ist (Leistungsmäßig) performt im Winter zum Beispiel viel besser.

5.)
Der Wallbox Status gibt verschiedene Statuse aus.
Die Dokumentation diesbezüglich will ich noch ergänzen.
Grob gesagt zeigt diese aber an ob die Anlage frei ist oder ob geladen wird und schaltet entsprechend auch verschiedenste Textmeldungen an.
Die man natürlich alle anpassen kann. Die Idee war die Wallbox so auch anderen Nachbarn ggf. bei Bedarf zum Laden zur Verfügung zu stellen.

6.)
Die Auswertung des Stromspeichers wurd dahingehend ergänzt,
das immer live ausgehend vom aktuellen Verbrauch angezeigt wird,
wie lange wird der Speicher noch beim aktuellen Verbrauch reichen.
Das ist z. B. eine Anzeige die man nicht mal im VRM-Portal bekommt.

Sollte der Akku leer sein, oder sich im Leerlauf befinden werden hier intelligente Ausaben angezeigt.
Der Akku wird nicht immer zu 100 % entladen er befindet sich manchmal auch im idle/leerlauf.
Zu letzterem Wert kann man im Skript einen Wert definieren.

Der mindest SOC von 10 % kann im Skript angepasst werden.
Leider wird der aktuelle mindest SOC noch nicht mit Victron abgeglichen.
Wer also im Winter in der Victron Anlage einen größeren mindest SOC einstellt, da der Akku sowieso nicht 100 % voll wird (um den Akku zu schonen).
Dann passen die Berechnungen der Nutzbaren Kapazität und der Restdauer nicht.
Hier möchte ich gern noch etwas nacharbeiten.
Wenn jemand weiß wie man den minSOC von dem Victron CerboGX/VenosOS direkt auslesen kann bitte melden.

7.)
Um die Skripte extern verfügbar zu machen habe ich noch letsencrypt auf dem lighttpd Webserver ergänz.
Dies ist relativ einfach möglich. Eine Beschreibung dazu reiche ich noch mal nach.
Weiterhin wurde über Dyndns in unserem Fall per Fritz-Box die Instalation nach außen hin geöffnet.
Ihr könnt dies aber auch nur intern nutzen.

Als Tipp nur:
Falls ihr eine externe Nutzung plant, dann empfehle ich immer auch intern einen andern Port wie 8081, 8082 usw. zu verwenden.
Das erleichtert die externe Anbdinung deutlich.


Bei Fragen zum Skript gern melden.
Beachtet aber das ich derzeit sehr eingespannt bin und daher meist nur verzögert Antworten kann.
Ich versuche aber alles wichtige zu beanzworten soweit möglich.
Gebt mir vorab daher soviele Daten wie möglich um so besser kann ich ggf. helfen.