diff --git a/src/const.py b/src/const.py index 2009415..0035bcb 100644 --- a/src/const.py +++ b/src/const.py @@ -1,4 +1,4 @@ -VERSION = "v1.0.10" +VERSION = "v1.0.11" OAUTH_URL = "https://volvoid.eu.volvocars.com/as/token.oauth2" VEHICLES_URL = "https://api.volvocars.com/connected-vehicle/v1/vehicles" diff --git a/src/mqtt.py b/src/mqtt.py index 0689796..3cc3984 100644 --- a/src/mqtt.py +++ b/src/mqtt.py @@ -12,7 +12,7 @@ from const import VEHICLE_DETAILS_URL, CLIMATE_START_URL, CLIMATE_STOP_URL, CAR_ mqtt_client: mqtt.Client subscribed_topics = [] -assumed_climate_state = "OFF" +assumed_climate_state = {} last_data_update = None @@ -49,14 +49,14 @@ def on_message(client, userdata, msg): if payload == "ON": api_thread = threading.Thread(target=volvo.api_call, args=(CLIMATE_START_URL, "POST", vin)) api_thread.start() - assumed_climate_state = "ON" + assumed_climate_state[vin] = "ON" # Starting timer to disable climate after 30 mins - threading.Timer(30 * 60, volvo.disable_climate).start() + threading.Timer(30 * 60, volvo.disable_climate, (vin, )).start() update_car_data() elif payload == "OFF": api_thread = threading.Thread(target=volvo.api_call, args=(CLIMATE_STOP_URL, "POST", vin)) api_thread.start() - assumed_climate_state = "OFF" + assumed_climate_state[vin] = "OFF" update_car_data() elif "lock_status" in msg.topic: if payload == "LOCK": @@ -92,7 +92,7 @@ def update_car_data(): for switch in supported_switches: if switch["id"] == "climate_status": - state = assumed_climate_state + state = assumed_climate_state[vin] else: state = "OFF" diff --git a/src/volvo.py b/src/volvo.py index ecbf813..db510a4 100644 --- a/src/volvo.py +++ b/src/volvo.py @@ -95,11 +95,18 @@ def get_vehicles(): if len(vins) == 0: raise Exception("No vehicle found, exiting application!") else: + initialize_climate(vins) print("Vin: " + str(vins) + " found!") -def disable_climate(): - mqtt.assumed_climate_state = "OFF" +def initialize_climate(vins): + for vin in vins: + mqtt.assumed_climate_state[vin] = "OFF" + + +def disable_climate(vin): + print("Turning climate off by timer!") + mqtt.assumed_climate_state[vin] = "OFF" mqtt.update_car_data()