diff --git a/src/config.yaml b/src/config.yaml index b9c1f9a..9cefd6a 100644 --- a/src/config.yaml +++ b/src/config.yaml @@ -1,6 +1,6 @@ name: "Volvo2Mqtt" description: "Volvo AAOS MQTT bridge" -version: "1.4.1" +version: "1.4.2" slug: "volvo2mqtt" init: false url: "https://github.com/Dielee/volvo2mqtt" diff --git a/src/const.py b/src/const.py index abdb19c..806fd27 100644 --- a/src/const.py +++ b/src/const.py @@ -1,6 +1,6 @@ from config import settings -VERSION = "v1.4.1" +VERSION = "v1.4.2" 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 aaf43f3..25f7dcc 100644 --- a/src/mqtt.py +++ b/src/mqtt.py @@ -77,10 +77,10 @@ def on_message(client, userdata, msg): elif "lock_status" in msg.topic: if payload == "LOCK": volvo.api_call(CAR_LOCK_URL, "POST", vin) - update_car_data(True) + update_car_data(True, {"entity_id": "lock_status", "state": "LOCKED"}) elif payload == "UNLOCK": volvo.api_call(CAR_UNLOCK_URL, "POST", vin) - update_car_data(True) + update_car_data(True, {"entity_id": "lock_status", "state": "UNLOCKED"}) elif "update_data" in msg.topic: if payload == "PRESS": update_car_data(True) @@ -95,7 +95,7 @@ def update_loop(): time.sleep(settings["updateInterval"]) -def update_car_data(force_update=False): +def update_car_data(force_update=False, overwrite={}): global last_data_update last_data_update = format_datetime(datetime.now(), format="medium", locale=settings["babelLocale"]) for vin in volvo.vins: @@ -103,12 +103,21 @@ def update_car_data(force_update=False): if entity["domain"] == "button": continue + ov_entity_id = "" + ov_state = "" + if bool(overwrite): + ov_entity_id = overwrite["entity_id"] + ov_state = overwrite["state"] + if entity["id"] == "climate_status": state = assumed_climate_state[vin] elif entity["id"] == "last_data_update": state = last_data_update else: - state = volvo.api_call(entity["url"], "GET", vin, entity["id"], force_update) + if entity["id"] == ov_entity_id: + state = ov_state + else: + state = volvo.api_call(entity["url"], "GET", vin, entity["id"], force_update) if entity["domain"] == "device_tracker": topic = f"homeassistant/{entity['domain']}/{vin}_{entity['id']}/attributes"