69 lines
1.9 KiB
Python
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)
|