| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- from __future__ import annotations
- from dataclasses import dataclass
- from enum import Enum
- DOMAIN = "zlock_slots"
- STORAGE_KEY = "zlock_slots_names"
- STORAGE_VERSION = 1
- CONF_LOCK_ENTITY_IDS = "lock_entity_ids"
- CONF_GROUPS = "groups"
- CONF_GROUP_NAME = "name"
- class UserSource(Enum):
- MANUAL = "manual" # last_user = "<Manual>"; physical operation, alarm_level ignored
- RADIO = "radio" # last_user = "<Radio>"; HA/Z-Wave command, alarm_level ignored
- SLOT = "slot" # last_user = slot name or number from alarm_level
- class LockAction(Enum):
- LOCKED = "Locked"
- UNLOCKED = "Unlocked"
- @dataclass(frozen=True)
- class AlarmMapping:
- action: LockAction
- user_source: UserSource
- # Maps alarm_type value → lock action and how to derive last_user.
- # alarm_level meaning varies by alarm_type; only SLOT entries use it.
- ALARM_MAP: dict[int, AlarmMapping] = {
- 18: AlarmMapping(LockAction.LOCKED, UserSource.SLOT),
- 19: AlarmMapping(LockAction.UNLOCKED, UserSource.SLOT),
- 21: AlarmMapping(LockAction.LOCKED, UserSource.MANUAL),
- 22: AlarmMapping(LockAction.UNLOCKED, UserSource.MANUAL),
- 24: AlarmMapping(LockAction.LOCKED, UserSource.RADIO),
- 25: AlarmMapping(LockAction.UNLOCKED, UserSource.RADIO),
- }
|