Also: Ich habe das Go-E MQTT-Plugin, das Renault Plugin und da ich eine Tesla Powerwall habe, messe ich die Werte für Netz, PV und Batterie damit. Für die Go-E ist das absolute Minimum, dass man Netzbezug und -einspeisung mißt, das kann man schon mit einem Infrarot-Lesekopf für den Zähler für unter 20 Euro bei Ebay.
Ich will, dass die Zoe nur auf 90% geladen wird (nachts sogar noch weniger, da ich gerne für tagsüber die Zoe als Puffer für die PV verwende). Nach fehlgeschlagenen Versuchen mit der Renault-API (die gibt des öfteren einen Rate-Limiting-Fehler zurück), füttere ich beim Einstecken der Zoe die Go-E mit dem Ladelimit, das ich errechne.
Dafür gibt es die erste Automation:
Bildschirmfoto 2025-02-22 um 17.37.55.png
{% set maxsoc = states('input_number.zoe_maxsoc') | int %}
{% set currentsoc = states('sensor.zoe_batterie') | int %}
{% set wh = (52 * (maxsoc - currentsoc)/100 * 1000) | int %}
{% if wh < 0 %}
{% set wh = 0 %}
{% endif %}
{{ wh }}
Wegen der schlechten Erreichbarkeit der API der Zoe schreibe ich den Wert, den ich von der Zoe für den Ladestand bekomme, in einen zusätzlichen Helfer, damit ist der Ladestand immer verfügbar.
Sobald die Zoe eingesteckt wird, ändert sich der Go-E Parameter CAR von Idle auf "Wait for Car" oder "Charging". Sobald das passiert, schreibe ich in DWO die Wh, die ich laden möchte.
Die zweite Automation läuft einfach von Sonnenaufgang bis Sonnenuntergang alle 5 Sekunden:
Bildschirmfoto 2025-02-22 um 17.43.31.png
Damit schreibe ich die Werte für Grid, PV und Batterie per MQTT an die Go-E:
{% set battery = states('sensor.powerwall_battery_now') | float * 1000 %}
{% set grid = states('sensor.powerwall_site_now') | float * 1000 %}
{% set solar = states('sensor.powerwall_solar_now') | float * 1000 %}
{% set minsoc = states('input_number.powerwall_minsoc') | int %}
{% set soc = states('sensor.powerwall_soc') | float %}
{% if soc < minsoc %}
{% set battery = 0 %}
{%endif %}
{{ '{"pPv": %s, "pGrid": %s, "pAkku": %s}' % (solar | int, grid | int, battery | int) }}
Wie gesagt, das Minimum ist, pGrid an die Go-E zu senden, wenn eingespeist wird, muss pGrid negativ sein, wenn bezogen wird, positiv. Da ich die Powerwall mindestens bis auf 65% geladen haben will (konfigurierbar über einen numerischen Helfer), sende ich unter 65% nur Grid und PV, darüber auch Battery. Solange Battery 0 ist, lädt die Go-E nicht, wenn sie sieht, dass eine Batterie geladen wird, zieht sie so viel Ladung wie möglich an sich und läßt nur den Rest für die Hausbatterie.
Die interne Ladelogik der Go-E macht den Rest: Die Umschaltung zwischen 1- und 3-Phasig und das Regeln der Ampere für die Ladung, da braucht man sich nicht drum zu kümmern.
Ich simuliere mit dieser Logik einen Go-E-Controller, der macht im Prinzip das gleiche, misst aber die Werte mit Stromzangen im Zählerkasten.
Ich hoffe, das ist halbwegs verständlich gewesen (ich habe mich schon einige Zeit mit dem Thema beschäftigt, das ist bestimmt schon die 10. Verfeinerung der Logik, die allerdings eher einfacher als komplizierter geworden ist mit der Zeit).
Eines kann noch ein Stolperstein werden:
Es gibt einen Parameter namens sua in der Go-E, der über die App nicht mehr verändert werden kann. Wenn der auf TRUE steht (das war bei mir der Fall), beendet die Ladelogik der Go-E die Ladung nicht und setzt auch die geladenen Wh für die Ladesitzung beim nächsten Anstöpseln nicht zurück. Da kann man einfach ein FALSE senden (entweder mit einer Automation oder über Nodered), dann funktioniert die Logik richtig.
Wenn es noch Fragen gibt, beantworte ich die gerne.