diff --git a/homeassistant/components/alarm_control_panel/mqtt.py b/homeassistant/components/alarm_control_panel/mqtt.py index c5408304018..54b85ffbe23 100644 --- a/homeassistant/components/alarm_control_panel/mqtt.py +++ b/homeassistant/components/alarm_control_panel/mqtt.py @@ -49,6 +49,9 @@ PLATFORM_SCHEMA = mqtt.MQTT_BASE_PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): """Set up the MQTT Alarm Control Panel platform.""" + if discovery_info is not None: + config = PLATFORM_SCHEMA(discovery_info) + async_add_devices([MqttAlarm( config.get(CONF_NAME), config.get(CONF_STATE_TOPIC), diff --git a/homeassistant/components/mqtt/discovery.py b/homeassistant/components/mqtt/discovery.py index 1cbe099ddde..128c45f1311 100644 --- a/homeassistant/components/mqtt/discovery.py +++ b/homeassistant/components/mqtt/discovery.py @@ -21,7 +21,8 @@ TOPIC_MATCHER = re.compile( SUPPORTED_COMPONENTS = [ 'binary_sensor', 'camera', 'cover', 'fan', - 'light', 'sensor', 'switch', 'lock', 'climate'] + 'light', 'sensor', 'switch', 'lock', 'climate', + 'alarm_control_panel'] ALLOWED_PLATFORMS = { 'binary_sensor': ['mqtt'], @@ -33,6 +34,7 @@ ALLOWED_PLATFORMS = { 'sensor': ['mqtt'], 'switch': ['mqtt'], 'climate': ['mqtt'], + 'alarm_control_panel': ['mqtt'], } ALREADY_DISCOVERED = 'mqtt_discovered_components' diff --git a/tests/components/mqtt/test_discovery.py b/tests/components/mqtt/test_discovery.py index ed6c77f676c..9e0ef14a3fa 100644 --- a/tests/components/mqtt/test_discovery.py +++ b/tests/components/mqtt/test_discovery.py @@ -124,6 +124,28 @@ def test_discover_climate(hass, mqtt_mock, caplog): assert ('climate', 'bla') in hass.data[ALREADY_DISCOVERED] +@asyncio.coroutine +def test_discover_alarm_control_panel(hass, mqtt_mock, caplog): + """Test discovering an MQTT alarm control panel component.""" + yield from async_start(hass, 'homeassistant', {}) + + data = ( + '{ "name": "AlarmControlPanelTest",' + ' "state_topic": "test_topic",' + ' "command_topic": "test_topic" }' + ) + + async_fire_mqtt_message( + hass, 'homeassistant/alarm_control_panel/bla/config', data) + yield from hass.async_block_till_done() + + state = hass.states.get('alarm_control_panel.AlarmControlPanelTest') + + assert state is not None + assert state.name == 'AlarmControlPanelTest' + assert ('alarm_control_panel', 'bla') in hass.data[ALREADY_DISCOVERED] + + @asyncio.coroutine def test_discovery_incl_nodeid(hass, mqtt_mock, caplog): """Test sending in correct JSON with optional node_id included."""