From 9e36448f0392a8a9e56c44a3319a385134ba672b Mon Sep 17 00:00:00 2001 From: Aaron Bach Date: Wed, 24 Jul 2019 00:29:08 -0600 Subject: [PATCH] Add area support to vacuum service schemas (#25443) * Add area support to vacuum service schemas * Fixed tests * De-couple platform schemas --- homeassistant/components/vacuum/__init__.py | 34 ++++++++----------- .../components/xiaomi_miio/vacuum.py | 9 +++-- tests/components/demo/test_vacuum.py | 5 +-- 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/homeassistant/components/vacuum/__init__.py b/homeassistant/components/vacuum/__init__.py index 0e44d494b56..00ff6dfbae3 100644 --- a/homeassistant/components/vacuum/__init__.py +++ b/homeassistant/components/vacuum/__init__.py @@ -7,12 +7,12 @@ import voluptuous as vol from homeassistant.components import group from homeassistant.const import ( - ATTR_BATTERY_LEVEL, ATTR_COMMAND, ATTR_ENTITY_ID, SERVICE_TOGGLE, - SERVICE_TURN_OFF, SERVICE_TURN_ON, STATE_ON, STATE_PAUSED, STATE_IDLE) + ATTR_BATTERY_LEVEL, ATTR_COMMAND, SERVICE_TOGGLE, SERVICE_TURN_OFF, + SERVICE_TURN_ON, STATE_ON, STATE_PAUSED, STATE_IDLE) from homeassistant.loader import bind_hass import homeassistant.helpers.config_validation as cv from homeassistant.helpers.config_validation import ( # noqa - PLATFORM_SCHEMA, PLATFORM_SCHEMA_BASE) + ENTITY_SERVICE_SCHEMA, PLATFORM_SCHEMA, PLATFORM_SCHEMA_BASE) from homeassistant.helpers.entity_component import EntityComponent from homeassistant.helpers.entity import (ToggleEntity, Entity) from homeassistant.helpers.icon import icon_for_battery_level @@ -42,15 +42,11 @@ SERVICE_START = 'start' SERVICE_PAUSE = 'pause' SERVICE_STOP = 'stop' -VACUUM_SERVICE_SCHEMA = vol.Schema({ - vol.Optional(ATTR_ENTITY_ID): cv.comp_entity_ids, -}) - -VACUUM_SET_FAN_SPEED_SERVICE_SCHEMA = VACUUM_SERVICE_SCHEMA.extend({ +VACUUM_SET_FAN_SPEED_SERVICE_SCHEMA = ENTITY_SERVICE_SCHEMA.extend({ vol.Required(ATTR_FAN_SPEED): cv.string, }) -VACUUM_SEND_COMMAND_SERVICE_SCHEMA = VACUUM_SERVICE_SCHEMA.extend({ +VACUUM_SEND_COMMAND_SERVICE_SCHEMA = ENTITY_SERVICE_SCHEMA.extend({ vol.Required(ATTR_COMMAND): cv.string, vol.Optional(ATTR_PARAMS): vol.Any(dict, cv.ensure_list), }) @@ -95,43 +91,43 @@ async def async_setup(hass, config): await component.async_setup(config) component.async_register_entity_service( - SERVICE_TURN_ON, VACUUM_SERVICE_SCHEMA, + SERVICE_TURN_ON, ENTITY_SERVICE_SCHEMA, 'async_turn_on' ) component.async_register_entity_service( - SERVICE_TURN_OFF, VACUUM_SERVICE_SCHEMA, + SERVICE_TURN_OFF, ENTITY_SERVICE_SCHEMA, 'async_turn_off' ) component.async_register_entity_service( - SERVICE_TOGGLE, VACUUM_SERVICE_SCHEMA, + SERVICE_TOGGLE, ENTITY_SERVICE_SCHEMA, 'async_toggle' ) component.async_register_entity_service( - SERVICE_START_PAUSE, VACUUM_SERVICE_SCHEMA, + SERVICE_START_PAUSE, ENTITY_SERVICE_SCHEMA, 'async_start_pause' ) component.async_register_entity_service( - SERVICE_START, VACUUM_SERVICE_SCHEMA, + SERVICE_START, ENTITY_SERVICE_SCHEMA, 'async_start' ) component.async_register_entity_service( - SERVICE_PAUSE, VACUUM_SERVICE_SCHEMA, + SERVICE_PAUSE, ENTITY_SERVICE_SCHEMA, 'async_pause' ) component.async_register_entity_service( - SERVICE_RETURN_TO_BASE, VACUUM_SERVICE_SCHEMA, + SERVICE_RETURN_TO_BASE, ENTITY_SERVICE_SCHEMA, 'async_return_to_base' ) component.async_register_entity_service( - SERVICE_CLEAN_SPOT, VACUUM_SERVICE_SCHEMA, + SERVICE_CLEAN_SPOT, ENTITY_SERVICE_SCHEMA, 'async_clean_spot' ) component.async_register_entity_service( - SERVICE_LOCATE, VACUUM_SERVICE_SCHEMA, + SERVICE_LOCATE, ENTITY_SERVICE_SCHEMA, 'async_locate' ) component.async_register_entity_service( - SERVICE_STOP, VACUUM_SERVICE_SCHEMA, + SERVICE_STOP, ENTITY_SERVICE_SCHEMA, 'async_stop' ) component.async_register_entity_service( diff --git a/homeassistant/components/xiaomi_miio/vacuum.py b/homeassistant/components/xiaomi_miio/vacuum.py index c44a9e3fba3..8f772fea86c 100644 --- a/homeassistant/components/xiaomi_miio/vacuum.py +++ b/homeassistant/components/xiaomi_miio/vacuum.py @@ -9,9 +9,8 @@ from homeassistant.components.vacuum import ( ATTR_CLEANED_AREA, DOMAIN, PLATFORM_SCHEMA, SUPPORT_BATTERY, SUPPORT_CLEAN_SPOT, SUPPORT_FAN_SPEED, SUPPORT_LOCATE, SUPPORT_PAUSE, SUPPORT_RETURN_HOME, SUPPORT_SEND_COMMAND, SUPPORT_STOP, - SUPPORT_STATE, SUPPORT_START, VACUUM_SERVICE_SCHEMA, StateVacuumDevice, - STATE_CLEANING, STATE_DOCKED, STATE_PAUSED, STATE_IDLE, STATE_RETURNING, - STATE_ERROR) + SUPPORT_STATE, SUPPORT_START, StateVacuumDevice, STATE_CLEANING, + STATE_DOCKED, STATE_PAUSED, STATE_IDLE, STATE_RETURNING, STATE_ERROR) from homeassistant.const import ( ATTR_ENTITY_ID, CONF_HOST, CONF_NAME, CONF_TOKEN, STATE_OFF, STATE_ON) import homeassistant.helpers.config_validation as cv @@ -60,6 +59,10 @@ ATTR_STATUS = 'status' ATTR_ZONE_ARRAY = 'zone' ATTR_ZONE_REPEATER = 'repeats' +VACUUM_SERVICE_SCHEMA = vol.Schema({ + vol.Optional(ATTR_ENTITY_ID): cv.comp_entity_ids, +}) + SERVICE_SCHEMA_REMOTE_CONTROL = VACUUM_SERVICE_SCHEMA.extend({ vol.Optional(ATTR_RC_VELOCITY): vol.All(vol.Coerce(float), vol.Clamp(min=-0.29, max=0.29)), diff --git a/tests/components/demo/test_vacuum.py b/tests/components/demo/test_vacuum.py index 523fe17f824..d318e3aeefb 100644 --- a/tests/components/demo/test_vacuum.py +++ b/tests/components/demo/test_vacuum.py @@ -3,7 +3,7 @@ import unittest from homeassistant.components import vacuum from homeassistant.components.vacuum import ( - ATTR_BATTERY_LEVEL, ATTR_COMMAND, ATTR_ENTITY_ID, ATTR_FAN_SPEED, + ATTR_BATTERY_LEVEL, ATTR_COMMAND, ATTR_FAN_SPEED, ATTR_FAN_SPEED_LIST, ATTR_PARAMS, ATTR_STATUS, DOMAIN, ENTITY_ID_ALL_VACUUMS, SERVICE_SEND_COMMAND, SERVICE_SET_FAN_SPEED, @@ -13,7 +13,8 @@ from homeassistant.components.demo.vacuum import ( DEMO_VACUUM_BASIC, DEMO_VACUUM_COMPLETE, DEMO_VACUUM_MINIMAL, DEMO_VACUUM_MOST, DEMO_VACUUM_NONE, DEMO_VACUUM_STATE, FAN_SPEEDS) from homeassistant.const import ( - ATTR_SUPPORTED_FEATURES, CONF_PLATFORM, STATE_OFF, STATE_ON) + ATTR_ENTITY_ID, ATTR_SUPPORTED_FEATURES, CONF_PLATFORM, STATE_OFF, + STATE_ON) from homeassistant.setup import setup_component from tests.common import get_test_home_assistant, mock_service