1 """Support for Vanderbilt (formerly Siemens) SPC alarm systems."""
3 from __future__
import annotations
5 from pyspcwebgw
import SpcWebGateway
6 from pyspcwebgw.area
import Area
7 from pyspcwebgw.const
import AreaMode
10 AlarmControlPanelEntity,
11 AlarmControlPanelEntityFeature,
12 AlarmControlPanelState,
19 from .
import DATA_API, SIGNAL_UPDATE_ALARM
23 """Get the alarm state."""
25 if area.verified_alarm:
26 return AlarmControlPanelState.TRIGGERED
29 AreaMode.UNSET: AlarmControlPanelState.DISARMED,
30 AreaMode.PART_SET_A: AlarmControlPanelState.ARMED_HOME,
31 AreaMode.PART_SET_B: AlarmControlPanelState.ARMED_NIGHT,
32 AreaMode.FULL_SET: AlarmControlPanelState.ARMED_AWAY,
34 return mode_to_state.get(area.mode)
40 async_add_entities: AddEntitiesCallback,
41 discovery_info: DiscoveryInfoType |
None =
None,
43 """Set up the SPC alarm control panel platform."""
44 if discovery_info
is None:
46 api: SpcWebGateway = hass.data[DATA_API]
51 """Representation of the SPC alarm panel."""
53 _attr_should_poll =
False
54 _attr_supported_features = (
55 AlarmControlPanelEntityFeature.ARM_HOME
56 | AlarmControlPanelEntityFeature.ARM_AWAY
57 | AlarmControlPanelEntityFeature.ARM_NIGHT
59 _attr_code_arm_required =
False
61 def __init__(self, area: Area, api: SpcWebGateway) ->
None:
62 """Initialize the SPC alarm panel."""
68 """Call for adding new entities."""
72 SIGNAL_UPDATE_ALARM.format(self.
_area_area.id),
79 """Call update method."""
84 """Return the user the last change was triggered by."""
85 return self.
_area_area.last_changed_by
89 """Return the state of the device."""
93 """Send disarm command."""
95 await self.
_api_api.change_mode(area=self.
_area_area, new_mode=AreaMode.UNSET)
98 """Send arm home command."""
100 await self.
_api_api.change_mode(area=self.
_area_area, new_mode=AreaMode.PART_SET_A)
103 """Send arm home command."""
105 await self.
_api_api.change_mode(area=self.
_area_area, new_mode=AreaMode.PART_SET_B)
108 """Send arm away command."""
110 await self.
_api_api.change_mode(area=self.
_area_area, new_mode=AreaMode.FULL_SET)
None async_alarm_arm_night(self, str|None code=None)
None async_added_to_hass(self)
None async_alarm_disarm(self, str|None code=None)
None async_alarm_arm_home(self, str|None code=None)
None _update_callback(self)
None async_alarm_arm_away(self, str|None code=None)
None __init__(self, Area area, SpcWebGateway api)
AlarmControlPanelState|None alarm_state(self)
None async_schedule_update_ha_state(self, bool force_refresh=False)
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)
AlarmControlPanelState|None _get_alarm_state(Area area)
Callable[[], None] async_dispatcher_connect(HomeAssistant hass, str signal, Callable[..., Any] target)