From 73be4625aecde017bb8c235efb522e7249fc6240 Mon Sep 17 00:00:00 2001 From: Tom Date: Sat, 9 Aug 2025 07:43:51 +0200 Subject: [PATCH] Add sensor uom suggestions to airOS (#150303) --- homeassistant/components/airos/sensor.py | 9 +++++ .../airos/snapshots/test_sensor.ambr | 39 +++++++++++++------ 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/homeassistant/components/airos/sensor.py b/homeassistant/components/airos/sensor.py index 4567261ba4d..7b834b9c8a7 100644 --- a/homeassistant/components/airos/sensor.py +++ b/homeassistant/components/airos/sensor.py @@ -46,6 +46,7 @@ SENSORS: tuple[AirOSSensorEntityDescription, ...] = ( translation_key="host_cpuload", native_unit_of_measurement=PERCENTAGE, state_class=SensorStateClass.MEASUREMENT, + suggested_display_precision=1, value_fn=lambda data: data.host.cpuload, entity_registry_enabled_default=False, ), @@ -83,6 +84,8 @@ SENSORS: tuple[AirOSSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfDataRate.KILOBITS_PER_SECOND, device_class=SensorDeviceClass.DATA_RATE, state_class=SensorStateClass.MEASUREMENT, + suggested_display_precision=0, + suggested_unit_of_measurement=UnitOfDataRate.MEGABITS_PER_SECOND, value_fn=lambda data: data.wireless.throughput.tx, ), AirOSSensorEntityDescription( @@ -91,6 +94,8 @@ SENSORS: tuple[AirOSSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfDataRate.KILOBITS_PER_SECOND, device_class=SensorDeviceClass.DATA_RATE, state_class=SensorStateClass.MEASUREMENT, + suggested_display_precision=0, + suggested_unit_of_measurement=UnitOfDataRate.MEGABITS_PER_SECOND, value_fn=lambda data: data.wireless.throughput.rx, ), AirOSSensorEntityDescription( @@ -99,6 +104,8 @@ SENSORS: tuple[AirOSSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfDataRate.KILOBITS_PER_SECOND, device_class=SensorDeviceClass.DATA_RATE, state_class=SensorStateClass.MEASUREMENT, + suggested_display_precision=0, + suggested_unit_of_measurement=UnitOfDataRate.MEGABITS_PER_SECOND, value_fn=lambda data: data.wireless.polling.dl_capacity, ), AirOSSensorEntityDescription( @@ -107,6 +114,8 @@ SENSORS: tuple[AirOSSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfDataRate.KILOBITS_PER_SECOND, device_class=SensorDeviceClass.DATA_RATE, state_class=SensorStateClass.MEASUREMENT, + suggested_display_precision=0, + suggested_unit_of_measurement=UnitOfDataRate.MEGABITS_PER_SECOND, value_fn=lambda data: data.wireless.polling.ul_capacity, ), ) diff --git a/tests/components/airos/snapshots/test_sensor.ambr b/tests/components/airos/snapshots/test_sensor.ambr index e414d35beb2..133b0f7f6e6 100644 --- a/tests/components/airos/snapshots/test_sensor.ambr +++ b/tests/components/airos/snapshots/test_sensor.ambr @@ -76,6 +76,9 @@ }), 'name': None, 'options': dict({ + 'sensor': dict({ + 'suggested_display_precision': 1, + }), }), 'original_device_class': None, 'original_icon': None, @@ -131,6 +134,9 @@ 'sensor': dict({ 'suggested_display_precision': 0, }), + 'sensor.private': dict({ + 'suggested_unit_of_measurement': , + }), }), 'original_device_class': , 'original_icon': None, @@ -141,7 +147,7 @@ 'supported_features': 0, 'translation_key': 'wireless_polling_dl_capacity', 'unique_id': '01:23:45:67:89:AB_wireless_polling_dl_capacity', - 'unit_of_measurement': , + 'unit_of_measurement': , }) # --- # name: test_all_entities[sensor.nanostation_5ac_ap_name_download_capacity-state] @@ -150,14 +156,14 @@ 'device_class': 'data_rate', 'friendly_name': 'NanoStation 5AC ap name Download capacity', 'state_class': , - 'unit_of_measurement': , + 'unit_of_measurement': , }), 'context': , 'entity_id': 'sensor.nanostation_5ac_ap_name_download_capacity', 'last_changed': , 'last_reported': , 'last_updated': , - 'state': '647400', + 'state': '647.4', }) # --- # name: test_all_entities[sensor.nanostation_5ac_ap_name_network_role-entry] @@ -245,6 +251,9 @@ 'sensor': dict({ 'suggested_display_precision': 0, }), + 'sensor.private': dict({ + 'suggested_unit_of_measurement': , + }), }), 'original_device_class': , 'original_icon': None, @@ -255,7 +264,7 @@ 'supported_features': 0, 'translation_key': 'wireless_throughput_rx', 'unique_id': '01:23:45:67:89:AB_wireless_throughput_rx', - 'unit_of_measurement': , + 'unit_of_measurement': , }) # --- # name: test_all_entities[sensor.nanostation_5ac_ap_name_throughput_receive_actual-state] @@ -264,14 +273,14 @@ 'device_class': 'data_rate', 'friendly_name': 'NanoStation 5AC ap name Throughput receive (actual)', 'state_class': , - 'unit_of_measurement': , + 'unit_of_measurement': , }), 'context': , 'entity_id': 'sensor.nanostation_5ac_ap_name_throughput_receive_actual', 'last_changed': , 'last_reported': , 'last_updated': , - 'state': '9907', + 'state': '9.907', }) # --- # name: test_all_entities[sensor.nanostation_5ac_ap_name_throughput_transmit_actual-entry] @@ -301,6 +310,9 @@ 'sensor': dict({ 'suggested_display_precision': 0, }), + 'sensor.private': dict({ + 'suggested_unit_of_measurement': , + }), }), 'original_device_class': , 'original_icon': None, @@ -311,7 +323,7 @@ 'supported_features': 0, 'translation_key': 'wireless_throughput_tx', 'unique_id': '01:23:45:67:89:AB_wireless_throughput_tx', - 'unit_of_measurement': , + 'unit_of_measurement': , }) # --- # name: test_all_entities[sensor.nanostation_5ac_ap_name_throughput_transmit_actual-state] @@ -320,14 +332,14 @@ 'device_class': 'data_rate', 'friendly_name': 'NanoStation 5AC ap name Throughput transmit (actual)', 'state_class': , - 'unit_of_measurement': , + 'unit_of_measurement': , }), 'context': , 'entity_id': 'sensor.nanostation_5ac_ap_name_throughput_transmit_actual', 'last_changed': , 'last_reported': , 'last_updated': , - 'state': '222', + 'state': '0.222', }) # --- # name: test_all_entities[sensor.nanostation_5ac_ap_name_upload_capacity-entry] @@ -357,6 +369,9 @@ 'sensor': dict({ 'suggested_display_precision': 0, }), + 'sensor.private': dict({ + 'suggested_unit_of_measurement': , + }), }), 'original_device_class': , 'original_icon': None, @@ -367,7 +382,7 @@ 'supported_features': 0, 'translation_key': 'wireless_polling_ul_capacity', 'unique_id': '01:23:45:67:89:AB_wireless_polling_ul_capacity', - 'unit_of_measurement': , + 'unit_of_measurement': , }) # --- # name: test_all_entities[sensor.nanostation_5ac_ap_name_upload_capacity-state] @@ -376,14 +391,14 @@ 'device_class': 'data_rate', 'friendly_name': 'NanoStation 5AC ap name Upload capacity', 'state_class': , - 'unit_of_measurement': , + 'unit_of_measurement': , }), 'context': , 'entity_id': 'sensor.nanostation_5ac_ap_name_upload_capacity', 'last_changed': , 'last_reported': , 'last_updated': , - 'state': '540540', + 'state': '540.54', }) # --- # name: test_all_entities[sensor.nanostation_5ac_ap_name_wireless_frequency-entry]