BMW Cardata: add alternative datapoints for Plug-in Hybrids (#24391)
This commit is contained in:
parent
998de44eb6
commit
b18529ee18
3 changed files with 25 additions and 4 deletions
|
|
@ -16,9 +16,11 @@ requirements:
|
|||
vehicle.cabin.hvac.preconditioning.status.comfortState
|
||||
vehicle.drivetrain.batteryManagement.header
|
||||
vehicle.drivetrain.electricEngine.charging.hvStatus
|
||||
vehicle.drivetrain.electricEngine.charging.status
|
||||
vehicle.drivetrain.electricEngine.charging.timeRemaining
|
||||
vehicle.drivetrain.electricEngine.kombiRemainingElectricRange
|
||||
vehicle.powertrain.electric.battery.stateOfCharge.target
|
||||
vehicle.vehicle.preConditioning.activity
|
||||
vehicle.vehicle.travelledDistance
|
||||
```
|
||||
|
||||
|
|
@ -32,9 +34,11 @@ requirements:
|
|||
vehicle.cabin.hvac.preconditioning.status.comfortState
|
||||
vehicle.drivetrain.batteryManagement.header
|
||||
vehicle.drivetrain.electricEngine.charging.hvStatus
|
||||
vehicle.drivetrain.electricEngine.charging.status
|
||||
vehicle.drivetrain.electricEngine.charging.timeRemaining
|
||||
vehicle.drivetrain.electricEngine.kombiRemainingElectricRange
|
||||
vehicle.powertrain.electric.battery.stateOfCharge.target
|
||||
vehicle.vehicle.preConditioning.activity
|
||||
vehicle.vehicle.travelledDistance
|
||||
```
|
||||
|
||||
|
|
|
|||
|
|
@ -29,13 +29,15 @@ var requiredKeys = []string{
|
|||
"vehicle.cabin.hvac.preconditioning.status.comfortState",
|
||||
"vehicle.drivetrain.batteryManagement.header",
|
||||
"vehicle.drivetrain.electricEngine.charging.hvStatus",
|
||||
"vehicle.drivetrain.electricEngine.charging.status",
|
||||
"vehicle.drivetrain.electricEngine.charging.timeRemaining",
|
||||
"vehicle.drivetrain.electricEngine.kombiRemainingElectricRange",
|
||||
"vehicle.powertrain.electric.battery.stateOfCharge.target",
|
||||
"vehicle.vehicle.preConditioning.activity",
|
||||
"vehicle.vehicle.travelledDistance",
|
||||
}
|
||||
|
||||
const requiredVersion = "v2"
|
||||
const requiredVersion = "v3"
|
||||
|
||||
type API struct {
|
||||
*request.Helper
|
||||
|
|
|
|||
|
|
@ -167,8 +167,15 @@ func (v *Provider) Status() (api.ChargeStatus, error) {
|
|||
}
|
||||
|
||||
hv, err := v.String("vehicle.drivetrain.electricEngine.charging.hvStatus")
|
||||
if hv == "CHARGING" {
|
||||
status = api.StatusC
|
||||
if err != nil || hv == "" || hv == "INVALID" {
|
||||
hv, err = v.String("vehicle.drivetrain.electricEngine.charging.status")
|
||||
}
|
||||
|
||||
if slices.Contains([]string{
|
||||
"CHARGING", // vehicle.drivetrain.electricEngine.charging.hvStatus
|
||||
"CHARGINGACTIVE", // vehicle.drivetrain.electricEngine.charging.status
|
||||
}, hv) {
|
||||
return api.StatusC, nil
|
||||
}
|
||||
|
||||
return status, err
|
||||
|
|
@ -208,5 +215,13 @@ var _ api.VehicleClimater = (*Provider)(nil)
|
|||
// Climater implements the api.VehicleClimater interface
|
||||
func (v *Provider) Climater() (bool, error) {
|
||||
res, err := v.String("vehicle.cabin.hvac.preconditioning.status.comfortState")
|
||||
return slices.Contains([]string{"COMFORT_HEATING", "COMFORT_COOLING", "COMFORT_VENTILATION", "DEFROST"}, res), err
|
||||
if err == nil && res != "" {
|
||||
return slices.Contains([]string{"COMFORT_HEATING", "COMFORT_COOLING", "COMFORT_VENTILATION", "DEFROST"}, res), nil
|
||||
}
|
||||
|
||||
if res, err = v.String("vehicle.vehicle.preConditioning.activity"); err == nil {
|
||||
return slices.Contains([]string{"HEATING", "COOLING", "VENTILATION"}, res), nil
|
||||
}
|
||||
|
||||
return false, err
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue