From b72156159c6fe990a220b79ad9e562af87809f80 Mon Sep 17 00:00:00 2001 From: andig Date: Mon, 1 Apr 2024 16:57:46 +0200 Subject: [PATCH] Renault: handle missing batteryLevel (#13251) --- vehicle/renault/kamereon/types.go | 2 +- vehicle/renault/provider.go | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/vehicle/renault/kamereon/types.go b/vehicle/renault/kamereon/types.go index a529695fd..9d6b64b80 100644 --- a/vehicle/renault/kamereon/types.go +++ b/vehicle/renault/kamereon/types.go @@ -54,7 +54,7 @@ type attributes struct { InstantaneousPower int `json:"instantaneousPower"` RangeHvacOff int `json:"rangeHvacOff"` BatteryAutonomy int `json:"batteryAutonomy"` - BatteryLevel int `json:"batteryLevel"` + BatteryLevel *int `json:"batteryLevel"` BatteryTemperature int `json:"batteryTemperature"` PlugStatus int `json:"plugStatus"` LastUpdateTime string `json:"lastUpdateTime"` diff --git a/vehicle/renault/provider.go b/vehicle/renault/provider.go index c861e11ef..45fd7e43c 100644 --- a/vehicle/renault/provider.go +++ b/vehicle/renault/provider.go @@ -55,12 +55,15 @@ var _ api.Battery = (*Provider)(nil) // Soc implements the api.Vehicle interface func (v *Provider) Soc() (float64, error) { res, err := v.batteryG() - - if err == nil { - return float64(res.Data.Attributes.BatteryLevel), nil + if err != nil { + return 0, err } - return 0, err + if res.Data.Attributes.BatteryLevel == nil { + return 0, api.ErrNotAvailable + } + + return float64(*res.Data.Attributes.BatteryLevel), nil } var _ api.ChargeState = (*Provider)(nil)