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)
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)
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()
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()
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)
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()