From 298a1c2af7fefd4e0b624da46a55de66437118e4 Mon Sep 17 00:00:00 2001 From: Jan Harkes Date: Wed, 13 Apr 2016 13:45:11 -0400 Subject: [PATCH] Service validation for alarm_control_panel component. --- .../components/alarm_control_panel/__init__.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/alarm_control_panel/__init__.py b/homeassistant/components/alarm_control_panel/__init__.py index e3bde441211..cf042abbe10 100644 --- a/homeassistant/components/alarm_control_panel/__init__.py +++ b/homeassistant/components/alarm_control_panel/__init__.py @@ -7,12 +7,15 @@ https://home-assistant.io/components/alarm_control_panel/ import logging import os +import voluptuous as vol + from homeassistant.components import verisure from homeassistant.const import ( ATTR_CODE, ATTR_CODE_FORMAT, ATTR_ENTITY_ID, SERVICE_ALARM_TRIGGER, SERVICE_ALARM_DISARM, SERVICE_ALARM_ARM_HOME, SERVICE_ALARM_ARM_AWAY) from homeassistant.config import load_yaml_config_file from homeassistant.helpers.config_validation import PLATFORM_SCHEMA # noqa +import homeassistant.helpers.config_validation as cv from homeassistant.helpers.entity import Entity from homeassistant.helpers.entity_component import EntityComponent @@ -38,6 +41,11 @@ ATTR_TO_PROPERTY = [ ATTR_CODE_FORMAT ] +ALARM_SERVICE_SCHEMA = vol.Schema({ + vol.Optional(ATTR_ENTITY_ID): cv.entity_ids, + vol.Optional(ATTR_CODE): cv.string, +}) + def setup(hass, config): """Track states and offer events for sensors.""" @@ -51,10 +59,7 @@ def setup(hass, config): """Map services to methods on Alarm.""" target_alarms = component.extract_from_service(service) - if ATTR_CODE not in service.data: - code = None - else: - code = service.data[ATTR_CODE] + code = service.data.get(ATTR_CODE) method = SERVICE_TO_METHOD[service.service] @@ -68,8 +73,8 @@ def setup(hass, config): for service in SERVICE_TO_METHOD: hass.services.register(DOMAIN, service, alarm_service_handler, - descriptions.get(service)) - + descriptions.get(service), + schema=ALARM_SERVICE_SCHEMA) return True