From 85235ea5f6176ab0600483897786c1b57120b512 Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Tue, 13 Dec 2022 14:14:42 +0100 Subject: [PATCH] Use FREQUENCY device class in integrations (#83916) * Use FREQUENCY device class in integrations * Adjust tesla * Undo goodwe * Adjust cpuspeed tests --- homeassistant/components/cpuspeed/sensor.py | 7 ++++--- .../growatt_server/sensor_types/inverter.py | 5 +++-- .../growatt_server/sensor_types/storage.py | 8 +++++--- .../growatt_server/sensor_types/tlx.py | 5 +++-- homeassistant/components/homematic/sensor.py | 5 +++-- homeassistant/components/iotawatt/sensor.py | 5 +++-- homeassistant/components/system_bridge/sensor.py | 16 +++++++++------- .../components/tesla_wall_connector/sensor.py | 5 +++-- tests/components/cpuspeed/test_sensor.py | 3 ++- 9 files changed, 35 insertions(+), 24 deletions(-) diff --git a/homeassistant/components/cpuspeed/sensor.py b/homeassistant/components/cpuspeed/sensor.py index 6b64b8709a3..c71de53ebbe 100644 --- a/homeassistant/components/cpuspeed/sensor.py +++ b/homeassistant/components/cpuspeed/sensor.py @@ -3,9 +3,9 @@ from __future__ import annotations from cpuinfo import cpuinfo -from homeassistant.components.sensor import SensorEntity +from homeassistant.components.sensor import SensorDeviceClass, SensorEntity from homeassistant.config_entries import ConfigEntry -from homeassistant.const import FREQUENCY_GIGAHERTZ +from homeassistant.const import UnitOfFrequency from homeassistant.core import HomeAssistant from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.entity_platform import AddEntitiesCallback @@ -32,9 +32,10 @@ async def async_setup_entry( class CPUSpeedSensor(SensorEntity): """Representation of a CPU sensor.""" + _attr_device_class = SensorDeviceClass.FREQUENCY _attr_icon = "mdi:pulse" _attr_has_entity_name = True - _attr_native_unit_of_measurement = FREQUENCY_GIGAHERTZ + _attr_native_unit_of_measurement = UnitOfFrequency.GIGAHERTZ def __init__(self, entry: ConfigEntry) -> None: """Initialize the CPU sensor.""" diff --git a/homeassistant/components/growatt_server/sensor_types/inverter.py b/homeassistant/components/growatt_server/sensor_types/inverter.py index 4ca97e78557..f996fde017d 100644 --- a/homeassistant/components/growatt_server/sensor_types/inverter.py +++ b/homeassistant/components/growatt_server/sensor_types/inverter.py @@ -5,9 +5,9 @@ from homeassistant.components.sensor import SensorDeviceClass, SensorStateClass from homeassistant.const import ( ELECTRIC_POTENTIAL_VOLT, ENERGY_KILO_WATT_HOUR, - FREQUENCY_HERTZ, TEMP_CELSIUS, UnitOfElectricCurrent, + UnitOfFrequency, UnitOfPower, ) @@ -131,7 +131,8 @@ INVERTER_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( key="inverter_frequency", name="AC frequency", api_key="fac", - native_unit_of_measurement=FREQUENCY_HERTZ, + native_unit_of_measurement=UnitOfFrequency.HERTZ, + device_class=SensorDeviceClass.FREQUENCY, precision=1, ), GrowattSensorEntityDescription( diff --git a/homeassistant/components/growatt_server/sensor_types/storage.py b/homeassistant/components/growatt_server/sensor_types/storage.py index 990e7388d91..59e61982d76 100644 --- a/homeassistant/components/growatt_server/sensor_types/storage.py +++ b/homeassistant/components/growatt_server/sensor_types/storage.py @@ -5,9 +5,9 @@ from homeassistant.components.sensor import SensorDeviceClass, SensorStateClass from homeassistant.const import ( ELECTRIC_POTENTIAL_VOLT, ENERGY_KILO_WATT_HOUR, - FREQUENCY_HERTZ, PERCENTAGE, UnitOfElectricCurrent, + UnitOfFrequency, UnitOfPower, ) @@ -149,7 +149,8 @@ STORAGE_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( key="storage_ac_input_frequency_out", name="AC input frequency", api_key="freqOutPut", - native_unit_of_measurement=FREQUENCY_HERTZ, + native_unit_of_measurement=UnitOfFrequency.HERTZ, + device_class=SensorDeviceClass.FREQUENCY, precision=2, ), GrowattSensorEntityDescription( @@ -164,7 +165,8 @@ STORAGE_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( key="storage_ac_output_frequency", name="Ac output frequency", api_key="freqGrid", - native_unit_of_measurement=FREQUENCY_HERTZ, + native_unit_of_measurement=UnitOfFrequency.HERTZ, + device_class=SensorDeviceClass.FREQUENCY, precision=2, ), GrowattSensorEntityDescription( diff --git a/homeassistant/components/growatt_server/sensor_types/tlx.py b/homeassistant/components/growatt_server/sensor_types/tlx.py index e93447fdae2..e44f242b823 100644 --- a/homeassistant/components/growatt_server/sensor_types/tlx.py +++ b/homeassistant/components/growatt_server/sensor_types/tlx.py @@ -5,9 +5,9 @@ from homeassistant.components.sensor import SensorDeviceClass, SensorStateClass from homeassistant.const import ( ELECTRIC_POTENTIAL_VOLT, ENERGY_KILO_WATT_HOUR, - FREQUENCY_HERTZ, TEMP_CELSIUS, UnitOfElectricCurrent, + UnitOfFrequency, UnitOfPower, ) @@ -136,7 +136,8 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( key="tlx_frequency", name="AC frequency", api_key="fac", - native_unit_of_measurement=FREQUENCY_HERTZ, + native_unit_of_measurement=UnitOfFrequency.HERTZ, + device_class=SensorDeviceClass.FREQUENCY, precision=1, ), GrowattSensorEntityDescription( diff --git a/homeassistant/components/homematic/sensor.py b/homeassistant/components/homematic/sensor.py index be5722fc9a7..f005151b3e0 100644 --- a/homeassistant/components/homematic/sensor.py +++ b/homeassistant/components/homematic/sensor.py @@ -18,12 +18,12 @@ from homeassistant.const import ( ELECTRIC_POTENTIAL_VOLT, ENERGY_KILO_WATT_HOUR, ENERGY_WATT_HOUR, - FREQUENCY_HERTZ, LIGHT_LUX, PERCENTAGE, PRESSURE_HPA, TEMP_CELSIUS, UnitOfElectricCurrent, + UnitOfFrequency, UnitOfPower, UnitOfPrecipitationDepth, UnitOfSpeed, @@ -195,7 +195,8 @@ SENSOR_DESCRIPTIONS: dict[str, SensorEntityDescription] = { ), "FREQUENCY": SensorEntityDescription( key="FREQUENCY", - native_unit_of_measurement=FREQUENCY_HERTZ, + native_unit_of_measurement=UnitOfFrequency.HERTZ, + device_class=SensorDeviceClass.FREQUENCY, ), "VALUE": SensorEntityDescription( key="VALUE", diff --git a/homeassistant/components/iotawatt/sensor.py b/homeassistant/components/iotawatt/sensor.py index 2fe15359afa..592d93190cb 100644 --- a/homeassistant/components/iotawatt/sensor.py +++ b/homeassistant/components/iotawatt/sensor.py @@ -17,10 +17,10 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.const import ( ELECTRIC_POTENTIAL_VOLT, ENERGY_WATT_HOUR, - FREQUENCY_HERTZ, PERCENTAGE, UnitOfApparentPower, UnitOfElectricCurrent, + UnitOfFrequency, UnitOfPower, ) from homeassistant.core import HomeAssistant, callback @@ -60,8 +60,9 @@ ENTITY_DESCRIPTION_KEY_MAP: dict[str, IotaWattSensorEntityDescription] = { ), "Hz": IotaWattSensorEntityDescription( "Hz", - native_unit_of_measurement=FREQUENCY_HERTZ, + native_unit_of_measurement=UnitOfFrequency.HERTZ, state_class=SensorStateClass.MEASUREMENT, + device_class=SensorDeviceClass.FREQUENCY, icon="mdi:flash", entity_registry_enabled_default=False, ), diff --git a/homeassistant/components/system_bridge/sensor.py b/homeassistant/components/system_bridge/sensor.py index 1bb7a342734..87edd54ee72 100644 --- a/homeassistant/components/system_bridge/sensor.py +++ b/homeassistant/components/system_bridge/sensor.py @@ -16,12 +16,10 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.const import ( CONF_PORT, ELECTRIC_POTENTIAL_VOLT, - FREQUENCY_GIGAHERTZ, - FREQUENCY_HERTZ, - FREQUENCY_MEGAHERTZ, PERCENTAGE, REVOLUTIONS_PER_MINUTE, TEMP_CELSIUS, + UnitOfFrequency, UnitOfInformation, UnitOfPower, ) @@ -138,7 +136,8 @@ BASE_SENSOR_TYPES: tuple[SystemBridgeSensorEntityDescription, ...] = ( key="cpu_speed", name="CPU Speed", state_class=SensorStateClass.MEASUREMENT, - native_unit_of_measurement=FREQUENCY_GIGAHERTZ, + native_unit_of_measurement=UnitOfFrequency.GIGAHERTZ, + device_class=SensorDeviceClass.FREQUENCY, icon="mdi:speedometer", value=cpu_speed, ), @@ -347,7 +346,8 @@ async def async_setup_entry( key=f"display_{display['name']}_refresh_rate", name=f"Display {display['name']} Refresh Rate", state_class=SensorStateClass.MEASUREMENT, - native_unit_of_measurement=FREQUENCY_HERTZ, + native_unit_of_measurement=UnitOfFrequency.HERTZ, + device_class=SensorDeviceClass.FREQUENCY, icon="mdi:monitor", value=lambda data, k=display["key"]: getattr( data.display, f"{k}_refresh_rate" @@ -376,7 +376,8 @@ async def async_setup_entry( name=f"{gpu['name']} Clock Speed", entity_registry_enabled_default=False, state_class=SensorStateClass.MEASUREMENT, - native_unit_of_measurement=FREQUENCY_MEGAHERTZ, + native_unit_of_measurement=UnitOfFrequency.MEGAHERTZ, + device_class=SensorDeviceClass.FREQUENCY, icon="mdi:speedometer", value=lambda data, k=gpu["key"]: gpu_core_clock_speed(data, k), ), @@ -389,7 +390,8 @@ async def async_setup_entry( name=f"{gpu['name']} Memory Clock Speed", entity_registry_enabled_default=False, state_class=SensorStateClass.MEASUREMENT, - native_unit_of_measurement=FREQUENCY_MEGAHERTZ, + native_unit_of_measurement=UnitOfFrequency.MEGAHERTZ, + device_class=SensorDeviceClass.FREQUENCY, icon="mdi:speedometer", value=lambda data, k=gpu["key"]: gpu_memory_clock_speed(data, k), ), diff --git a/homeassistant/components/tesla_wall_connector/sensor.py b/homeassistant/components/tesla_wall_connector/sensor.py index a36ce979eee..8307ff11ae2 100644 --- a/homeassistant/components/tesla_wall_connector/sensor.py +++ b/homeassistant/components/tesla_wall_connector/sensor.py @@ -13,8 +13,8 @@ from homeassistant.const import ( ELECTRIC_CURRENT_AMPERE, ELECTRIC_POTENTIAL_VOLT, ENERGY_WATT_HOUR, - FREQUENCY_HERTZ, TEMP_CELSIUS, + UnitOfFrequency, ) from homeassistant.core import HomeAssistant from homeassistant.helpers.entity import EntityCategory @@ -66,8 +66,9 @@ WALL_CONNECTOR_SENSORS = [ WallConnectorSensorDescription( key="grid_hz", name=prefix_entity_name("Grid Frequency"), - native_unit_of_measurement=FREQUENCY_HERTZ, + native_unit_of_measurement=UnitOfFrequency.HERTZ, value_fn=lambda data: round(data[WALLCONNECTOR_DATA_VITALS].grid_hz, 3), + device_class=SensorDeviceClass.FREQUENCY, state_class=SensorStateClass.MEASUREMENT, entity_category=EntityCategory.DIAGNOSTIC, ), diff --git a/tests/components/cpuspeed/test_sensor.py b/tests/components/cpuspeed/test_sensor.py index 068d24b6f3c..625f80a6814 100644 --- a/tests/components/cpuspeed/test_sensor.py +++ b/tests/components/cpuspeed/test_sensor.py @@ -8,6 +8,7 @@ from homeassistant.components.homeassistant import ( DOMAIN as HOME_ASSISTANT_DOMAIN, SERVICE_UPDATE_ENTITY, ) +from homeassistant.components.sensor import SensorDeviceClass from homeassistant.const import ( ATTR_DEVICE_CLASS, ATTR_ENTITY_ID, @@ -42,7 +43,7 @@ async def test_sensor( assert state.state == "3.2" assert state.attributes.get(ATTR_FRIENDLY_NAME) == "CPU Speed" assert state.attributes.get(ATTR_ICON) == "mdi:pulse" - assert ATTR_DEVICE_CLASS not in state.attributes + assert state.attributes.get(ATTR_DEVICE_CLASS) == SensorDeviceClass.FREQUENCY assert state.attributes.get(ATTR_ARCH) == "aargh" assert state.attributes.get(ATTR_BRAND) == "Intel Ryzen 7"