Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 19 additions & 7 deletions homeassistant/components/discovery.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

import voluptuous as vol

from homeassistant import config_entries
from homeassistant.core import callback
from homeassistant.const import EVENT_HOMEASSISTANT_START
import homeassistant.helpers.config_validation as cv
Expand Down Expand Up @@ -40,6 +41,10 @@
SERVICE_DAIKIN = 'daikin'
SERVICE_SAMSUNG_PRINTER = 'samsung_printer'

CONFIG_ENTRY_HANDLERS = {
SERVICE_HUE: 'hue',
}

SERVICE_HANDLERS = {
SERVICE_HASS_IOS_APP: ('ios', None),
SERVICE_NETGEAR: ('device_tracker', None),
Expand All @@ -51,7 +56,6 @@
SERVICE_WINK: ('wink', None),
SERVICE_XIAOMI_GW: ('xiaomi_aqara', None),
SERVICE_TELLDUSLIVE: ('tellduslive', None),
SERVICE_HUE: ('hue', None),
SERVICE_DECONZ: ('deconz', None),
SERVICE_DAIKIN: ('daikin', None),
SERVICE_SAMSUNG_PRINTER: ('sensor', 'syncthru'),
Expand Down Expand Up @@ -105,19 +109,27 @@ async def new_service_found(service, info):
logger.info("Ignoring service: %s %s", service, info)
return

discovery_hash = json.dumps([service, info], sort_keys=True)
if discovery_hash in already_discovered:
return

already_discovered.add(discovery_hash)

if service in CONFIG_ENTRY_HANDLERS:
await hass.config_entries.flow.async_init(
CONFIG_ENTRY_HANDLERS[service],
source=config_entries.SOURCE_DISCOVERY,
data=info
)
return

comp_plat = SERVICE_HANDLERS.get(service)

# We do not know how to handle this service.
if not comp_plat:
logger.info("Unknown service discovered: %s %s", service, info)
return

discovery_hash = json.dumps([service, info], sort_keys=True)
if discovery_hash in already_discovered:
return

already_discovered.add(discovery_hash)

logger.info("Found new service: %s %s", service, info)

component, platform = comp_plat
Expand Down
Loading