1 """Support for Ness D8X/D16X alarm panel."""
3 from __future__
import annotations
7 from nessclient
import ArmingMode, ArmingState, Client
10 AlarmControlPanelEntity,
11 AlarmControlPanelEntityFeature,
12 AlarmControlPanelState,
20 from .
import DATA_NESS, SIGNAL_ARMING_STATE_CHANGED
22 _LOGGER = logging.getLogger(__name__)
24 ARMING_MODE_TO_STATE = {
25 ArmingMode.ARMED_AWAY: AlarmControlPanelState.ARMED_AWAY,
26 ArmingMode.ARMED_HOME: AlarmControlPanelState.ARMED_HOME,
27 ArmingMode.ARMED_DAY: AlarmControlPanelState.ARMED_AWAY,
28 ArmingMode.ARMED_NIGHT: AlarmControlPanelState.ARMED_NIGHT,
29 ArmingMode.ARMED_VACATION: AlarmControlPanelState.ARMED_VACATION,
30 ArmingMode.ARMED_HIGHEST: AlarmControlPanelState.ARMED_AWAY,
37 async_add_entities: AddEntitiesCallback,
38 discovery_info: DiscoveryInfoType |
None =
None,
40 """Set up the Ness Alarm alarm control panel devices."""
41 if discovery_info
is None:
49 """Representation of a Ness alarm panel."""
51 _attr_code_format = CodeFormat.NUMBER
52 _attr_should_poll =
False
53 _attr_supported_features = (
54 AlarmControlPanelEntityFeature.ARM_HOME
55 | AlarmControlPanelEntityFeature.ARM_AWAY
56 | AlarmControlPanelEntityFeature.TRIGGER
59 def __init__(self, client: Client, name: str) ->
None:
60 """Initialize the alarm panel."""
65 """Register callbacks."""
73 """Send disarm command."""
74 await self.
_client_client.disarm(code)
77 """Send arm away command."""
78 await self.
_client_client.arm_away(code)
81 """Send arm home command."""
82 await self.
_client_client.arm_home(code)
85 """Send trigger/panic command."""
86 await self.
_client_client.panic(code)
90 self, arming_state: ArmingState, arming_mode: ArmingMode |
None
92 """Handle arming state update."""
94 if arming_state == ArmingState.UNKNOWN:
96 elif arming_state == ArmingState.DISARMED:
98 elif arming_state
in (ArmingState.ARMING, ArmingState.EXIT_DELAY):
100 elif arming_state == ArmingState.ARMED:
102 arming_mode, AlarmControlPanelState.ARMED_AWAY
104 elif arming_state == ArmingState.ENTRY_DELAY:
106 elif arming_state == ArmingState.TRIGGERED:
109 _LOGGER.warning(
"Unhandled arming state: %s", arming_state)
None async_added_to_hass(self)
None async_alarm_trigger(self, str|None code=None)
None async_alarm_arm_home(self, str|None code=None)
None __init__(self, Client client, str name)
None async_alarm_disarm(self, str|None code=None)
None _handle_arming_state_change(self, ArmingState arming_state, ArmingMode|None arming_mode)
None async_alarm_arm_away(self, str|None code=None)
None async_write_ha_state(self)
None async_on_remove(self, CALLBACK_TYPE func)
None async_setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback async_add_entities, DiscoveryInfoType|None discovery_info=None)
Callable[[], None] async_dispatcher_connect(HomeAssistant hass, str signal, Callable[..., Any] target)