Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move Netgear LTE constants to their own file #92924

Merged
merged 3 commits into from
May 11, 2023
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
50 changes: 23 additions & 27 deletions homeassistant/components/netgear_lte/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
"""Support for Netgear LTE modems."""
import asyncio
from datetime import timedelta
import logging
from typing import Final

import aiohttp
Expand Down Expand Up @@ -30,36 +29,33 @@
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,
DISPATCHER_NETGEAR_LTE,
DOMAIN,
FAILOVER_MODES,
LOGGER,
)

SCAN_INTERVAL = timedelta(seconds=10)
DISPATCHER_NETGEAR_LTE = "netgear_lte_update"

CONF_NOTIFY: Final = "notify"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These three can be dropped. They are now in const.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you meant the platforms

CONF_BINARY_SENSOR: Final = "binary_sensor"
CONF_SENSOR: Final = "sensor"

DOMAIN = "netgear_lte"
DATA_KEY = "netgear_lte"

EVENT_SMS = "netgear_lte_sms"

SERVICE_DELETE_SMS = "delete_sms"
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(
{
Expand Down Expand Up @@ -148,11 +144,11 @@ async def async_update(self):
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

Expand All @@ -177,20 +173,20 @@ def get_modem_data(self, config):

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:
Expand Down Expand Up @@ -272,7 +268,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)
Expand Down Expand Up @@ -308,7 +304,7 @@ def fire_sms_event(sms):
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."""
Expand All @@ -320,15 +316,15 @@ async def cleanup(event):
"""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)


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
Expand Down
6 changes: 4 additions & 2 deletions homeassistant/components/netgear_lte/binary_sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand All @@ -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
Expand Down
22 changes: 22 additions & 0 deletions homeassistant/components/netgear_lte/const.py
Original file line number Diff line number Diff line change
@@ -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"
tkdrob marked this conversation as resolved.
Show resolved Hide resolved

DISPATCHER_NETGEAR_LTE = "netgear_lte_update"
DOMAIN: Final = "netgear_lte"

FAILOVER_MODES = ["auto", "wire", "mobile"]

LOGGER = logging.getLogger(__package__)
15 changes: 6 additions & 9 deletions homeassistant/components/netgear_lte/notify.py
Original file line number Diff line number Diff line change
@@ -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(
Expand All @@ -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:
Expand All @@ -54,4 +51,4 @@ async def async_send_message(self, message="", **kwargs):
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)
6 changes: 4 additions & 2 deletions homeassistant/components/netgear_lte/sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand All @@ -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
Expand Down