diff --git a/vehicle/bmw/cardata/provider.go b/vehicle/bmw/cardata/provider.go index 074b9b678..f3fa0e012 100644 --- a/vehicle/bmw/cardata/provider.go +++ b/vehicle/bmw/cardata/provider.go @@ -238,13 +238,15 @@ var _ api.VehicleClimater = (*Provider)(nil) // Climater implements the api.VehicleClimater interface func (v *Provider) Climater() (bool, error) { + activeStates := []string{"HEATING", "COOLING", "VENTILATION", "DEFROST"} + res, err := v.String("vehicle.cabin.hvac.preconditioning.status.comfortState") if err == nil && res != "" { - return slices.Contains([]string{"COMFORT_HEATING", "COMFORT_COOLING", "COMFORT_VENTILATION", "DEFROST"}, strings.ToUpper(res)), nil + return slices.Contains(activeStates, strings.TrimPrefix(strings.ToUpper(res), "COMFORT_")), nil } if res, err = v.String("vehicle.vehicle.preConditioning.activity"); err == nil { - return slices.Contains([]string{"HEATING", "COOLING", "VENTILATION"}, strings.ToUpper(res)), nil + return slices.Contains(activeStates, strings.ToUpper(res)), nil } return false, err