Rework try to catch battery charge state from connected-vehicle v2 if no energy api is available

This commit is contained in:
Linus Dietz
2023-06-23 10:13:57 +02:00
parent 1c4fbb649d
commit 42c9349ca8
2 changed files with 31 additions and 29 deletions
+1
View File
@@ -26,6 +26,7 @@ charging_connection_states = {"CONNECTION_STATUS_DISCONNECTED": "Disconnected",
supported_entities = [
{"name": "Battery Charge Level", "domain": "sensor", "id": "battery_charge_level", "unit": "%", "icon": "car-battery", "url": RECHARGE_STATE_URL},
{"name": "Battery Charge Level", "domain": "sensor", "id": "battery_charge_level", "unit": "%", "icon": "car-battery", "url": BATTERY_CHARGE_STATE_URL},
{"name": "Electric Range", "domain": "sensor", "id": "electric_range", "unit": "km" if settings["babelLocale"] != "en_US" else "mi", "icon": "map-marker-distance", "url": RECHARGE_STATE_URL},
{"name": "Estimated Charging Time", "domain": "sensor", "id": "estimated_charging_time", "unit": "minutes", "icon": "timer-sync-outline", "url": RECHARGE_STATE_URL},
{"name": "Charging System Status", "domain": "sensor", "id": "charging_system_status", "icon": "ev-station", "url": RECHARGE_STATE_URL},
+5 -4
View File
@@ -8,7 +8,6 @@ from const import charging_system_states, charging_connection_states, CLIMATE_ST
OAUTH_URL, VEHICLES_URL, VEHICLE_DETAILS_URL, RECHARGE_STATE_URL, \
WINDOWS_STATE_URL, LOCK_STATE_URL, TYRE_STATE_URL, supported_entities, BATTERY_CHARGE_STATE_URL
session = requests.Session()
session.headers = {
"vcc-api-key": settings["volvoData"]["vccapikey"],
@@ -143,6 +142,11 @@ def check_supported_endpoints():
for vin in vins:
supported_endpoints[vin] = []
for entity in supported_entities:
if entity["id"] == "battery_charge_level" and entity["url"] == BATTERY_CHARGE_STATE_URL \
and any("battery_charge_level" in d["id"] for d in supported_endpoints[vin]):
# If battery charge level could be found in recharge-api, skip the second battery charge sensor
continue
if entity.get('url'):
state = api_call(entity["url"], "GET", vin, entity["id"])
else:
@@ -203,9 +207,6 @@ def api_call(url, method, vin, sensor_id=None, force_update=False):
print("Car in use, cannot start pre climatization")
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 ""