Victron PV: Überschuss – Was tun, wenn Akku voll?

Worum geht es?

Wir betreiben eine PV Inselanlage. Das bedeutet: Wir speisen unseren erzeugten Strom zu keinem Zeitpunkt ein, kassieren nirgends Geld für überschüssigen Strom – Sind dafür aber Herr unserer Anlage und können mit dem Strom tun und lassen, was wir wollen. Erstmal fließt natürlich der Ertrag zu den angeschlossenen Verbrauchern. Wird gerade nicht genug Strom erzeugt, so stützt ein 13 kWh Akkusystem diese Versorgung. Wenn die Akkus soweit leer sind, dass sie nicht sinnvoll weiter Strom liefern können, schalten wir hart auf Landstrom um – Dann läuft die gesamte Insel über externe Versorgung. Bis dahin sind wir aber autark, respektive die Verbraucher, die an der Insel betrieben werden.

Dies war jetzt eine Beschreibung der dunkeln Jahreszeit, in der der Akku nie oder selten so voll ist, dass er keinen überschüssigen Strom speichern könnte. Denn im Schnitt benötigen die Verbraucher der Inselanlage nur um die 300 Watt und die knapp 6kWP der Solarzellen liefern ja mehr Strom. Der geht in die Akkus und wenn der Akku voll ist? Dann liegt ein Überschuss vor.

Was ist überschüssiger Strom und was hat er für Folgen?

Betreiber von Netzeinspeisenden PV Anlagen verdienen dann dadurch Geld, indem sie diesen Strom ins öffentliche Netz einspeisen. Sinnvoll? Na ja: Für die Betreiber natürlich schon, es gibt ja Geld. Für die Allgemeinheit leider nein, denn wenn die PV-Anlagen Überschuss generieren, dann steht oft ohnehin durch die Großanlagen genug Strom zur Verfügung. Ärgerlich, denn der Strompreis sinkt zu Überschußzeiten in den Keller und dennoch erhalten die Einspeisenden einen festen, meist höheren Obolus, was natürlich eine klare Subvention ist.

Bei uns wird nicht verdient – Aber wir haben Überschuss und damit ein Problem: Die Auslastung der Anlage sollte nahe 100% sein. Gut, wenn man kassiert – Das Geschäftsmodell ist klar. Aber was tut man als Betreiber einer Inselanlage? Man muss Verbraucher zur Insel dazuschalten.

Mögliche Verbraucher von Überschußstrom

  • Heizstäbe, die Warmwasser bereiten
  • Das Elektroauto kann geladen werden
  • Poolpumpen aktivieren
  • Waschmaschine starten
  • etc..

Womit schalten?

Ich habe mich für einen SHELLY 16A Relais entschieden. Diese haben alle möglichen Features, aber ich benutze einfach nur einen einzigen: Die REST-API.

Wie schaltet ein SHELLY per REST API?

REST Api bedeutet einfach nur, dass man durch Aufruf über z.B. einen Webbrowser in der Lage ist das Ganze im festgelegten Rahmen zu steuern.

Vereinfacht:

http://IP.ADDRESSE.DES.SHELLY/relay/0/?turn=on&timer=720
(Natürlich muss IP.ADRESSE… durch irgendwas, wie 192.168.1.11 oder so ersetzt werden. Meist eine IP-Adresse in einem privaten Adressbereich).

Initialisiert wird so ein Shelly durch eine jeweilige BLUETOOTHverbindung mit einer iPhone oder Android App. Da stellt man das ein, schaltet „SHELLY CLOUD“  aus und das genügt für diese Zwecke und generiert nicht unnötig traffic, da das Shelly nur dann reagiert, wenn es gefragt wird.

Die Antwort habe ich gerade nicht zur Hand, ist aber ein kompletter Status.

Wie wird das Shelly in das VICTRON PV System integriert?

Ich habe einen CERBO verbaut. Dies ist eine Dreh- und Angelscheibe für Daten und Steuerungen mit etlichen ein- und ausgängen und Verbindungsmöglichkeiten.

Das Betriebssystem des CERBO nennt sich „VENUS“.

Werksseitig wird aber nur ein „kleines“ VENUS installiert mit wenig Möglichkeiten. Daher muss ein Firmwareupdate durchgeführt werden und zwar kein beliebiges, sondern ein Update auf das „BIG IMAGE“.

