Compare commits

...
1 Commits
Author SHA1 Message Date
Linus Dietz 8c0ce8976e get distanceToEmpty sensor from connected api 2023-06-30 12:21:28 +02:00
3 changed files with 14 additions and 28 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
name: "Volvo2Mqtt"
description: "Volvo AAOS MQTT bridge"
version: "1.6.2"
version: "1.6.3"
slug: "volvo2mqtt"
init: false
url: "https://github.com/Dielee/volvo2mqtt"
+3 -6
View File
@@ -1,6 +1,6 @@
from config import settings
VERSION = "v1.6.2"
VERSION = "v1.6.3"
OAUTH_URL = "https://volvoid.eu.volvocars.com/as/token.oauth2"
VEHICLES_URL = "https://api.volvocars.com/connected-vehicle/v1/vehicles"
@@ -19,8 +19,6 @@ ENGINE_STATE_URL = "https://api.volvocars.com/connected-vehicle/v2/vehicles/{0}/
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"
DISTANCE_TO_EMPTY_URL = "https://api.volvocars.com/extended-vehicle/v1/vehicles/{0}/resources/distanceToEmpty"
WASHER_FLUID_LEVEL_URL = "https://api.volvocars.com/extended-vehicle/v1/vehicles/{0}/resources/washerFluidLevel"
units = {
"en_GB": {
@@ -81,7 +79,6 @@ supported_entities = [
{"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": "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 not units.get(settings["babelLocale"]) else units[settings["babelLocale"]]["average_speed"]["unit"], "icon": "speedometer", "url": STATISTICS_URL},
{"name": "Distance to Empty", "domain": "sensor", "id": "distance_to_empty", "unit": "km" if not units.get(settings["babelLocale"]) else units[settings["babelLocale"]]["odometer"]["unit"], "icon": "map-marker-distance", "url": DISTANCE_TO_EMPTY_URL},
{"name": "Washer Fluid Level", "domain": "sensor", "id": "washer_fluid_level", "icon": "wiper-wash", "url": WASHER_FLUID_LEVEL_URL},
{"name": "Distance to Empty", "domain": "sensor", "id": "distance_to_empty", "unit": "km" if not units.get(settings["babelLocale"]) else units[settings["babelLocale"]]["odometer"]["unit"], "icon": "map-marker-distance", "url": STATISTICS_URL},
{"name": "Average Speed", "domain": "sensor", "id": "average_speed", "unit": "km/h" if not units.get(settings["babelLocale"]) else units[settings["babelLocale"]]["average_speed"]["unit"], "icon": "speedometer", "url": STATISTICS_URL}
]
+10 -21
View File
@@ -1,5 +1,4 @@
import logging
import requests
import mqtt
import util
@@ -290,8 +289,7 @@ def parse_api_data(data, sensor_id=None):
return data["estimatedChargingTime"]["value"] if util.keys_exists(data, "estimatedChargingTime") else ""
else:
return 0
else:
return None
return None
elif sensor_id == "estimated_charging_finish_time":
if util.keys_exists(data, "chargingSystemStatus"):
charging_system_state = charging_system_states[data["chargingSystemStatus"]["value"]]
@@ -303,8 +301,7 @@ def parse_api_data(data, sensor_id=None):
return format_datetime(charging_finished, format="medium", locale=settings["babelLocale"])
else:
return ""
else:
return None
return None
elif sensor_id == "lock_status":
return data["carLocked"]["value"] if util.keys_exists(data, "carLocked") else None
elif sensor_id == "odometer":
@@ -361,10 +358,7 @@ def parse_api_data(data, sensor_id=None):
fuel_amount = int(data["fuelAmount"]["value"])
if fuel_amount > 0:
return fuel_amount
else:
return None
else:
return None
return None
elif sensor_id == "average_fuel_consumption":
if util.keys_exists(data, "averageFuelConsumption"):
average_fuel_con = float(data["averageFuelConsumption"]["value"])
@@ -377,10 +371,7 @@ def parse_api_data(data, sensor_id=None):
elif multiplier < 1:
multiplier = 1
return average_fuel_con * multiplier
else:
return None
else:
return None
return None
elif sensor_id == "average_speed":
if util.keys_exists(data, "averageSpeed"):
average_speed = int(data["averageSpeed"]["value"])
@@ -393,10 +384,7 @@ def parse_api_data(data, sensor_id=None):
elif divider < 1:
divider = 1
return util.convert_metric_values(average_speed / divider)
else:
return None
else:
return None
return None
elif sensor_id == "location":
coordinates = {}
if util.keys_exists(data, "geometry"):
@@ -407,9 +395,10 @@ def parse_api_data(data, sensor_id=None):
"gps_accuracy": 1}
return coordinates
elif sensor_id == "distance_to_empty":
return util.convert_metric_values(data["distanceToEmpty"]["value"]) \
if util.keys_exists(data, "distanceToEmpty") else None
elif sensor_id == "washer_fluid_level":
return data["washerFluidLevel"]["value"] if util.keys_exists(data, "washerFluidLevel") else None
if util.keys_exists(data, "distanceToEmpty"):
distance_to_empty = int(data["distanceToEmpty"]["value"])
if distance_to_empty > 0:
return util.convert_metric_values(data["distanceToEmpty"]["value"])
return None
else:
return None