Solarwatt Manager FLEX (!) auslesen via Rest

Mein Held !:+1:

Kaum macht man es richtig , schon geht’s .

Danke.

Hallo zusammen,

Hat es schon jemand geschafft den Battery felx Speicher im Homeassistant mit Netzstom zu laden?

Ich würde ihn gerne laden, wenn der Strom billig ist.

Habe das Forum zufällig gefunden. Wenn man nur SoC vom Speicher braucht und die aktuelle Lade/Entladeleistung braucht man den Manager gar nicht. Ich nutze schon ewig die Werte aus http:// speicher-ip /stat ohne pasword oder Cookie Gedöns.

Da kommt folgendes JSON Objekt, was eigentlich alle wichtigen Daten enthält. Das rufe ich mit NodeRed alle Minute ab (reicht für mich) Steuern kann man den Speicher darüber aber leider auch nicht. Ich suche weiter eine Möglichkeit den Speicher zu deaktivieren, da ich noch ein 30kWh Victron ESS habe. Leider neigen beide Systeme dazu sich gegenseitig Nachts aufzuschaukeln (einer lädt den Anderen. Wenigstens dem Victron kann ich nach Sonnenuntergang die Ladung verbieten und den Grid Setpoint auf leichten Bezug schieben. Manchmal pumpt sich das BMW Mistding trotzdem hoch und lädt sich aus dem Victron.

{"SoC":62,"PGrid":9,"PBat":533.2,"BMSStatus":0,"SysStatus":249856,"SysErr":0,"DataProcApproved":1,"UpdateApproved":1,"RCount":46,"RLCount":0}
1 „Gefällt mir“

Danke für den Hinweis!

Seit heute funktioniert “rest/items” nicht mehr. Kommt eine 404 zurück.

Die bisherige /rest/items-API scheint in der aktuellen Firmware entfernt worden zu sein. Ich konnte stattdessen erfolgreich über Login (/auth/login) und /rest/hems-configurator/energy-overview wieder auf die Live-Energiedaten zugreifen (PV, Netzbezug, Einspeisung, Hausverbrauch, Batterie Laden/Entladen).

Update – SOLARWATT Firmware 10.26.24.4 / Battery SoC wieder gefunden

Nach dem Firmware-Update auf KiwOS Edge 10.26.24.4 funktionierte der bisherige REST-Endpunkt für den Batterie-SoC nicht mehr. Die neuen HEMS-Endpunkte (/rest/hems-configurator/energy-overview und /rest/hems-configurator/things) liefern den SoC ebenfalls nicht.

Ich habe den Wert deshalb direkt per Modbus TCP am FoxESS/SOLARWATT Vision Three Wechselrichter ausgelesen.

Ergebnis:

  • Modbus TCP Port: 502

  • Unit-ID: 247

  • Holding Register: 37613

  • Datentyp: U16

  • Wert: Battery State of Charge (SoC) in %

Der Registerwert wurde mit der SOLARWATT-App verifiziert (z. B. App 98 % = Register 37613 → 98).

Damit lässt sich der Batterie-SoC auch mit aktueller Firmware wieder zuverlässig auslesen und z. B. in Home Assistant oder einem eigenen Logger verwenden.

Hinweis: Laut Modbus-Dokumentation wird der SoC teilweise mit Register 37612 angegeben. In meinem System (Firmware 10.26.24.4) liefert jedoch 37613 den korrekten Wert. Das scheint ein Register-Offset bzw. eine unterschiedliche Adressierungsweise zu sein.

Gude, leider hat es mich auch erwischt. So wie jedes Update hat auch dieses hier mal wieder meine Integration zerschossen.
Um zukünftig möglichst nicht betroffen zu sein, würde ich gerne auf Modbus umstellen. Leider finde ich keine Dokumentation hierzu.

Darf ich fragen wo du die gefunden hast?

Viele Grüße

Marc

Protokoll Beschreibung

https://github.com/user-attachments/files/19461999/FoxESS.Modbus.Protocol--20240320.V1.04.00.00.H3pro.pdf

mich hat es ebenfalls erwischt, aber mit folgender yaml bin ich wieder im Geschäft

resource: “http://ip-solarwatt-flex/rest/hems-configurator/energy-overview?kg_session_extend=false”
scan_interval: 10
headers:
Cookie: “kiwisessionid={{ states(‘sensor.kiwi_cookie’) }}”
sensor:

name: “Solarwatt Produktion”
unique_id: solarwatt_production
value_template: “{{ value_json.production }}”
unit_of_measurement: “W”
device_class: power
state_class: measurement
icon: mdi:solar-power

name: “Solarwatt Einspeisung”
unique_id: solarwatt_feed_in
value_template: “{{ value_json.feedIn }}”
unit_of_measurement: “W”
device_class: power
state_class: measurement
icon: mdi:transmission-tower-export

name: “Solarwatt Netzbezug”
unique_id: solarwatt_feed_out
value_template: “{{ value_json.feedOut }}”
unit_of_measurement: “W”
device_class: power
state_class: measurement
icon: mdi:transmission-tower-import

name: “Solarwatt Haushaltsverbrauch”
unique_id: solarwatt_household_consumption
value_template: “{{ value_json.householdConsumption }}”
unit_of_measurement: “W”
device_class: power
state_class: measurement
icon: mdi:home-lightning-bolt

name: “Solarwatt Speicher Ladeleistung”
unique_id: solarwatt_storage_power_in
value_template: >-
{% if value_json.storagePowerIn is not none %}
{{ value_json.storagePowerIn }}
{% else %}
0
{% endif %}
unit_of_measurement: “W”
device_class: power
state_class: measurement
icon: mdi:battery-charging

name: “Solarwatt Speicher Entladeleistung”
unique_id: solarwatt_storage_power_out
value_template: >-
{% if value_json.storagePowerOut is not none %}
{{ value_json.storagePowerOut }}
{% else %}
0
{% endif %}
unit_of_measurement: “W”
device_class: power
state_class: measurement
icon: mdi:battery-arrow-down

name: “Solarwatt Letzte Aktualisierung”
unique_id: solarwatt_last_update
value_template: “{{ now().isoformat() }}”
device_class: timestamp
icon: mdi:clock-check-outline

binary_sensor:

name: “Solarwatt Verbindung”
unique_id: solarwatt_connection_status
value_template: “{{ value_json.production is defined }}”
device_class: connectivity
icon: mdi:lan-connect

resource: “http://ip-solarwatt-flex/rest/hems-configurator/power-indicator”
scan_interval: 10
headers:
Cookie: “kiwisessionid={{ states(‘sensor.kiwi_cookie’) }}”
sensor:

name: “Solarwatt Batterie Verbrauch”
unique_id: solarwatt_battery_consumption
value_template: >-
{{ (value_json | selectattr(‘thingId’, ‘equalto’, ‘solarwattBattery:batteryflex:BatteryFlex-1234’)
| map(attribute=‘value’) | list | first) | float(0) }}
unit_of_measurement: “W”
device_class: power
state_class: measurement
icon: mdi:battery

name: “Solarwatt Wallbox Verbrauch”
unique_id: solarwatt_wallbox_consumption
value_template: >-
{{ (value_json | selectattr(‘thingId’, ‘equalto’, ‘webastolive:wallbox:1234’)
| map(attribute=‘value’) | list | first) | float(0) }}
unit_of_measurement: “W”
device_class: power
state_class: measurement
icon: mdi:ev-station

name: “Solarwatt Wechselrichter 1 Produktion”
unique_id: solarwatt_inverter1_production
value_template: >-
{{ (value_json | selectattr(‘thingId’, ‘equalto’, ‘modbus:sunspec-fronius-inverter:1234’)
| map(attribute=‘value’) | list | first) | float(0) }}
unit_of_measurement: “W”
device_class: power
state_class: measurement
icon: mdi:solar-power-variant

name: “Solarwatt Wechselrichter 2 Produktion”
unique_id: solarwatt_inverter2_production
value_template: >-
{{ (value_json | selectattr(‘thingId’, ‘equalto’, ‘modbus:sunspec-fronius-inverter:1234’)
| map(attribute=‘value’) | list | first) | float(0) }}
unit_of_measurement: “W”
device_class: power
state_class: measurement
icon: mdi:solar-power-variant

binary_sensor:

name: “Solarwatt Power-Indicator Verbindung”
unique_id: solarwatt_power_indicator_connection_status
value_template: “{{ value_json is defined and value_json | length > 0 }}”
device_class: connectivity
icon: mdi:lan-connect

resource: “http://ip-der-battery-flex/stat”
scan_interval: 10
sensor:

name: “Solarwatt Batterie Ladezustand”
unique_id: battery_soc
value_template: “{{ value_json.SoC }}”
unit_of_measurement: “%”
device_class: battery
state_class: measurement
icon: mdi:battery-high

name: “Solarwatt Netzleistung”
unique_id: grid_power
value_template: “{{ value_json.PGrid }}”
unit_of_measurement: “W”
device_class: power
state_class: measurement
icon: mdi:transmission-tower

name: “Solarwatt Batterieleistung”
unique_id: battery_power
value_template: “{{ value_json.PBat }}”
unit_of_measurement: “W”
device_class: power
state_class: measurement
icon: mdi:battery-charging-medium

Das notwendige Cookie ist ja sicherlich “dank” des vorherigen Updates noch vorhanden und liegt bei mir in sensor.kiwi_cookie.
Die entsprechenden Werte für die PV-Anlage(n) und/oder Wallbox müßt ihr natürlich entsprechend anpassen.

Und nicht vergessen, dem Solarwatt energymanager-flex den Zugang zum Internet zu verbieten! Sonst besteht weiter die Gefahr, daß ein weiteres Update über die aufgebaute VPN-Verbindung alles wieder zerschießt.

LG
Bendo

Sooo, ich bin ein HA Noob und mich hat es ebenfalls erwischt… in meinem Dashboard und der Power Flow Card ist der % akkustand weg.

Nun meine Frage vorab…..

Kann ich nun „einfach“ die YAML Konfiguration konfigurieren und adaptieren auf meine YAML Konfiguration oder funktioniert das nicht und zerschießt mir meine Konfi?

Mit Sachen in YAML selber schreiben hab ich noch gar keine Erfahrung :frowning:

Ich probiere es nochmal mit der Hoffnung auf Hilfe….

Wie kriege ich denn nun meinen SoC wieder in die PowerFlowcard :melting_face:

So ohne SoC ist das irgendwie doof. Ich habe die Integration gefühlt schon 10x aktiviert… aber so richtig geht nix und wie ich das in YAML einfüge? Ist irgendwie für mich absolutes Neuland.

Kann mir denn wer helfen wie ich das endlich wieder angezeigt bekomme?

Wäre richtig cool

Guckst du weiter oben

Hat Solarwatt wiedermal eine kleine feine Änderung aufgespielt oder funktioniert nur bei mir dieses Script zum Holen der kiwisessionid seit heute nicht mehr? :thinking:

Gruß Peter