Hi 👋
Falls ihr hier hin gefunden habt, wisst ihr wahrscheinlich worum es geht 🙂

Kurz gefasst: Multiplus ist an einem Victron GX GerĂ€t oder Cerbo angeschlossen. In Verbindung mit einem dynamischen Stromtarif von Tibber sollen jetzt teure Stunden mit dem Akku ĂŒberbrĂŒckt werden und in gĂŒnstigen soll geladen werden.

In diesem Beitrag hier habe ich erklĂ€rt, wie man das Skript integriert. Aber ich habe einen neuen Beitrag verfasst, wo ich einige Änderungen und Fehler beseitigt habe, sowie eine Solarprognose hinzugefĂŒgt habe. Also holt euch bitte die neuste Version von diesem Beitrag hier:

Ich hab da bisher noch keine einfache Lösung und auch keinen Lösungsweg gefunden, daher biete ich hier mal meine aktuelle Lösung:
Auf einem Raspberry Pi lĂ€uft IoBroker. Dieser holt die Preise von Tibber ab, berechnet dann ob sich die Akkunutzung lohnt (das sollte jeder selber nochmal nachrechnen und einstellen) und verstellt den minimalen SoC, sodass der Akku geladen wird wenn es sehr gĂŒnstig, gĂŒnstig oder normal ist, oder entladen wird, wenn der Preis gerade teuer oder sehr teuer ist. Der SoC wird an den Multiplus mittels Mqtt geschrieben. So sollte man es schaffen unterhalb des Monatsdurchschnitts zu bleiben, sodass im Zweifel die Strompreisbremse greift.

Man sollte wissen, was man tut und was das bewirkt, ich ĂŒbernehme ausdrĂŒcklich keine Haftung und möchte hier auch darauf hinweisen, dass das Work-In-Progress ist. Ich hoffe es hilft dem ein oder anderen dennoch 🙂 Das Konstrukt kann im Sommer sehr stören. Ich werde es nur in der Übergangszeit und im Winter nutzen und dann abschalten. Trotzdem hier ein paar Hinweise zur Installation:

Am Victron unter Einstellungen -> Dienste Mqtt aktivieren.

In IoBroker den Adapter MQTT-Client und eine Instanz davon hinzufĂŒgen. Dann in der Instanz den Victron als Broker angeben. Ich habe in der Instanz bei zusĂ€tzliche Subscriptions die # hinzugefĂŒgt, damit ich in den Objekten immer alle Mqtt Topics finde. Hier kann man jetzt kontrollieren, ob der Mqtt Client funktioniert. Die Topics vom Victron sollten sich jetzt aktualisieren. Bei dieser Gelegenheit die Victron ID aufschreiben. Die braucht man nachher im Blockly Code.

Den Adapter https://github.com/Codibris/ioBroker.tibberconnect (herzlichen Dank an Codibris) habe ich ĂŒber den Experten Modus hinzugefĂŒgt. Also bei Adapter oben auf den Kopf, dann erscheint das Github-Logo (Die Katze) und dort kann man bei Benutzerdefiniert den Link oben einfĂŒgen. Dann auf installieren klicken und der Adapter wird installiert. Nicht vergessen eine Instanz hinzuzufĂŒgen. Im ersten Quartal 2023 funktionierte die Anbindung des Pulse nicht. Daher den Haken fĂŒr das Benutzen des Pulse nicht setzen. Die Preise und Zeiten werden trotzdem richtig geladen.

Man braucht dann noch einen Api Key. Die Doku von Tibber fand ich sehr gut, man kommt sehr schnell an den Key. Die Anleitung findet man in der Tibber App unter Power-ups und dann heißt die Tibber-Api.

Wenn auch in den Tibber Objekten Daten angezeigt werden, fehlt nur noch das Skript. DafĂŒr wird der Adapter „SkriptausfĂŒhrung“ benötigt. In der Instanz Javascript die Einstellung setObject erlauben. Dann können wir aus dem Skript heraus zustĂ€nde verĂ€ndern.

Im Blocky Code weiter unten mĂŒssen <YOUR_VICTRON_ID> und <YOUR_TIBBER_HOME_ID> abgeĂ€ndert werden. Die IDs findet man in den Objekten, indem man den Pfad ausklappt. Ich hab das ganze per einfach in Nodepad++ per Suchen-Ersetzen gemacht. Falls es schon importiert ist, können die Pfade auch mit der Maus ausgewĂ€hlt werden.

Die Pfade fĂŒr tibberconnect sind:

tibberconnect.0.Homes.<YOUR_TIBBER_HOME_ID>.PricesToday.*.total

tibberconnect.0.Homes.<YOUR_TIBBER_HOME_ID>.PricesTomorrow.*.total

hier bitte auf das „.*.total“ achten.

Der wichtige Pfad fĂŒr den Victron ist:
mqtt-client.0.W.<YOUR_VICTRON_ID>.settings.0.Settings.CGwacs.BatteryLife.MinimumSocLimit

Im Skript hab ich noch einen Fehler gemacht: die ZustĂ€nde heißen VERY_CHEAP und VERY_EXPENSIVE. Ich habe im Skript den Unterstrich vergessen. Der muss noch ergĂ€nzt werden.

Damit IoBroker den Wert published, muss das Objekt in IoBroker gefunden werden. Dann rechts auf das Zahnrad. Hier sollten jetzt die MQTT-Client Einstellungen zusehen sein. Den Haken bei Abonnieren entfernen und bei publish setzen. Erst dann bekommt der MQTT-Broker im Cerbo oder GX die Werte wirklich. Das heißt fĂŒrs Testen oder die Einrichtung kann man den Haken noch weg lassen und rumspielen ohne, dass etwas passiert.

Hier kann es sein, dass es den Pfad mit W nicht gibt. Das liegt dann daran, dass noch nie was geschrieben worden ist. Dann einfach den gleichen Pfad mit N wÀhlen und dann das N durch W ersetzen.

Die im Bild mit nem roten Pfeil markierten Stellen sollten kontrolliert werden. Und natĂŒrlich kann man unten andere Prozentzahlen einstellen. 65% und 30% hatte ich zum Testen verwendet. Ich denke ich werde mit 30% bis 80% anfangen. Das {„value“:…}-Zeug muss da bleiben! 😀

Es folgt der Code im Textfile. Der kann einfach importiert werden (Vorher Suchen-Ersetzen -> die IDs Àndern):

Ich empfehle die aktualisierte Version aus dem neuen Beitrag zu nutzen! (Siehe Link oben) In dieser Version gibt es einige Fehler. Zum Beispiel lĂ€dt der Akku auf, wenn er aus einer sehr teuren Stunde in eine teure wechselt und der SoC erhöht wird. Diese und weitere Fehler habe ich im neuen Skript berĂŒcksichtigt.



Das Skript macht dann folgendes:
Zuerst liest es alle Preise von Heute und Morgen aus und ermittelt den gĂŒnstigsten und den teuersten Preis. Wenn der Unterschied so gering ist, dass der Verschleiß vom Akku+Einkaufspreis teurer ist als die Preisdifferenz passiert nix. Wenn der Preis z.B. zwischen 21Cent und 25Cent schwankt, betrĂ€gt die Differenz 4 Cent. Ich habe fĂŒr mich berechnet, dass die Nutzung des Akkus pro kWh 12Cent betrĂ€gt. Ich mĂŒsste also 21Cent Einkauf + 12 Cent also 33Cent als Grundlage nutzen. Also kauf ich lieber fĂŒr 25Cent und verschleiße den Akku nicht. Den Wert kann man aber im Skript einstellen.

Die Steuerung vom Multiplus II fand ich nicht ganz einfach. Die schönste Lösung bisher hab ich mit der Steuerung des Minimalen SoC gefunden. Unter diesen Wert wird der Akku nicht entladen. Aber der MPPT kann ĂŒber diesen Wert aufladen.
Das heißt bei einem normalen Preis setze ich den Minimalen SoC auf den aktuellen SoC. Der Multiplus hört auf zu entladen, lĂ€d aber auch nicht. Das heißt der aktuelle Ladezustand wird einfach gehalten, egal wo er gerade ist. Der MPPT kann, falls die Sonne scheint, aber trotzdem laden.
Bei einem teuren Preis setze ich den minimalen SoC runter, z.B. auf 30%. Dadurch darf der Akku entladen werden und kompensiert die teuren Stunden. Ich setze bei sehr teuren Stunden den minimalen SoC auf 20%. So hab ich fĂŒr diesen Fall wenigstens noch 10% Puffer.

Bei gĂŒnstigen und sehr gĂŒnstigen Stunden setze ich den minimalen SoC hoch auf z.B. 80%. Ist der aktuelle SoC geringer, beginnt der Multiplus zu laden, bis der minimale SoC erreicht ist.

Und das war es auch schon.

Ich freu mich ĂŒber Anregungen, Kommentare etc. in den Kommentaren.

Gutes Gelingen 🙂 Ciao, LG,

Torsten