Dann erscheint im VRM-Portal ein neuer Eintrag: „VENUS OS LARGE“ sobald man in der Console oder Remote Console das Feature „NODE RED“ aktiviert hat.

NODE RED ist ein extrem komfortables, graphisches IoT Steuersystem, was durchaus auf dem Weg in die professionelle Welt ist. Einige führen aufgrund der hohen Stabilität schon sensible Aufgaben damit durch und dann soll es für unsere Zwecke auch genügen.

Erweitern von NODE RED durch „Paletten“

Im NODE RED benötigt man in der „Palettenverwaltung“ (*g*) die Pakete:

… Die Shelly Contrib ist gerade wieder mal überarbeitet wurden: Die Gemeinde ist eifrig am Entwickeln! Ergo: UPDATEN wie vorgeschlagen ist klar.

Wie sieht die Relaissteuerung für ein Überschuss aus?

So:

Was sieht man?

Zuerst: Gerade wird das Shelly nicht benutzt. http request liefert: EHOSTUNREACH – Logo: Stecker steckt nicht.

Dann: Es gibt ZWEI Zweige. Einmal schalte ich hart und ohne Hysterese den Ausgang RELAIS 2 am Cerbo direkt: Ein, wenn 95% Batterie erreicht und AUS, wenn die 95% unterschritten werden.

Der Shelly über WLAN wird gesteuert mit eine Hysterese.

Warum Hysterese?

Ist ja, siehe oben, ein eigenes Libchen, das geladen werden muss. Aber warum eigentlich?

Schalten wir bei Überschuss, also 95% Akkuladung (SOC) einen starken Vebraucher auf, der 2000 Watt hat und schieben sich Wolken just in dem Moment vor die Sonne, wo dies geschieht, sind die 95% Akkuladung nicht von großer Dauer. Startet man so eine Waschmaschine, dann ist klar: Die heizt ihr Wasser auf und geht dann aus, da sie es bestimmt schafft in 20 Minuten  den Akku von seinen 95% auf 93% zu entladen. Das ist nicht Sinn der Sache. Hier daher erstmal der erste Versuch: Wir schalten die Verbraucher mit 95% auf und wenn die 90% unterschritten werden (HYSTERESE!) – Dann wird abgeschaltet, denn der Akku macht und Autark und am Ende nach kurzem Erreichen eines Überschusses auf Landstrom schalten zu müssen und doch wieder importierten Strom bezahlen ist nicht Sinn der Sache.

Dazu gibt es auch einen „Code“ (der eigentliche Grund dieser Seite: Die Sicherheitskopie des Codes…)

Code:

