コード例 #1
0
ファイル: config_flow.py プロジェクト: pgenera/home-assistant
    async def _discover(self, uuid=None):
        """Discover an unconfigured LMS server."""
        self.discovery_info = None
        discovery_event = asyncio.Event()

        def _discovery_callback(server):
            if server.uuid:
                # ignore already configured uuids
                for entry in self._async_current_entries():
                    if entry.unique_id == server.uuid:
                        return
                self.discovery_info = {
                    CONF_HOST: server.host,
                    CONF_PORT: int(server.port),
                    "uuid": server.uuid,
                }
                _LOGGER.debug("Discovered server: %s", self.discovery_info)
                discovery_event.set()

        discovery_task = self.hass.async_create_task(
            async_discover(_discovery_callback))

        await discovery_event.wait()
        discovery_task.cancel()  # stop searching as soon as we find server

        # update with suggested values from discovery
        self.data_schema = _base_schema(self.discovery_info)
コード例 #2
0
async def test_discovery_integration():
    """Test discovery - requires actual discoverable server."""
    event = asyncio.Event()

    def _discovery_callback(server):
        global IP
        IP = server.host
        event.set()

    task = asyncio.create_task(async_discover(_discovery_callback))
    try:
        await asyncio.wait_for(event.wait(), 1)
    except asyncio.TimeoutError:
        pytest.fail("Synchronous discovery failed")
    task.cancel()
    await task
コード例 #3
0
async def start_server_discovery(hass):
    """Start a server discovery task."""
    def _discovered_server(server):
        asyncio.create_task(
            hass.config_entries.flow.async_init(
                DOMAIN,
                context={"source": SOURCE_INTEGRATION_DISCOVERY},
                data={
                    CONF_HOST: server.host,
                    CONF_PORT: int(server.port),
                    "uuid": server.uuid,
                },
            ))

    hass.data.setdefault(DOMAIN, {})
    if DISCOVERY_TASK not in hass.data[DOMAIN]:
        _LOGGER.debug("Adding server discovery task for squeezebox")
        hass.data[DOMAIN][DISCOVERY_TASK] = hass.async_create_task(
            async_discover(_discovered_server))