예제 #1
0
def password():
    roomba_ip = _get_ip_from_arg()
    _validate_ip(roomba_ip)
    _wait_for_input()

    roomba_discovery = RoombaDiscovery()
    roomba_info = roomba_discovery.find(roomba_ip)
    _validate_roomba_info(roomba_info)

    roomba_password = RoombaPassword(roomba_ip)
    found_password = roomba_password.get_password()
    roomba_info.password = found_password
    print(roomba_info)
예제 #2
0
    async def async_step_link(self, user_input=None):
        """Attempt to link with the Roomba.

        Given a configured host, will ask the user to press the home and target buttons
        to connect to the device.
        """
        if user_input is None:
            return self.async_show_form(
                step_id="link",
                description_placeholders={CONF_NAME: self.name or self.blid},
            )

        roomba_pw = RoombaPassword(self.host)

        try:
            password = await self.hass.async_add_executor_job(
                roomba_pw.get_password)
        except OSError:
            return await self.async_step_link_manual()

        if not password:
            return await self.async_step_link_manual()

        config = {
            CONF_HOST: self.host,
            CONF_BLID: self.blid,
            CONF_PASSWORD: password,
            **DEFAULT_OPTIONS,
        }

        if not self.name:
            try:
                info = await validate_input(self.hass, config)
            except CannotConnect:
                return self.async_abort(reason="cannot_connect")

            self.name = info[CONF_NAME]

        return self.async_create_entry(title=self.name, data=config)