[{"id":"4ba45a900379c1c9","type":"victron-input-battery","z":"fe8630192da09a74","service":"com.victronenergy.battery/512","path":"/Soc","serviceObj":{"service":"com.victronenergy.battery/512","name":"Pylontech battery"},"pathObj":{"path":"/Soc","type":"float","name":"State of charge (%)"},"name":"Bat staging","onlyChanges":false,"roundValues":"no","x":640,"y":600,"wires":[["3058be4c27fead87"]]},{"id":"80767185a889ae60","type":"switch","z":"fe8630192da09a74","name":"Wenn SOC >95% starte CERBO Relais 2","property":"SOC","propertyType":"flow","rules":[{"t":"gt","v":"95","vt":"num"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":760,"y":380,"wires":[["64db1ec1e7aee40a"],[]]},{"id":"e959352520775a79","type":"victron-input-relay","z":"fe8630192da09a74","service":"com.victronenergy.system/0","path":"/Relay/1/State","serviceObj":{"service":"com.victronenergy.system/0","name":"Venus system"},"pathObj":{"path":"/Relay/1/State","type":"enum","name":"Venus relay 2 state","enum":{"0":"Open","1":"Closed"}},"initial":"","name":"relais 2 state","onlyChanges":false,"x":1270,"y":300,"wires":[[]]},{"id":"3058be4c27fead87","type":"change","z":"fe8630192da09a74","name":"","rules":[{"t":"set","p":"SOC","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":840,"y":600,"wires":[["65db1f722a431935","08e1cff0a73a5019"]]},{"id":"64db1ec1e7aee40a","type":"trigger","z":"fe8630192da09a74","name":"HOLD für 12 min","op1":"1","op2":"0","op1type":"num","op2type":"num","duration":"12","extend":true,"overrideDelay":false,"units":"min","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":1070,"y":380,"wires":[["99a11e518c379335"]]},{"id":"99a11e518c379335","type":"victron-output-relay","z":"fe8630192da09a74","service":"com.victronenergy.system/0","path":"/Relay/1/State","serviceObj":{"service":"com.victronenergy.system/0","name":"Venus device"},"pathObj":{"path":"/Relay/1/State","type":"enum","name":"Venus relay 2 state","enum":{"0":"Open","1":"Closed"},"writable":true},"initial":"0","name":"","onlyChanges":false,"x":1340,"y":380,"wires":[]},{"id":"93aa3068ae480689","type":"inject","z":"fe8630192da09a74","name":"Alle 10 Minuten triggern","props":[{"p":"payload"}],"repeat":"600","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"1","payloadType":"num","x":350,"y":560,"wires":[["80767185a889ae60","e391851627faa2c4"]]},{"id":"5193efe9ee1481f5","type":"http request","z":"fe8630192da09a74","name":"","method":"POST","ret":"txt","paytoqs":"ignore","url":"http://192.168.178.201/relay/0/?turn=on&timer=720","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":1070,"y":660,"wires":[[]]},{"id":"65db1f722a431935","type":"hysteresis","z":"fe8630192da09a74","name":"","ThresholdType":"fixed","ThresholdRising":"95","ThresholdFalling":"90","TopicThreshold":"","TopicCurrent":"","ThresholdDeltaRising":"","ThresholdDeltaFalling":"","InitialMessage":false,"OutRisingType":"num","OutRisingValue":"1","OutFallingType":"num","OutFallingValue":"0","OutTopicType":"top","OutTopicValue":"","DynRaiseError":false,"x":1080,"y":600,"wires":[["55f5db18a3a0de9c"]]},{"id":"e391851627faa2c4","type":"switch","z":"fe8630192da09a74","name":"Wenn BATTFULL ","property":"BATFULL","propertyType":"flow","rules":[{"t":"eq","v":"1","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":670,"y":660,"wires":[["5193efe9ee1481f5","cb714d55968fee48"]]},{"id":"55f5db18a3a0de9c","type":"change","z":"fe8630192da09a74","name":"","rules":[{"t":"set","p":"BATFULL","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1320,"y":600,"wires":[["1c52783a067ef254"]]},{"id":"cb714d55968fee48","type":"debug","z":"fe8630192da09a74","name":"Sende TRIGGER an Shelly","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1120,"y":720,"wires":[]},{"id":"f167786b15f99725","type":"inject","z":"fe8630192da09a74","name":"reset hysterese","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"50","payloadType":"num","x":640,"y":540,"wires":[["3058be4c27fead87"]]},{"id":"08e1cff0a73a5019","type":"debug","z":"fe8630192da09a74","name":"debug 2","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1040,"y":540,"wires":[]},{"id":"daa024acbcc1d177","type":"inject","z":"fe8630192da09a74","name":"activate","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"99","payloadType":"num","x":650,"y":480,"wires":[["3058be4c27fead87"]]},{"id":"1c52783a067ef254","type":"debug","z":"fe8630192da09a74","name":"Überschuss Variable","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1580,"y":600,"wires":[]}]

Abschlussbemerkungen

Ich habe MIR HIER ein paar Notizen gemacht, damit ICH den ganzen Kram nicht vergesse, wenn ich mal später was ändern möchte. Natürlich kann da nicht jeder folgen, erst Recht nicht, wenn er mit der Materie noch nie zutun hatte. Wer aber die Stichworte, die vorkommen, googelt – Der erhält zu jedem Punkt sicherlich auch ausführliche Anleitungen, denn ich betreibe hier ja keine Raketenwissenschaft, sondern dies ist ein extrem einfaches Beispiel einer Überschussableitung. Man kann Shellys natürlich auch viel cooler als Teil von MQTT IoT Systemen integrieren und und und… ein password zu setzen ist hingegen kein Luxus – Das sollte man wirklich tun, damit nicht jeder, der über die ungeschützte Einstellungsseite stolpert mit dem Relais spielen kann.

Schreibe einen Kommentar

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