mirror of
https://github.com/Dielee/volvo2mqtt.git
synced 2026-08-13 19:29:52 +02:00
Rework try to catch battery charge state from connected-vehicle v2 if no energy api is available
This commit is contained in:
@@ -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
@@ -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 ""
|
||||
|
||||
Reference in New Issue
Block a user