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.
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):
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.
Falls jemand nen Werbelink sucht: https://invite.tibber.com/fh6d11ib oder die ID einzeln für die App (das geht auch nachträglich: fh6d11ib). Durch die Nutzung bekommen wir jeweils 50€ im Shop gutgeschrieben.
Gutes Gelingen 🙂 Ciao, LG,
Torsten
Kommentar verfassen