diff --git a/homeassistant/components/netgear_lte/__init__.py b/homeassistant/components/netgear_lte/__init__.py index 0ab3dd07edf..77bd83a6edd 100644 --- a/homeassistant/components/netgear_lte/__init__.py +++ b/homeassistant/components/netgear_lte/__init__.py @@ -1,8 +1,6 @@ """Support for Netgear LTE modems.""" import asyncio from datetime import timedelta -import logging -from typing import Final import aiohttp import attr @@ -30,18 +28,24 @@ from homeassistant.helpers.event import async_track_time_interval from homeassistant.helpers.typing import ConfigType from . import sensor_types - -_LOGGER = logging.getLogger(__name__) +from .const import ( + ATTR_AUTOCONNECT, + ATTR_FAILOVER, + ATTR_FROM, + ATTR_HOST, + ATTR_MESSAGE, + ATTR_SMS_ID, + AUTOCONNECT_MODES, + CONF_BINARY_SENSOR, + CONF_NOTIFY, + CONF_SENSOR, + DISPATCHER_NETGEAR_LTE, + DOMAIN, + FAILOVER_MODES, + LOGGER, +) SCAN_INTERVAL = timedelta(seconds=10) -DISPATCHER_NETGEAR_LTE = "netgear_lte_update" - -CONF_NOTIFY: Final = "notify" -CONF_BINARY_SENSOR: Final = "binary_sensor" -CONF_SENSOR: Final = "sensor" - -DOMAIN = "netgear_lte" -DATA_KEY = "netgear_lte" EVENT_SMS = "netgear_lte_sms" @@ -50,16 +54,6 @@ SERVICE_SET_OPTION = "set_option" SERVICE_CONNECT_LTE = "connect_lte" SERVICE_DISCONNECT_LTE = "disconnect_lte" -ATTR_HOST = "host" -ATTR_SMS_ID = "sms_id" -ATTR_FROM = "from" -ATTR_MESSAGE = "message" -ATTR_FAILOVER = "failover" -ATTR_AUTOCONNECT = "autoconnect" - -FAILOVER_MODES = ["auto", "wire", "mobile"] -AUTOCONNECT_MODES = ["never", "home", "always"] - NOTIFY_SCHEMA = vol.Schema( { @@ -148,11 +142,11 @@ class ModemData: try: self.data = await self.modem.information() if not self.connected: - _LOGGER.warning("Connected to %s", self.host) + LOGGER.warning("Connected to %s", self.host) self.connected = True except eternalegypt.Error: if self.connected: - _LOGGER.warning("Lost connection to %s", self.host) + LOGGER.warning("Lost connection to %s", self.host) self.connected = False self.data = None @@ -177,20 +171,20 @@ class LTEData: async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: """Set up Netgear LTE component.""" - if DATA_KEY not in hass.data: + if DOMAIN not in hass.data: websession = async_create_clientsession( hass, cookie_jar=aiohttp.CookieJar(unsafe=True) ) - hass.data[DATA_KEY] = LTEData(websession) + hass.data[DOMAIN] = LTEData(websession) async def service_handler(service: ServiceCall) -> None: """Apply a service.""" host = service.data.get(ATTR_HOST) conf = {CONF_HOST: host} - modem_data = hass.data[DATA_KEY].get_modem_data(conf) + modem_data = hass.data[DOMAIN].get_modem_data(conf) if not modem_data: - _LOGGER.error("%s: host %s unavailable", service.service, host) + LOGGER.error("%s: host %s unavailable", service.service, host) return if service.service == SERVICE_DELETE_SMS: @@ -272,7 +266,7 @@ async def _setup_lte(hass, lte_config): host = lte_config[CONF_HOST] password = lte_config[CONF_PASSWORD] - websession = hass.data[DATA_KEY].websession + websession = hass.data[DOMAIN].websession modem = eternalegypt.Modem(hostname=host, websession=websession) modem_data = ModemData(hass, host, modem) @@ -308,7 +302,7 @@ async def _login(hass, modem_data, password): await modem_data.modem.add_sms_listener(fire_sms_event) await modem_data.async_update() - hass.data[DATA_KEY].modem_data[modem_data.host] = modem_data + hass.data[DOMAIN].modem_data[modem_data.host] = modem_data async def _update(now): """Periodic update.""" @@ -320,7 +314,7 @@ async def _login(hass, modem_data, password): """Clean up resources.""" update_unsub() await modem_data.modem.logout() - del hass.data[DATA_KEY].modem_data[modem_data.host] + del hass.data[DOMAIN].modem_data[modem_data.host] hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, cleanup) @@ -328,7 +322,7 @@ async def _login(hass, modem_data, password): async def _retry_login(hass, modem_data, password): """Sleep and retry setup.""" - _LOGGER.warning("Could not connect to %s. Will keep trying", modem_data.host) + LOGGER.warning("Could not connect to %s. Will keep trying", modem_data.host) modem_data.connected = False delay = 15 diff --git a/homeassistant/components/netgear_lte/binary_sensor.py b/homeassistant/components/netgear_lte/binary_sensor.py index 0e7cd14bea6..7fb119f3dee 100644 --- a/homeassistant/components/netgear_lte/binary_sensor.py +++ b/homeassistant/components/netgear_lte/binary_sensor.py @@ -2,12 +2,14 @@ from __future__ import annotations from homeassistant.components.binary_sensor import BinarySensorEntity +from homeassistant.const import CONF_MONITORED_CONDITIONS from homeassistant.core import HomeAssistant from homeassistant.exceptions import PlatformNotReady from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType -from . import CONF_BINARY_SENSOR, CONF_MONITORED_CONDITIONS, DATA_KEY, LTEEntity +from . import LTEEntity +from .const import CONF_BINARY_SENSOR, DOMAIN from .sensor_types import BINARY_SENSOR_CLASSES @@ -21,7 +23,7 @@ async def async_setup_platform( if discovery_info is None: return - modem_data = hass.data[DATA_KEY].get_modem_data(discovery_info) + modem_data = hass.data[DOMAIN].get_modem_data(discovery_info) if not modem_data or not modem_data.data: raise PlatformNotReady diff --git a/homeassistant/components/netgear_lte/const.py b/homeassistant/components/netgear_lte/const.py new file mode 100644 index 00000000000..12c8f06b695 --- /dev/null +++ b/homeassistant/components/netgear_lte/const.py @@ -0,0 +1,22 @@ +"""Constants for the Netgear LTE integration.""" +import logging +from typing import Final + +ATTR_HOST = "host" +ATTR_SMS_ID = "sms_id" +ATTR_FROM = "from" +ATTR_MESSAGE = "message" +ATTR_FAILOVER = "failover" +ATTR_AUTOCONNECT = "autoconnect" +AUTOCONNECT_MODES = ["never", "home", "always"] + +CONF_BINARY_SENSOR: Final = "binary_sensor" +CONF_NOTIFY: Final = "notify" +CONF_SENSOR: Final = "sensor" + +DISPATCHER_NETGEAR_LTE = "netgear_lte_update" +DOMAIN: Final = "netgear_lte" + +FAILOVER_MODES = ["auto", "wire", "mobile"] + +LOGGER = logging.getLogger(__package__) diff --git a/homeassistant/components/netgear_lte/notify.py b/homeassistant/components/netgear_lte/notify.py index 52ce3a85dcb..c21b56799eb 100644 --- a/homeassistant/components/netgear_lte/notify.py +++ b/homeassistant/components/netgear_lte/notify.py @@ -1,18 +1,15 @@ """Support for Netgear LTE notifications.""" from __future__ import annotations -import logging - import attr import eternalegypt from homeassistant.components.notify import ATTR_TARGET, BaseNotificationService +from homeassistant.const import CONF_RECIPIENT from homeassistant.core import HomeAssistant from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType -from . import CONF_NOTIFY, CONF_RECIPIENT, DATA_KEY - -_LOGGER = logging.getLogger(__name__) +from .const import CONF_NOTIFY, DOMAIN, LOGGER async def async_get_service( @@ -37,14 +34,14 @@ class NetgearNotifyService(BaseNotificationService): async def async_send_message(self, message="", **kwargs): """Send a message to a user.""" - modem_data = self.hass.data[DATA_KEY].get_modem_data(self.config) + modem_data = self.hass.data[DOMAIN].get_modem_data(self.config) if not modem_data: - _LOGGER.error("Modem not ready") + LOGGER.error("Modem not ready") return targets = kwargs.get(ATTR_TARGET, self.config[CONF_NOTIFY][CONF_RECIPIENT]) if not targets: - _LOGGER.warning("No recipients") + LOGGER.warning("No recipients") return if not message: @@ -54,4 +51,4 @@ class NetgearNotifyService(BaseNotificationService): try: await modem_data.modem.sms(target, message) except eternalegypt.Error: - _LOGGER.error("Unable to send to %s", target) + LOGGER.error("Unable to send to %s", target) diff --git a/homeassistant/components/netgear_lte/sensor.py b/homeassistant/components/netgear_lte/sensor.py index 49942306da2..27ad0ffe67b 100644 --- a/homeassistant/components/netgear_lte/sensor.py +++ b/homeassistant/components/netgear_lte/sensor.py @@ -2,12 +2,14 @@ from __future__ import annotations from homeassistant.components.sensor import SensorDeviceClass, SensorEntity +from homeassistant.const import CONF_MONITORED_CONDITIONS from homeassistant.core import HomeAssistant from homeassistant.exceptions import PlatformNotReady from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType -from . import CONF_MONITORED_CONDITIONS, CONF_SENSOR, DATA_KEY, LTEEntity +from . import LTEEntity +from .const import CONF_SENSOR, DOMAIN from .sensor_types import SENSOR_SMS, SENSOR_SMS_TOTAL, SENSOR_UNITS, SENSOR_USAGE @@ -21,7 +23,7 @@ async def async_setup_platform( if discovery_info is None: return - modem_data = hass.data[DATA_KEY].get_modem_data(discovery_info) + modem_data = hass.data[DOMAIN].get_modem_data(discovery_info) if not modem_data or not modem_data.data: raise PlatformNotReady