Skip to content

Commit 4d5ef9e

Browse files
committed
Handle missing keys in API response (battery status)
1 parent 277b9d4 commit 4d5ef9e

File tree

1 file changed

+12
-11
lines changed

1 file changed

+12
-11
lines changed

custom_components/nissan_connect/kamereon.py

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1161,27 +1161,28 @@ def fetch_battery_status(self):
11611161
if 'errors' in body:
11621162
raise ValueError(body['errors'])
11631163
battery_data = body['data']['attributes']
1164-
self.battery_capacity = battery_data['batteryCapacity'] # kWh
1165-
self.battery_level = battery_data['batteryLevel'] # %
1164+
self.battery_capacity = battery_data.get('batteryCapacity') # kWh
1165+
self.battery_level = battery_data.get('batteryLevel') # %
11661166
self.battery_temperature = battery_data.get('batteryTemperature') # Fahrenheit?
11671167
# same meaning as battery level, different scale. 240 = 100%
1168-
self.battery_bar_level = battery_data['batteryBarLevel']
1168+
self.battery_bar_level = battery_data.get('batteryBarLevel')
11691169
self.instantaneous_power = battery_data.get('instantaneousPower') # kW
11701170
self.charging_speed = ChargingSpeed(battery_data.get('chargePower'))
11711171
self.charge_time_required_to_full = {
1172-
ChargingSpeed.FAST: battery_data['timeRequiredToFullFast'],
1173-
ChargingSpeed.NORMAL: battery_data['timeRequiredToFullNormal'],
1174-
ChargingSpeed.SLOW: battery_data['timeRequiredToFullSlow'],
1172+
ChargingSpeed.FAST: battery_data.get('timeRequiredToFullFast'),
1173+
ChargingSpeed.NORMAL: battery_data.get('timeRequiredToFullNormal'),
1174+
ChargingSpeed.SLOW: battery_data.get('timeRequiredToFullSlow'),
11751175
}
1176-
self.range_hvac_off = battery_data['rangeHvacOff']
1177-
self.range_hvac_on = battery_data['rangeHvacOn']
1178-
self.charging = ChargingStatus(battery_data['chargeStatus'])
1179-
self.plugged_in = PluggedStatus(battery_data['plugStatus'])
1176+
self.range_hvac_off = battery_data.get('rangeHvacOff')
1177+
self.range_hvac_on = battery_data.get('rangeHvacOn')
1178+
self.charging = ChargingStatus(battery_data.get('chargeStatus', 0))
1179+
self.plugged_in = PluggedStatus(battery_data.get('plugStatus', 0))
11801180
if 'vehiclePlugTimestamp' in battery_data:
11811181
self.plugged_in_time = datetime.datetime.fromisoformat(battery_data['vehiclePlugTimestamp'].replace('Z','+00:00'))
11821182
if 'vehicleUnplugTimestamp' in battery_data:
11831183
self.unplugged_time = datetime.datetime.fromisoformat(battery_data['vehicleUnplugTimestamp'].replace('Z','+00:00'))
1184-
self.battery_status_last_updated = datetime.datetime.fromisoformat(battery_data['lastUpdateTime'].replace('Z','+00:00'))
1184+
if 'lastUpdateTime' in battery_data:
1185+
self.battery_status_last_updated = datetime.datetime.fromisoformat(battery_data['lastUpdateTime'].replace('Z','+00:00'))
11851186

11861187
def fetch_energy_unit_cost(self):
11871188
resp = self._get(

0 commit comments

Comments
 (0)