const.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. from __future__ import annotations
  2. from dataclasses import dataclass
  3. from enum import Enum
  4. DOMAIN = "zlock_slots"
  5. STORAGE_KEY = "zlock_slots_names"
  6. STORAGE_VERSION = 1
  7. CONF_LOCK_ENTITY_IDS = "lock_entity_ids"
  8. CONF_GROUPS = "groups"
  9. CONF_GROUP_NAME = "name"
  10. class UserSource(Enum):
  11. MANUAL = "manual" # last_user = "<Manual>"; physical operation, alarm_level ignored
  12. RADIO = "radio" # last_user = "<Radio>"; HA/Z-Wave command, alarm_level ignored
  13. SLOT = "slot" # last_user = slot name or number from alarm_level
  14. class LockAction(Enum):
  15. LOCKED = "Locked"
  16. UNLOCKED = "Unlocked"
  17. @dataclass(frozen=True)
  18. class AlarmMapping:
  19. action: LockAction
  20. user_source: UserSource
  21. # Maps alarm_type value → lock action and how to derive last_user.
  22. # alarm_level meaning varies by alarm_type; only SLOT entries use it.
  23. ALARM_MAP: dict[int, AlarmMapping] = {
  24. 18: AlarmMapping(LockAction.LOCKED, UserSource.SLOT),
  25. 19: AlarmMapping(LockAction.UNLOCKED, UserSource.SLOT),
  26. 21: AlarmMapping(LockAction.LOCKED, UserSource.MANUAL),
  27. 22: AlarmMapping(LockAction.UNLOCKED, UserSource.MANUAL),
  28. 24: AlarmMapping(LockAction.LOCKED, UserSource.RADIO),
  29. 25: AlarmMapping(LockAction.UNLOCKED, UserSource.RADIO),
  30. }