Add sensor uom suggestions to airOS (#150303)

This commit is contained in:
Tom
2025-08-09 07:43:51 +02:00
committed by GitHub
parent 775701133d
commit 73be4625ae
2 changed files with 36 additions and 12 deletions

View File

@@ -46,6 +46,7 @@ SENSORS: tuple[AirOSSensorEntityDescription, ...] = (
translation_key="host_cpuload", translation_key="host_cpuload",
native_unit_of_measurement=PERCENTAGE, native_unit_of_measurement=PERCENTAGE,
state_class=SensorStateClass.MEASUREMENT, state_class=SensorStateClass.MEASUREMENT,
suggested_display_precision=1,
value_fn=lambda data: data.host.cpuload, value_fn=lambda data: data.host.cpuload,
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
), ),
@@ -83,6 +84,8 @@ SENSORS: tuple[AirOSSensorEntityDescription, ...] = (
native_unit_of_measurement=UnitOfDataRate.KILOBITS_PER_SECOND, native_unit_of_measurement=UnitOfDataRate.KILOBITS_PER_SECOND,
device_class=SensorDeviceClass.DATA_RATE, device_class=SensorDeviceClass.DATA_RATE,
state_class=SensorStateClass.MEASUREMENT, state_class=SensorStateClass.MEASUREMENT,
suggested_display_precision=0,
suggested_unit_of_measurement=UnitOfDataRate.MEGABITS_PER_SECOND,
value_fn=lambda data: data.wireless.throughput.tx, value_fn=lambda data: data.wireless.throughput.tx,
), ),
AirOSSensorEntityDescription( AirOSSensorEntityDescription(
@@ -91,6 +94,8 @@ SENSORS: tuple[AirOSSensorEntityDescription, ...] = (
native_unit_of_measurement=UnitOfDataRate.KILOBITS_PER_SECOND, native_unit_of_measurement=UnitOfDataRate.KILOBITS_PER_SECOND,
device_class=SensorDeviceClass.DATA_RATE, device_class=SensorDeviceClass.DATA_RATE,
state_class=SensorStateClass.MEASUREMENT, state_class=SensorStateClass.MEASUREMENT,
suggested_display_precision=0,
suggested_unit_of_measurement=UnitOfDataRate.MEGABITS_PER_SECOND,
value_fn=lambda data: data.wireless.throughput.rx, value_fn=lambda data: data.wireless.throughput.rx,
), ),
AirOSSensorEntityDescription( AirOSSensorEntityDescription(
@@ -99,6 +104,8 @@ SENSORS: tuple[AirOSSensorEntityDescription, ...] = (
native_unit_of_measurement=UnitOfDataRate.KILOBITS_PER_SECOND, native_unit_of_measurement=UnitOfDataRate.KILOBITS_PER_SECOND,
device_class=SensorDeviceClass.DATA_RATE, device_class=SensorDeviceClass.DATA_RATE,
state_class=SensorStateClass.MEASUREMENT, 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, value_fn=lambda data: data.wireless.polling.dl_capacity,
), ),
AirOSSensorEntityDescription( AirOSSensorEntityDescription(
@@ -107,6 +114,8 @@ SENSORS: tuple[AirOSSensorEntityDescription, ...] = (
native_unit_of_measurement=UnitOfDataRate.KILOBITS_PER_SECOND, native_unit_of_measurement=UnitOfDataRate.KILOBITS_PER_SECOND,
device_class=SensorDeviceClass.DATA_RATE, device_class=SensorDeviceClass.DATA_RATE,
state_class=SensorStateClass.MEASUREMENT, 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, value_fn=lambda data: data.wireless.polling.ul_capacity,
), ),
) )

View File

@@ -76,6 +76,9 @@
}), }),
'name': None, 'name': None,
'options': dict({ 'options': dict({
'sensor': dict({
'suggested_display_precision': 1,
}),
}), }),
'original_device_class': None, 'original_device_class': None,
'original_icon': None, 'original_icon': None,
@@ -131,6 +134,9 @@
'sensor': dict({ 'sensor': dict({
'suggested_display_precision': 0, 'suggested_display_precision': 0,
}), }),
'sensor.private': dict({
'suggested_unit_of_measurement': <UnitOfDataRate.MEGABITS_PER_SECOND: 'Mbit/s'>,
}),
}), }),
'original_device_class': <SensorDeviceClass.DATA_RATE: 'data_rate'>, 'original_device_class': <SensorDeviceClass.DATA_RATE: 'data_rate'>,
'original_icon': None, 'original_icon': None,
@@ -141,7 +147,7 @@
'supported_features': 0, 'supported_features': 0,
'translation_key': 'wireless_polling_dl_capacity', 'translation_key': 'wireless_polling_dl_capacity',
'unique_id': '01:23:45:67:89:AB_wireless_polling_dl_capacity', 'unique_id': '01:23:45:67:89:AB_wireless_polling_dl_capacity',
'unit_of_measurement': <UnitOfDataRate.KILOBITS_PER_SECOND: 'kbit/s'>, 'unit_of_measurement': <UnitOfDataRate.MEGABITS_PER_SECOND: 'Mbit/s'>,
}) })
# --- # ---
# name: test_all_entities[sensor.nanostation_5ac_ap_name_download_capacity-state] # name: test_all_entities[sensor.nanostation_5ac_ap_name_download_capacity-state]
@@ -150,14 +156,14 @@
'device_class': 'data_rate', 'device_class': 'data_rate',
'friendly_name': 'NanoStation 5AC ap name Download capacity', 'friendly_name': 'NanoStation 5AC ap name Download capacity',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>, 'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfDataRate.KILOBITS_PER_SECOND: 'kbit/s'>, 'unit_of_measurement': <UnitOfDataRate.MEGABITS_PER_SECOND: 'Mbit/s'>,
}), }),
'context': <ANY>, 'context': <ANY>,
'entity_id': 'sensor.nanostation_5ac_ap_name_download_capacity', 'entity_id': 'sensor.nanostation_5ac_ap_name_download_capacity',
'last_changed': <ANY>, 'last_changed': <ANY>,
'last_reported': <ANY>, 'last_reported': <ANY>,
'last_updated': <ANY>, 'last_updated': <ANY>,
'state': '647400', 'state': '647.4',
}) })
# --- # ---
# name: test_all_entities[sensor.nanostation_5ac_ap_name_network_role-entry] # name: test_all_entities[sensor.nanostation_5ac_ap_name_network_role-entry]
@@ -245,6 +251,9 @@
'sensor': dict({ 'sensor': dict({
'suggested_display_precision': 0, 'suggested_display_precision': 0,
}), }),
'sensor.private': dict({
'suggested_unit_of_measurement': <UnitOfDataRate.MEGABITS_PER_SECOND: 'Mbit/s'>,
}),
}), }),
'original_device_class': <SensorDeviceClass.DATA_RATE: 'data_rate'>, 'original_device_class': <SensorDeviceClass.DATA_RATE: 'data_rate'>,
'original_icon': None, 'original_icon': None,
@@ -255,7 +264,7 @@
'supported_features': 0, 'supported_features': 0,
'translation_key': 'wireless_throughput_rx', 'translation_key': 'wireless_throughput_rx',
'unique_id': '01:23:45:67:89:AB_wireless_throughput_rx', 'unique_id': '01:23:45:67:89:AB_wireless_throughput_rx',
'unit_of_measurement': <UnitOfDataRate.KILOBITS_PER_SECOND: 'kbit/s'>, 'unit_of_measurement': <UnitOfDataRate.MEGABITS_PER_SECOND: 'Mbit/s'>,
}) })
# --- # ---
# name: test_all_entities[sensor.nanostation_5ac_ap_name_throughput_receive_actual-state] # name: test_all_entities[sensor.nanostation_5ac_ap_name_throughput_receive_actual-state]
@@ -264,14 +273,14 @@
'device_class': 'data_rate', 'device_class': 'data_rate',
'friendly_name': 'NanoStation 5AC ap name Throughput receive (actual)', 'friendly_name': 'NanoStation 5AC ap name Throughput receive (actual)',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>, 'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfDataRate.KILOBITS_PER_SECOND: 'kbit/s'>, 'unit_of_measurement': <UnitOfDataRate.MEGABITS_PER_SECOND: 'Mbit/s'>,
}), }),
'context': <ANY>, 'context': <ANY>,
'entity_id': 'sensor.nanostation_5ac_ap_name_throughput_receive_actual', 'entity_id': 'sensor.nanostation_5ac_ap_name_throughput_receive_actual',
'last_changed': <ANY>, 'last_changed': <ANY>,
'last_reported': <ANY>, 'last_reported': <ANY>,
'last_updated': <ANY>, 'last_updated': <ANY>,
'state': '9907', 'state': '9.907',
}) })
# --- # ---
# name: test_all_entities[sensor.nanostation_5ac_ap_name_throughput_transmit_actual-entry] # name: test_all_entities[sensor.nanostation_5ac_ap_name_throughput_transmit_actual-entry]
@@ -301,6 +310,9 @@
'sensor': dict({ 'sensor': dict({
'suggested_display_precision': 0, 'suggested_display_precision': 0,
}), }),
'sensor.private': dict({
'suggested_unit_of_measurement': <UnitOfDataRate.MEGABITS_PER_SECOND: 'Mbit/s'>,
}),
}), }),
'original_device_class': <SensorDeviceClass.DATA_RATE: 'data_rate'>, 'original_device_class': <SensorDeviceClass.DATA_RATE: 'data_rate'>,
'original_icon': None, 'original_icon': None,
@@ -311,7 +323,7 @@
'supported_features': 0, 'supported_features': 0,
'translation_key': 'wireless_throughput_tx', 'translation_key': 'wireless_throughput_tx',
'unique_id': '01:23:45:67:89:AB_wireless_throughput_tx', 'unique_id': '01:23:45:67:89:AB_wireless_throughput_tx',
'unit_of_measurement': <UnitOfDataRate.KILOBITS_PER_SECOND: 'kbit/s'>, 'unit_of_measurement': <UnitOfDataRate.MEGABITS_PER_SECOND: 'Mbit/s'>,
}) })
# --- # ---
# name: test_all_entities[sensor.nanostation_5ac_ap_name_throughput_transmit_actual-state] # name: test_all_entities[sensor.nanostation_5ac_ap_name_throughput_transmit_actual-state]
@@ -320,14 +332,14 @@
'device_class': 'data_rate', 'device_class': 'data_rate',
'friendly_name': 'NanoStation 5AC ap name Throughput transmit (actual)', 'friendly_name': 'NanoStation 5AC ap name Throughput transmit (actual)',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>, 'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfDataRate.KILOBITS_PER_SECOND: 'kbit/s'>, 'unit_of_measurement': <UnitOfDataRate.MEGABITS_PER_SECOND: 'Mbit/s'>,
}), }),
'context': <ANY>, 'context': <ANY>,
'entity_id': 'sensor.nanostation_5ac_ap_name_throughput_transmit_actual', 'entity_id': 'sensor.nanostation_5ac_ap_name_throughput_transmit_actual',
'last_changed': <ANY>, 'last_changed': <ANY>,
'last_reported': <ANY>, 'last_reported': <ANY>,
'last_updated': <ANY>, 'last_updated': <ANY>,
'state': '222', 'state': '0.222',
}) })
# --- # ---
# name: test_all_entities[sensor.nanostation_5ac_ap_name_upload_capacity-entry] # name: test_all_entities[sensor.nanostation_5ac_ap_name_upload_capacity-entry]
@@ -357,6 +369,9 @@
'sensor': dict({ 'sensor': dict({
'suggested_display_precision': 0, 'suggested_display_precision': 0,
}), }),
'sensor.private': dict({
'suggested_unit_of_measurement': <UnitOfDataRate.MEGABITS_PER_SECOND: 'Mbit/s'>,
}),
}), }),
'original_device_class': <SensorDeviceClass.DATA_RATE: 'data_rate'>, 'original_device_class': <SensorDeviceClass.DATA_RATE: 'data_rate'>,
'original_icon': None, 'original_icon': None,
@@ -367,7 +382,7 @@
'supported_features': 0, 'supported_features': 0,
'translation_key': 'wireless_polling_ul_capacity', 'translation_key': 'wireless_polling_ul_capacity',
'unique_id': '01:23:45:67:89:AB_wireless_polling_ul_capacity', 'unique_id': '01:23:45:67:89:AB_wireless_polling_ul_capacity',
'unit_of_measurement': <UnitOfDataRate.KILOBITS_PER_SECOND: 'kbit/s'>, 'unit_of_measurement': <UnitOfDataRate.MEGABITS_PER_SECOND: 'Mbit/s'>,
}) })
# --- # ---
# name: test_all_entities[sensor.nanostation_5ac_ap_name_upload_capacity-state] # name: test_all_entities[sensor.nanostation_5ac_ap_name_upload_capacity-state]
@@ -376,14 +391,14 @@
'device_class': 'data_rate', 'device_class': 'data_rate',
'friendly_name': 'NanoStation 5AC ap name Upload capacity', 'friendly_name': 'NanoStation 5AC ap name Upload capacity',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>, 'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfDataRate.KILOBITS_PER_SECOND: 'kbit/s'>, 'unit_of_measurement': <UnitOfDataRate.MEGABITS_PER_SECOND: 'Mbit/s'>,
}), }),
'context': <ANY>, 'context': <ANY>,
'entity_id': 'sensor.nanostation_5ac_ap_name_upload_capacity', 'entity_id': 'sensor.nanostation_5ac_ap_name_upload_capacity',
'last_changed': <ANY>, 'last_changed': <ANY>,
'last_reported': <ANY>, 'last_reported': <ANY>,
'last_updated': <ANY>, 'last_updated': <ANY>,
'state': '540540', 'state': '540.54',
}) })
# --- # ---
# name: test_all_entities[sensor.nanostation_5ac_ap_name_wireless_frequency-entry] # name: test_all_entities[sensor.nanostation_5ac_ap_name_wireless_frequency-entry]