mirror of
https://github.com/home-assistant/core.git
synced 2025-07-24 21:57:51 +00:00
Fix upnp creating derived sensors (#57436)
This commit is contained in:
parent
ba0196137e
commit
3825f80a2d
@ -198,6 +198,7 @@ class UpnpBinarySensorEntityDescription(BinarySensorEntityDescription):
|
|||||||
"""A class that describes UPnP entities."""
|
"""A class that describes UPnP entities."""
|
||||||
|
|
||||||
format: str = "s"
|
format: str = "s"
|
||||||
|
unique_id: str | None = None
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
@ -205,6 +206,7 @@ class UpnpSensorEntityDescription(SensorEntityDescription):
|
|||||||
"""A class that describes a sensor UPnP entities."""
|
"""A class that describes a sensor UPnP entities."""
|
||||||
|
|
||||||
format: str = "s"
|
format: str = "s"
|
||||||
|
unique_id: str | None = None
|
||||||
|
|
||||||
|
|
||||||
class UpnpDataUpdateCoordinator(DataUpdateCoordinator):
|
class UpnpDataUpdateCoordinator(DataUpdateCoordinator):
|
||||||
@ -250,7 +252,7 @@ class UpnpEntity(CoordinatorEntity):
|
|||||||
self._device = coordinator.device
|
self._device = coordinator.device
|
||||||
self.entity_description = entity_description
|
self.entity_description = entity_description
|
||||||
self._attr_name = f"{coordinator.device.name} {entity_description.name}"
|
self._attr_name = f"{coordinator.device.name} {entity_description.name}"
|
||||||
self._attr_unique_id = f"{coordinator.device.udn}_{entity_description.key}"
|
self._attr_unique_id = f"{coordinator.device.udn}_{entity_description.unique_id or entity_description.key}"
|
||||||
self._attr_device_info = {
|
self._attr_device_info = {
|
||||||
"connections": {(dr.CONNECTION_UPNP, coordinator.device.udn)},
|
"connections": {(dr.CONNECTION_UPNP, coordinator.device.udn)},
|
||||||
"name": coordinator.device.name,
|
"name": coordinator.device.name,
|
||||||
|
@ -30,14 +30,16 @@ async def async_setup_entry(
|
|||||||
|
|
||||||
LOGGER.debug("Adding binary sensor")
|
LOGGER.debug("Adding binary sensor")
|
||||||
|
|
||||||
async_add_entities(
|
entities = [
|
||||||
UpnpStatusBinarySensor(
|
UpnpStatusBinarySensor(
|
||||||
coordinator=coordinator,
|
coordinator=coordinator,
|
||||||
entity_description=entity_description,
|
entity_description=entity_description,
|
||||||
)
|
)
|
||||||
for entity_description in BINARYSENSOR_ENTITY_DESCRIPTIONS
|
for entity_description in BINARYSENSOR_ENTITY_DESCRIPTIONS
|
||||||
if coordinator.data.get(entity_description.key) is not None
|
if coordinator.data.get(entity_description.key) is not None
|
||||||
)
|
]
|
||||||
|
LOGGER.debug("Adding entities: %s", entities)
|
||||||
|
async_add_entities(entities)
|
||||||
|
|
||||||
|
|
||||||
class UpnpStatusBinarySensor(UpnpEntity, BinarySensorEntity):
|
class UpnpStatusBinarySensor(UpnpEntity, BinarySensorEntity):
|
||||||
|
@ -15,6 +15,7 @@ from .const import (
|
|||||||
DATA_RATE_PACKETS_PER_SECOND,
|
DATA_RATE_PACKETS_PER_SECOND,
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
KIBIBYTE,
|
KIBIBYTE,
|
||||||
|
LOGGER,
|
||||||
PACKETS_RECEIVED,
|
PACKETS_RECEIVED,
|
||||||
PACKETS_SENT,
|
PACKETS_SENT,
|
||||||
ROUTER_IP,
|
ROUTER_IP,
|
||||||
@ -74,28 +75,32 @@ RAW_SENSORS: tuple[UpnpSensorEntityDescription, ...] = (
|
|||||||
|
|
||||||
DERIVED_SENSORS: tuple[UpnpSensorEntityDescription, ...] = (
|
DERIVED_SENSORS: tuple[UpnpSensorEntityDescription, ...] = (
|
||||||
UpnpSensorEntityDescription(
|
UpnpSensorEntityDescription(
|
||||||
key="KiB/sec_received",
|
key=BYTES_RECEIVED,
|
||||||
|
unique_id="KiB/sec_received",
|
||||||
name=f"{DATA_RATE_KIBIBYTES_PER_SECOND} received",
|
name=f"{DATA_RATE_KIBIBYTES_PER_SECOND} received",
|
||||||
icon="mdi:server-network",
|
icon="mdi:server-network",
|
||||||
native_unit_of_measurement=DATA_RATE_KIBIBYTES_PER_SECOND,
|
native_unit_of_measurement=DATA_RATE_KIBIBYTES_PER_SECOND,
|
||||||
format=".1f",
|
format=".1f",
|
||||||
),
|
),
|
||||||
UpnpSensorEntityDescription(
|
UpnpSensorEntityDescription(
|
||||||
key="KiB/sent",
|
key=BYTES_SENT,
|
||||||
|
unique_id="KiB/sent",
|
||||||
name=f"{DATA_RATE_KIBIBYTES_PER_SECOND} sent",
|
name=f"{DATA_RATE_KIBIBYTES_PER_SECOND} sent",
|
||||||
icon="mdi:server-network",
|
icon="mdi:server-network",
|
||||||
native_unit_of_measurement=DATA_RATE_KIBIBYTES_PER_SECOND,
|
native_unit_of_measurement=DATA_RATE_KIBIBYTES_PER_SECOND,
|
||||||
format=".1f",
|
format=".1f",
|
||||||
),
|
),
|
||||||
UpnpSensorEntityDescription(
|
UpnpSensorEntityDescription(
|
||||||
key="packets/sec_received",
|
key=PACKETS_RECEIVED,
|
||||||
|
unique_id="packets/sec_received",
|
||||||
name=f"{DATA_RATE_PACKETS_PER_SECOND} received",
|
name=f"{DATA_RATE_PACKETS_PER_SECOND} received",
|
||||||
icon="mdi:server-network",
|
icon="mdi:server-network",
|
||||||
native_unit_of_measurement=DATA_RATE_PACKETS_PER_SECOND,
|
native_unit_of_measurement=DATA_RATE_PACKETS_PER_SECOND,
|
||||||
format=".1f",
|
format=".1f",
|
||||||
),
|
),
|
||||||
UpnpSensorEntityDescription(
|
UpnpSensorEntityDescription(
|
||||||
key="packets/sent",
|
key=PACKETS_SENT,
|
||||||
|
unique_id="packets/sent",
|
||||||
name=f"{DATA_RATE_PACKETS_PER_SECOND} sent",
|
name=f"{DATA_RATE_PACKETS_PER_SECOND} sent",
|
||||||
icon="mdi:server-network",
|
icon="mdi:server-network",
|
||||||
native_unit_of_measurement=DATA_RATE_PACKETS_PER_SECOND,
|
native_unit_of_measurement=DATA_RATE_PACKETS_PER_SECOND,
|
||||||
@ -131,6 +136,7 @@ async def async_setup_entry(
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
LOGGER.debug("Adding entities: %s", entities)
|
||||||
async_add_entities(entities)
|
async_add_entities(entities)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user