From 9d8865ad4d7d309f840207a98171c12a2c654007 Mon Sep 17 00:00:00 2001 From: sfam Date: Wed, 2 Dec 2015 12:18:49 +0000 Subject: [PATCH] adjust rollershutter after rename --- .../components/rollershutter/__init__.py | 95 ++++++++++--------- .../components/rollershutter/mqtt.py | 50 +++++----- tests/components/rollershutter/test_mqtt.py | 82 ++++++++-------- 3 files changed, 114 insertions(+), 113 deletions(-) diff --git a/homeassistant/components/rollershutter/__init__.py b/homeassistant/components/rollershutter/__init__.py index dda7c52c05d..517ebf97b25 100644 --- a/homeassistant/components/rollershutter/__init__.py +++ b/homeassistant/components/rollershutter/__init__.py @@ -1,10 +1,10 @@ """ -homeassistant.components.motor -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Motor component. +homeassistant.components.rollershutter +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Rollershutter component. For more details about this platform, please refer to the documentation at -https://home-assistant.io/components/motor/ +https://home-assistant.io/components/rollershutter/ """ import os import logging @@ -14,15 +14,16 @@ from homeassistant.helpers.entity_component import EntityComponent from homeassistant.helpers.entity import Entity from homeassistant.components import group from homeassistant.const import ( - SERVICE_OPEN, SERVICE_CLOSE, SERVICE_STOP, + SERVICE_MOVE_UP, SERVICE_MOVE_DOWN, SERVICE_STOP, STATE_OPEN, STATE_CLOSED, STATE_UNKNOWN, ATTR_ENTITY_ID) -DOMAIN = 'motor' +DOMAIN = 'rollershutter' SCAN_INTERVAL = 15 -GROUP_NAME_ALL_MOTORS = 'all motors' -ENTITY_ID_ALL_MOTORS = group.ENTITY_ID_FORMAT.format('all_motors') +GROUP_NAME_ALL_ROLLERSHUTTERS = 'all rollershutters' +ENTITY_ID_ALL_ROLLERSHUTTERS = group.ENTITY_ID_FORMAT.format( + 'all_rollershutters') ENTITY_ID_FORMAT = DOMAIN + '.{}' @@ -35,82 +36,82 @@ ATTR_CURRENT_POSITION = 'current_position' def is_open(hass, entity_id=None): - """ Returns if the motor is open based on the statemachine. """ - entity_id = entity_id or ENTITY_ID_ALL_MOTORS + """ Returns if the rollershutter is open based on the statemachine. """ + entity_id = entity_id or ENTITY_ID_ALL_ROLLERSHUTTERS return hass.states.is_state(entity_id, STATE_OPEN) -def call_open(hass, entity_id=None): - """ Open all or specified motor. """ +def move_up(hass, entity_id=None): + """ Move up all or specified rollershutter. """ data = {ATTR_ENTITY_ID: entity_id} if entity_id else None - hass.services.call(DOMAIN, SERVICE_OPEN, data) + hass.services.call(DOMAIN, SERVICE_MOVE_UP, data) -def call_close(hass, entity_id=None): - """ Close all or specified motor. """ +def move_down(hass, entity_id=None): + """ Move down all or specified rollershutter. """ data = {ATTR_ENTITY_ID: entity_id} if entity_id else None - hass.services.call(DOMAIN, SERVICE_CLOSE, data) + hass.services.call(DOMAIN, SERVICE_MOVE_DOWN, data) -def call_stop(hass, entity_id=None): - """ Stops all or specified motor. """ +def stop(hass, entity_id=None): + """ Stops all or specified rollershutter. """ data = {ATTR_ENTITY_ID: entity_id} if entity_id else None hass.services.call(DOMAIN, SERVICE_STOP, data) def setup(hass, config): - """ Track states and offer events for motors. """ + """ Track states and offer events for rollershutters. """ component = EntityComponent( _LOGGER, DOMAIN, hass, SCAN_INTERVAL, DISCOVERY_PLATFORMS, - GROUP_NAME_ALL_MOTORS) + GROUP_NAME_ALL_ROLLERSHUTTERS) component.setup(config) - def handle_motor_service(service): - """ Handles calls to the motor services. """ - target_motors = component.extract_from_service(service) + def handle_rollershutter_service(service): + """ Handles calls to the rollershutter services. """ + target_rollershutters = component.extract_from_service(service) - for motor in target_motors: - if service.service == SERVICE_OPEN: - motor.open() - elif service.service == SERVICE_CLOSE: - motor.close() + for rollershutter in target_rollershutters: + if service.service == SERVICE_MOVE_UP: + rollershutter.move_up() + elif service.service == SERVICE_MOVE_DOWN: + rollershutter.move_down() elif service.service == SERVICE_STOP: - motor.stop() + rollershutter.stop() - if motor.should_poll: - motor.update_ha_state(True) + if rollershutter.should_poll: + rollershutter.update_ha_state(True) descriptions = load_yaml_config_file( os.path.join(os.path.dirname(__file__), 'services.yaml')) - hass.services.register(DOMAIN, SERVICE_OPEN, - handle_motor_service, - descriptions.get(SERVICE_OPEN)) - hass.services.register(DOMAIN, SERVICE_CLOSE, - handle_motor_service, - descriptions.get(SERVICE_CLOSE)) + hass.services.register(DOMAIN, SERVICE_MOVE_UP, + handle_rollershutter_service, + descriptions.get(SERVICE_MOVE_UP)) + hass.services.register(DOMAIN, SERVICE_MOVE_DOWN, + handle_rollershutter_service, + descriptions.get(SERVICE_MOVE_DOWN)) hass.services.register(DOMAIN, SERVICE_STOP, - handle_motor_service, + handle_rollershutter_service, descriptions.get(SERVICE_STOP)) return True -class MotorDevice(Entity): - """ Represents a motor within Home Assistant. """ +class RollershutterDevice(Entity): + """ Represents a rollershutter within Home Assistant. """ # pylint: disable=no-self-use @property def current_position(self): """ - Return current position of motor. + Return current position of rollershutter. None is unknown, 0 is closed, 100 is fully open. """ raise NotImplementedError() @property def state(self): - """ Returns the state of the motor. """ + """ Returns the state of the rollershutter. """ current = self.current_position if current is None: @@ -130,14 +131,14 @@ class MotorDevice(Entity): ATTR_CURRENT_POSITION: current } - def open(self, **kwargs): - """ Open the motor. """ + def move_up(self, **kwargs): + """ Move the rollershutter down. """ raise NotImplementedError() - def close(self, **kwargs): - """ Close the motor. """ + def move_down(self, **kwargs): + """ Move the rollershutter up. """ raise NotImplementedError() def stop(self, **kwargs): - """ Stop the motor. """ + """ Stop the rollershutter. """ raise NotImplementedError() diff --git a/homeassistant/components/rollershutter/mqtt.py b/homeassistant/components/rollershutter/mqtt.py index 7c25e382f84..f5eb5652516 100644 --- a/homeassistant/components/rollershutter/mqtt.py +++ b/homeassistant/components/rollershutter/mqtt.py @@ -1,57 +1,57 @@ """ -homeassistant.components.motor.mqtt -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Allows to configure a MQTT motor. +homeassistant.components.rollershutter.mqtt +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Allows to configure a MQTT rollershutter. For more details about this platform, please refer to the documentation at -https://home-assistant.io/components/motor.mqtt/ +https://home-assistant.io/components/rollershutter.mqtt/ """ import logging import homeassistant.components.mqtt as mqtt -from homeassistant.components.motor import MotorDevice +from homeassistant.components.rollershutter import RollershutterDevice _LOGGER = logging.getLogger(__name__) DEPENDENCIES = ['mqtt'] -DEFAULT_NAME = "MQTT Motor" +DEFAULT_NAME = "MQTT Rollershutter" DEFAULT_QOS = 0 -DEFAULT_PAYLOAD_OPEN = "OPEN" -DEFAULT_PAYLOAD_CLOSE = "CLOSE" +DEFAULT_PAYLOAD_UP = "UP" +DEFAULT_PAYLOAD_DOWN = "DOWN" DEFAULT_PAYLOAD_STOP = "STOP" def setup_platform(hass, config, add_devices_callback, discovery_info=None): - """ Add MQTT Motor """ + """ Add MQTT Rollershutter """ if config.get('command_topic') is None: _LOGGER.error("Missing required variable: command_topic") return False - add_devices_callback([MqttMotor( + add_devices_callback([MqttRollershutter( hass, config.get('name', DEFAULT_NAME), config.get('state_topic'), config.get('command_topic'), config.get('qos', DEFAULT_QOS), - config.get('payload_open', DEFAULT_PAYLOAD_OPEN), - config.get('payload_close', DEFAULT_PAYLOAD_CLOSE), + config.get('payload_up', DEFAULT_PAYLOAD_UP), + config.get('payload_down', DEFAULT_PAYLOAD_DOWN), config.get('payload_stop', DEFAULT_PAYLOAD_STOP), config.get('state_format'))]) # pylint: disable=too-many-arguments, too-many-instance-attributes -class MqttMotor(MotorDevice): - """ Represents a motor that can be controlled using MQTT. """ +class MqttRollershutter(RollershutterDevice): + """ Represents a rollershutter that can be controlled using MQTT. """ def __init__(self, hass, name, state_topic, command_topic, qos, - payload_open, payload_close, payload_stop, state_format): + payload_up, payload_down, payload_stop, state_format): self._state = None self._hass = hass self._name = name self._state_topic = state_topic self._command_topic = command_topic self._qos = qos - self._payload_open = payload_open - self._payload_close = payload_close + self._payload_up = payload_up + self._payload_down = payload_down self._payload_stop = payload_stop self._parse = mqtt.FmtParser(state_format) @@ -77,25 +77,25 @@ class MqttMotor(MotorDevice): @property def name(self): - """ The name of the motor. """ + """ The name of the rollershutter. """ return self._name @property def current_position(self): """ - Return current position of motor. + Return current position of rollershutter. None is unknown, 0 is closed, 100 is fully open. """ return self._state - def open(self, **kwargs): - """ Open the device. """ - mqtt.publish(self.hass, self._command_topic, self._payload_open, + def move_up(self, **kwargs): + """ Move the rollershutter up. """ + mqtt.publish(self.hass, self._command_topic, self._payload_up, self._qos) - def close(self, **kwargs): - """ Close the device. """ - mqtt.publish(self.hass, self._command_topic, self._payload_close, + def move_down(self, **kwargs): + """ Move the rollershutter down. """ + mqtt.publish(self.hass, self._command_topic, self._payload_down, self._qos) def stop(self, **kwargs): diff --git a/tests/components/rollershutter/test_mqtt.py b/tests/components/rollershutter/test_mqtt.py index 1638e830f2d..261618a5e02 100644 --- a/tests/components/rollershutter/test_mqtt.py +++ b/tests/components/rollershutter/test_mqtt.py @@ -1,19 +1,19 @@ """ -tests.components.motor.test_mqtt +tests.components.rollershutter.test_mqtt ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Tests mqtt motor. +Tests MQTT rollershutter. """ import unittest from homeassistant.const import STATE_OPEN, STATE_CLOSED, STATE_UNKNOWN import homeassistant.core as ha -import homeassistant.components.motor as motor +import homeassistant.components.rollershutter as rollershutter from tests.common import mock_mqtt_component, fire_mqtt_message -class TestMotorMQTT(unittest.TestCase): - """ Test the MQTT motor. """ +class TestRollershutterMQTT(unittest.TestCase): + """ Test the MQTT rollershutter. """ def setUp(self): # pylint: disable=invalid-name self.hass = ha.HomeAssistant() @@ -24,43 +24,43 @@ class TestMotorMQTT(unittest.TestCase): self.hass.stop() def test_controlling_state_via_topic(self): - self.assertTrue(motor.setup(self.hass, { - 'motor': { + self.assertTrue(rollershutter.setup(self.hass, { + 'rollershutter': { 'platform': 'mqtt', 'name': 'test', 'state_topic': 'state-topic', 'command_topic': 'command-topic', 'qos': 0, - 'payload_open': 'OPEN', - 'payload_close': 'CLOSE', + 'payload_up': 'UP', + 'payload_down': 'DOWN', 'payload_stop': 'STOP' } })) - state = self.hass.states.get('motor.test') + state = self.hass.states.get('rollershutter.test') self.assertEqual(STATE_UNKNOWN, state.state) fire_mqtt_message(self.hass, 'state-topic', '0') self.hass.pool.block_till_done() - state = self.hass.states.get('motor.test') + state = self.hass.states.get('rollershutter.test') self.assertEqual(STATE_CLOSED, state.state) fire_mqtt_message(self.hass, 'state-topic', '50') self.hass.pool.block_till_done() - state = self.hass.states.get('motor.test') + state = self.hass.states.get('rollershutter.test') self.assertEqual(STATE_OPEN, state.state) fire_mqtt_message(self.hass, 'state-topic', '100') self.hass.pool.block_till_done() - state = self.hass.states.get('motor.test') + state = self.hass.states.get('rollershutter.test') self.assertEqual(STATE_OPEN, state.state) - def test_send_open_command(self): - self.assertTrue(motor.setup(self.hass, { - 'motor': { + def test_send_move_up_command(self): + self.assertTrue(rollershutter.setup(self.hass, { + 'rollershutter': { 'platform': 'mqtt', 'name': 'test', 'state_topic': 'state-topic', @@ -69,20 +69,20 @@ class TestMotorMQTT(unittest.TestCase): } })) - state = self.hass.states.get('motor.test') + state = self.hass.states.get('rollershutter.test') self.assertEqual(STATE_UNKNOWN, state.state) - motor.call_open(self.hass, 'motor.test') + rollershutter.move_up(self.hass, 'rollershutter.test') self.hass.pool.block_till_done() - self.assertEqual(('command-topic', 'OPEN', 2, False), + self.assertEqual(('command-topic', 'UP', 2, False), self.mock_publish.mock_calls[-1][1]) - state = self.hass.states.get('motor.test') + state = self.hass.states.get('rollershutter.test') self.assertEqual(STATE_UNKNOWN, state.state) - def test_send_close_command(self): - self.assertTrue(motor.setup(self.hass, { - 'motor': { + def test_send_move_down_command(self): + self.assertTrue(rollershutter.setup(self.hass, { + 'rollershutter': { 'platform': 'mqtt', 'name': 'test', 'state_topic': 'state-topic', @@ -91,20 +91,20 @@ class TestMotorMQTT(unittest.TestCase): } })) - state = self.hass.states.get('motor.test') + state = self.hass.states.get('rollershutter.test') self.assertEqual(STATE_UNKNOWN, state.state) - motor.call_close(self.hass, 'motor.test') + rollershutter.move_down(self.hass, 'rollershutter.test') self.hass.pool.block_till_done() - self.assertEqual(('command-topic', 'CLOSE', 2, False), + self.assertEqual(('command-topic', 'DOWN', 2, False), self.mock_publish.mock_calls[-1][1]) - state = self.hass.states.get('motor.test') + state = self.hass.states.get('rollershutter.test') self.assertEqual(STATE_UNKNOWN, state.state) def test_send_stop_command(self): - self.assertTrue(motor.setup(self.hass, { - 'motor': { + self.assertTrue(rollershutter.setup(self.hass, { + 'rollershutter': { 'platform': 'mqtt', 'name': 'test', 'state_topic': 'state-topic', @@ -113,54 +113,54 @@ class TestMotorMQTT(unittest.TestCase): } })) - state = self.hass.states.get('motor.test') + state = self.hass.states.get('rollershutter.test') self.assertEqual(STATE_UNKNOWN, state.state) - motor.call_stop(self.hass, 'motor.test') + rollershutter.stop(self.hass, 'rollershutter.test') self.hass.pool.block_till_done() self.assertEqual(('command-topic', 'STOP', 2, False), self.mock_publish.mock_calls[-1][1]) - state = self.hass.states.get('motor.test') + state = self.hass.states.get('rollershutter.test') self.assertEqual(STATE_UNKNOWN, state.state) def test_state_attributes_current_position(self): - self.assertTrue(motor.setup(self.hass, { - 'motor': { + self.assertTrue(rollershutter.setup(self.hass, { + 'rollershutter': { 'platform': 'mqtt', 'name': 'test', 'state_topic': 'state-topic', 'command_topic': 'command-topic', - 'payload_open': 'OPEN', - 'payload_close': 'CLOSE', + 'payload_up': 'UP', + 'payload_down': 'DOWN', 'payload_stop': 'STOP' } })) state_attributes_dict = self.hass.states.get( - 'motor.test').attributes + 'rollershutter.test').attributes self.assertFalse('current_position' in state_attributes_dict) fire_mqtt_message(self.hass, 'state-topic', '0') self.hass.pool.block_till_done() current_position = self.hass.states.get( - 'motor.test').attributes['current_position'] + 'rollershutter.test').attributes['current_position'] self.assertEqual(0, current_position) fire_mqtt_message(self.hass, 'state-topic', '50') self.hass.pool.block_till_done() current_position = self.hass.states.get( - 'motor.test').attributes['current_position'] + 'rollershutter.test').attributes['current_position'] self.assertEqual(50, current_position) fire_mqtt_message(self.hass, 'state-topic', '101') self.hass.pool.block_till_done() current_position = self.hass.states.get( - 'motor.test').attributes['current_position'] + 'rollershutter.test').attributes['current_position'] self.assertEqual(50, current_position) fire_mqtt_message(self.hass, 'state-topic', 'non-numeric') self.hass.pool.block_till_done() current_position = self.hass.states.get( - 'motor.test').attributes['current_position'] + 'rollershutter.test').attributes['current_position'] self.assertEqual(50, current_position)