Entities use device classes where possible
Reasoning
Device classes are a way to give context to an entity. These are used by Home Assistant for various purposes like:
- Allowing the user to switch to another unit of measurement than what the device provides.
- They are used for voice control to ask questions like "What is the temperature in the living room?".
- They are used for exposing entities to cloud based ecosystems like Google Assistant and Amazon Alexa.
- They are used to adjust the representation in the Home Assistant UI.
- They can be used to set a default name of the entity to decrease the burden on our translators.
Because of these reasons, it is important to use device classes where possible.
Example implementation
In the example below we have a temperature sensor that uses the device class temperature
.
The name of this entity will be My device temperature
.
sensor.py
class MyTemperatureSensor(SensorEntity):
"""Representation of a sensor."""
_attr_has_entity_name = True
_attr_device_class = SensorDeviceClass.TEMPERATURE
def __init__(self, device: Device) -> None:
"""Initialize the sensor."""
self._attr_device_info = DeviceInfo(
identifiers={(DOMAIN, device.id)},
name="My device",
)
Additional resources
A list of available device classes can be found in the entity pages under the entity page. More information about entity naming can be found in the entity documentation.
Exceptions
There are no exceptions to this rule.
Related rules
- has-entity-name: Entities use has_entity_name = True
- entity-translations: Entities have translated names
- icon-translations: Icon translations