1 """Support for Netgear LTE modems."""
5 from aiohttp.cookiejar
import CookieJar
7 from eternalegypt.eternalegypt
import SMS
26 from .coordinator
import NetgearLTEDataUpdateCoordinator
27 from .services
import async_setup_services
29 EVENT_SMS =
"netgear_lte_sms"
41 "current_ps_service_type",
42 "register_network_display",
47 ALL_BINARY_SENSORS = [
54 Platform.BINARY_SENSOR,
58 type NetgearLTEConfigEntry = ConfigEntry[NetgearLTEDataUpdateCoordinator]
60 CONFIG_SCHEMA = cv.empty_config_schema(DOMAIN)
63 async
def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
64 """Set up Netgear LTE component."""
65 hass.data[DATA_HASS_CONFIG] = config
71 """Set up Netgear LTE from a config entry."""
72 host = entry.data[CONF_HOST]
73 password = entry.data[CONF_PASSWORD]
75 data: dict[str, Any] = hass.data.setdefault(DOMAIN, {})
76 if not (session := data.get(DATA_SESSION))
or session.closed:
78 modem = eternalegypt.Modem(hostname=host, websession=session)
81 await modem.login(password=password)
82 except eternalegypt.Error
as ex:
85 def fire_sms_event(sms: SMS) ->
None:
86 """Send an SMS event."""
88 ATTR_HOST: modem.hostname,
90 ATTR_FROM: sms.sender,
91 ATTR_MESSAGE: sms.message,
93 hass.bus.async_fire(EVENT_SMS, data)
95 await modem.add_sms_listener(fire_sms_event)
98 await coordinator.async_config_entry_first_refresh()
99 entry.runtime_data = coordinator
103 await discovery.async_load_platform(
107 {CONF_NAME: entry.title,
"modem": modem},
108 hass.data[DATA_HASS_CONFIG],
111 await hass.config_entries.async_forward_entry_setups(
112 entry, [platform
for platform
in PLATFORMS
if platform != Platform.NOTIFY]
119 """Unload a config entry."""
120 unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
123 for entry
in hass.config_entries.async_entries(DOMAIN)
124 if entry.state == ConfigEntryState.LOADED
126 if len(loaded_entries) == 1:
127 hass.data.pop(DOMAIN,
None)
128 for service_name
in hass.services.async_services()[DOMAIN]:
129 hass.services.async_remove(DOMAIN, service_name)
None async_setup_services(HomeAssistant hass)
bool async_unload_entry(HomeAssistant hass, NetgearLTEConfigEntry entry)
bool async_setup(HomeAssistant hass, ConfigType config)
bool async_setup_entry(HomeAssistant hass, NetgearLTEConfigEntry entry)
aiohttp.ClientSession async_create_clientsession()