Zur besseren Erklärung (Danke Harry für den Hinweis in einem Thread!!)
Worm geht es:
Ich lade zu dynamischen Strompreisen meine Akkus und nutze sie bei Strompreis-Spitzen. Das ist aus der Not heraus geboren, da ich nur eine begrenzte Anzahl an Solarpanele nutzen darf / kann (Mietwohnung). Somit ist für mich sehr wichtig zu wissen mit wieviel Ertrag kann ich bei meiner Anlage in den kommenden zwei Tagen rechnen.
Zwar bietet HA einen Forecast, doch der ist zu ungenau, da pauschalisiert und oftmals um mehrere kWh daneben.
Gleichwohl möchte ich wissen, wie effektiv meine Anlage läuft und die Prognose " trifft" um Verschattungen, Dreck, Leistungswerte,.. zu tracken.
Fazit: Die Prognose muss zwingend auf meine (oder allg. “die”) örtlichen Gegebenheiten angepasst sein. YAML ect.. hilft da nicht weiter. Also entschied ich mich ein selbstlernendes Skript zu schreiben, dass sich täglich neu trainiert und so immer weiter an die 100% Prognose herankommt. Es basiert auch Machine-Learning und gewichtet eine Vielzahl von Sensoren, Vorhersagen und gleicht diese jede Nacht mit der tatsächlichen Tagesleistung ab. Diese verarbeitet das Skript und korrigiert sich immer weiter.
Info: Mir war wichtig das es lokal passiert ohne irgendwelche KI (streng genommen ist es aber eine lokale KI) Anbindung oder Versand von Daten nach außen.
Man sieht an dem Screenshot sehr gut das Problem! “Prognose offiziell” ist das was HA mit Solar-Forcast prognostiziert. Das weicht sehr deutlich von dem Tatsächlichen Werten und dem Ergebnis meines Moduls ab
heute war es sehr bewölkt und hat immer wieder geregnet.
Einschränkungen / Hinweise: Viele der benötigen Bibliotheken und Umgebungen laufen nicht nativ auf dem HA. Ich entschied mich dagegen, den CORE von HA anzufassen und die Dinge “händisch” hinzuzufügen - zumal sie nach einem Update eh wieder weg gewesen wären.
Daher entschied ich mich die gesamte Arbeit auf einen Raspberry PI auszulagern. Das hat mehrere Vorteile, die sich jeder denken kann.
Vorgehen: Zunächst werden (in meinem Fall das kann aber jeder so machen wie er will) Langzeit-Statistiken mittels SQL aus der Datenbank gezogen. Bei mir sind das u.A. LUX, W/m2, Temp, Wind,.. und der jeweils dazugehörige Ertrag an dem Tag. Diese Daten werden dann ein Model übergeben das damit trainiert wird.
Via API wird die Wetter-App (DWD) ebenfalls angebunden und ein Service und Deamon eingerichtet. Das wars…
Was passiert nun: Das Skript startet nun via Cron-Job und holt sich die Wetterporognose, gleicht diese ab mit bekannten Daten aus dem Modul und vergleicht diese mit dem Ertrag und berechnet eine Prognose. um Mitternacht gleicht es die erstelle Prognose mit dem tatsächlichen “IST-Wert” und bezieht die Abweichung mittels Gewichtung der einzelnen Sensoren beim Erstellen der neuen Prognose mit ein.
Je länger das Skript läuft, desto genauer wird es - eben selbst lernend. Ich bin mittlerweile bei einer Treffergenauigkeit von 87,3%.
Alle drei Monate wird das Training wiederholt, da sich bis dahin weitere Daten angesammelt haben
Was kann ich mit den Daten machen? Nunja, zum Beispiel kann ich das Ergebnis nutzen um Verbräuche / Erträge in einen Kontext zu setzen. Sicherlich sehr nützlich für Besitzer von E-Autos oder eben wie in meinem Fall das Laden von Akkus (dynamischer Stromtarif) da ich weiß wieviel ich am nächsten Tag erzeuge und wieviel ich brauche.
Wie kommen die Daten / Ergebnisse des Skriptes zurück in den HA? Die Ergebnisse werden mittels MQTT an den HA gesendet. Hierzu wird ein Topic erstellt mir dem entsprechendem Payload.
Wie immer.. wer die Skripte haben möchte, sie anpassen / ausprobieren möchte You are welcome!