AI-basierte Regelungslogik im Rahmen der Direktvermarktung gesucht…

IM EINSATZ?

Dann schau dir UNSEREN LOXKURS an und profitiere von unserem Wissen!

Ich erhalte immer mehr Leserfragen, wie genau ich meine PV-Anlage bzw. den Hausspeicher denn nun steuere, um im Rahmen der Direktvermarktung (Details hier) das Maximum an Einspeiseertrag herauszuholen.

Aktuell bin ich mit meiner über Loxone umgesetzen Logik jedoch eher semizufrieden, weshalb es dazu im Blog noch keine weiterführenden Inhalte gibt. Auch bin ich gerade etwas “lost”, was mittel- bis langfristig die beste Lösung ist – im Sinne einer softwareseitigen Umsetzung der Regelungslogik.

Deshalb an dieser Stelle mal die Frage an alle Leser des Blogs: Hat hier schon jemand Erfahrungen mit OpenSource-Lösungen oder Eigenentwicklungen sammeln können? Gibt es hier evtl. AI-basierte Logiken, die sich einsetzen lassen?

Nachfolgend werde ich mal die zentralen Anforderungen an meine “Wunschlösung” auflisten, evtl. ergibt sich ja eine Diskussion in den Kommentaren. Ich bin gespannt…

Anfoderungen an die Regelungslogik

  • Berücksichtigung der PV-Prognose der nächsten Tage – erhalte aktuell bereits relativ gute Werte über Solcast (externer Link)
  • Berücksichtigung des Börsenstrompreises der nächsten 10-34 Stunden – bekommt man recht einfach über die aWATTar-API (externer Link)
  • Berücksichtigung des Eigenverbrauchs – protokollierte Vergangenheitswerte können über meine InfluxDB ausgelesen werden
  • Abfrage zentraler “Sensorwerte” über MQTT oder HTTP-Requests – dazu gehören die aktuelle PV-Produktion, Leistung am Netzübergabepunkt, Leistung und SoC des Batteriespeichers, Leistung von “Großverbrauchern” (z.B. Wallbox)
  • Steuerung zentraler “Aktorwerte” über MQTT bzw. HTTP-Requests – dazu gehören die Lade-/Entladeleistung des Hausspeichers, etwaige Leistungsreduzierung der PV-Anlage, dynamische Leistungssteuerung der Wallboxen (im besten Fall über SoC-Werte der angeschlossenen E-Autos)
  • Berücksichtigung zentraler Rahmenparameter auf “Aktorseite” – also bspw. wieviel Lade-/Entladeleistung der Hausspeicher packt unter Berücksichtigung des aktuellen SoC (Drosselung der Leistung bei niedrigem bzw. hohem SoC). Bestmöglich mit einer Art “Lernfunktion” anhand des Livevergleichs gewünschter Soll- und real gemessener Istwerte.

Zentrale Herausforderungen

Schwierig ist dabei vermutlich insbesondere die Prognose des Eigenverbrauchs, wobei man hier evtl. auch weitere Sensorwerte (z.B. Anwesenheit, Entfernung der E-Autos) heranziehen kann, um die Regelungslogik zu verbessern. Entsprechende Sensorwerte “sammle” ich alle in Loxone, die einfach extern für Drittsoftware verfügbar gemacht werden können.

Evtl. reicht es auch schon “einfach” den Batteriespeicher in den Niedrigpreisstunden automatisiert laden zu lassen, wenn genug prognostizierte PV-Leistung vorhanden ist. Und umgekehrt entladen zu lassen bis runter zu einem definierten SoC-Wert (z.B. 20%), wenn der Börsenstrompreis am höchsten ist (unter Berücksichtigung des ESS-Wirkungsgrad von knapp 80%). 🤔🤷‍♂️

Die Hardware steht zum Einsatz bereit…

Hardwareseitig habe ich meine Hausaufgaben soweit gemacht. Der 100kWh große Hausspeicher (hier vorgestellt) steht bereit…

Der 30kW PV-Wechselrichter ist auch eingebunden und lässt sich seit Neuestem sogar variabel herunterregeln (hier vorgestellt), bspw. bei negativen Börsenstrompreisen…

Aber, eine zentrale Komponente fehlt natürlich noch…

Ich brauche… Hilfe!

Leider habe ich 0 Ahnung von bzw. Erfahrung mit verfügbaren Methoden wie maschinelles Lernen oder sonstigen AI-basierten Algorithmen, weshalb ich überhaupt nicht einschätzen kann, inwiefern man hier sinnvollerweise zum Ziel einer vollautomatischen “Regelungsengine” gelangen kann bzw. welche “Inputparamter” sinnvollerweise berücksichtigt werden müssen.

Evtl. könnt ihr mir etwas weiterhelfen bzw. in die richtige Richtung schupsen… Evtl. gibt es ja auch bereits einige Leser mit “fertigen” Softwarelösungen, die direkt einsatzbereit sind. Keine Ahnung, wieviele “Hardwareressourcen” solche Softwarelösungen “fressen”, vom Raspberry Pi bis hin zum MacMini mit i7 Quadcore und 64GB Ram hätte ich aber alles am Start…

In diesem Sinne: Ich freue mich auf rege Diskussionen!

