Cleanup August activity processing and add tests (#31774)
* Update py-august to 0.12.0 * Upstream update also resolves issue #28960
This commit is contained in:
parent
834acd85d3
commit
6879105b14
10 changed files with 378 additions and 52 deletions
|
@ -2,7 +2,7 @@
|
|||
from datetime import datetime, timedelta
|
||||
import logging
|
||||
|
||||
from august.activity import ActivityType
|
||||
from august.activity import ACTIVITY_ACTION_STATES, ActivityType
|
||||
from august.lock import LockDoorStatus
|
||||
|
||||
from homeassistant.components.binary_sensor import BinarySensorDevice
|
||||
|
@ -138,12 +138,12 @@ class AugustDoorBinarySensor(BinarySensorDevice):
|
|||
|
||||
self._state = self._state == LockDoorStatus.OPEN
|
||||
|
||||
activity = self._data.get_latest_device_activity(
|
||||
door_activity = self._data.get_latest_device_activity(
|
||||
self._door.device_id, ActivityType.DOOR_OPERATION
|
||||
)
|
||||
|
||||
if activity is not None:
|
||||
self._sync_door_activity(activity)
|
||||
if door_activity is not None:
|
||||
self._sync_door_activity(door_activity)
|
||||
|
||||
def _update_door_state(self, door_state, update_start_time):
|
||||
new_state = door_state == LockDoorStatus.OPEN
|
||||
|
@ -153,7 +153,7 @@ class AugustDoorBinarySensor(BinarySensorDevice):
|
|||
self._door.device_id, door_state, update_start_time
|
||||
)
|
||||
|
||||
def _sync_door_activity(self, activity):
|
||||
def _sync_door_activity(self, door_activity):
|
||||
"""Check the activity for the latest door open/close activity (events).
|
||||
|
||||
We use this to determine the door state in between calls to the lock
|
||||
|
@ -162,25 +162,26 @@ class AugustDoorBinarySensor(BinarySensorDevice):
|
|||
last_door_state_update_time_utc = self._data.get_last_door_state_update_time_utc(
|
||||
self._door.device_id
|
||||
)
|
||||
activity_end_time_utc = dt.as_utc(activity.activity_end_time)
|
||||
activity_end_time_utc = dt.as_utc(door_activity.activity_end_time)
|
||||
|
||||
if activity_end_time_utc > last_door_state_update_time_utc:
|
||||
_LOGGER.debug(
|
||||
"The activity log has new events for %s: [action=%s] [activity_end_time_utc=%s] > [last_door_state_update_time_utc=%s]",
|
||||
self.name,
|
||||
activity.action,
|
||||
door_activity.action,
|
||||
activity_end_time_utc,
|
||||
last_door_state_update_time_utc,
|
||||
)
|
||||
activity_start_time_utc = dt.as_utc(activity.activity_start_time)
|
||||
if activity.action == "doorclosed":
|
||||
self._update_door_state(LockDoorStatus.CLOSED, activity_start_time_utc)
|
||||
elif activity.action == "dooropen":
|
||||
self._update_door_state(LockDoorStatus.OPEN, activity_start_time_utc)
|
||||
activity_start_time_utc = dt.as_utc(door_activity.activity_start_time)
|
||||
if door_activity.action in ACTIVITY_ACTION_STATES:
|
||||
self._update_door_state(
|
||||
ACTIVITY_ACTION_STATES[door_activity.action],
|
||||
activity_start_time_utc,
|
||||
)
|
||||
else:
|
||||
_LOGGER.info(
|
||||
"Unhandled door activity action %s for %s",
|
||||
activity.action,
|
||||
door_activity.action,
|
||||
self.name,
|
||||
)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue