--- title: Device Registry sidebar_label: Introduction --- 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. 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, ) ```