Do not restore unavailable state for august locks ()

pull/43805/head
J. Nick Koston 2021-01-01 01:44:53 -10:00 committed by GitHub
parent 681f76b99d
commit 94825b3e15
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 16 additions and 16 deletions
homeassistant/components/august
tests/components/august

View File

@ -11,7 +11,7 @@ from .subscriber import AugustSubscriberMixin
_LOGGER = logging.getLogger(__name__)
ACTIVITY_STREAM_FETCH_LIMIT = 10
ACTIVITY_CATCH_UP_FETCH_LIMIT = 1000
ACTIVITY_CATCH_UP_FETCH_LIMIT = 2500
class ActivityStream(AugustSubscriberMixin):
@ -102,11 +102,14 @@ class ActivityStream(AugustSubscriberMixin):
def _process_newer_device_activities(self, activities):
updated_device_ids = set()
for activity in activities:
self._latest_activities_by_id_type.setdefault(activity.device_id, {})
device_id = activity.device_id
activity_type = activity.activity_type
lastest_activity = self._latest_activities_by_id_type[
activity.device_id
].get(activity.activity_type)
self._latest_activities_by_id_type.setdefault(device_id, {})
lastest_activity = self._latest_activities_by_id_type[device_id].get(
activity_type
)
# Ignore activities that are older than the latest one
if (
@ -115,10 +118,8 @@ class ActivityStream(AugustSubscriberMixin):
):
continue
self._latest_activities_by_id_type[activity.device_id][
activity.activity_type
] = activity
self._latest_activities_by_id_type[device_id][activity_type] = activity
updated_device_ids.add(activity.device_id)
updated_device_ids.add(device_id)
return updated_device_ids

View File

@ -4,7 +4,7 @@ import logging
from august.activity import ActivityType
from homeassistant.components.sensor import DEVICE_CLASS_BATTERY
from homeassistant.const import ATTR_ENTITY_PICTURE, PERCENTAGE
from homeassistant.const import ATTR_ENTITY_PICTURE, PERCENTAGE, STATE_UNAVAILABLE
from homeassistant.core import callback
from homeassistant.helpers.entity import Entity
from homeassistant.helpers.entity_registry import async_get_registry
@ -157,8 +157,8 @@ class AugustOperatorSensor(AugustEntityMixin, RestoreEntity, Entity):
self._device_id, [ActivityType.LOCK_OPERATION]
)
self._available = True
if lock_activity is not None:
self._available = True
self._state = lock_activity.operated_by
self._operated_remote = lock_activity.operated_remote
self._operated_keypad = lock_activity.operated_keypad
@ -193,7 +193,7 @@ class AugustOperatorSensor(AugustEntityMixin, RestoreEntity, Entity):
await super().async_added_to_hass()
last_state = await self.async_get_last_state()
if not last_state:
if not last_state or last_state.state == STATE_UNAVAILABLE:
return
self._state = last_state.state

View File

@ -6,7 +6,6 @@ from homeassistant.const import (
SERVICE_LOCK,
SERVICE_UNLOCK,
STATE_LOCKED,
STATE_UNAVAILABLE,
STATE_UNKNOWN,
STATE_UNLOCKED,
)
@ -98,7 +97,7 @@ async def test_one_lock_operation(hass):
assert lock_operator_sensor
assert (
hass.states.get("sensor.online_with_doorsense_name_operator").state
== STATE_UNAVAILABLE
== STATE_UNKNOWN
)

View File

@ -1,6 +1,6 @@
"""The sensor tests for the august platform."""
from homeassistant.const import ATTR_UNIT_OF_MEASUREMENT, PERCENTAGE, STATE_UNAVAILABLE
from homeassistant.const import ATTR_UNIT_OF_MEASUREMENT, PERCENTAGE, STATE_UNKNOWN
from tests.components.august.mocks import (
_create_august_with_devices,
@ -120,7 +120,7 @@ async def test_create_lock_with_low_battery_linked_keypad(hass):
)
assert (
hass.states.get("sensor.a6697750d607098bae8d6baa11ef8063_name_operator").state
== STATE_UNAVAILABLE
== STATE_UNKNOWN
)