From bfbdebd0f75507b44847dfeb5b05b33c720d6bf8 Mon Sep 17 00:00:00 2001 From: Joost Lekkerkerker Date: Sun, 23 Jul 2023 20:21:57 +0200 Subject: [PATCH] Add entity translations to uPnP (#96763) --- .../components/upnp/binary_sensor.py | 2 +- homeassistant/components/upnp/entity.py | 2 +- homeassistant/components/upnp/sensor.py | 22 +++++----- homeassistant/components/upnp/strings.json | 42 +++++++++++++++++++ tests/components/upnp/test_sensor.py | 24 +++++------ 5 files changed, 67 insertions(+), 25 deletions(-) diff --git a/homeassistant/components/upnp/binary_sensor.py b/homeassistant/components/upnp/binary_sensor.py index 030b0aa322e..0ab8962077b 100644 --- a/homeassistant/components/upnp/binary_sensor.py +++ b/homeassistant/components/upnp/binary_sensor.py @@ -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, ), diff --git a/homeassistant/components/upnp/entity.py b/homeassistant/components/upnp/entity.py index cd39609d9d5..a3d7709a5d5 100644 --- a/homeassistant/components/upnp/entity.py +++ b/homeassistant/components/upnp/entity.py @@ -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, diff --git a/homeassistant/components/upnp/sensor.py b/homeassistant/components/upnp/sensor.py index 6f0fe340f30..46d748f6939 100644 --- a/homeassistant/components/upnp/sensor.py +++ b/homeassistant/components/upnp/sensor.py @@ -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, diff --git a/homeassistant/components/upnp/strings.json b/homeassistant/components/upnp/strings.json index ea052f0b45a..7ce1798c351 100644 --- a/homeassistant/components/upnp/strings.json +++ b/homeassistant/components/upnp/strings.json @@ -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" + } + } } } diff --git a/tests/components/upnp/test_sensor.py b/tests/components/upnp/test_sensor.py index f29d7ac9276..7dfbb144b01 100644 --- a/tests/components/upnp/test_sensor.py +++ b/tests/components/upnp/test_sensor.py @@ -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"