Solar-Live zeigt die private PV-Anlage in Echtzeit im Web – ohne dass von außen auf das Heimnetz zugegriffen wird. Home Assistant pusht die Messwerte alle 5 Minuten verschlüsselt an einen Cloudflare Worker, der sie validiert, zu Tageswerten integriert und in einer D1-Datenbank ablegt. Der Browser holt sich die aufbereiteten Daten über zwei schlanke, read-only JSON-Endpunkte.
Die Kette ist bewusst einfach gehalten: keine Server, kein eingehender Port, keine Fremd-Frameworks – nur Home Assistant, ein Worker am Edge und statisches HTML mit Vanilla-JavaScript.
Die Verbindung geht ausschließlich von innen nach außen – das Heimnetz bleibt vollständig geschlossen, es existiert kein Port-Forwarding und kein VPN-Zugang für die Webseite.
Template-Sensoren bündeln PV-Leistung, Hausverbrauch, Netzbezug/-einspeisung, Batterie,
Wallbox/Fahrzeug und die Solarprognose zu einem JSON-Payload. Eine Automation ruft alle
5 Minuten ein rest_command auf, das den Payload per HTTPS an den
Ingest-Endpunkt sendet – authentifiziert über ein Bearer-Token aus
secrets.yaml.
Der Worker läuft im Pages-Projekt der Domain (Advanced Mode). Er prüft das Token, normalisiert die Werte (auch Komma-Dezimaltrenner), integriert die Leistungen per Trapezregel zu Tages-kWh und schreibt drei Dinge atomar als Batch: den letzten Zustand, einen 5-Minuten-Chartpunkt und das Tagesaggregat.
power_latest hält genau eine Zeile mit dem letzten Payload,
power_chart die 5-Minuten-Historie (dauerhaft, kein Pruning),
power_day die aufsummierten Tageswerte inkl. Import/Export und
Batterie-Ladung/-Entladung. D1 statt KV, weil das KV-Free-Kontingent von 1.000 Writes/Tag
für zyklische Pushes nicht reicht.
Eine einzelne statische HTML-Seite ohne Frameworks. Diagramme (Tagesverlauf, Energiefluss-Animation) werden als SVG direkt im Browser gerendert. Das Polling ist an den Push-Takt gekoppelt: Nach jeder Antwort terminiert die Seite den nächsten Abruf auf letzter Push + 5 min + 20 s – neue Werte erscheinen damit Sekunden nach ihrem Eintreffen, ohne Leer-Requests dazwischen.
| Endpunkt | Methode | Zweck |
|---|---|---|
/api/power/ingest | POST, Bearer | Nimmt den Messwert-Payload aus Home Assistant an, integriert und speichert. |
/api/power/latest | GET, öffentlich | Letzter Zustand plus Tagesbilanz (kWh, Autarkie, Eigenverbrauch) und Stale-Kennzeichnung. |
/api/power/series?h=24 | GET, öffentlich | Zeitreihe für den Chart; SQL-seitig auf max. ~600 Punkte aggregiert, am Edge gecacht. |
Push statt Pull. Das Heimnetz initiiert jede Verbindung selbst. Damit entfallen Port-Freigaben, DynDNS und die gesamte Angriffsfläche eines von außen erreichbaren Home-Assistant.
Takt 5 Minuten, adaptiv abgeholt. Die Quelle liefert nur alle 5 Minuten neue Werte – schnelleres Pollen erzeugt nur Last ohne Information. Die Stale-Erkennung schlägt erst nach zwei verpassten Pushes (11 min) an, einzelne Aussetzer bleiben unsichtbar.
Integration am Edge, nicht im Haus. Die Tages-kWh entstehen per Trapezregel im Worker aus den Leistungswerten. Home Assistant muss dafür keine Langzeitstatistik führen, und die Bilanz (PV + Bezug − Einspeisung = Verbrauch) geht auf 0,01 kWh genau auf.
Rohdaten behalten, Auslieferung aggregieren. Die 5-Minuten-Punkte werden nie gelöscht; große Zeiträume verdichtet eine SQL-Aggregation auf Chartauflösung, davor sitzt der Edge-Cache. Speicher ist billig, Rechenzeit pro Request nicht.
Erweiterbar auf Mehrmandanten. Für die geplante Firmenvariante (Infopanels mit
eigener Datenquelle) kommt ein site-Feld in Payload und Schlüssel – das Frontend
bleibt unverändert.