[FEMS] Auto per Wallbox nicht aus Speicher laden

Moin zusammen,

Bin bei meinem Tests auch über dieses Thema nach einer Google Suche gestolpert. Auch ein Ticket beim Support ist bisher unbeantwortet, daher noch ein weiterer Punkt zum Thema FEMS+Wallbox:

Sollte ein starker Stromverbraucher eingeschaltet werden (Durchlauferhitzer bei mir) und dann wieder abgeschaltet werden, reagiert das FEMS zu langsam und sendet Strom ins Netz. Das wird dann als “Überschuss” angesehen und die Wallbox aktiviert sich. Nach ein paar Minuten schaltet sich alles wieder ab, da in Wirklichkeit ja kein Überschuss vorhanden ist.

Und ja, jede Aktion der Wallbox wird erst einmal aus der Batterie bedient! Da ich auch meine Batterie-Zyklen lieber in sinnvolle Hausnutzung des Strom legen will, habe ich mir mir ein wenig python und Home Assistant beholfen.

Lizenz besorgt um die “REST/API Schreibend” zu aktivieren (restart von FEMS notwendig bei mir). Per Dokumentation den mir passenden Channel rausgesucht und RESTful command in HA gebaut. Dies setzt jetzt bei Aktivierung der Wallbox auf eine Entladeleistung von 0 Watt. Wen es interessiert, mit diesen 2 CURL commandos kann man diese Leistung auch schnell selber einmal setzen:

# Disable battery discharge
curl --header "Content-Type: application/json" --request POST --data '{ "value": 0}' http://x:owner@<FEMS_IP>/rest/channel/ess0/SetActivePowerLessOrEquals
# Enable battery discharge
curl --header "Content-Type: application/json" --request POST --data '{ "value": 11059}' http://x:owner@<FEMS_IP>/rest/channel/ess0/SetActivePowerLessOrEquals

Mir ist dabei unverständlich, warum FEMS selbst dies nicht als Konfigurationsoption im EV Charger Panel mitbringen kann. Ein simples “Batterie nicht nutzen” mit einer Checkbox würde dafür ausreichen, intern dann ähnlich gelöst wie mit den beiden Kommandos?

Ich habe jetzt jedenfalls ein System das funktioniert und zumindest die Batterie nicht unnötig nutzt.

EDIT: Kurz zur Erläuterung: Die Kommandos müssen innerhalb von 60s erneut geschickt werden, sonst fällt FEMS zum default zurück. Per Automation in Home Assistant und Python script aber genau so implementiert.

EDIT2: Bin vom Python script auf Home Assistant RESTful commands umgestiegen, da es damit auch prima funktioniert:

  fenecon_battery_discharge_disable:
    url: http://<FEMS_IP>/rest/channel/ess0/SetActivePowerLessOrEquals
    method: POST
    username: x
    password: !secret fems_rest_password
    payload: '{"value": 0}'
    content_type:  'application/json; charset=utf-8'

EDIT3: Last but not least … nachdem ich begriffen habe wie man die Werte setzen sollte, hier die fertige Version für Home Assistant:

configuration.yaml

Setze die Power auf den Wert, dem wir and Payload übergeben. <FEMS_IP> mit der IP vom FEMS system ersetzen.

rest_command:
  fenecon_battery_power:
    url: http://<FEMS_IP>/rest/channel/ess0/SetActivePowerEquals
    method: POST
    username: x
    password: !secret fems_rest_password
    payload: '{"value": {{power}}}'
    content_type:  'application/json; charset=utf-8'

Action Call Beispiel

So können wir die Leistung manuell einstellen, in diesem Fall: nutze das, was aus der Solarproduktion kommt (wichtig, da wir den Strom ja weiterhin nutzen wollen).

action: rest_command.fenecon_battery_power
data: {power: "{{ states('sensor.fems_production_active_power') | int }}" }

Automation

Wir können damit per automation diesen call ausführen (bei mir: alle 2 Sekunden, wenn die Ladestation lädt). Hier der YAML code für die Action, damit man nicht suchen muss wie das gemacht wird. Sobald die Ladestation aktiviert wird, setzt die Automation alle 2 Sekunden die ActivePower auf das, was PV produziert. Batterie entlädt sich nicht, wird aber auch nicht mit 100% aus Solar aufgeladen - genau das, was ich erreichen wollte.

action: rest_command.fenecon_battery_power
metadata: {}
data: {
  power: "{{ states('sensor.fems_production_active_power') | int }}"
}

Damit dann auch direkt der Lösungsansatz für FEMS/OpenEMS: Wenn der User nicht die batterie nutzen will, setze die ESS0 ActivePower nicht auf den Gesamtverbrauch sondern einfach auf das, was aus Solar geliefert wird. Hier liegt im Moment noch das Problem, soweit ich das mit /rest/channel/ess0/DebugSetActivePower beurteilen konnte.

3 Likes