Add discover helper method to discovery component

This commit is contained in:
Paulus Schoutsen 2016-02-19 22:23:01 -08:00
parent 70aa605396
commit 63a27f1943

View File

@ -1,6 +1,4 @@
""" """
homeassistant.components.discovery
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Starts a service to scan in intervals for new devices. Starts a service to scan in intervals for new devices.
Will emit EVENT_PLATFORM_DISCOVERED whenever a new service has been discovered. Will emit EVENT_PLATFORM_DISCOVERED whenever a new service has been discovered.
@ -39,24 +37,41 @@ SERVICE_HANDLERS = {
def listen(hass, service, callback): def listen(hass, service, callback):
""" """Setup listener for discovery of specific service.
Setup listener for discovery of specific service.
Service can be a string or a list/tuple. Service can be a string or a list/tuple.
""" """
if isinstance(service, str): if isinstance(service, str):
service = (service,) service = (service,)
else: else:
service = tuple(service) service = tuple(service)
def discovery_event_listener(event): def discovery_event_listener(event):
""" Listens for discovery events. """ """Listen for discovery events."""
if event.data[ATTR_SERVICE] in service: if event.data[ATTR_SERVICE] in service:
callback(event.data[ATTR_SERVICE], event.data[ATTR_DISCOVERED]) callback(event.data[ATTR_SERVICE], event.data.get(ATTR_DISCOVERED))
hass.bus.listen(EVENT_PLATFORM_DISCOVERED, discovery_event_listener) hass.bus.listen(EVENT_PLATFORM_DISCOVERED, discovery_event_listener)
def discover(hass, service, discovered=None, component=None, hass_config=None):
"""Fire discovery event.
Can ensure a component is loaded.
"""
if component is not None:
bootstrap.setup_component(hass, component, hass_config)
data = {
ATTR_SERVICE: service
}
if discovered is not None:
data[ATTR_DISCOVERED] = discovered
hass.bus.fire(EVENT_PLATFORM_DISCOVERED, data)
def setup(hass, config): def setup(hass, config):
""" Starts a discovery service. """ """ Starts a discovery service. """
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)