Skip to content
This repository has been archived by the owner on Jan 2, 2025. It is now read-only.

Commit

Permalink
Optimize lock/unlock behaviour
Browse files Browse the repository at this point in the history
  • Loading branch information
Dielee committed Jun 24, 2023
1 parent e8315ba commit 4d8b5e5
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 6 deletions.
2 changes: 1 addition & 1 deletion src/config.yaml
Original file line number Diff line number Diff line change
@@ -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"
Expand Down
2 changes: 1 addition & 1 deletion src/const.py
Original file line number Diff line number Diff line change
@@ -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"
Expand Down
17 changes: 13 additions & 4 deletions src/mqtt.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -95,20 +95,29 @@ 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:
for entity in volvo.supported_endpoints[vin]:
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"
Expand Down

0 comments on commit 4d8b5e5

Please sign in to comment.