Skip to main content

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.