Exemplo n.º 1
0
    async def _handle_config_flow(self,
                                  user_input: dict[str, Any] | None = None,
                                  prepare: bool = False) -> FlowResult:
        """Config flow handler for ModernForms."""
        source = self.context.get("source")

        # Request user input, unless we are preparing discovery flow
        if user_input is None:
            user_input = {}
            if not prepare:
                if source == SOURCE_ZEROCONF:
                    return self._show_confirm_dialog()
                return self._show_setup_form()

        if source == SOURCE_ZEROCONF:
            user_input[CONF_HOST] = self.context.get(CONF_HOST)
            user_input[CONF_MAC] = self.context.get(CONF_MAC)

        if user_input.get(CONF_MAC) is None or not prepare:
            session = async_get_clientsession(self.hass)
            device = ModernFormsDevice(user_input[CONF_HOST], session=session)
            try:
                device = await device.update()
            except ModernFormsConnectionError:
                if source == SOURCE_ZEROCONF:
                    return self.async_abort(reason="cannot_connect")
                return self._show_setup_form({"base": "cannot_connect"})
            user_input[CONF_MAC] = device.info.mac_address
            user_input[CONF_NAME] = device.info.device_name

        # Check if already configured
        await self.async_set_unique_id(user_input[CONF_MAC])
        self._abort_if_unique_id_configured(
            updates={CONF_HOST: user_input[CONF_HOST]})

        title = device.info.device_name
        if source == SOURCE_ZEROCONF:
            title = self.context.get(CONF_NAME)

        if prepare:
            return await self.async_step_zeroconf_confirm()

        return self.async_create_entry(
            title=title,
            data={
                CONF_HOST: user_input[CONF_HOST],
                CONF_MAC: user_input[CONF_MAC]
            },
        )
Exemplo n.º 2
0
    def __init__(
        self,
        hass: HomeAssistant,
        *,
        host: str,
    ) -> None:
        """Initialize global Modern Forms data updater."""
        self.modern_forms = ModernFormsDevice(
            host, session=async_get_clientsession(hass))

        super().__init__(
            hass,
            _LOGGER,
            name=DOMAIN,
            update_interval=SCAN_INTERVAL,
        )