1 """Support for Xiaomi Aqara locks."""
3 from __future__
import annotations
11 from .const
import DOMAIN, GATEWAYS_KEY
12 from .entity
import XiaomiDevice
14 FINGER_KEY =
"fing_verified"
15 PASSWORD_KEY =
"psw_verified"
16 CARD_KEY =
"card_verified"
17 VERIFIED_WRONG_KEY =
"verified_wrong"
19 ATTR_VERIFIED_WRONG_TIMES =
"verified_wrong_times"
21 UNLOCK_MAINTAIN_TIME = 5
26 config_entry: ConfigEntry,
27 async_add_entities: AddEntitiesCallback,
29 """Perform the setup for Xiaomi devices."""
30 gateway = hass.data[DOMAIN][GATEWAYS_KEY][config_entry.entry_id]
33 for device
in gateway.devices[
"lock"]
34 if device[
"model"] ==
"lock.aq1"
39 """Representation of a XiaomiAqaraLock."""
41 def __init__(self, device, name, xiaomi_hub, config_entry):
42 """Initialize the XiaomiAqaraLock."""
46 super().
__init__(device, name, xiaomi_hub, config_entry)
50 """Return true if lock is locked."""
57 """Last change triggered by."""
62 """Return the state attributes."""
67 """Clear unlock state automatically."""
72 """Parse data sent by gateway."""
73 if (value := data.get(VERIFIED_WRONG_KEY))
is not None:
77 for key
in (FINGER_KEY, PASSWORD_KEY, CARD_KEY):
78 if (value := data.get(key))
is not None:
def __init__(self, device, name, xiaomi_hub, config_entry)
def clear_unlock_state(self, _)
def parse_data(self, data, raw_data)
dict[str, int] extra_state_attributes(self)
bool|None is_locked(self)
None async_write_ha_state(self)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
CALLBACK_TYPE async_call_later(HomeAssistant hass, float|timedelta delay, HassJob[[datetime], Coroutine[Any, Any, None]|None]|Callable[[datetime], Coroutine[Any, Any, None]|None] action)