示例#1
0
async def _setup_lte(hass, lte_config):
    """Set up a Netgear LTE modem."""
    import eternalegypt

    host = lte_config[CONF_HOST]
    password = lte_config[CONF_PASSWORD]

    websession = hass.data[DATA_KEY].websession
    modem = eternalegypt.Modem(hostname=host, websession=websession)

    modem_data = ModemData(hass, host, modem)

    try:
        await _login(hass, modem_data, password)
    except eternalegypt.Error:
        retry_task = hass.loop.create_task(
            _retry_login(hass, modem_data, password))

        @callback
        def cleanup_retry(event):
            """Clean up retry task resources."""
            if not retry_task.done():
                retry_task.cancel()

        hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, cleanup_retry)
示例#2
0
async def _setup_lte(hass, lte_config, delay=0):
    """Set up a Netgear LTE modem."""
    import eternalegypt

    if delay:
        await asyncio.sleep(delay)

    host = lte_config[CONF_HOST]
    password = lte_config[CONF_PASSWORD]

    websession = hass.data[DATA_KEY].websession

    modem = eternalegypt.Modem(hostname=host, websession=websession)

    try:
        await modem.login(password=password)
    except eternalegypt.Error:
        delay = max(15, min(2 * delay, 300))
        _LOGGER.warning("Retrying %s in %d seconds", host, delay)
        hass.loop.create_task(_setup_lte(hass, lte_config, delay))
        return

    modem_data = ModemData(modem)
    await modem_data.async_update()
    hass.data[DATA_KEY].modem_data[host] = modem_data

    async def cleanup(event):
        """Clean up resources."""
        await modem.logout()

    hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, cleanup)
示例#3
0
async def get_information():
    """Example of printing the current upstream."""
    jar = aiohttp.CookieJar(unsafe=True)
    websession = aiohttp.ClientSession(cookie_jar=jar)

    try:
        modem = eternalegypt.Modem(hostname=sys.argv[1], websession=websession)
        await modem.login(password=sys.argv[2])

        result = await modem.information()
        print("serial_number: {}".format(result.serial_number))
        print("usage: {}".format(result.usage))
        print("upstream: {}".format(result.upstream))
        print("wire_connected: {}".format(result.wire_connected))
        print("mobile_connected: {}".format(result.mobile_connected))
        print("connection_text: {}".format(result.connection_text))
        print("connection_type: {}".format(result.connection_type))
        print("current_nw_service_type: {}".format(result.current_nw_service_type))
        print("current_ps_service_type: {}".format(result.current_ps_service_type))
        print("register_network_display: {}".format(result.register_network_display))
        print("roaming: {}".format(result.roaming))
        print("radio_quality: {}".format(result.radio_quality))
        print("rx_level: {}".format(result.rx_level))
        print("tx_level: {}".format(result.tx_level))
        print("current_band: {}".format(result.current_band))
        print("cell_id: {}".format(result.cell_id))

        await modem.logout()
    except eternalegypt.Error:
        print("Could not login")

    await websession.close()
示例#4
0
async def send_message():
    """Example of sending a message."""
    jar = aiohttp.CookieJar(unsafe=True)
    websession = aiohttp.ClientSession(cookie_jar=jar)

    modem = eternalegypt.Modem(hostname=sys.argv[1], websession=websession)
    await modem.login(password=sys.argv[2])

    await modem.sms(phone=sys.argv[3], message=sys.argv[4])

    await websession.close()
async def reconnect():
    """Example of disconnecting and reconnecting."""
    jar = aiohttp.CookieJar(unsafe=True)
    websession = aiohttp.ClientSession(cookie_jar=jar)

    modem = eternalegypt.Modem(hostname=sys.argv[1], websession=websession)
    await modem.login(password=sys.argv[2])

    print("Factory reset")
    await modem.factory_reset()
    print("Closing down")
    await modem.logout()
    await websession.close()
示例#6
0
async def get_information():
    """Example of printing the inbox."""
    jar = aiohttp.CookieJar(unsafe=True)
    websession = aiohttp.ClientSession(cookie_jar=jar)

    modem = eternalegypt.Modem(hostname=sys.argv[1], websession=websession)
    await modem.login(password=sys.argv[2])

    result = await modem.information()
    for sms in result.sms:
        pprint.pprint(sms)

    await websession.close()
async def set_autoconnect_mode(mode):
    """Example of printing the current upstream."""
    jar = aiohttp.CookieJar(unsafe=True)
    websession = aiohttp.ClientSession(cookie_jar=jar)

    try:
        modem = eternalegypt.Modem(hostname=sys.argv[1], websession=websession)
        await modem.login(password=sys.argv[2])

        await modem.set_autoconnect_mode(mode)

        await modem.logout()
    except eternalegypt.Error:
        print("Could not login")

    await websession.close()
async def _setup_lte(hass, lte_config):
    """Set up a Netgear LTE modem."""
    import eternalegypt

    host = lte_config[CONF_HOST]
    password = lte_config[CONF_PASSWORD]

    websession = hass.data[DATA_KEY].websession

    modem = eternalegypt.Modem(hostname=host, websession=websession)
    await modem.login(password=password)

    modem_data = ModemData(modem)
    await modem_data.async_update()
    hass.data[DATA_KEY].modem_data[host] = modem_data

    async def cleanup(event):
        """Clean up resources."""
        await modem.logout()

    hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, cleanup)
示例#9
0
async def reconnect():
    """Example of disconnecting and reconnecting."""
    jar = aiohttp.CookieJar(unsafe=True)
    websession = aiohttp.ClientSession(cookie_jar=jar)

    modem = eternalegypt.Modem(hostname=sys.argv[1], websession=websession)
    await modem.login(password=sys.argv[2])

    print("Disconnecting")
    await modem.disconnect_lte()

    print("Waiting 5 seconds")
    await asyncio.sleep(5)

    print("Connecting")
    await modem.connect_lte()

    print("Waiting 5 seconds")
    await asyncio.sleep(5)

    print("Closing down")
    await modem.logout()
    await websession.close()