diff --git a/src/const.py b/src/const.py index 5f40576..56a15ae 100644 --- a/src/const.py +++ b/src/const.py @@ -18,6 +18,7 @@ TYRE_STATE_URL = "https://api.volvocars.com/connected-vehicle/v2/vehicles/{0}/ty 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" FUEL_STATE_URL = "https://api.volvocars.com/connected-vehicle/v2/vehicles/{0}/fuel" +STATISTICS_URL = "https://api.volvocars.com/connected-vehicle/v2/vehicles/{0}/statistics" availability_topic = "volvoAAOS2mqtt/availability" @@ -48,6 +49,7 @@ supported_entities = [ {"name": "Tailgate", "domain": "sensor", "id": "tailgate", "icon": "car-door-lock", "url": LOCK_STATE_URL}, {"name": "Engine Hood", "domain": "sensor", "id": "engine_hood", "icon": "car-door-lock", "url": LOCK_STATE_URL}, {"name": "Tank Lid", "domain": "sensor", "id": "tank_lid", "icon": "car-door-lock", "url": LOCK_STATE_URL}, + {"name": "Sunroof", "domain": "sensor", "id": "sunroof", "icon": "car-door-lock", "url": LOCK_STATE_URL}, {"name": "Air Conditioning", "domain": "switch", "id": "climate_status", "icon": "air-conditioner"}, {"name": "Lock state", "domain": "lock", "id": "lock_status", "icon": "lock", "url": LOCK_STATE_URL}, {"name": "Force Update Data", "domain": "button", "id": "update_data", "icon": "update", "url": ""}, @@ -57,5 +59,7 @@ supported_entities = [ {"name": "Tire Rear Left", "domain": "sensor", "id": "tyre_rear_left", "icon": "car-tire-alert", "url": TYRE_STATE_URL}, {"name": "Tire Rear Right", "domain": "sensor", "id": "tyre_rear_right", "icon": "car-tire-alert", "url": TYRE_STATE_URL}, {"name": "Engine State", "domain": "sensor", "id": "engine_state", "icon": "engine", "url": ENGINE_STATE_URL}, - {"name": "Fuel Level", "domain": "sensor", "id": "fuel_level", "unit": "liters", "icon": "fuel", "url": FUEL_STATE_URL} + {"name": "Fuel Level", "domain": "sensor", "id": "fuel_level", "unit": "liters", "icon": "fuel", "url": FUEL_STATE_URL}, + {"name": "Average Fuel Consumption", "domain": "sensor", "id": "average_fuel_consumption", "unit": "liters", "icon": "fuel", "url": STATISTICS_URL}, + {"name": "Average Speed", "domain": "sensor", "id": "average_speed", "unit": "km/h" if settings["babelLocale"] != "en_US" else "mp/h", "icon": "fuel", "url": STATISTICS_URL} ] diff --git a/src/volvo.py b/src/volvo.py index f2519f3..b419404 100644 --- a/src/volvo.py +++ b/src/volvo.py @@ -319,6 +319,8 @@ def parse_api_data(data, sensor_id=None): return data["rearRightDoorOpen"]["value"] if util.keys_exists(data, "rearRightDoorOpen") else None elif sensor_id == "tailgate": return data["tailGateOpen"]["value"] if util.keys_exists(data, "tailGateOpen") else None + elif sensor_id == "sunroof": + return data["capOpen"]["value"] if util.keys_exists(data, "capOpen") else None elif sensor_id == "engine_hood": return data["hoodOpen"]["value"] if util.keys_exists(data, "hoodOpen") else None elif sensor_id == "tank_lid": @@ -335,6 +337,10 @@ def parse_api_data(data, sensor_id=None): return data["engineRunning"]["value"] if util.keys_exists(data, "engineRunning") else None elif sensor_id == "fuel_level": return data["fuelAmount"]["value"] if util.keys_exists(data, "fuelAmount") else None + elif sensor_id == "average_fuel_consumption": + return data["averageFuelConsumption"]["value"] if util.keys_exists(data, "averageFuelConsumption") else None + elif sensor_id == "average_speed": + return data["averageSpeed"]["value"] if util.keys_exists(data, "averageSpeed") else None elif sensor_id == "location": coordinates = {} if util.keys_exists(data, "geometry"):