From 161c02fc114f1feb295656cb97c4b06c0f8fdab3 Mon Sep 17 00:00:00 2001 From: Linus Dietz <45101649+Dielee@users.noreply.github.com> Date: Tue, 21 Nov 2023 08:25:33 +0100 Subject: [PATCH] Support force update for backend state --- src/mqtt.py | 5 ++++- src/volvo.py | 24 ++++++++++++++---------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/mqtt.py b/src/mqtt.py index 5d23425..49cd7f8 100644 --- a/src/mqtt.py +++ b/src/mqtt.py @@ -244,7 +244,10 @@ def update_car_data(force_update=False, overwrite={}): elif entity["id"] == "active_schedules": state = active_schedules[vin] elif entity["id"] == "api_backend_status": - state = volvo.backend_status + if force_update: + state = volvo.get_backend_status() + else: + state = volvo.backend_status else: if entity["id"] == ov_entity_id and vin == ov_vin: state = ov_state diff --git a/src/volvo.py b/src/volvo.py index 60e332f..17762f9 100644 --- a/src/volvo.py +++ b/src/volvo.py @@ -55,7 +55,7 @@ def authorize(): get_vcc_api_keys() get_vehicles() check_supported_endpoints() - Thread(target=get_backend_status).start() + Thread(target=backend_status_loop).start() else: message = auth.json() raise Exception(message["error_description"]) @@ -316,20 +316,24 @@ def check_engine_status(vin): time.sleep(5) -def get_backend_status(): - global backend_status +def backend_status_loop(): while True: - response = session.get(API_BACKEND_STATUS, timeout=15) - try: - data = response.json() - backend_status = data["message"] if util.keys_exists(data, "message") else "No warnings" - except JSONDecodeError as e: - backend_status = "No warnings" - + get_backend_status() # Update every hour time.sleep(3600) +def get_backend_status(): + global backend_status + response = session.get(API_BACKEND_STATUS, timeout=15) + try: + data = response.json() + backend_status = data["message"] if util.keys_exists(data, "message") else "No warnings" + except JSONDecodeError as e: + backend_status = "No warnings" + return backend_status + + def api_call(url, method, vin, sensor_id=None, force_update=False, key_change=False): if datetime.now(util.TZ) >= token_expires_at: refresh_auth()