Add code_arm_required to IFTTT alarm (#43928)

* Update alarm_control_panel.py
This commit is contained in:
k2v1n58 2020-12-12 06:51:57 +01:00 committed by GitHub
parent 19ff83790e
commit d1fb554e33
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -52,10 +52,13 @@ DEFAULT_EVENT_HOME = "alarm_arm_home"
DEFAULT_EVENT_NIGHT = "alarm_arm_night" DEFAULT_EVENT_NIGHT = "alarm_arm_night"
DEFAULT_EVENT_DISARM = "alarm_disarm" DEFAULT_EVENT_DISARM = "alarm_disarm"
CONF_CODE_ARM_REQUIRED = "code_arm_required"
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
{ {
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
vol.Optional(CONF_CODE): cv.string, vol.Optional(CONF_CODE): cv.string,
vol.Optional(CONF_CODE_ARM_REQUIRED, default=True): cv.boolean,
vol.Optional(CONF_EVENT_AWAY, default=DEFAULT_EVENT_AWAY): cv.string, vol.Optional(CONF_EVENT_AWAY, default=DEFAULT_EVENT_AWAY): cv.string,
vol.Optional(CONF_EVENT_HOME, default=DEFAULT_EVENT_HOME): cv.string, vol.Optional(CONF_EVENT_HOME, default=DEFAULT_EVENT_HOME): cv.string,
vol.Optional(CONF_EVENT_NIGHT, default=DEFAULT_EVENT_NIGHT): cv.string, vol.Optional(CONF_EVENT_NIGHT, default=DEFAULT_EVENT_NIGHT): cv.string,
@ -76,6 +79,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
name = config.get(CONF_NAME) name = config.get(CONF_NAME)
code = config.get(CONF_CODE) code = config.get(CONF_CODE)
code_arm_required = config.get(CONF_CODE_ARM_REQUIRED)
event_away = config.get(CONF_EVENT_AWAY) event_away = config.get(CONF_EVENT_AWAY)
event_home = config.get(CONF_EVENT_HOME) event_home = config.get(CONF_EVENT_HOME)
event_night = config.get(CONF_EVENT_NIGHT) event_night = config.get(CONF_EVENT_NIGHT)
@ -83,7 +87,14 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
optimistic = config.get(CONF_OPTIMISTIC) optimistic = config.get(CONF_OPTIMISTIC)
alarmpanel = IFTTTAlarmPanel( alarmpanel = IFTTTAlarmPanel(
name, code, event_away, event_home, event_night, event_disarm, optimistic name,
code,
code_arm_required,
event_away,
event_home,
event_night,
event_disarm,
optimistic,
) )
hass.data[DATA_IFTTT_ALARM].append(alarmpanel) hass.data[DATA_IFTTT_ALARM].append(alarmpanel)
add_entities([alarmpanel]) add_entities([alarmpanel])
@ -112,11 +123,20 @@ class IFTTTAlarmPanel(AlarmControlPanelEntity):
"""Representation of an alarm control panel controlled through IFTTT.""" """Representation of an alarm control panel controlled through IFTTT."""
def __init__( def __init__(
self, name, code, event_away, event_home, event_night, event_disarm, optimistic self,
name,
code,
code_arm_required,
event_away,
event_home,
event_night,
event_disarm,
optimistic,
): ):
"""Initialize the alarm control panel.""" """Initialize the alarm control panel."""
self._name = name self._name = name
self._code = code self._code = code
self._code_arm_required = code_arm_required
self._event_away = event_away self._event_away = event_away
self._event_home = event_home self._event_home = event_home
self._event_night = event_night self._event_night = event_night
@ -161,19 +181,19 @@ class IFTTTAlarmPanel(AlarmControlPanelEntity):
def alarm_arm_away(self, code=None): def alarm_arm_away(self, code=None):
"""Send arm away command.""" """Send arm away command."""
if not self._check_code(code): if self._code_arm_required and not self._check_code(code):
return return
self.set_alarm_state(self._event_away, STATE_ALARM_ARMED_AWAY) self.set_alarm_state(self._event_away, STATE_ALARM_ARMED_AWAY)
def alarm_arm_home(self, code=None): def alarm_arm_home(self, code=None):
"""Send arm home command.""" """Send arm home command."""
if not self._check_code(code): if self._code_arm_required and not self._check_code(code):
return return
self.set_alarm_state(self._event_home, STATE_ALARM_ARMED_HOME) self.set_alarm_state(self._event_home, STATE_ALARM_ARMED_HOME)
def alarm_arm_night(self, code=None): def alarm_arm_night(self, code=None):
"""Send arm night command.""" """Send arm night command."""
if not self._check_code(code): if self._code_arm_required and not self._check_code(code):
return return
self.set_alarm_state(self._event_night, STATE_ALARM_ARMED_NIGHT) self.set_alarm_state(self._event_night, STATE_ALARM_ARMED_NIGHT)