Skip to content

Commit

Permalink
Merge pull request #12 from paulianttila/dev
Browse files Browse the repository at this point in the history
Improved autolock functionality
  • Loading branch information
paulianttila authored Jul 12, 2023
2 parents da8d1c8 + 9df7bb9 commit cf05a92
Showing 1 changed file with 34 additions and 12 deletions.
46 changes: 34 additions & 12 deletions src/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ def init(self, callbacks: Callbacks) -> None:
)

def get_version(self) -> str:
return "2.2.3"
return "2.2.4"

def stop(self) -> None:
self.logger.debug("Exit")
Expand Down Expand Up @@ -259,28 +259,50 @@ def handle_command(self, message: str) -> None:
data = json.loads(message)
sn = data["deviceLabel"]
command = data["command"]
req = None

match command:
case "enableAutolock":
req = self.verisure.set_autolock_enabled(
device_label=sn, auto_lock_enabled=True, giid=self.giid
)
self.set_autolock(sn, True)
case "disableAutolock":
req = self.verisure.set_autolock_enabled(
device_label=sn, auto_lock_enabled=False, giid=self.giid
)
self.set_autolock(sn, False)
case "updateAutolockState":
req = self.verisure.door_lock_configuration(
device_label=sn, giid=self.giid
)
self.update_lock_config(sn)

def set_autolock(
self, device_label: str, state: bool, update_state: bool = True
) -> None:
req = self.verisure.set_autolock_enabled(
device_label=device_label, auto_lock_enabled=state, giid=self.giid
)
self.send_request(req)
if update_state:
self.update_lock_config(device_label)

def update_lock_config(self, device_label: str) -> dict:
req = self.verisure.door_lock_configuration(
device_label=device_label, giid=self.giid
)
res = self.send_request(req)
locks = res.get("data", {}).get("installation", {}).get("smartLocks", [])
self.publish_lock_configs(locks)

def publish_lock_configs(self, smartLocks: dict) -> None:
for lock in smartLocks:
area = lock["device"]["area"]
autoLockEnabled = lock["configuration"]["autoLockEnabled"]
self.publish_value_to_mqtt_topic(
f"locks/{area}/autoLockEnabled", autoLockEnabled, True
)

def send_request(self, req: dict) -> dict:
if req is not None:
self.logger.debug(f"Sending request: {req}")
res = self.verisure.request(req)
self.logger.debug(f"Received response to request: {res}")
return res
else:
self.logger.error(f"No request to send for '{message}'")
self.logger.error("No request to send")
return {}

def update_data_to_mqtt(self, overview: dict) -> None:
self.publish_broadband(overview)
Expand Down

0 comments on commit cf05a92

Please sign in to comment.