diff --git a/homeassistant/components/discovery.py b/homeassistant/components/discovery.py index ea8710158d1..01b25cf0a87 100644 --- a/homeassistant/components/discovery.py +++ b/homeassistant/components/discovery.py @@ -10,6 +10,7 @@ import asyncio import json from datetime import timedelta import logging +import os import voluptuous as vol @@ -29,12 +30,14 @@ SERVICE_NETGEAR = 'netgear_router' SERVICE_WEMO = 'belkin_wemo' SERVICE_HASS_IOS_APP = 'hass_ios' SERVICE_IKEA_TRADFRI = 'ikea_tradfri' +SERVICE_HASSIO = 'hassio' SERVICE_HANDLERS = { SERVICE_HASS_IOS_APP: ('ios', None), SERVICE_NETGEAR: ('device_tracker', None), SERVICE_WEMO: ('wemo', None), SERVICE_IKEA_TRADFRI: ('tradfri', None), + SERVICE_HASSIO: ('hassio', None), 'philips_hue': ('light', 'hue'), 'google_cast': ('media_player', 'cast'), 'panasonic_viera': ('media_player', 'panasonic_viera'), @@ -124,6 +127,10 @@ def async_setup(hass, config): """Schedule the first discovery when Home Assistant starts up.""" async_track_point_in_utc_time(hass, scan_devices, dt_util.utcnow()) + # discovery local services + if 'HASSIO' in os.environ: + hass.async_add_job(new_service_found(SERVICE_HASSIO, {})) + hass.bus.async_listen_once(EVENT_HOMEASSISTANT_START, schedule_first) return True diff --git a/tests/components/test_discovery.py b/tests/components/test_discovery.py index 6b03ffa34e7..7073c420341 100644 --- a/tests/components/test_discovery.py +++ b/tests/components/test_discovery.py @@ -1,5 +1,6 @@ """The tests for the discovery component.""" import asyncio +import os from unittest.mock import patch @@ -128,3 +129,18 @@ def test_discover_duplicates(hass): mock_discover.assert_called_with( hass, SERVICE_NO_PLATFORM, SERVICE_INFO, SERVICE_NO_PLATFORM_COMPONENT, BASE_CONFIG) + + +@asyncio.coroutine +def test_load_component_hassio(hass): + """Test load hassio component.""" + def discover(netdisco): + """Fake discovery.""" + return [] + + with patch.dict(os.environ, {'HASSIO': "FAKE_HASSIO"}), \ + patch('homeassistant.components.hassio.async_setup', + return_value=mock_coro(return_value=True)) as mock_hassio: + yield from mock_discovery(hass, discover) + + assert mock_hassio.called