From 71f03e505be804868c2df57f4501a83c73b90f43 Mon Sep 17 00:00:00 2001 From: Linus Dietz <45101649+Dielee@users.noreply.github.com> Date: Tue, 20 Jun 2023 08:56:45 +0200 Subject: [PATCH] Fix recharge caching while using multiple cars --- const.py | 2 +- mqtt.py | 1 + volvo.py | 9 ++++++--- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/const.py b/const.py index 80a7875..1432655 100644 --- a/const.py +++ b/const.py @@ -1,4 +1,4 @@ -VERSION = "v1.0.4" +VERSION = "v1.0.5" OAUTH_URL = "https://volvoid.eu.volvocars.com/as/token.oauth2" VEHICLES_URL = "https://api.volvocars.com/connected-vehicle/v1/vehicles" diff --git a/mqtt.py b/mqtt.py index 6551379..3dda91c 100644 --- a/mqtt.py +++ b/mqtt.py @@ -74,6 +74,7 @@ def update_loop(): while True: print("Sending mqtt update...") update_car_data() + print("Mqtt update done. Next run in " + str(settings["updateInterval"]) + " seconds.") time.sleep(settings["updateInterval"]) diff --git a/volvo.py b/volvo.py index 145781b..4008473 100644 --- a/volvo.py +++ b/volvo.py @@ -115,18 +115,18 @@ def api_call(url, method, vin, sensor_id=None): # No API Data cached, get fresh data from API print("Starting " + method + " call against " + url) response = session.get(url.format(vin), timeout=15) - recharge_response = response + recharge_response[vin] = response recharge_last_update = datetime.now() else: if (datetime.now() - recharge_last_update).total_seconds() >= settings["updateInterval"]: # Old Data in Cache, updateing print("Starting " + method + " call against " + url) response = session.get(url.format(vin), timeout=15) - recharge_response = response + recharge_response[vin] = response recharge_last_update = datetime.now() else: # Data is up do date, returning cached data - response = recharge_response + response = recharge_response[vin] elif method == "GET": print("Starting " + method + " call against " + url) response = session.get(url.format(vin), timeout=15) @@ -147,7 +147,10 @@ def api_call(url, method, vin, sensor_id=None): else: print("API Call failed. Status Code: " + str(response.status_code) + ". Error: " + response.text) return "" + return parse_api_data(url, data, sensor_id) + +def parse_api_data(url, data, sensor_id=None): if url == VEHICLE_DETAILS_URL: return data["data"] elif sensor_id == "battery_charge_level":