Files
HomeAssistantVS/custom_components/asusrouter/sensor.py
T
2026-06-11 11:50:50 -04:00

69 lines
1.9 KiB
Python

"""AsusRouter sensor module."""
from __future__ import annotations
import logging
from homeassistant.components.sensor import SensorEntity
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
from .compilers import list_sensors_network
from .const import CONF_INTERFACES, STATIC_SENSORS
from .dataclass import ARSensorDescription
from .entity import AREntity, async_setup_ar_entry
from .router import ARDevice
_LOGGER = logging.getLogger(__name__)
async def async_setup_entry(
hass: HomeAssistant,
config_entry: ConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up AsusRouter sensors."""
sensors = STATIC_SENSORS.copy()
interfaces = config_entry.options.get(CONF_INTERFACES, [])
if len(interfaces) > 0:
_LOGGER.debug(
"Interfaces selected: %s. Initializing sensors", interfaces
)
sensors.extend(
list_sensors_network(
config_entry.options[CONF_INTERFACES],
)
)
await async_setup_ar_entry(
hass, config_entry, async_add_entities, sensors, ARSensor
)
class ARSensor(AREntity, SensorEntity):
"""AsusRouter sensor."""
def __init__(
self,
coordinator: DataUpdateCoordinator,
router: ARDevice,
description: ARSensorDescription,
) -> None:
"""Initialize AsusRouter sensor."""
super().__init__(coordinator, router, description)
self.entity_description: ARSensorDescription = description
@property
def native_value(
self,
) -> float | str | None:
"""Return state."""
description = self.entity_description
return self.coordinator.data.get(description.key)