From cef1c78e86f111c871f6ee5ea178593cb744ef7e Mon Sep 17 00:00:00 2001 From: mfuchs1984 <57141790+mfuchs1984@users.noreply.github.com> Date: Mon, 29 Dec 2025 14:04:35 +0100 Subject: [PATCH] Cardata: fix charge status (#26235) --- vehicle/bmw/cardata/provider.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/vehicle/bmw/cardata/provider.go b/vehicle/bmw/cardata/provider.go index f3fa0e012..97098ae14 100644 --- a/vehicle/bmw/cardata/provider.go +++ b/vehicle/bmw/cardata/provider.go @@ -190,15 +190,18 @@ func (v *Provider) Status() (api.ChargeStatus, error) { status = api.StatusB } - hv, err := v.String("vehicle.drivetrain.electricEngine.charging.hvStatus") - if err != nil || hv == "" || hv == "INVALID" { - hv, err = v.String("vehicle.drivetrain.electricEngine.charging.status") + // evaluate status first, since it's usually available through + // mqtt, while hvStatus might only be available through rest + // (https://github.com/evcc-io/evcc/pull/26235) + cs, err := v.String("vehicle.drivetrain.electricEngine.charging.status") + if err != nil || cs == "" { + cs, err = v.String("vehicle.drivetrain.electricEngine.charging.hvStatus") } if slices.Contains([]string{ - "CHARGING", // vehicle.drivetrain.electricEngine.charging.hvStatus "CHARGINGACTIVE", // vehicle.drivetrain.electricEngine.charging.status - }, hv) { + "CHARGING", // vehicle.drivetrain.electricEngine.charging.hvStatus + }, cs) { return api.StatusC, nil }