mirror of
https://github.com/home-assistant/core.git
synced 2025-07-25 22:27:07 +00:00
Add discover helper method to discovery component
This commit is contained in:
parent
70aa605396
commit
63a27f1943
@ -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__)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user