Skip to main content
The homeassistant.helpers.device_registry module provides a registry to track devices and their associations with config entries.

DeviceRegistry Class

The main class for managing device registration and lookup.

Key Methods

async_get

Get a device by device ID.
str
required
Device ID to retrieve
DeviceEntry | None
Device entry or None if not found

async_get_device

Check if device is registered by identifiers or connections.
set[tuple[str, str]] | None
default:"None"
Set of identifier tuples (domain, unique_id)
set[tuple[str, str]] | None
default:"None"
Set of connection tuples (connection_type, connection_id)
DeviceEntry | None
Device entry or None if not found

async_get_or_create

Get device or create if it doesn’t exist.
str
required
Config entry ID to link device to
str | None | UndefinedType
default:"UNDEFINED"
Config subentry ID
set[tuple[str, str]] | None | UndefinedType
default:"UNDEFINED"
Device connections (e.g., MAC addresses)
set[tuple[str, str]] | None | UndefinedType
default:"UNDEFINED"
Device identifiers
str | None | UndefinedType
default:"UNDEFINED"
Device manufacturer
str | None | UndefinedType
default:"UNDEFINED"
Device model
str | None | UndefinedType
default:"UNDEFINED"
Device name
str | None | UndefinedType
default:"UNDEFINED"
Software version
str | None | UndefinedType
default:"UNDEFINED"
Hardware version
str | URL | None | UndefinedType
default:"UNDEFINED"
URL for device configuration
DeviceEntryType | None | UndefinedType
default:"UNDEFINED"
Device entry type (e.g., SERVICE)
tuple[str, str] | None | UndefinedType
default:"UNDEFINED"
Identifier of hub device
DeviceEntryDisabler | None | UndefinedType
default:"UNDEFINED"
What disabled the device (if creating)
DeviceEntry
Device entry (created or existing)

DeviceEntry

Frozen dataclass representing a device registry entry.

Properties

str
Unique device ID
set[str]
Config entry IDs linked to this device
dict[str, set[str | None]]
Subentries per config entry
set[tuple[str, str]]
Device connections (normalized)
set[tuple[str, str]]
Device identifiers
str | None
Device manufacturer
str | None
Device model
str | None
Device model ID
str | None
Device name
str | None
User-customized device name
str | None
Software version
str | None
Hardware version
str | None
Device serial number
str | None
URL for device configuration
DeviceEntryType | None
Type of device entry
DeviceEntryDisabler | None
What disabled the device (USER, INTEGRATION, CONFIG_ENTRY)
str | None
Area ID where device is located
set[str]
Labels assigned to device
str | None
Device ID of hub device
str | None
Primary config entry ID
datetime
When device was created
datetime
When device was last modified

Methods

bool
Whether the device is disabled
dict[str, Any]
Dictionary representation of the device

DeviceInfo TypedDict

Type definition for device information provided by integrations.
set[tuple[str, str]]
Device connections (e.g., MAC addresses)
set[tuple[str, str]]
Unique identifiers for the device
str | None
Manufacturer name
str | None
Model name
str | None
Model identifier
str | None
Device name
str | None
Software/firmware version
str | None
Hardware version
str | None
Serial number
str | URL | None
URL to configure the device
str | None
Suggested area for the device
DeviceEntryType | None
Type of entry (e.g., SERVICE)
tuple[str, str]
Device identifier of hub device

Connection Types

  • CONNECTION_BLUETOOTH = "bluetooth" - Bluetooth connection
  • CONNECTION_NETWORK_MAC = "mac" - MAC address connection
  • CONNECTION_UPNP = "upnp" - UPnP connection
  • CONNECTION_ZIGBEE = "zigbee" - Zigbee connection

Events

EVENT_DEVICE_REGISTRY_UPDATED

Fired when a device is created, updated, or removed.

Helper Functions

format_mac

Format MAC address string for device registry entry.
str
required
MAC address in any common format
str
Normalized MAC address (lowercase with colons)