mirror of
https://github.com/Dielee/volvo2mqtt.git
synced 2026-08-13 19:29:52 +02:00
Rework api data handling
This commit is contained in:
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
name: "Volvo2Mqtt"
|
name: "Volvo2Mqtt"
|
||||||
description: "Volvo AAOS MQTT bridge"
|
description: "Volvo AAOS MQTT bridge"
|
||||||
version: "1.2.0"
|
version: "1.2.1"
|
||||||
slug: "volvo2mqtt"
|
slug: "volvo2mqtt"
|
||||||
init: false
|
init: false
|
||||||
url: "https://github.com/Dielee/volvo2mqtt"
|
url: "https://github.com/Dielee/volvo2mqtt"
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
from config import settings
|
from config import settings
|
||||||
|
|
||||||
VERSION = "v1.2.0"
|
VERSION = "v1.2.1"
|
||||||
|
|
||||||
OAUTH_URL = "https://volvoid.eu.volvocars.com/as/token.oauth2"
|
OAUTH_URL = "https://volvoid.eu.volvocars.com/as/token.oauth2"
|
||||||
VEHICLES_URL = "https://api.volvocars.com/connected-vehicle/v1/vehicles"
|
VEHICLES_URL = "https://api.volvocars.com/connected-vehicle/v1/vehicles"
|
||||||
|
|||||||
+25
-29
@@ -180,7 +180,12 @@ def api_call(url, method, vin, sensor_id=None, force_update=False):
|
|||||||
else:
|
else:
|
||||||
print("API Call failed. Status Code: " + str(response.status_code) + ". Error: " + response.text)
|
print("API Call failed. Status Code: " + str(response.status_code) + ". Error: " + response.text)
|
||||||
return ""
|
return ""
|
||||||
return parse_api_data(data, sensor_id)
|
state = parse_api_data(data, sensor_id)
|
||||||
|
if not state:
|
||||||
|
return ""
|
||||||
|
else:
|
||||||
|
return state
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def pull_door_api(url, method, vin, force_update=False):
|
def pull_door_api(url, method, vin, force_update=False):
|
||||||
@@ -248,18 +253,12 @@ def pull_recharge_api(url, method, vin, force_update=False):
|
|||||||
|
|
||||||
def parse_api_data(data, sensor_id=None):
|
def parse_api_data(data, sensor_id=None):
|
||||||
if sensor_id == "battery_charge_level":
|
if sensor_id == "battery_charge_level":
|
||||||
if "batteryChargeLevel" in data["data"]:
|
return data["data"].get("batteryChargeLevel").get("value")
|
||||||
return data["data"]["batteryChargeLevel"]["value"]
|
|
||||||
else:
|
|
||||||
return ""
|
|
||||||
elif sensor_id == "electric_range":
|
elif sensor_id == "electric_range":
|
||||||
if "electricRange" in data["data"]:
|
return data["data"].get("electricRange").get("value")
|
||||||
return data["data"]["electricRange"]["value"]
|
|
||||||
else:
|
|
||||||
return ""
|
|
||||||
elif sensor_id == "charging_system_status":
|
elif sensor_id == "charging_system_status":
|
||||||
if "chargingSystemStatus" in data["data"]:
|
if "chargingSystemStatus" in data["data"]:
|
||||||
return charging_system_states[data["data"]["chargingSystemStatus"]["value"]]
|
return charging_system_states[data["data"].get("chargingSystemStatus").get("value")]
|
||||||
else:
|
else:
|
||||||
return ""
|
return ""
|
||||||
elif sensor_id == "estimated_charging_time":
|
elif sensor_id == "estimated_charging_time":
|
||||||
@@ -273,9 +272,9 @@ def parse_api_data(data, sensor_id=None):
|
|||||||
return ""
|
return ""
|
||||||
elif sensor_id == "estimated_charging_finish_time":
|
elif sensor_id == "estimated_charging_finish_time":
|
||||||
if "chargingSystemStatus" in data["data"]:
|
if "chargingSystemStatus" in data["data"]:
|
||||||
charging_system_state = charging_system_states[data["data"]["chargingSystemStatus"]["value"]]
|
charging_system_state = charging_system_states[data["data"].get("chargingSystemStatus").get("value")]
|
||||||
if charging_system_state == "Charging":
|
if charging_system_state == "Charging":
|
||||||
charging_time = int(data["data"]["estimatedChargingTime"]["value"])
|
charging_time = int(data["data"].get("estimatedChargingTime").get("value"))
|
||||||
charging_finished = datetime.now() + timedelta(minutes=charging_time)
|
charging_finished = datetime.now() + timedelta(minutes=charging_time)
|
||||||
return format_datetime(charging_finished, format="medium", locale=settings["babelLocale"])
|
return format_datetime(charging_finished, format="medium", locale=settings["babelLocale"])
|
||||||
else:
|
else:
|
||||||
@@ -283,38 +282,35 @@ def parse_api_data(data, sensor_id=None):
|
|||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
elif sensor_id == "lock_status":
|
elif sensor_id == "lock_status":
|
||||||
return data["data"]["carLocked"]["value"]
|
return data["data"].get("carLocked").get("value")
|
||||||
elif sensor_id == "odometer":
|
elif sensor_id == "odometer":
|
||||||
return data["data"]["odometer"]["value"]
|
return data["data"].get("odometer").get("value")
|
||||||
elif sensor_id == "window_front_left":
|
elif sensor_id == "window_front_left":
|
||||||
return data["data"]["frontLeftWindowOpen"]["value"]
|
return data["data"].get("frontLeftWindowOpen").get("value")
|
||||||
elif sensor_id == "window_front_right":
|
elif sensor_id == "window_front_right":
|
||||||
return data["data"]["frontRightWindowOpen"]["value"]
|
return data["data"].get("frontRightWindowOpen").get("value")
|
||||||
elif sensor_id == "window_rear_left":
|
elif sensor_id == "window_rear_left":
|
||||||
return data["data"]["rearLeftWindowOpen"]["value"]
|
return data["data"].get("rearLeftWindowOpen").get("value")
|
||||||
elif sensor_id == "window_rear_right":
|
elif sensor_id == "window_rear_right":
|
||||||
return data["data"]["rearRightWindowOpen"]["value"]
|
return data["data"].get("rearRightWindowOpen").get("value")
|
||||||
elif sensor_id == "door_front_left":
|
elif sensor_id == "door_front_left":
|
||||||
return data["data"]["frontLeftDoorOpen"]["value"]
|
return data["data"].get("frontLeftDoorOpen").get("value")
|
||||||
elif sensor_id == "door_front_right":
|
elif sensor_id == "door_front_right":
|
||||||
return data["data"]["frontRightDoorOpen"]["value"]
|
return data["data"].get("frontRightDoorOpen").get("value")
|
||||||
elif sensor_id == "door_rear_left":
|
elif sensor_id == "door_rear_left":
|
||||||
return data["data"]["rearLeftDoorOpen"]["value"]
|
return data["data"].get("rearLeftDoorOpen").get("value")
|
||||||
elif sensor_id == "door_rear_right":
|
elif sensor_id == "door_rear_right":
|
||||||
return data["data"]["rearRightDoorOpen"]["value"]
|
return data["data"].get("rearRightDoorOpen").get("value")
|
||||||
elif sensor_id == "tailgate":
|
elif sensor_id == "tailgate":
|
||||||
return data["data"]["tailGateOpen"]["value"]
|
return data["data"].get("tailGateOpen").get("value")
|
||||||
elif sensor_id == "engine_hood":
|
elif sensor_id == "engine_hood":
|
||||||
return data["data"]["hoodOpen"]["value"]
|
return data["data"].get("hoodOpen").get("value")
|
||||||
elif sensor_id == "tank_lid":
|
elif sensor_id == "tank_lid":
|
||||||
if "tankLidOpen" in data["data"]:
|
return data["data"].get("tankLidOpen").get("value")
|
||||||
return data["data"]["tankLidOpen"]["value"]
|
|
||||||
else:
|
|
||||||
return ""
|
|
||||||
elif sensor_id == "location":
|
elif sensor_id == "location":
|
||||||
coordinates = {}
|
coordinates = {}
|
||||||
if "geometry" in data["data"]:
|
if "geometry" in data["data"]:
|
||||||
raw_data = data["data"]["geometry"]["coordinates"]
|
raw_data = data["data"].get("geometry").get("coordinates")
|
||||||
coordinates = {"longitude": raw_data[0], "latitude": raw_data[1], "gps_accuracy": 1}
|
coordinates = {"longitude": raw_data[0], "latitude": raw_data[1], "gps_accuracy": 1}
|
||||||
return coordinates
|
return coordinates
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user