---
title: Device Registry
sidebar_label: Introduction
id: version-0.78.0-device_registry_index
original_id: device_registry_index
---

The device registry is a registry where Home Assistant keeps track of devices. A device is represented in Home Assistant via one or more entities. For example, a battery-powered temperature and a humidity sensor might expose entities for temperature, humidity and battery level.

<img
  src='/img/en/device_registry/overview.png'
  alt='Device registry overview'
/>

| Attribute | Description |
| --------- | ----------- |
| id | Unique ID of device (generated by Home Assistant)
| name | Name of this device
| connections | A set of tuples of `(connection_type, connection identifier)`. Connection types are defined in the device registry module.
| identifiers | Set of identifiers. They identify the device in the outside world. An example is a serial number.
| manufacturer | The manufacturer of the device.
| model | The model of the device.
| config_entries | Config entries that are linked to this device.
| sw_version | The firmware version of the device.
| via_hub | Identifier of a device that routes messages between this device and Home Assistant. Examples of such devices are hubs. This is used to show device topology in Home Assistant.

## Defining devices

> Entity device info is only read if the entity is loaded via a [config entry](config_entries_index.md).

Each entity is able to define a device via the `device_info` property. This property is read when an entity is added to Home Assistant via a config entry. A device will be be matched up with an existing device via supplied identifiers and connections, like serial numbers or MAC addresses.

```python
# Inside a platform
class HueLight(LightEntity):

    @property
    def device_info(self):
        return {
            'identifiers': {
                # Serial numbers are unique identifiers within a specific domain
                (hue.DOMAIN, self.unique_id)
            },
            'name': self.name,
            'manufacturer': self.light.manufacturername,
            'model': self.light.productname,
            'sw_version': self.light.swversion,
            'via_hub': (hue.DOMAIN, self.api.bridgeid),
        }

```

Components are also able to register devices in the case that there are no entities representing them. An example is a hub that communicates with the lights.

```python
# Inside a component
from homeassistant.helpers import device_registry as dr

device_registry = await dr.async_get_registry(hass)

device_registry.async_get_or_create(
    config_entry=entry.entry_id,
    connections={
        (dr.CONNECTION_NETWORK_MAC, config.mac)
    },
    identifiers={
        (DOMAIN, config.bridgeid)
    },
    manufacturer='Signify',
    name=config.name,
    model=config.modelid,
    sw_version=config.swversion,
)
```
