Sonne in den Tank

Nach den ersten Spielereien mit ioBroker-Skripten kam eine etwas anspruchsvollere Idee auf: Das Auto soll tagsüber nur dann laden, wenn die Photovoltaikanlage dafür ausreichend Strom liefert. Andernfalls soll es nachts den Niedertarif nutzen.

Wir brauchen also die momentane Leistung des Solardachs und wir brauchen eine Möglichkeit, das Ladegerät des Autos davon abhängig zu schalten. Ersteres ist einfach: Es gibt ja bereits einen ioBroker Adapter für den Fronius Wechselrichter, der unter Anderem auch die Momentleistung und die Netto-Leistung vom/ins Netz ausspuckt.

Das Auto lässt sich zwar ebenenfalls per Fernsteuerung laden, aber die Schnittstelle dafür ist leider nicht offengelegt, und ausserdem lässt der Hersteller sich die Fernsteuerung auch per Jahresabo bezahlen.

Aber es gibt eine andere Möglichkeit: Man kann das Ladegerät an eine schaltbare Steckdose anschliessen. Davon gibt es eine ganze Reihe, zum Beispiel von Homematic etc. Ich hatte aber ein Exemplar von myStrom.

Für dieses existiert soweit ich es herausfinden konnte noch kein ioBroker Adapter. Da das myStrom API aber offengelegt und recht simpel ist, wollen wir die Gelegenheit nutzen, einen eigenen ioBroker Adapter für myStrom zu programmieren.

Weil dies hier etwas zu weit führen würde, beschränke ich mich aufs Wesentliche. Den kompletten Code können Sie hier nachsehen: https://github.com/rgwch/ioBroker.mystrom. Das Vorgehen ist nicht sehr kompliziert. Am Besten beginnt man mit dem Adapter Template: https://github.com/ioBroker/ioBroker.template.

Nach Ausführen von

grunt rename --name=mynewname --email=email@mail.com --author="Author Name"

sind alle relevanten Stellen auf den neuen Adapter personalisiert. Dann ändert man nur noch einige wenige Dateien:
  • in 'admin' passt man das Logo an und die Settings-Seite, um die benötigten Variablen einzugeben (Im Wesentlichen die IP-Adresse der zu steuernden mystrom-Steckdose).
  • 'main.js' wird in 'mystrom.js' umbenannt, und die entsprechenden Funktionen zur Kommunikation mit dem Gerät werden dort eingetragen.
  • package.json und io-package.json werden angepasst
Bei weitergehendem Interesse können Sie allgemeine Dokumentation zur ioBroker-Adapter Entwicklung hier nachlesen.

Theorie

Nun wird es Zeit, uns zu überlegen. wie wir die Schaltvorgänge steuern wollen. Dazu gibt es folgende Bedingungen zu berücksichtigen.

  1. Der myStrom Switch ist für 9.9 A Last spezifiziert, und der Hersteller bestätigte mir auf Anfrage, dass dies als mögliche Dauerlast zu verstehen ist. Allerdings zieht der Netzadapter des Autos in Standardeinstellung 10A. Auch wenn das nur ein kleiner Unterschied zu sein scheint, möchte ich das dem filigranen myStrom-Switch nicht zumuten (Haben Sie schon einmal die Temperatur an einem gewöhnlichen Netzstecker gefühlt, durch den einige Stunden lang 10 A, also 2400 Watt geflossen sind?)

    Glücklicherweise lässt sich das Ladegerät auch so konfigurieren, dass es maximal 5A, also 1200 Watt zieht. Das geht dann problemlos, allerdings dauern Ladevorgänge dann natürlich doppelt so lang. Da unser typischer Auto-Tagesbedarf aber nur bei 6-8 kWh liegt, ist das gerade noch erträglich.
  2. Vermutlich ist es nicht so gut, wenn das Ladegerät bei jeder vorbeiziehenden Wolke aus- und dann wieder eingeschaltet wird. 

Um diese Anforderungen zu erreichen, spezifizieren wir:
  1. Das Ladegerät wird eingeschaltet, wenn ausreichend Strom zur Verfügung stehen, und es zieht dann maximal 1200 Watt.
  2. Wenn es einmal eingeschaltet ist, soll es mindestens 10 Minuten lang eingeschaltet bleiben, egal wieviel Strom hereinkommt.
  3. Danach soll es sich wieder ausschalten, sobald die Solaranlage nicht mehr ausreichend Strom liefert. Frühestens nach 10 Minuten kann es sich wieder einschalten.

Praxis

Obige Spezifikation wollen wir nun als Script formulieren. Das erweist sich dann, nach diesen Vorarbeiten, doch wieder als erstaunlich einfach:




Mittels der Schedule-Funktion führen wir alle 10 Minuten zwischen 7 und 19 Uhr Code aus, welcher den Stromfluss vom bzw. zum Netz prüft. Wenn mehr als 1500 Watt exportiert werden, wird das Ladegerät eingeschaltet und zieht dann maximal 1200 Watt. Wenn kein Strom mehr exportiert wird (also die Leistung nicht mehr reicht, um den Verbrauch zu decken), wird die Steckdose wieder ausgeschaltet. Da die Funktion nur alle 10 Minuten ausgeführt wird, werden zu schnelle Schaltvorgänge von vornherein vermieden.

Jeden Abend um 21:05 wird die Steckdose auf jeden Fall eingeschaltet, und jeden Morgen um 06:59 wieder ausgeschaltet. (Niedertarif ausnutzen, falls die Sonne des vorigen Tages nicht für volle Ladung gereicht hat).

Den etwas kryptischen Inhalt der "schedule" Ausdrücke können Sie automatisch setzen lassen, wenn Sie oben rechts auf "Cron" klicken.


zum ersten Teil - zum vorherigen Teil - zum nächsten Teil



Kommentare

Beliebte Posts aus diesem Blog

von Schedules und Triggern

myStrom WiFi Button an ioBroker anbinden

Einfache Script-Beispiele