Der elektrische Renault Kangoo in unserem Fuhrpark hat eine “Komfortfunktion”, die zu einer festen Zeit den Innenraum heizt, sofern das Fahrzeug mit Netzstrom versorgt wird. Leider lässt sich die Funktion nicht deaktivieren. Anstelle einer teuren Fahrzeug-Reparatur ein schneller Hack mit Hilfe von IOBroker.
Die Idee ist grundsätzlich nicht schlecht: wer täglich zu einer festen Zeit losfährt, möchte sein Fahrzeug im Winter mit “Landstrom” heizen, anstatt nach dem Einsteigen kostbare Energie aus der Batterie darauf zu verschwenden. Blöd nur, wenn man die Funktion nicht braucht, und sie sich nicht deaktivieren lässt.
So im vorliegenden Fall. Das Handbuch erklärt zwar, wie man eine Zeit für den Heizbeginn festlegt und in welcher Stellung der Gebläseknopf stehen muss, um die Automatik zu aktivieren. Leider heizt das Auto Tag für Tag, unabhängig von der Gebläse-Einstellung. Nachdem auch das Autohaus ratlos ist, liegt ein defekt des Drehknopfs nahe. An die Kosten, die das Autohaus fürs Zerlegen des Armaturenbretts in Rechnung stellt, möchte man lieber nicht denken.
Aufgefallen ist die Sache überhaupt erst nach Montage einer Wallbox, die – so meine Forderung – eine Kommunikationsschnittstelle wie ModBus/TCP mitbringen sollte. Wofür so was gut ist, sieht man oft erst hinterher, denn ich habe ja nicht gezielt nach einer defekten Heizfunktion gesucht. Die Aufzeichnungen waren jedoch verräterisch – hier ist die Komfortfunktion auf Mitternacht eingestellt:

Die ungewollte Heizphase von 23:30 bis 0:15 Uhr ist zu erkennen. Im nächsten Bild ist zu sehen, wie sich die Heizphasen (ganz links und ganz rechts) von Ladevorgängen unterscheiden:

Anstelle also das Fahrzeug reparieren zu lassen, habe ich stattdessen die Steuerungsmöglichkeiten der Wallbox genutzt (eine Compleo e-box professional). Neben den Eingangsregistern, die ich zuvor schon genutzt habe, um den Status der Wallbox auszulesen…

…habe ich zusätzlich die nötigen Holding-Register definiert, um Vorgaben für den Maximalstrom an die Wallbox schicken zu können:

Ein quick-and-dirty-Skript in Blockly setzt die Zeitsteuerung um:

Diese zwei Befehle sind inzwischen Teil eines größeren Skripts, daher taucht hier noch eine Variable I_Laden auf. Hier kann natürlich auch ein fester Maximalwert eingetragen werden.
Der Zeitbereich ist bewusst groß gewählt, um fehlende Sommerzeitumstellung im Fahrzeug etc. abzufangen.
Wichtig ist, dass statt des Befehls “aktualisiere” die Anweisung “steuere” verwendet wird. Mit “Aktualisiere” lässt sich ein Wert ändern, auf den keine weitere Handlung folgen muss – also z.B. eine Variable, die an anderer Stelle weiterverarbeitet wird. IOBroker spricht in dem Fall von einer bestätigten Änderung. Soll ein Gerät dagegen etwas tun, braucht es eine unbestätigte Änderung – das wird erreicht durch die Anweisung “steuere”.
Et voilà – hier ist zu sehen, wie die Strom-Vorgabe zwischen 22 und 02 Uhr auf null Ampere geht und kein Heizen mehr stattfindet. Die Wallbox wechselt dadurch in den Status “nicht bereit” und stellt keine Energie zur Verfügung:
