From 975ee0ea7f39df86f7799ce1e092856dcdbf751a Mon Sep 17 00:00:00 2001 From: Raman Gupta <7243222+raman325@users.noreply.github.com> Date: Wed, 27 Nov 2019 05:15:27 -0500 Subject: [PATCH] Update service domain for elkm1 from 'alarm_control_panel' to 'elkm1' (#29128) * move elkm1 services to elkm1 domain * update missed variable references --- .../alarm_control_panel/services.yaml | 52 --------------- homeassistant/components/elkm1/__init__.py | 5 ++ .../components/elkm1/alarm_control_panel.py | 35 +++++++---- homeassistant/components/elkm1/services.yaml | 63 +++++++++++++++++-- 4 files changed, 86 insertions(+), 69 deletions(-) diff --git a/homeassistant/components/alarm_control_panel/services.yaml b/homeassistant/components/alarm_control_panel/services.yaml index 9abf2189ed3..917600862e3 100644 --- a/homeassistant/components/alarm_control_panel/services.yaml +++ b/homeassistant/components/alarm_control_panel/services.yaml @@ -89,55 +89,3 @@ ifttt_push_alarm_state: state: description: The state to which the alarm control panel has to be set. example: 'armed_night' - -elkm1_alarm_arm_vacation: - description: Arm the ElkM1 in vacation mode. - fields: - entity_id: - description: Name of alarm control panel to arm. - example: 'alarm_control_panel.main' - code: - description: An code to arm the alarm control panel. - example: 1234 - -elkm1_alarm_arm_home_instant: - description: Arm the ElkM1 in home instant mode. - fields: - entity_id: - description: Name of alarm control panel to arm. - example: 'alarm_control_panel.main' - code: - description: An code to arm the alarm control panel. - example: 1234 - -elkm1_alarm_arm_night_instant: - description: Arm the ElkM1 in night instant mode. - fields: - entity_id: - description: Name of alarm control panel to arm. - example: 'alarm_control_panel.main' - code: - description: An code to arm the alarm control panel. - example: 1234 - -elkm1_alarm_display_message: - description: Display a message on all of the ElkM1 keypads for an area. - fields: - entity_id: - description: Name of alarm control panel to display messages on. - example: 'alarm_control_panel.main' - clear: - description: 0=clear message, 1=clear message with * key, 2=Display until timeout; default 2 - example: 1 - beep: - description: 0=no beep, 1=beep; default 0 - example: 1 - timeout: - description: Time to display message, 0=forever, max 65535, default 0 - example: 4242 - line1: - description: Up to 16 characters of text (truncated if too long). Default blank. - example: The answer to life, - line2: - description: Up to 16 characters of text (truncated if too long). Default blank. - example: the universe, and everything. diff --git a/homeassistant/components/elkm1/__init__.py b/homeassistant/components/elkm1/__init__.py index 601309590c8..67b84c4f3bf 100644 --- a/homeassistant/components/elkm1/__init__.py +++ b/homeassistant/components/elkm1/__init__.py @@ -35,6 +35,11 @@ CONF_PREFIX = "prefix" _LOGGER = logging.getLogger(__name__) +SERVICE_ALARM_DISPLAY_MESSAGE = "alarm_display_message" +SERVICE_ALARM_ARM_VACATION = "alarm_arm_vacation" +SERVICE_ALARM_ARM_HOME_INSTANT = "alarm_arm_home_instant" +SERVICE_ALARM_ARM_NIGHT_INSTANT = "alarm_arm_night_instant" + SUPPORTED_DOMAINS = [ "alarm_control_panel", "climate", diff --git a/homeassistant/components/elkm1/alarm_control_panel.py b/homeassistant/components/elkm1/alarm_control_panel.py index 8c4db6e06a5..1e1a8eba9e0 100644 --- a/homeassistant/components/elkm1/alarm_control_panel.py +++ b/homeassistant/components/elkm1/alarm_control_panel.py @@ -2,7 +2,10 @@ from elkm1_lib.const import AlarmState, ArmedStatus, ArmLevel, ArmUpState import voluptuous as vol -import homeassistant.components.alarm_control_panel as alarm +from homeassistant.components.alarm_control_panel import ( + AlarmControlPanel, + FORMAT_NUMBER, +) from homeassistant.components.alarm_control_panel.const import ( SUPPORT_ALARM_ARM_AWAY, SUPPORT_ALARM_ARM_HOME, @@ -25,7 +28,15 @@ from homeassistant.helpers.dispatcher import ( async_dispatcher_send, ) -from . import DOMAIN as ELK_DOMAIN, ElkEntity, create_elk_entities +from . import ( + create_elk_entities, + DOMAIN, + ElkEntity, + SERVICE_ALARM_ARM_HOME_INSTANT, + SERVICE_ALARM_ARM_NIGHT_INSTANT, + SERVICE_ALARM_ARM_VACATION, + SERVICE_ALARM_DISPLAY_MESSAGE, +) SIGNAL_ARM_ENTITY = "elkm1_arm" SIGNAL_DISPLAY_MESSAGE = "elkm1_display_message" @@ -56,7 +67,7 @@ async def async_setup_platform(hass, config, async_add_entities, discovery_info= if discovery_info is None: return - elk_datas = hass.data[ELK_DOMAIN] + elk_datas = hass.data[DOMAIN] entities = [] for elk_data in elk_datas.values(): elk = elk_data["elk"] @@ -75,7 +86,7 @@ async def async_setup_platform(hass, config, async_add_entities, discovery_info= for service in _arm_services(): hass.services.async_register( - alarm.DOMAIN, service, _arm_service, ELK_ALARM_SERVICE_SCHEMA + DOMAIN, service, _arm_service, ELK_ALARM_SERVICE_SCHEMA ) def _display_message_service(service): @@ -91,8 +102,8 @@ async def async_setup_platform(hass, config, async_add_entities, discovery_info= _dispatch(SIGNAL_DISPLAY_MESSAGE, entity_ids, *args) hass.services.async_register( - alarm.DOMAIN, - "elkm1_alarm_display_message", + DOMAIN, + SERVICE_ALARM_DISPLAY_MESSAGE, _display_message_service, DISPLAY_MESSAGE_SERVICE_SCHEMA, ) @@ -100,13 +111,13 @@ async def async_setup_platform(hass, config, async_add_entities, discovery_info= def _arm_services(): return { - "elkm1_alarm_arm_vacation": ArmLevel.ARMED_VACATION.value, - "elkm1_alarm_arm_home_instant": ArmLevel.ARMED_STAY_INSTANT.value, - "elkm1_alarm_arm_night_instant": ArmLevel.ARMED_NIGHT_INSTANT.value, + SERVICE_ALARM_ARM_VACATION: ArmLevel.ARMED_VACATION.value, + SERVICE_ALARM_ARM_HOME_INSTANT: ArmLevel.ARMED_STAY_INSTANT.value, + SERVICE_ALARM_ARM_NIGHT_INSTANT: ArmLevel.ARMED_NIGHT_INSTANT.value, } -class ElkArea(ElkEntity, alarm.AlarmControlPanel): +class ElkArea(ElkEntity, AlarmControlPanel): """Representation of an Area / Partition within the ElkM1 alarm panel.""" def __init__(self, element, elk, elk_data): @@ -133,7 +144,7 @@ class ElkArea(ElkEntity, alarm.AlarmControlPanel): if keypad.area != self._element.index: return if changeset.get("last_user") is not None: - self._changed_by_entity_id = self.hass.data[ELK_DOMAIN][self._prefix][ + self._changed_by_entity_id = self.hass.data[DOMAIN][self._prefix][ "keypads" ].get(keypad.index, "") self.async_schedule_update_ha_state(True) @@ -141,7 +152,7 @@ class ElkArea(ElkEntity, alarm.AlarmControlPanel): @property def code_format(self): """Return the alarm code format.""" - return alarm.FORMAT_NUMBER + return FORMAT_NUMBER @property def state(self): diff --git a/homeassistant/components/elkm1/services.yaml b/homeassistant/components/elkm1/services.yaml index 40571656963..fbcbf7edc6d 100644 --- a/homeassistant/components/elkm1/services.yaml +++ b/homeassistant/components/elkm1/services.yaml @@ -1,12 +1,65 @@ -speak_word: - description: Speak a word. See list of words in ElkM1 ASCII Protocol documentation. +alarm_arm_home_instant: + description: Arm the ElkM1 in home instant mode. fields: - number: - description: Word number to speak. - example: 142 + entity_id: + description: Name of alarm control panel to arm. + example: 'alarm_control_panel.main' + code: + description: An code to arm the alarm control panel. + example: 1234 + +alarm_arm_night_instant: + description: Arm the ElkM1 in night instant mode. + fields: + entity_id: + description: Name of alarm control panel to arm. + example: 'alarm_control_panel.main' + code: + description: An code to arm the alarm control panel. + example: 1234 + +alarm_arm_vacation: + description: Arm the ElkM1 in vacation mode. + fields: + entity_id: + description: Name of alarm control panel to arm. + example: 'alarm_control_panel.main' + code: + description: An code to arm the alarm control panel. + example: 1234 + +alarm_display_message: + description: Display a message on all of the ElkM1 keypads for an area. + fields: + entity_id: + description: Name of alarm control panel to display messages on. + example: 'alarm_control_panel.main' + clear: + description: 0=clear message, 1=clear message with * key, 2=Display until timeout; default 2 + example: 1 + beep: + description: 0=no beep, 1=beep; default 0 + example: 1 + timeout: + description: Time to display message, 0=forever, max 65535, default 0 + example: 4242 + line1: + description: Up to 16 characters of text (truncated if too long). Default blank. + example: The answer to life, + line2: + description: Up to 16 characters of text (truncated if too long). Default blank. + example: the universe, and everything. + speak_phrase: description: Speak a phrase. See list of phrases in ElkM1 ASCII Protocol documentation. fields: number: description: Phrase number to speak. example: 42 + +speak_word: + description: Speak a word. See list of words in ElkM1 ASCII Protocol documentation. + fields: + number: + description: Word number to speak. + example: 142