Add entity translations to uPnP (#96763)
This commit is contained in:
parent
3183ce7608
commit
bfbdebd0f7
5 changed files with 67 additions and 25 deletions
|
@ -28,7 +28,7 @@ class UpnpBinarySensorEntityDescription(
|
|||
SENSOR_DESCRIPTIONS: tuple[UpnpBinarySensorEntityDescription, ...] = (
|
||||
UpnpBinarySensorEntityDescription(
|
||||
key=WAN_STATUS,
|
||||
name="wan status",
|
||||
translation_key="wan_status",
|
||||
device_class=BinarySensorDeviceClass.CONNECTIVITY,
|
||||
entity_category=EntityCategory.DIAGNOSTIC,
|
||||
),
|
||||
|
|
|
@ -25,6 +25,7 @@ class UpnpEntity(CoordinatorEntity[UpnpDataUpdateCoordinator]):
|
|||
"""Base class for UPnP/IGD entities."""
|
||||
|
||||
entity_description: UpnpEntityDescription
|
||||
_attr_has_entity_name = True
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
|
@ -35,7 +36,6 @@ class UpnpEntity(CoordinatorEntity[UpnpDataUpdateCoordinator]):
|
|||
super().__init__(coordinator)
|
||||
self._device = coordinator.device
|
||||
self.entity_description = entity_description
|
||||
self._attr_name = f"{coordinator.device.name} {entity_description.name}"
|
||||
self._attr_unique_id = f"{coordinator.device.original_udn}_{entity_description.unique_id or entity_description.key}"
|
||||
self._attr_device_info = DeviceInfo(
|
||||
connections=coordinator.device_entry.connections,
|
||||
|
|
|
@ -49,7 +49,7 @@ class UpnpSensorEntityDescription(UpnpEntityDescription, SensorEntityDescription
|
|||
SENSOR_DESCRIPTIONS: tuple[UpnpSensorEntityDescription, ...] = (
|
||||
UpnpSensorEntityDescription(
|
||||
key=BYTES_RECEIVED,
|
||||
name=f"{UnitOfInformation.BYTES} received",
|
||||
translation_key="data_received",
|
||||
icon="mdi:server-network",
|
||||
device_class=SensorDeviceClass.DATA_SIZE,
|
||||
native_unit_of_measurement=UnitOfInformation.BYTES,
|
||||
|
@ -59,7 +59,7 @@ SENSOR_DESCRIPTIONS: tuple[UpnpSensorEntityDescription, ...] = (
|
|||
),
|
||||
UpnpSensorEntityDescription(
|
||||
key=BYTES_SENT,
|
||||
name=f"{UnitOfInformation.BYTES} sent",
|
||||
translation_key="data_sent",
|
||||
icon="mdi:server-network",
|
||||
device_class=SensorDeviceClass.DATA_SIZE,
|
||||
native_unit_of_measurement=UnitOfInformation.BYTES,
|
||||
|
@ -69,7 +69,7 @@ SENSOR_DESCRIPTIONS: tuple[UpnpSensorEntityDescription, ...] = (
|
|||
),
|
||||
UpnpSensorEntityDescription(
|
||||
key=PACKETS_RECEIVED,
|
||||
name=f"{DATA_PACKETS} received",
|
||||
translation_key="packets_received",
|
||||
icon="mdi:server-network",
|
||||
native_unit_of_measurement=DATA_PACKETS,
|
||||
entity_registry_enabled_default=False,
|
||||
|
@ -78,7 +78,7 @@ SENSOR_DESCRIPTIONS: tuple[UpnpSensorEntityDescription, ...] = (
|
|||
),
|
||||
UpnpSensorEntityDescription(
|
||||
key=PACKETS_SENT,
|
||||
name=f"{DATA_PACKETS} sent",
|
||||
translation_key="packets_sent",
|
||||
icon="mdi:server-network",
|
||||
native_unit_of_measurement=DATA_PACKETS,
|
||||
entity_registry_enabled_default=False,
|
||||
|
@ -87,13 +87,13 @@ SENSOR_DESCRIPTIONS: tuple[UpnpSensorEntityDescription, ...] = (
|
|||
),
|
||||
UpnpSensorEntityDescription(
|
||||
key=ROUTER_IP,
|
||||
name="External IP",
|
||||
translation_key="external_ip",
|
||||
icon="mdi:server-network",
|
||||
entity_category=EntityCategory.DIAGNOSTIC,
|
||||
),
|
||||
UpnpSensorEntityDescription(
|
||||
key=ROUTER_UPTIME,
|
||||
name="Uptime",
|
||||
translation_key="uptime",
|
||||
icon="mdi:server-network",
|
||||
native_unit_of_measurement=UnitOfTime.SECONDS,
|
||||
entity_registry_enabled_default=False,
|
||||
|
@ -102,16 +102,16 @@ SENSOR_DESCRIPTIONS: tuple[UpnpSensorEntityDescription, ...] = (
|
|||
),
|
||||
UpnpSensorEntityDescription(
|
||||
key=WAN_STATUS,
|
||||
name="wan status",
|
||||
translation_key="wan_status",
|
||||
icon="mdi:server-network",
|
||||
entity_category=EntityCategory.DIAGNOSTIC,
|
||||
entity_registry_enabled_default=False,
|
||||
),
|
||||
UpnpSensorEntityDescription(
|
||||
key=BYTES_RECEIVED,
|
||||
translation_key="download_speed",
|
||||
value_key=KIBIBYTES_PER_SEC_RECEIVED,
|
||||
unique_id="KiB/sec_received",
|
||||
name=f"{UnitOfDataRate.KIBIBYTES_PER_SECOND} received",
|
||||
icon="mdi:server-network",
|
||||
device_class=SensorDeviceClass.DATA_RATE,
|
||||
native_unit_of_measurement=UnitOfDataRate.KIBIBYTES_PER_SECOND,
|
||||
|
@ -120,9 +120,9 @@ SENSOR_DESCRIPTIONS: tuple[UpnpSensorEntityDescription, ...] = (
|
|||
),
|
||||
UpnpSensorEntityDescription(
|
||||
key=BYTES_SENT,
|
||||
translation_key="upload_speed",
|
||||
value_key=KIBIBYTES_PER_SEC_SENT,
|
||||
unique_id="KiB/sec_sent",
|
||||
name=f"{UnitOfDataRate.KIBIBYTES_PER_SECOND} sent",
|
||||
icon="mdi:server-network",
|
||||
device_class=SensorDeviceClass.DATA_RATE,
|
||||
native_unit_of_measurement=UnitOfDataRate.KIBIBYTES_PER_SECOND,
|
||||
|
@ -131,9 +131,9 @@ SENSOR_DESCRIPTIONS: tuple[UpnpSensorEntityDescription, ...] = (
|
|||
),
|
||||
UpnpSensorEntityDescription(
|
||||
key=PACKETS_RECEIVED,
|
||||
translation_key="packet_download_speed",
|
||||
value_key=PACKETS_PER_SEC_RECEIVED,
|
||||
unique_id="packets/sec_received",
|
||||
name=f"{DATA_RATE_PACKETS_PER_SECOND} received",
|
||||
icon="mdi:server-network",
|
||||
native_unit_of_measurement=DATA_RATE_PACKETS_PER_SECOND,
|
||||
entity_registry_enabled_default=False,
|
||||
|
@ -142,9 +142,9 @@ SENSOR_DESCRIPTIONS: tuple[UpnpSensorEntityDescription, ...] = (
|
|||
),
|
||||
UpnpSensorEntityDescription(
|
||||
key=PACKETS_SENT,
|
||||
translation_key="packet_upload_speed",
|
||||
value_key=PACKETS_PER_SEC_SENT,
|
||||
unique_id="packets/sec_sent",
|
||||
name=f"{DATA_RATE_PACKETS_PER_SECOND} sent",
|
||||
icon="mdi:server-network",
|
||||
native_unit_of_measurement=DATA_RATE_PACKETS_PER_SECOND,
|
||||
entity_registry_enabled_default=False,
|
||||
|
|
|
@ -25,5 +25,47 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
"binary_sensor": {
|
||||
"wan_status": {
|
||||
"name": "[%key:component::upnp::entity::sensor::wan_status::name%]"
|
||||
}
|
||||
},
|
||||
"sensor": {
|
||||
"data_received": {
|
||||
"name": "Data received"
|
||||
},
|
||||
"data_sent": {
|
||||
"name": "Data sent"
|
||||
},
|
||||
"packets_received": {
|
||||
"name": "Packets received"
|
||||
},
|
||||
"packets_sent": {
|
||||
"name": "Packets sent"
|
||||
},
|
||||
"external_ip": {
|
||||
"name": "External IP"
|
||||
},
|
||||
"uptime": {
|
||||
"name": "Uptime"
|
||||
},
|
||||
"packet_download_speed": {
|
||||
"name": "Packet download speed"
|
||||
},
|
||||
"packet_upload_speed": {
|
||||
"name": "Packet upload speed"
|
||||
},
|
||||
"download_speed": {
|
||||
"name": "Download speed"
|
||||
},
|
||||
"upload_speed": {
|
||||
"name": "Upload speed"
|
||||
},
|
||||
"wan_status": {
|
||||
"name": "WAN status"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,16 +16,16 @@ async def test_upnp_sensors(
|
|||
) -> None:
|
||||
"""Test sensors."""
|
||||
# First poll.
|
||||
assert hass.states.get("sensor.mock_name_b_received").state == "0"
|
||||
assert hass.states.get("sensor.mock_name_b_sent").state == "0"
|
||||
assert hass.states.get("sensor.mock_name_data_received").state == "0"
|
||||
assert hass.states.get("sensor.mock_name_data_sent").state == "0"
|
||||
assert hass.states.get("sensor.mock_name_packets_received").state == "0"
|
||||
assert hass.states.get("sensor.mock_name_packets_sent").state == "0"
|
||||
assert hass.states.get("sensor.mock_name_external_ip").state == "8.9.10.11"
|
||||
assert hass.states.get("sensor.mock_name_wan_status").state == "Connected"
|
||||
assert hass.states.get("sensor.mock_name_kib_s_received").state == "unknown"
|
||||
assert hass.states.get("sensor.mock_name_kib_s_sent").state == "unknown"
|
||||
assert hass.states.get("sensor.mock_name_packets_s_received").state == "unknown"
|
||||
assert hass.states.get("sensor.mock_name_packets_s_sent").state == "unknown"
|
||||
assert hass.states.get("sensor.mock_name_download_speed").state == "unknown"
|
||||
assert hass.states.get("sensor.mock_name_upload_speed").state == "unknown"
|
||||
assert hass.states.get("sensor.mock_name_packet_download_speed").state == "unknown"
|
||||
assert hass.states.get("sensor.mock_name_packet_upload_speed").state == "unknown"
|
||||
|
||||
# Second poll.
|
||||
mock_igd_device: IgdDevice = mock_config_entry.igd_device
|
||||
|
@ -51,13 +51,13 @@ async def test_upnp_sensors(
|
|||
async_fire_time_changed(hass, now + timedelta(seconds=DEFAULT_SCAN_INTERVAL))
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert hass.states.get("sensor.mock_name_b_received").state == "10240"
|
||||
assert hass.states.get("sensor.mock_name_b_sent").state == "20480"
|
||||
assert hass.states.get("sensor.mock_name_data_received").state == "10240"
|
||||
assert hass.states.get("sensor.mock_name_data_sent").state == "20480"
|
||||
assert hass.states.get("sensor.mock_name_packets_received").state == "30"
|
||||
assert hass.states.get("sensor.mock_name_packets_sent").state == "40"
|
||||
assert hass.states.get("sensor.mock_name_external_ip").state == ""
|
||||
assert hass.states.get("sensor.mock_name_wan_status").state == "Disconnected"
|
||||
assert hass.states.get("sensor.mock_name_kib_s_received").state == "10.0"
|
||||
assert hass.states.get("sensor.mock_name_kib_s_sent").state == "20.0"
|
||||
assert hass.states.get("sensor.mock_name_packets_s_received").state == "30.0"
|
||||
assert hass.states.get("sensor.mock_name_packets_s_sent").state == "40.0"
|
||||
assert hass.states.get("sensor.mock_name_download_speed").state == "10.0"
|
||||
assert hass.states.get("sensor.mock_name_upload_speed").state == "20.0"
|
||||
assert hass.states.get("sensor.mock_name_packet_download_speed").state == "30.0"
|
||||
assert hass.states.get("sensor.mock_name_packet_upload_speed").state == "40.0"
|
||||
|
|
Loading…
Add table
Reference in a new issue