From 1c4fbb649ddc5360efe5c38679f4b86ce7d91094 Mon Sep 17 00:00:00 2001 From: Linus Dietz <45101649+Dielee@users.noreply.github.com> Date: Fri, 23 Jun 2023 09:47:04 +0200 Subject: [PATCH] Try to catch battery charge state from connected-vehicle v2 if no energy api is available // Fix assumed climate state --- src/const.py | 1 + src/volvo.py | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/const.py b/src/const.py index ceb0fc2..b7fa8c8 100644 --- a/src/const.py +++ b/src/const.py @@ -16,6 +16,7 @@ ODOMETER_STATE_URL = "https://api.volvocars.com/connected-vehicle/v2/vehicles/{0 LOCATION_STATE_URL = "https://api.volvocars.com/location/v1/vehicles/{0}/location" TYRE_STATE_URL = "https://api.volvocars.com/connected-vehicle/v2/vehicles/{0}/tyres" ENGINE_STATE_URL = "https://api.volvocars.com/connected-vehicle/v2/vehicles/{0}/engine-status" +BATTERY_CHARGE_STATE_URL = "https://api.volvocars.com/connected-vehicle/v2/vehicles/{0}/battery-charge-level" charging_system_states = {"CHARGING_SYSTEM_CHARGING": "Charging", "CHARGING_SYSTEM_IDLE": "Idle", "CHARGING_SYSTEM_FAULT": "Fault", "CHARGING_SYSTEM_UNSPECIFIED": "Unspecified"} diff --git a/src/volvo.py b/src/volvo.py index 49e42af..9550fe7 100644 --- a/src/volvo.py +++ b/src/volvo.py @@ -6,7 +6,7 @@ from babel.dates import format_datetime from util import keys_exists from const import charging_system_states, charging_connection_states, CLIMATE_START_URL, \ OAUTH_URL, VEHICLES_URL, VEHICLE_DETAILS_URL, RECHARGE_STATE_URL, \ - WINDOWS_STATE_URL, LOCK_STATE_URL, TYRE_STATE_URL, supported_entities + WINDOWS_STATE_URL, LOCK_STATE_URL, TYRE_STATE_URL, supported_entities, BATTERY_CHARGE_STATE_URL session = requests.Session() @@ -201,8 +201,11 @@ def api_call(url, method, vin, sensor_id=None, force_update=False): else: if url == CLIMATE_START_URL and response.status_code == 503: print("Car in use, cannot start pre climatization") - mqtt.assumed_climate_state = "OFF" + mqtt.assumed_climate_state[vin] = "OFF" mqtt.update_car_data() + if sensor_id == "battery_charge_level" and url == RECHARGE_STATE_URL and response.status_code == 404: + # Try to get battery charge level from another endpoint than energy api + api_call(BATTERY_CHARGE_STATE_URL, method, vin, sensor_id) else: print("API Call failed. Status Code: " + str(response.status_code) + ". Error: " + response.text) return ""