Hallo zusammen
seit gestern meine Wallbox einen Reboot durchlaufen hat, funktioniert die SOC Abfrage meines Mini SE nicht mehr.
RuntimeError
raise RuntimeError
File "/var/www/html/openWB/modules/soc_i3/i3soc.py", line 189, in getHTTP
body = getHTTP(url, headers)
File "/var/www/html/openWB/modules/soc_i3/i3soc.py", line 408, in requestData
data = requestData(token, vin)
File "/var/www/html/openWB/modules/soc_i3/i3soc.py", line 534, in main
main()
File "/var/www/html/openWB/modules/soc_i3/i3soc.py", line 555, in <module>
Traceback (most recent call last):
2025-10-06 07:56:40: ERROR: soc_i3:LP1: Request failed, exception=
headers={
2025-10-06 07:56:40: ERROR: soc_i3:LP1: requestData: url=https://cocoapi.bmwgroup.com/eadrax-vcs ... cles/state,
2025-10-06 07:56:40: ERROR: soc_i3:LP1: Data-Request failed
2025-10-06 07:56:40: ERROR: soc_i3:LP1: Request failed, StatusCode: 489
2025-10-06 07:55:03: PID: 19046: ##### cron5min.sh finished ##### (LV0)
2025-10-06 07:55:02: PID: 19274: Starting OpenWB services (LV0)
2025-10-06 07:55:01: PID: 19046: ##### cron5min.sh started ##### (LV0)
den Captcha Token habe ich erneuert
Version meiner OPEN WB ist die 1.9.304.0
Hat jemand eine Idee?
Besten Dank vorab
Viele Grüße Jörg
edit: ich hab die VIN mal unkenntlich gemacht
SOC BMW
-
- Beiträge: 162
- Registriert: So Mai 02, 2021 5:42 pm
- Has thanked: 15 times
- Been thanked: 12 times
Re: SOC BMW
Hi!
Das SoC-Modul muss angepasst, bzw. eigentlich komplett neu geschrieben werden, dazu muss sich auch erst noch jemand finden der es macht, es wird also wahrscheinlich noch etwas dauern.
heidanei
PS: Du solltest die VIN von Deinem Fzg. aus dem Log löschen.
BMW hat die bisherige App-Schnittstelle so verändert dass keine Zugriffe von Dritten mehr möglich sind, dafür aber eine neue Schnittstelle geschaffen, siehe viewtopic.php?p=133578#p133578. (Die Nachricht müsstest Du eigentlich auch in Deiner MyMINI-App bekommen haben.)Wynton hat geschrieben: Mo Okt 06, 2025 6:01 am Hallo zusammen
seit gestern meine Wallbox einen Reboot durchlaufen hat, funktioniert die SOC Abfrage meines Mini SE nicht mehr.
[...]
Hat jemand eine Idee?
Das SoC-Modul muss angepasst, bzw. eigentlich komplett neu geschrieben werden, dazu muss sich auch erst noch jemand finden der es macht, es wird also wahrscheinlich noch etwas dauern.
heidanei
PS: Du solltest die VIN von Deinem Fzg. aus dem Log löschen.
Re: SOC BMW
BMW hat sie bisher genutzte Schnittstelle, die zum Beispiel auch von Homeassistent und so genutzt wurde, abgeschaltet. Man muss jetzt eine komplett neue API (BMW CarData) verwenden. Bis das in der OpenWB Stable ankommt kann vermutlich noch etwas dauern. Auch muss man selber erstmal einen Client im BMW Connected Drive Portal konfigurieren.
VW ID.3 Pro (Facelift, SW 3.7)
BMW 530e Touring xDrive
PV: 8.4kWp, Kostal Plenticore Plus 7, Kostal Smart Energy Meter, BYD-HVS 5.1
OpenWB series2 Standard+ (Display, Phasenumschaltung)
Viessmann Vitocal 060A für Warmwasserbereitung
BMW 530e Touring xDrive
PV: 8.4kWp, Kostal Plenticore Plus 7, Kostal Smart Energy Meter, BYD-HVS 5.1
OpenWB series2 Standard+ (Display, Phasenumschaltung)
Viessmann Vitocal 060A für Warmwasserbereitung
Re: SOC BMW
Hallo Freunde der gepflegten Problemlösung
ich habe eine ganz brauchbare Methode um über Homeassistant und der Integration https://github.com/JjyKsi/bmw-cardata-ha und der Integration "openWB2 over MQTT" die Zwischenwerte berechnen zu lassen.
Über die BMW Integration "cardata" kommt ja nur alle 40 min ein aktualisierter Wert. Damit würde die Begrenzung auf z.B. 80 % eigentlich unmöglich.
Beispiel: letzter Sync mit BMW-> SOC=79%
40 min warten
realer Wert geht dann auf 90 oder noch mehr.
nach 40 min neuer Sync mit BMW-> Grenze von 80% erreicht, stoppe die Ladung. (Dabei sind es doch schon 92% geworden)
die Folgende Anpassung in Homeassistant berechnet einfach zwischen 2 Syncs die Werte und addiert die zum aktuellen SOC.
mit Hilfe der "Variablen" soc_efficiency kann man versuchen den berechneten an den realen Wert anzugleichen. Bei mir sind das ziemlich genau 88% also 0,88. Da einfach etwas ausprobieren:
Bei mir wird nun in der Wallbox ca. alle 20 Sek. der Wert geändert.
Änderungen oder Verbesserungen sind willkommen!
den Code in Homeassistant unter "packages" in eine bmw_soc.yaml speichern und das ganze einmal neu starten.
Wie das mit den Packages geht ist hier ganz gut beschrieben: https://community.simon42.com/t/struktu ... aml/3332/2
ich habe eine ganz brauchbare Methode um über Homeassistant und der Integration https://github.com/JjyKsi/bmw-cardata-ha und der Integration "openWB2 over MQTT" die Zwischenwerte berechnen zu lassen.
Über die BMW Integration "cardata" kommt ja nur alle 40 min ein aktualisierter Wert. Damit würde die Begrenzung auf z.B. 80 % eigentlich unmöglich.
Beispiel: letzter Sync mit BMW-> SOC=79%
40 min warten
realer Wert geht dann auf 90 oder noch mehr.
nach 40 min neuer Sync mit BMW-> Grenze von 80% erreicht, stoppe die Ladung. (Dabei sind es doch schon 92% geworden)
die Folgende Anpassung in Homeassistant berechnet einfach zwischen 2 Syncs die Werte und addiert die zum aktuellen SOC.
mit Hilfe der "Variablen" soc_efficiency kann man versuchen den berechneten an den realen Wert anzugleichen. Bei mir sind das ziemlich genau 88% also 0,88. Da einfach etwas ausprobieren:
Bei mir wird nun in der Wallbox ca. alle 20 Sek. der Wert geändert.
Änderungen oder Verbesserungen sind willkommen!
Code: Alles auswählen
###############################################################################
# 🧠 BMW SoC Interpolation Package (Final Enhanced)
# Autor: ChatGPT + User
# Zweck:
# - Glättet den SoC-Verlauf zwischen seltenen BMW-API-Updates (~40 min)
# - Berechnet theoretischen SoC aus Ladeenergie (Gesamtenergie)
# - Erkennt echte Updates, pausiert kurz und sendet MQTT
# - Beibehaltung des letzten berechneten Werts nach Ladeende
# - Schützt vor Sprüngen >100 % und unterstützt Debug-Überwachung
###############################################################################
homeassistant:
customize:
sensor.bmw_soc_interpoliert:
friendly_name: "BMW SoC (interpoliert)"
###############################################################################
# 🧮 Helfer
###############################################################################
input_number:
soc_start_bmw:
name: Letzter echter SoC BMW
min: 0
max: 100
step: 0.1
unit_of_measurement: "%"
energy_start_bmw:
name: Geladene Gesamtenergie bei letztem SoC-Update
min: 0
max: 10000000
step: 0.01
unit_of_measurement: "kWh"
soc_efficiency:
name: Ladeeffizienz
min: 0.5
max: 1.0
step: 0.01
unit_of_measurement: "%"
initial: 0.88
soc_last_interpolated:
name: Letzter berechneter interpolierter SoC
min: 0
max: 100
step: 0.1
unit_of_measurement: "%"
###############################################################################
# ⏸️ Helfer – Pause nach echtem Update
###############################################################################
input_boolean:
bmw_soc_pause_interpolation:
name: Interpolation pausieren
icon: mdi:pause-circle
###############################################################################
# ⚙️ Automation 1 – Echten SoC merken, MQTT senden und Interpolation pausieren
###############################################################################
automation:
- alias: BMW SoC Update speichern
id: bmw_soc_update_speichern
description: Speichert den SoC, sendet MQTT und pausiert die Interpolation.
trigger:
- platform: state
entity_id: sensor.state_of_charge_predicted_on_bmw_side
action:
# 🧮 1️⃣ SoC-Start speichern
- service: input_number.set_value
data:
entity_id: input_number.soc_start_bmw
value: "{{ trigger.to_state.state | float }}"
# ⚡ 2️⃣ Aktuelle Gesamtenergie speichern
- service: input_number.set_value
data:
entity_id: input_number.energy_start_bmw
value: "{{ states('sensor.openwb_chargepoint_3_geladene_energie_gesamt') | float }}"
# 📡 3️⃣ Echten SoC sofort über MQTT senden
- service: mqtt.publish
data:
topic: openWB/set/vehicle/0/get/soc
payload: "{{ trigger.to_state.state | float }}"
qos: 1
retain: true
# ⏸️ 4️⃣ Interpolation pausieren
- service: input_boolean.turn_on
target:
entity_id: input_boolean.bmw_soc_pause_interpolation
- delay: "00:00:20"
- service: input_boolean.turn_off
target:
entity_id: input_boolean.bmw_soc_pause_interpolation
mode: restart
###############################################################################
# ⏱️ Automation 2 – Aktualisiert theoretischen SoC bei Energieänderung & sendet MQTT
###############################################################################
- alias: BMW SoC theoretisch aktualisieren
id: bmw_soc_theoretisch_aktualisieren
trigger:
- platform: state
entity_id: sensor.openwb_chargepoint_3_geladene_energie_gesamt
action:
# 1️⃣ Sensor aktualisieren
- service: homeassistant.update_entity
target:
entity_id: sensor.bmw_soc_interpoliert
# 2️⃣ MQTT veröffentlichen
- service: mqtt.publish
data:
topic: openWB/set/vehicle/0/get/soc
payload: "{{ states('sensor.bmw_soc_interpoliert') }}"
qos: 1
retain: true
mode: single
###############################################################################
# 🧾 Automation 3 – Letzten berechneten SoC speichern
###############################################################################
- alias: BMW letzten interpolierten SoC speichern
id: bmw_soc_letzten_interpolierten_speichern
trigger:
- platform: state
entity_id: sensor.bmw_soc_interpoliert
condition:
- condition: numeric_state
entity_id: sensor.bmw_soc_interpoliert
above: 0
action:
- service: input_number.set_value
data:
entity_id: input_number.soc_last_interpolated
value: "{{ states('sensor.bmw_soc_interpoliert') | float }}"
mode: queued
###############################################################################
# 📈 Template-Sensor – Berechneter SoC während des Ladens (mit Gesamtenergie)
###############################################################################
template:
- sensor:
- name: "BMW SoC interpoliert"
unique_id: bmw_soc_interpoliert
unit_of_measurement: "%"
device_class: battery
state: >
{% set soc_start = states('input_number.soc_start_bmw') | float %}
{% set soc_last = states('input_number.soc_last_interpolated') | float %}
{% set e_start = states('input_number.energy_start_bmw') | float %}
{% set e_now = states('sensor.openwb_chargepoint_3_geladene_energie_gesamt') | float %}
{% set eff = states('input_number.soc_efficiency') | float %}
{% set batt = states('sensor.energy_content_high_voltage_battery') | float %}
{% set p_now = states('sensor.openwb_chargepoint_3_ladeleistung') | float %}
{% set pause = is_state('input_boolean.bmw_soc_pause_interpolation', 'on') %}
{% if batt > 0 and not pause %}
{% set delta_e = (e_now - e_start) * eff %}
{% if delta_e >= 0 and p_now > 0 %}
{% set soc_est = soc_start + (delta_e / batt * 100) %}
{% else %}
{% set soc_est = soc_last %}
{% endif %}
{{ [soc_est, 100] | min | round(1) }}
{% else %}
{{ soc_last | round(1) }}
{% endif %}
###############################################################################
# 🧪 Debug-Sensor – Zeigt Rohdaten zur Kontrolle (optional)
###############################################################################
- name: "BMW SoC Debug"
unique_id: bmw_soc_debug
state: >
{{ {
'soc_start': states('input_number.soc_start_bmw'),
'soc_last': states('input_number.soc_last_interpolated'),
'e_start': states('input_number.energy_start_bmw'),
'e_now': states('sensor.openwb_chargepoint_3_geladene_energie_gesamt'),
'eff': states('input_number.soc_efficiency'),
'batt': states('sensor.energy_content_high_voltage_battery'),
'p_now': states('sensor.openwb_chargepoint_3_ladeleistung'),
'pause': is_state('input_boolean.bmw_soc_pause_interpolation', 'on')
} }}
den Code in Homeassistant unter "packages" in eine bmw_soc.yaml speichern und das ganze einmal neu starten.
Wie das mit den Packages geht ist hier ganz gut beschrieben: https://community.simon42.com/t/struktu ... aml/3332/2
-
- Site Admin
- Beiträge: 9476
- Registriert: So Okt 07, 2018 1:50 pm
- Has thanked: 84 times
- Been thanked: 184 times
Re: SOC BMW
Du kannst beim manuellen SoC Modul der openWB initial den SoC übertragen und die openWB rechnet selbst hoch.
Das klappt sehr gut.
Das klappt sehr gut.
Supportanfragen bitte NICHT per PN stellen.
Hardwareprobleme bitte über die Funktion Debug Daten senden mitteilen oder per Mail an support@openwb.de
Hardwareprobleme bitte über die Funktion Debug Daten senden mitteilen oder per Mail an support@openwb.de
-
- Beiträge: 38
- Registriert: Mi Apr 24, 2024 7:10 am
- Has thanked: 5 times
- Been thanked: 2 times
Re: SOC BMW
Wenn ich den SoC manuell übertrage:
Darf das nur am Anfang der Ladung passieren, und danach nicht mehr (=weil der berechnete Wert sonst überschrieben wird)?
Es gibt eine Abfragemöglichkeit mit der neuen API, z.B. hier:
https://github.com/dj0abr/bmw-mqtt-bridge
Aber anscheinend (ich konnte es noch nicht prüfen, weil das mit den Tokens bei mir noch nicht hinhaut) wird der Wert in der API nicht mehr während dem Laden aktualisiert, d.h. es bräuchte dann noch eine Logik, die den Wert nur zum Ladestart oder beim Anstecken an die OpenWB überträgt, und nicht mehr während der Ladung.
Darf das nur am Anfang der Ladung passieren, und danach nicht mehr (=weil der berechnete Wert sonst überschrieben wird)?
Es gibt eine Abfragemöglichkeit mit der neuen API, z.B. hier:
https://github.com/dj0abr/bmw-mqtt-bridge
Aber anscheinend (ich konnte es noch nicht prüfen, weil das mit den Tokens bei mir noch nicht hinhaut) wird der Wert in der API nicht mehr während dem Laden aktualisiert, d.h. es bräuchte dann noch eine Logik, die den Wert nur zum Ladestart oder beim Anstecken an die OpenWB überträgt, und nicht mehr während der Ladung.
-
- Beiträge: 6
- Registriert: So Jul 09, 2023 3:09 pm
- Has thanked: 13 times
- Been thanked: 1 time
Re: SOC BMW
@chrisbu
Wenn du den Wert "sensor.state_of_charge_predicted_on_integration_side" nimmst wird dieser während des Ladens alle 5 Minuten übertragen.
"State of Charge (Predicted on BMW SIDE)" wird nur alle 40 Minuten übertagen.
Wenn du den Wert "sensor.state_of_charge_predicted_on_integration_side" nimmst wird dieser während des Ladens alle 5 Minuten übertragen.
"State of Charge (Predicted on BMW SIDE)" wird nur alle 40 Minuten übertagen.