40 Kommentare
  1. Hallo Jörg,
    Ich bin derzeit auch am entwickeln einer Lösung basierend auf verschiedenen Datasouces ein KI Model zu entwickeln um den ganzen spass zu steuern.

    Können uns gern mal austauschen

    1. Klar, gerne… Ich melde mich gleich mal per Mail bei dir.

      Kannst deine Lösung gerne auch mal im Blog vorstellen, wenn du möchtest. Es lesen ja echt viele mit, die Ahnung haben zwecks Feedback.

      Viele Grüße
      Jörg

  2. Hallo Jörg,

    Ich verfolge schon seit einiger Zeit Deinen Blog – zugegebener Maßen eher passiv 🙂
    Was mir vor Jahren sehr geholfen hat, war Deine Einführung mit der Installation von FHEM auf ein RPi, wenngleich ich vor ca. einem Jahr zu Home Assistant gewechselt bin.
    Danke für Deine Anleitungen!

    Die AI-basierte Regelung der Anlage hat wieder mein Interesse geweckt.
    Ich selbst arbeite beruflich auf diesem Gebiet (AI-basierte Regelung von rotierenden Maschinen für die Industrie, z.B. Raffinerien, Pipelines, Hochöfen, Energieerzeugung, Chemieproduktion, … Maschinenstränge mit Leistung im MW-Bereich).

    Ich arbeite dort mit meinem Team daran, einen Teil einer Produktionsanlage zu automatisieren.
    Zwar technisch was ganz anderes, aber wir verfolgen das gleiche Ziel: Die Anlage soll am Ende autonom agieren und dabei ein bestimmtes Zielkriterium (oder auch mehrere) optimieren.
    In Deinem Fall wäre das z.B. der höchste Betrag aus der Direktvermarktung.

    Prinzipiell brauchst Du dazu als erstes ein dynamisches Modell Deines Systems. Dieses kannst du mit historischen Daten (Zeitsequenzen) trainieren.
    Das Stichwort wäre hier Zeitreihen-Lernen / LSTM-Netzwerk.
    Weiterhin bräuchtest Du auch ein dynamisches Modell des Marktes / der Direktvermarktung. Auch dieses müsstest Du mit historischen Daten ein rekurrentes Netz trainieren.

    Beide Systeme zusammen würden es dir ermöglichen, Abschätzungen „in die Zukunft“, ausgehend vom Status Quo, zu machen.

    Du könntest dann einen modellprädikativen Regler (MPC) einsetzen, um Dein Regelungsziel zu erreichen.
    Eine andere Möglichkeit wäre ein Reinforcement-Learning, das auf Basis der dann verfügbaren Systeme und einer Reward-Funktion, einen RL-Regler trainieren könnte.

    Wir entwicklen diese Systeme zum größten Teil mit Matlab/Simulink und erstellen damit Prototypen bzw. führen damit Proof-of-Concepts durch.
    Die Implementierung auf der Steuerung der Maschinen planen wir dann auf Debian / Python / Tensorflow mit Kommunikation zu einer Siemens-Steuerung.

    Insgesamt ein sehr ambitioniertes Vorhaben, dass Du Dir da gesucht hast, aber eben auch wirklich interessant!
    Ich bin gespannt, welchen Lösungsweg Du findest.

    Ich hoffe, ich konnte Dir mit dem oben beschriebenen Vorgehen einen möglichen Weg aufzeigen.
    Wenn Du noch Rückfragen hast – gerne!

    Gruß
    Heiko

    1. Ich entwickele beruflich Steuerungen und Regelungen für Fahrzeuge und Arbeitsmaschinen. Zwar nicht ganz das gleiche Thema, aber auch da gibt zumindest sehr ähnliche Aufgabenstellung, z. B. Prädiktion von Lastprofilen, Optimierung über Prädiktionshorizont

      Unser Tool der Wahl ist in der Regel Matlab/Simulink. In der Umgebung können dynamische Systeme „einfach“ modelliert und mit der Steuerung in einer Simulationsumgebung getestet werden.

      Was sich bei uns bewährt hat ist es das eigentliche Regelungsproblem aufzuteilen und die Anforderungen für jedes Teilsystem runter zu brechen, neudeutsch Systems Engineering. Ohne detaillierte Analyse würde ich dein Problem auch erstmal aufteilen:
      1) Prädiktion des Eigenverbrauchs anhand der Historie
      2) Optimierung des Soll SOC Verlaufs des Batteriespeichers
      3) Regelung des Systems

      In jedem Fall kann ich Heiko nur zustimmen: sehr ambitioniertes Vorhaben. Wir können uns aber gerne mal dazu austauschen.

    2. Ich glaube das wichtigste sind gute Verbrauchsdaten und ein ungefähres Lastprofil für dich das zu 90% deckend ist. Am besten du installierst noch den Teslalogger Docker Container um die aktuellen Verbrauchswerte deines Autos zu haben. Sowie dann ebenfalls die aktuellen möglichen nachzuladenden kWh am Abend vorherzusagen abhängig wo dein Auto gerade ist und Akkustand hat. Evtl solltest du deinen Kalender noch Befüllen ob Home Office oder Büro angesagt ist. Auch wenn Solcast gut trifft solltest du deine Eigene Wetterstation haben mit Lichtmesser um die Daten abgleichen wie viel Abweichungen Statistisch Auftreten, das kann dir dann noch einen gewissen Salt Wert mitgeben um die Vorhersage noch genauer zu machen. Was ebenfalls noch vorherzusagen ist, wie der Wetterbericht für die nächsten Tage wird. So kannst du in dein Modell noch einen ungefähren Börsenpreiszone der nächsten 72h mit reingeben. Ich glaube damit solltest du alle nötigen Datenquellen haben.

      Anhand deines Lastprofils zusammen mit dem Kalender und dem Teslalogger kannst du denke ich deinen Eigenen Verbrauch annäherungsweise gut abdecken.

      Zusammen mit deiner Wetterstation und dem Solcast kannst du deine Erzeugung gut abschätzen im Algo.

      Mit den Börsenpreisen und der Wettervorhersage der nächsten Tage kannst du einmal eine “Preiszone“ erahnen die dann sobald die Daten verfügbar sind abgeglichen werden mit den Ist werten. Da könnte dann auch sein Teslalogger zb hilfreich sein um evtl zu sagen lade lieber die nächsten beiden Tage nicht sondern erst am 3. Tag. Sollte die Vorhersage nicht deckend sein mit den ist werten dann kann die beste Uhrzeit zum Laden ermittelt werden anhand der nächsten 36h und der zu erwarteten Fahrleistung anhand des Kalenders und das dann evtl aus dem Speicher sollte der Kalender sagen dass dein Auto tagsüber nicht da ist.

      Das ganze müsste man dann jeweils noch in ein ML oder Reinforced Learning Modell packen. Die Teilmodelle müssten dann jeweils zusammen genommen werden und miteinander sprechen. Evtl dann noch ein Modell die tatsächlichen Werte mit der Vorhersage abgleichen als weitere Lernstufe zur Verbesserung der einzelnen Modelle.

      Die Modelle für die einzelnen Sachen müsstest du dann evtl täglich neu berechnen lassen aber dan nur jeweils für die Daten der letzten 24h als Delta die auf die Initialen Daten aufbauen.

      Wie das ganze aber jeweils in die Modelle gepackt wird weis ich nicht. Ich kenne mich damit leider eigentlich nicht aus bis auf öfter mal paar Artikel zu lesen und eine grobe Vorstellung zu haben was an Input nötig ist um die Daten zu bekommen die du willst.

    3. Hi Heiko, Joschka und Chloe,

      tausend Dank für euren Input!!! Für mich ist das alles alles noch #Neuland, aber mit euren Anregungen kann ich schon mal mein “mentales Modell” aufbauen und die Zusammenhänge zumindest ansatzweise verstehen…

      Also ich glaube es steht und fällt alles mit exakt zwei Parametern:

      1. Vorherzusagen, wie mein Verbrauch sein wird. Dabei insbesondere die “Stromsenke” E-Autos (sind jetzt mittlerweile 2), die einfach den meisten Verbrauch generieren, aber zumindest zu einem gewissen Grad “verschiebbare Lasten” darstellen – abhängig von SoC/Standort/Verbrauchsprognose. Vermutlich wäre es wirklich am besten den Kalender mit einzubinden zwecks Homeoffice/Büro, aber das wäre glaube ich overkill. Eher sowas wie: Eines der beiden Fahrzeuge muss zwingend IMMER Montag und Mittwoch bis 5 Uhr morgens einen SoC von mind. 40% aufweisen, damit die Fahrt zur Arbeit klappt. Teslalogger brauche ich nicht, greife alle relvanten Werte der Tesla-API über NodeRED mit meiner eigenen Logik ab.

      2. Vorherzusagen, welchen Ertrag die PV-Anlage haben wird. Nicht nur für die nächsten 24-48h, sondern am besten gleich für die nächsten 7 Tage – zumindest mal grob… Dafür die Wetterprognose heranzuziehen, ist denke ich schwierig. Denn oftmals (eigene Beobachtung) ist es so, dass der Wetterbericht nur “bewölkt” vorhersagt. Bewölkung kann aber bei der PV-Power mal 5kW und mal 15kW bedeuten…

      Den Börsenstrompreis kann man prognosetechnisch glaube ich recht einfach grob “einsampfen”. Der Maximalpreise ist vormittags um 7-9 Uhr und abends um 19-21 Uhr, der Minimalpreis zwischen 12-16 Uhr. Am Wochenende kacken die Preise dann gerade in der Mittags-/Nachmittagszeit brachial ab, bis hin zu Negativpreisen. Die entscheidende Frage dabei ist eigentlich nur, wie groß die Preisdeltas über den Tag hinweg sind und ob es dann sinnvoll ist den “Umweg” über den Hausspeicher zu gehen. Also ob es bspw. sinnvoll ist den Hausspeicher mittags per PV zu laden, wenn der Börsenstrompreis gerade bei 8 Ct/kWh liegt und dann abends zu entladen, wenn er bei 12 Ct/kWh ist. Wirkungsgrad der ESS-Anlage ist 80% – das heisst, dass die Batterieladen dann nicht 8 Ct/kWh bedeutet, sondern 10 Ct/kWh. Im Sommer ist klar -> Voller Batterieeinsatz, auch wenn nur 1 Ct/kWh an der Strombörse zu bekommen ist. Im Winter sieht das dann schon wieder anders aus, da ich hier fast jede kWh selbst benötige – auch aus dem Batteriespeicher -, um einen teuren Netzstrombezug zu vermeiden. Wobei sich das Bild spätestens dann auch wieder ändert, wenn ich einen flexiblen Bezugsstromtarif habe… Hahaha, echt nicht so einfach…

      Apropos Tools: Kann man Matlab/Simulink auch kostenfrei nutzen oder welche Softwarelösung sollte ich mir da anschauen?

      Viele Grüße
      Jörg

  3. Ein spannender Beitrag und ich bin schwer gespannt auf die Antworten.

    Bei mir (und vermutlich vielen PV-Besitzern mit Speicher und Tibber-Vertrag) stellt sich aktuell Fragen wie z.B. ob / wann / wieviel man seinen Heimspeicher günstig aus dem Netz nachladen soll und ob / wann / wieviel man diesen auch wieder entlädt.

    1. Hi Mark,

      zu beachten gilt es dabei auch noch, dass man mit einer geförderten EEG-Anlage nicht beides “gleichzeitig” machen darf. Man muss sich also entscheiden, ob man den Hausspeicher aus dem Netz laden ODER ins Netz entladen möchte. Das Thema wurde in vergangenen Videos schon einige Male aufgegriffen.

      Viele Grüße
      Jörg

  4. Also EMHASS soll exakt das von Dir beschriebene Problem lösen:

    https://github.com/davidusb-geek/emhass

    Das Projekt ist aktiv und ich bin sehr interessiert – leider habe ich aber zu wenig Zeit, das ganze mal auszuprobieren. Es wäre toll, wenn Du Dich da reinnerden würdest und was qualifiziertes dazu sagen könntest.

    Basis ist Home-Assistant: meiner Meinung nach die aktuell beste Heimautomatisierung. Ich habe vor 15 Jahren mit FHEM gestartet und immer wieder alternativen gesucht, wäre fast mal bei OpenHAB und im Anschluss iobroker gelandet, habe dann den Umstieg aber gescheut weil meine Installation einfach sooo komplex war. Home Assistant hat mich zuletzt vollends überzeugt – es ist unglaublich mächtig. Aber ob Du von Loxone weg willst, wage ich mal zu bezweifeln…

    Grüße aus Südhessen
    Thomas

    1. Hi Thomas,
      danke auch für deinen Input!

      Home-Assistant habe ich aktuell nur für einige Spezialsachen im Einsatz (z.B. Einbindung Landroid Mähroboter), aber wollte mich damit eh mal intensiver auseinandersetzen.

      Insgesamt werde ich Loxone so schnell – vermutlich sogar nie – einstampfen, da ich das Konzept und die Gestaltungsmöglichkeiten genial finde. Außerdem habe ich darin mittlerweile knapp 6 Jahre an eigenen “Optimierungen” umgesetzt. Das kann ich nicht so einfach wegschmeissen…

      Aber Home-Assistant kann gerne alle relevanten Sensorwerte von Loxone bekommen und per EMHASS die relevanten Aktorwerte ermitteln und dann wieder an Loxone zurückspielen. Dann quasi als “externe Steuerungsinstanz” – so hatte ich mir das ohnehin vorgestellt.

      Werde ich mir definitiv jetzt mal genauer anschauen.

      Viele Grüße
      Jörg

      PS: Wenn sich jemand bereits mit EMHASS auskennt und sein Wissen teilen möchte, meldet euch einfach bei mir. Bin an meinem Austausch mehr als interessiert!

  5. Ich denke nicht, dass für das Projekt „künstliche Intelligenz“ erforderlich ist (womit vermutlich irgendeine Form von neuronalen Netzwerken gemeint ist). Vielmehr denke ich, dass ein einfacheres mathematisches Modell ausreichend oder vielleicht besser ist.

    Ich würde zuerst mit einem Regelsystem, einfachen Verbrauchsvorhersagen und einer Ertragsprognose anfangen.

    Ein Beispiel dafür wäre, die Regel, dass Du an einem regnerischen Tag mit dem Auto zur Arbeit fährst. Der Akku dürfte dann Strom nicht speichern oder verkaufen. Den brauchst Du dann ja um den Ladestand Deines Autos so zu halten, dass Du damit zur Arbeit und zurück kommst.

    Ein anderes Beispiel wäre, dass Du alle so und so viel Tage den Geschirrspüler oder Wäsche wäschst. Das wäre ein recht vorhersagbarer Verbrauch, wenn Du halbwegs an den Ablauf hältst.

    Ein drittes Beispiel die Wärmepumpe. Deren Verbrauch richtet sich nach der Heizlast und die Heizlast richtet sich nach der Außentemperatur. Die Außentemperatur ist Teil der Wetterprognose.

    Für die Grundlast könntest Du ein einfaches Modell aus historischen Werten machen, beispielsweise pro Monat oder Quartal einen Wert aus Tagen annehmen, an denen Du nicht da warst.

    Bei Reisen und anderen seltenen Anlässen, würde ich die Steuerung einfach per Hand machen. Ich denke, dass erspart Dir Unregelmäßigkeiten und Komplexität des Modells, ohne dass ein großer Aufwand entsteht.

    Ohne Dein Privatleben zu kennen, würde ich vermuten, dass es sich halbwegs mit einem kleineren Regelsystem zusammen mit Wettervorhersagen, Ertragsprognosen und angegeben Plänen für den nächsten Tag vorhersagen lässt.

    Dein Anspruch muss ja auch nicht sein, als ersten Schritt das perfekte und genauste Modell zu entwickeln, sondern mehr zu verdienen und fossile Energieträger aus dem Netz zu drängen. Selbst wenn Du nur 80 % des Potentials ausschöpfst, hättest Du dann ja schon viel erreicht. In ein paar Jahren wird es ohnehin Unternehmen geben, die in diese Richtung Produkte anbieten und wo sich Leute täglich nur mit dem Thema beschäftigen. Du musst ja nur streng genommen den Zeitraum mit einer Lösung, die besser als nichts ist, überbrücken.

    Ein regelbasiertes System kleinen Untermodellen ließe sich vermutlich auch noch direkt in Luxone realisieren, wenn ein paar Vorhersagen extern angeliefert werden.

    Wenn es Dir schwer fällt, kann es meiner Erfahrung nach hilfreich sein, Menschen, die nicht so kompliziert und technisch denken, zu fragen. Vielleicht machen die Beobachtungen und Vereinfachungen, die einem selbst nicht einfallen.

    Ansonsten gibt es noch die Möglichkeit, auf Standardlastprofile zurückzugreifen oder eigene beispielsweise mit der Software LoadProfileGenerator zu erzeugen. Ähnlich gehen ja auch Energieversorger vor. Bei nur einem Haushalt und einem Tag Betrachtungszeitraum gleicht sich natürlich nicht so viel aus, aber vielleicht hilft es zumindest zum Aufstellen von Regeln und kleinen Modellen.

    Ich hatte mich eine Zeit lang auch mit Anomalieerkennung beschäftigt und den Eindruck gewonnen, dass die Vorhersage des Stromverbrauchs seit den späten 1980er und 1990er Jahren halbwegs funktioniert. Ein Teil der Anomalieerkennungsalgorithmen arbeitet so, dass ein vorgesagter Wert mit einem tatsächlichen Wert verglichen wird und eine zu große Abweichung als Anomalie behandelt wird. Für mein Problem, das auch so ähnlich war wie der Stromverbrauch, schienen mir Zustandsraummodelle (vielleicht am einfachsten vorstellbar als Verallgemeinerungen von Kalman-Filtern) keine schlechte Wahl und noch halbwegs verständlich. Der Algorithmus aus der Veröffentlichung „Forecasting time series with complex seasonal patterns using exponential smoothing“ schien mir mit ein paar Weiterentwicklungen aus der Forschungsgruppe und verwandten Veröffentlichungen ganz brauchbar, da die betrachten Zeitreihen abhängig von Temperatur, Jahreszeit und Tag- und Nacht-Rhythmus waren. Ich könnte mir vorstellen, dass sich damit auch der Stromverbrauch eines Haushalts vorhersagen lässt bzw. Anomalien für Regelentscheidungen erkennen lassen.

    Letztendlich konnten wir aber für die meisten Fälle einfach Regeln und Schwellwerte finden, die auch ausreichend, weniger rechen- und speicherintensiv und einfach zu verstehen waren. Eine Veröffentlichung, die das schön aufzeigt, ist „Current Time Series Anomaly Detection Benchmarks are Flawed and are Creating the Illusion of Progress“.

    Der Aufwand zu verstehen, warum ein neuronales Netz welche Entscheidung getroffen hat, insbesondere, wenn die Entscheidung öfter falsch ist und sich Fehler nicht einfach so abtun lassen, sollte auch nicht unterschätzt werden. Das Problem ist unter dem Stichwort Explainable AI zusammengefasst. Im Zweifelsfall hat man dann ein neuronales Netz vor sich und kann dann farbig sehen, welche Knoten wie stark zum Ergebnis beigetragen haben. Wie aber die Struktur und die Gewichte zustande gekommen sind, ist schwierig zu sagen. Bei einem linearen Modell bzw. Perceptron-Modellen geht es vielleicht noch, aber bei größeren Netzen stellt finde ich es nicht oder nur schwer verständlich. Maximal hilft dann Neu- oder Nachtrainieren. Auch das kontinuierliche und inkrementelle Neutrainieren ist nicht so einfach und ohne Nachteile.

    Ich könnte mir vorstellen, dass vielleicht HTM (Hierarchical Temporal Memory) mit NuPIC als Implementierung ein Ansatz sein könnte, der sich einfach ausprobieren ließe. Aber nachvollziehbar wäre es auch nicht wirklich.

    Auch die Idee aus der Vergangenheit die Zukunft vorhersagen zu können, ist auch nicht so hilfreich, wenn Veränderungen häufiger auftreten. Verkaufst Du ein Auto, vergrößerst Deine Familie oder veränderst Deine Großverbraucher, muss Du ein Modell, das auf Zeitreihen aus der Vergangenheit beruht, das berücksichtigen und die Werte entsprechend umrechnen. In Deinem Fall ist es ja auch nicht so einfach, es einfach pro Kunde herunterzurechnen und dann zu skalieren oder darauf zu hoffen, dass das Gesetz der großen Zahlen es schon ausgleicht. Ein gutes Beispiel wäre die Corona-Pandemie die sicher so einige Vorhersagen durcheinander gebracht hat.

    Ich glaube auch nicht, dass Dir Zuschauer oder Leser in ihrer Freizeit nebenbei ein genaues Modell entwickeln. Sie kennen Dein Privatleben nicht und allgemein ließen sich zu dem Thema sicher mehrere Doktorarbeiten schreiben, wenn ein allgemeines und genaues Modell gewünscht ist.

    1. Hallo Max,

      wahnsinn, welche Arbeit Du Dir machst um hier einen so fundierten Kommentar zu schreiben. Auch ich bin was KI angeht relativ skeptisch (obwohl oder auch weil ich damit schon vor über 20 Jahren zu tun hatte). Es ist toll, wenn es funktioniert, bzw. solange es funktioniert. Aber wenn mal was schief geht, dann kommt meist nur Schulterzucken.

      EMHASS basiert auf dem Lösen von großen linearen Gleichungssystemen und ist deterministisch und nachvollziehbar. Ob das im Endeffekt dann einfacher zu debuggen ist: keine Ahnung. Aber irgendwie hätte ich ein besseres Gefühl dabei.

      Ich bin mehr als gespannt, wo der Hase hinläuft – sowohl in der gesamten Community als auch konkret bei Jörg.

      Schönes (sonniges) Wochenende wünsche ich allen!

    2. Es gab vor ein paar Jahren mal einen Wettbewerb, anhand gegebener historischer Last- und Wetter[vorhersage]daten ein Modell zu entwickeln, das Verbrauch und Einspeisung möglichst optimal abbildet.

      Diverse Leute haben mit den Daten diverse neuronale Netze trainiert. Das hat auch einigermaßen geklappt. Nur: am erfolgreichsten war der Ansatz, die historischen Daten komplett zu ignorieren und das Ganze stattdessen mit einem stinknormalen linearen Optimierer abzubilden.

      https://www.drivendata.org/competitions/53/optimize-photovoltaic-battery/

      Dabei waren KI-Ansätze zwar auch beteiligt, aber die wurden halt vor Allem verwendet, um künftige Verbräuche und Unsicherheiten abzuschätzen (Wettervorhersage vs. tatsächlicher Solarertrag und so) etc., aber nicht für die eigentliche Regelung.

    3. Spannend spannend spannend…. UND TAUSEND DANK FÜR EUREN INPUT!

      Ja eine 100%-Lösung ist nicht mein Anspruch. Eher würde ich einfach gerne meinen “Spieltrieb” ausleben und bunt verschiedene Ansätze testen, um da nach und nach ein Gefühl zu bekommen, was einigermaßen gut funktioniert. Kann ja alles nur eine Annäherung sein – bei so vielen Planungsunsicherheiten ringsherum. Aktuell ist meine Logik unterirdisch – es kann also vermutlich nur besser werden, egal mit welchem Ansatz.

      Dass es irgendwann mal eine “Fertiglösung von der Stange” geben wird… Klar, aber das dauert sicher noch laaaange. Und dann gibts das vermutlich auch nur als “Energiesparabo”, bei dem man dann 10% der erwirtschafteten Einsparungen an den Dienstleister abtreten muss oder sowas in der Art. Zumindest würde ich das dann so machen, wenn ich das kommerzialisieren müsste.

      Insgesamt nehme ich mal als zentrale Erkenntnis mit: “Keep it simple” und “nachvollziehbar”, was die Regelungslogik angeht…

      Viele Grüße
      Jörg

    4. Ich hatte auch noch zum Thema Einspeiseoptimierung recherchiert. Da Du kürzlich darüber in einem Video mit Andreas Schmitz gesprochen hattest, vielleicht noch ein kurzes Rechercheergebnis dazu.

      Wie Andreas schon gesagt hat, ist ein klassisches Optimierungsproblem. Mit scheint es sehr verwandt zur Lagerbestandsführung bzw. Inventory Theory. Es gibt eine Angebotsfunktion, eine Nachfragefunktion und eine Lagergröße. Ziel ist es, Waren in Zeiten geringer Nachfrage möglichst billig einzukaufen und einzulagern, um sie bei hoher Nachfrage später möglichst teuer wieder zu verkaufen.

      Andreas hat ja schon vieles angerissen und sicher viel mehr Erfahrung, insbesondere mit großen Modellen. Seine Empfehlung, evolutionäre Algorithmen einzusetzen, halte ich nicht für falsch. Im Gegensatz zu einigen anderen einfacheren Algorithmen finden sie tatsächlich nicht nur lokale Optima und sind vielfältig und relativ einfach einzusetzen. Allerdings sollten die Anwendung auch nicht unterschätzt werden. In Vorlesungen und Softwaredokumentation wird es manchmal so dargestellt, dass für die Parameter des Optimierungsalgorithmus wie Populationsgröße, Selektionsdruck, Mutationsrate, Mutationstypen, Wahrscheinlichkeiten der Merkmale von Individuen oder Gewichte in der Fitness-Funktion einfach irgendwelche Werte genommen werden können. In der Praxis ist das aber nicht so einfach und die Güte des Ergebnis kann sich auch dadurch deutlich verändern. Die Wahl der falschen Parameter kann den Effekt, noch verstärken, dass sich evolutionäre Algorithmen manchmal in ausweglose Nischen entwickeln, also bei irgendeinem lokalen Optimum verharren, noch verstärken. Wie vieles bei evolutionären Algorithmen ist das auch intuitiv: Ist beispielsweise das Ziel, ein Bakterium an höhere Temperaturen zu gewöhnen, ist es sicher keine gute Idee, den Selektionsdruck durch Anlegen der Zieltemperatur zu maximieren. Dann sterben wahrscheinlich alle Bakterien sofort. Vielmehr muss die Temperatur schrittweise angehoben werden, damit eine Anpassung überhaupt möglich wird. Ansonsten verkommen evolutionäre Algorithmen schnell zu einer ganz einfachen Monte-Carlo-Simulation, weil andauernd zufällige Individuen erzeugt werden, die aber auch andauernd ergebnislos absterben.

      Ich würde evolutionäre Algorithmen eher für komplexe Probleme, für die es beispielsweise keine gute Theorie oder nur komplexere Lösungsansätze gibt, einsetzen oder für Probleme, bei denen in ganz kurzer Zeit irgendein Ergebnis vorliegen soll, das besser sein soll als der Zufall. Evolutionäre Algorithmen sind intuitiv und einfach anzuwenden. Innerhalb kurzer Zeit lassen sich Ergebnisse erzielen. Allerdings steckt der Teufel auch im Detail und es wird dann Erfahrung und Wissen notwendig, um nicht nur irgendein Ergebnis, das besser als der Zufall ist, zu haben.

      Den Rechenaufwand für genetische Algorithmen würde ich, wenn sie als Maschinencode ausgeführt und nicht interpretiert werden und eine geringe Feature-Anzahl haben, für moderne Computer für mehr als bewältigbar einschätzen. Wenn Du es nicht gerade richtig ineffizient machst, wird Dein Raspberry Pi das schon in kurzer Zeit schaffen, zumal Du es ja nur einmal pro Tag rechnen musst.

      Eigentlich ist das Problem der Energiespeicheroptimierung aber auch schon ganz gut untersucht und es gibt viele Veröffentlichungen dazu. Im Bezug auf Pumpspeicherkraftwerke ist es ja auch schon sehr alt. Insofern denke ich nicht, dass es hier notwendig ist, vieles neu zu erfinden oder Algorithmen für Probleme mit unbekannter Lösung anzuwenden. Ich denke, die Schwierigkeit liegt eher darin, den Verbrauch vorherzusagen.

      Ein Ansatz, der öfter gewählt wird, ist dynamische Programmierung. Eine neuere Veröffentlichung mit dem Ansatz wäre „Continuous Near-Optimal Control of Energy Storage Systems“. Die darin vorgestellte Hybridlösung aus dynamischer Programmierung und einem einfachen Regelsystem scheint mir wie dynamische Programmierung an sich recht einfach zu programmieren und zu verstehen und ergibt für mich auch Sinn. Außerdem wird der deutliche Rechenaufwand dynamischer Programmierung verringert. Das Modell müsste allerdings auch noch leicht angepasst werden. Auch fehlt der Nachweis, dass dynamische Programmierung in dem Fall wirklich das globale Optimum findet. Es bietet sich auch eher Forward-Induction ausgehend vom aktuellen Ladezustand an.

      Eine viel beachtete Veröffentlichung, in der auf eher grundlegende Aspekte für dynamische Programmierung zur Speicheroptimierung eingegangen wird und auch die Abnutzung des Speichers noch mit einbezogen wird, wäre „Optimal Power Flow Management for Grid Connected PV Systems With Batteries“. An sich ist der Algorithmus aus der ersten Veröffentlichung auch eine Weiterentwicklung von „Optimal Operation of Energy Storage Systems Considering Forecasts and Battery Degradation“.

      Dynamische Programmierung hätte auch den Vorteil, dass bei inkrementeller Berechnung eventuell durch Memoization Teilergebnisse wiederverwendet werden können, und auch Optimierungen jenseits von einem Tag möglich sind. Gerade mit Elektroautos ist ja eher eine Arbeitswoche als ein Tag der interessantere Optimierungszeitraum.

      Wenn Heuristiken oder optimierte Solver eingesetzt werden sollen, lohnt es sich vielleicht auch noch andere Ansätze anzusehen, die beispielsweise Speicheroptimierung auf ganzzahlige lineare Optimierung oder ähnliche gut erforschte Ansätze reduzieren. Zu dem Thema wurde schon so viel veröffentlicht, dass einige Ansätze ausprobiert wurden.

      Ich vermute wie gesagt aber, dass selbst eine einfache Regel wie „Speise immer in den n teuersten Stunden am Abend ein (n abhängig von Überschuss) und Lade sonst so viel wie möglich“ in Deinem Fall nicht ganz so schlecht funktionieren würde. Ich denke eher, dass das schwierigere Probleme eine gute Verbrauchsvorhersage ist.

  6. Hallo Jörg,

    im VRM-Portal gibt’s seit einigen Tagen eine PV-Prognose. Victron beschreibt hier wie das funktioniert https://www.victronenergy.com/blog/2023/07/05/new-vrm-solar-production-forecast-feature/ Das basiert auf einem ML-Modell “deiner” historischen Daten und einer Strahlungsvorhersage. Den ganzen Kram kann man anscheinend auch über die API abgreifen https://flows.nodered.org/node/victron-vrm-api

    Das ist doch genau was du suchst? Damit hättest du schonmal den ersten Teil für Projekt gelöst

    Grüße
    Stefan

    1. Hi Stefan,
      danke für deinen Input!

      Der Victron-Forecast basiert ja auch auf dem Dienst “Solcast”, welchen ich bereits seit 1-2 Jahren per NodeRED-Flow eingebunden habe. Aber perspektivisch könnte ich da schon auf die Victron-Lösung umsteigen, weil es dann vermutlich viel einfacher zu implementieren ist. Dazu müsste ich meine PV-Produktion aber erstmal in Venus-OS integrieren – denn aktuell nutze ich Venus-OS lediglich als “Integrations-Layer”, um BMS und Multiplus extern anzusteuern…

      Viele Grüße
      Jörg

    2. Was Victron da macht, das ist nicht nur Solcast pur. Das ist noch zusätzlich ein Abgleich mit den historischen Daten. Eine Korrektur über eine Wetterstation ist nicht notwendig. Ich beobachte die Daten seit einigen Tagen – es passt recht gut (ich habe eine Nord+Süd-PV, bei SMA liegt die Prognose voll daneben … Ich war schon dabei etwas eigenes über ein clearsky Modell in Python zu basteln, das ist aber nun unnötig)

      Im VRM-Beta-Portal gibt’s jetzt auch eine Vorhersage des Verbrauchs. Ja das ist noch Beta, aber nach 80/20-Regel sieht es schon gut aus. Über die Beta-API soll es auch abgreifbar sein
      https://community.victronenergy.com/questions/218582/early-preview-of-new-vrm-consumption-forecast.html

    3. Also über die Solcast-API pumpe ich auch meine realen Anlagendaten zurück, damit sich das Modell verbessern kann. Dämlich ist aber dennoch, dass man nur eine Anlagenausrichtung angeben kann. Und das ist ziemlich schwierig bei meiner Anlage, da ich vier “Hauptausrichtungen” habe… Da kommt der Algorithmus spätestens im Winter ziemlich durcheinander, da meine Anlage hier real weniger produziert.

      Das mit der Verbrauchsprognose bei Victron ist natürlich auch cool… Damn – muss ich doch endlich mal alle meine Daten (Produktion, Verbrauch, etc.) in Venus OS integrieren…

      Viele Grüße und danke für deinen Input
      Jörg

    4. Wenn du schon auch deine realen Werte per solcast-api zurückschiebst könntest du da dann nicht einfach dein Anlage virtuell aufteilen in “Süd”, “Nord”, “Süd-Flachdach” .. somit hat jeder Anlagenteil seine eigene Vorhersage.

      Zumindest in Home Assistant habe ich die Anlage meines Vaters so abgedeckt und für jeden Anlagenteil entsprechend eine eigene Vorhersage. Die trifft auf jedenfall besser als eine Vorhersage für alles zusammen.

  7. Auch in Home Assistent gibt es schon lange eine PV Prognose… Wie gut die allerdings ist: nun ja. Manchmal kommt das ganz gut hin, oft aber eben auch nicht.

    1. Ist immer die Frage, welcher Forecast-Dienst dahinter steckt… Im Falle von Victron wird ja Solcast verwendet. Das halte ich schon für recht gut – aus eigener Erfahrung.

      Viele Grüße
      Jörg

    2. Meine Erfahrung mit Forecast.Solar (externer Link) über Homeassistant ist, dass es an voll-sonnigen Tagen sehr gut passt, aber bei wechselhaften Tagen die Prognose 20-25% zu optimistische Energiemengen für den Tag prognostiziert.
      Aber gerade die wechselhaften Tage sind ja auch schwierig.

    3. Jo, ist bei Solcast auch nicht so viel anders. Meist stimmt es schon ganz gut – auch bei “wechselhaften” Tagen, manchmal liegt die Prognose aber auch mehr als 50% daneben…

  8. Nach dem Lesen der ersten 3-4 Seiten im Wiki von EMHASS ist es glaube ich sogar genau was du suchst für deine Anlage und hat alle nötigen Punkte beschrieben, auf dieser Seite sogar wie die Formeln sind:
    https://emhass.readthedocs.io/en/latest/lpems.html

  9. Ich hab auch keine Ahnung, aber
    zu dem Punkt wo Du schreibst, das Vorhersagen nur “bewölkt” schreiben – es gibt doch Anbieter mit einer Solarprognose.
    Zum Beispiel hat Windy.com Solarprognosen für bis zu 10 Tagen
    https://www.windy.com/de/-Mehr-Ebenen-anzeigen-hzfg-/overlays?solarpower,50.541,7.110,5,i:temp,m:e2sagpF
    Ich hab allerdings keine Ahnung wie gut die sind, und ob man die in diesem Fall per API abgreifen kann.
    Toller Blog übrigens, bin erst gestern drauf gestossen.

    1. Hi Claus,
      danke für die Blumen! Hoffe du hast dich schon in den Newsletter eingeschrieben und den YouTube-Channel abonniert.. 😀

      Ja, habe schon einige Prognose-Dienstleister “lose” getestet. Alles, was über 3-4 Tage hinausgeht, war bisher immer absolut unbrauchbar. Zumindest eben kostenfreie Lösungen. windy.com werde ich mir mal anschauen, danke!

      Viele Grüße
      Jörg

  10. Hallo Jörg,
    ist zwar nicht dieses Thema, ich bräuchte Deine Unterstützung. Thema dynamische Strompreise und die Möglichkeit anhand dieser den Akku zu laden. Kurz, auf unser Dach passen ca. 7,6kwp. Den Rest an Strom muss ich zukaufen und möchte das dann tun, wenn es an der EEX günstig ist. Plane aktuell mit 11kwh Speicher. Direktvermarktung wäre meine Anlage zu klein. Selber realisieren… bis zu einem gewissen Grad. Nur, welcher Speicher unterstützt, dass ich ihn zu einem definierten Zeitpunkt aus dem Netz auflade ?
    Gruß Axel

    1. Ich habe schon mal irgendwann ein YT Video gesehen, da wurde ein Kaufspeicher per virtueller Zeitschaltuhr zum Laden aus dem Netz bewegt. Eher so semi cool…

      Wirklich cool lässt es sich denke ich aktuell nur mit einer Victron-Anlage umsetzen. Hier kann man den Speicher über den ESS Mode 3 per Modbus-Befehlen fernsteuern. So wie ich es eben so eben per Loxone bzw. NodeRED mache…

      Da lassen sich dann bspw die Börsenstrompreise per API abrufen und dann bei einem geringen SoC die Akkuladung aus dem Netz starten.

      Viele Grüße
      Jörg

  11. openems.io im Zusammenhang mit Fenecon scheint es auch zu können. Habe mich zum hackaday Ende September in Göttingen angemeldet. Falls Interesse besteht berichte ich.

    Jörg, deine Anlage zeigt das technisch machbare. Die ist schon cool, aber weit weg von dem, was Unsereins realisieren kann…. Mehr als 7,6kwp Fläche habe ich nicht, die muss ich auch noch teilen weil der Friesengiebel in der Mitte zwar schön aussieht, aber auch Verschattung mit sich bringt. Wenn das strompreisoptimierte Laden da nicht bei ist, rechnet es sich für uns nicht. Und bei dem bisschen Kapazität brauche ich über die Börse gar nicht nachdenken…. Gruß Axel

    1. openems klingt ja echt spannend. Der Hackathon klingt ebenfalls super interessant. Berichte gerne, klar! Wäre mega, wenn man die Vorträge auch online anschauen könnte. Weisst du da spontan, ob das möglich ist?

      Viele Grüße
      Jörg

  12. Hi, mach ich. Wenn Du openems installieren möchtest, die Basis ist Java17. Und noch etwas zur AI basierten Regelungslogistik. Du kannst natürlich die AI in der Cloud nutzen. Watson von IBM oder ChatGPT. Allerdings würde ich dir empfehlen, mir mal den Google Coral TPU RPI USB Accelerator anzuschauen. Künstliche Intelligenz am RPI 4 über USB3, 4Mrd Rechenoperationen pro Sekunde für ca. 90 €, programmiert in Python. Anleitung und Demos bei Google. Dann brauchst Du nur noch das Datenmodell.
    Gruß Axel

    1. Ach spannend. Hab sogar noch irgendwo zwei dieser Coral TPU rumfliegen… :DDD
      Wenn ich nur mehr Zeit hätte aktuell – mal sehen…

      Viele Grüße
      Jörg

  13. Deine Ambition, die PV-Anlage und den Hausspeicher im Rahmen der Direktvermarktung zu optimieren, verdient Anerkennung. Deine Anforderungen an die Regelungslogik sind beeindruckend und komplex. Die Einbeziehung von PV-Prognosen, Börsenstrompreisen und Eigenverbrauch erfordert eine durchdachte Lösung. Die Idee, AI-basierte Logiken in Betracht zu ziehen, um diese Herausforderungen zu bewältigen, ist vielversprechend. Hast du bereits Erfahrungen mit OpenSource-Lösungen oder Eigenentwicklungen gemacht? Vielleicht gibt es Leser, die ähnliche Anforderungen erfolgreich umgesetzt haben und wertvolle Ratschläge teilen können.
    Es könnte auch sinnvoll sein, mit Experten im Bereich maschinelles Lernen oder KI zusammenzuarbeiten, um eine maßgeschneiderte Lösung zu entwickeln. Ich freue mich auf spannende Diskussionen und Lösungsansätze in den Kommentaren.
    Viel Erfolg bei deinem Projekt!

    1. Hi David,

      danke für dein Feedback! Muss mir jetzt endlich mal EMHASS genauer anschauen. In diesem Kontext muss ich mich aber erst auch noch mal genauer mit Home Assistant auseinandersetzen, welches dafür vorausgesetzt wird. Hoffe ich komme endlich mal dazu und kann dann schon mal etwas Feedback geben, ob das in die richtige Richtung geht.

      So long
      Jörg

  14. Moinmoin,

    EMHASS sieht sehr vielversprechend aus. Ich habe mir schon vieles angesehen. Aber wenn die ersten Formelsammlungen erschienen, musste ich aussteigen 😀

    Was aber Spaß macht, ist ChatGPT nach einer Lösung mit pyomo zu befragen. Nach kurzer Zeit ist das

    https://github.com/rajcooool/pvdayaheadoptimizer/blob/main/optimizer.py

    herausgekommen. Dann kann man weiterfragen nach mehreren Tagen und der Wetterprognose. Für das Verständnis hilft es auf jeden Fall – ein fertiges Projekt wird es wohl nicht 😉

    Viele Grüße
    Rajko

  15. Da ja der Winter vor der Tür steht und ich jetzt konkret was gebraucht habe, habe ich mir in Home-Assistant erstmal ein paar einfache Regeln definiert:

    – wenn Strom billig oder sehr billig ist, wir das entladen des Akkus deaktiviert, falls SoC unter 70%

    – wenn Strom in 2 Stunden teuer oder sehr teuer wird, und aktuell normal oder günstiger ist, wird der MinSoC des Akkus auf 50% gestellt (und dadurch der Akku geladen)

    Das alles ist jetzt erstmal völlig unabhängig von Auto-SoC (Auto wird eh nur bei billig oder sehr billig geladen, und da will ich eh nicht aus dem Hausakku laden), außerdem unabhängig vom aktuellen Wetter oder der PV-Prognose.

    Eventuell werde ich jetzt noch meine Heizkreispumpe abschalten wenn der Strom in der nächsten Stunde teuer oder sehr teuer wird. Damit sollte die Wärmepumpe selten laufen wenn der Strom teuer ist. Die Warmwassererzeugung hat aktuell eh schon einen Boost programmiert, wenn viel PV-Erzeugung da ist, ggf. werde ich das erweitern dass auch bei sehr günstigem Strom das Warmwasser noch stärker erwärmt wird.

    Es wäre sehr interessant, ob eine KI das wirklich besser hinbekommen würde, und wie viel besser.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Das könnte dir auch gefallen