ich habe beim PV-Überschussladen die Beobachtung gemacht, dass sich die Regelungen der Wallbox und der Hausbatterie gegenseitig in die Quere kommen, weil beide Geräte versuchen, Netzbezug bzw. Einspeisung auf Null zu bekommen. Allerdings können in meinem Fall die beiden nicht direkt miteinander reden.
Mein Lösungsidee:
Wenn Wallbox lädt, dann der Batterie das Entladen verbieten. Damit verbraucht die Wallbox den Überschuss aber saugt die Batterie nicht leer, gleichzeitig landet das, was die WB übrig lässt, trotzdem in der Hausbatterie.
Und für den Fall, dass die Batterie trotzdem voll wird: Dann wird umgekehrt das Laden gesperrt und das entladen erlaubt, bis die Batterie wieder etwas leerer ist und zurückgeschaltet wird (Hysterese-Werte einstellbar als SOC).
Wird nicht geladen, wird die Batterie wieder komplett freigegeben. Das passiert bei meiner WB auch dann, wenn die eine Ladepause mangels PV-Überschusses einlegt.
Wallbox: Hardy Barth CPµ2
Wechselrichter: Fronius GEN24
Und hier die Logik:

Code: Alles auswählen
/**
* Steuerung der Hausbatterie im E-Auto-Ladebetrieb
*
* Beim Autoladen wird ein Entladen der Hausbatterie verhindert. Laden der
* Hausbatterie ist weiterhin möglich. Damit wird verhindert, dass sich die
* Regelung der PV-Überschussladung der Wallbox mit dem Hausbatterieregler
* gegenseitig in die Quere kommen.
*
* Wenn SOC sehr hoch wird (Parameter "Hysterese max.") wird stattdessen das
* Laden der Hausbatterie gesperrt und das Entladen dafür freigegeben. Bei
* Unterschreiten von "Hysterese min." wird wieder zurückgeschaltet.
*
* Entwickelt für Wallbox Hardy Barth CPµ2 und Wechselrichter Fronius GEN24.
*
*/
{
"Level":[
["$SOC","int",0],
["$WB_Control_Pilot_State","string","A"],
["$Hysterese_max","int",98],
["$Hysterese_min","int",90],
["$WB_akiv", "bool", false],
["$Formula", "string", "X1 * (1-X2)"],
["$Formula2", "string", "X1 * X2"],
["$CompareTo", "string", "C"],
["$StrCmpMode", "string", "e"],
["$BattModeEntladen", "bool", false],
["$BattNurLaden", "bool", false],
["$BattNurEntladen", "bool", false],
["$StorCtl_Mod", "int", 0] // 3: Batterie deaktiviert, 2: nur laden, 1: nur entladen, 0: Normalbetrieb
],
"Module":[
["Stringcompare", "$WB_Control_Pilot_State", "$WB_akiv", "$CompareTo", "$StrCmpMode"], // Wert "C" = aktives Laden
["CalcFormula",["$WB_akiv","$BattModeEntladen"], "$BattNurLaden", "$Formula"], // Nur Laden erlauben (bool)
["CalcFormula",["$WB_akiv","$BattModeEntladen"], "$BattNurEntladen", "$Formula2"], // Nur Enladen erlauben (bool)
["Comparator","$SOC","$BattModeEntladen",["$Hysterese_min","$Hysterese_max"]], // Hysterese Entladen/Laden
["BinaryMultiplexer", ["$BattNurEntladen", "$BattNurLaden"], "$StorCtl_Mod"] // Bitmaske für StorCtl_Mod erstellen
],
"Input":[
["Wallbox Control Pilot State","Ladestatus der Wallbox ['A','B','C'] (Hardy Barth / Salia Platine)","$WB_Control_Pilot_State","c"],
["SOC in","State-of-Charge Hausbatterie","$SOC","c"],
["Hysterese max.","Maximaler SOC Hausbatterie [%] (Freigabe Entladen, Sperre Laden)","$Hysterese_max","c"],
["Hysterese min.","Minimaler SOC Hasubatterie [%] (Sperren Entladen, Freigabe Laden)","$Hysterese_min","c"]
],
"Output":[
["Laden akiv","Es wird aktuell geladen (bool). Z.B. für Visu.","$WB_akiv","c"],
["Batterie darf nur entladen","Zur Nutzung im Modbus-Register 'InWRte' Mapping des Ausgangs auf 't: 0, f: 10000' nutzen.","$BattNurEntladen","c"],
["Batterie darf nur laden","Zur Nutzung im Modbus-Register 'OutWRte' Mapping des Ausgangs auf 't: 0, f: 10000' nutzen.","$BattNurLaden","c"],
["StorCtl_Mod","Bitcodierter Integer-Wert für direkte Nutzung im Modbus-Register 'StorCtl_Mod'","$StorCtl_Mod","c"]
]
}
- der Eingang "Wallbox Control State mit dem Stringcompare. Der kann aber leicht ersetzt werden durch etwas anderes, was boolsch "Laden aktiv" von der WB liefert, und
- der Ausgang "StorCtl_Mod" der in der Hausbatterie die Beschränkungen zum Laden/Entladen aktiviert und deaktiviert (via Modbus). Bin mir nicht sicher, ob das Sunspec ist?

Viele Grüße
Arne