Get a device ID: device_id
The device_id template function returns the deviceA device is a model representing a physical or logical unit that contains entities. ID associated with an entityAn entity represents a sensor, actor, or function in Home Assistant. Entities are used to monitor physical properties or to control other entities. An entity is usually part of a device or a service. [Learn more] ID or a device name. If you pass an entity ID, it looks up which device that entity belongs to. If you pass a device name, it searches for a device with that exact name. It returns None if no matching device is found.
This is the starting point for most device-related template work. Since many device functions require a device ID, you’ll often use device_id to get that ID from something more human-readable. For example, you might know the entity ID of your thermostat sensor but need the device ID to look up the manufacturer or firmware version with device_attr. Or you might want to find all entities on the same device as a particular sensor using device_entities.
Usage
Here’s how to use this template function. Copy any example and adjust it to your setup.
{{ device_id("sensor.living_room_temperature") }}
a1b2c3d4e5f6a1b2c3d4e5f6
Function signature
The signature is a technical summary of this template function. It shows the name of the function, the values (called parameters) it accepts, and what type of data each parameter expects (for example, a piece of text or a number).
Function parameters that have a = with a value after them are optional. If you leave them out, the default value shown is used automatically. Function parameters without a default are required.
device_id(
entity_id_or_device_name: str,
) -> str | None
Function parameters
The following parameters can be provided to this function.
Good to know
- Returns
Nonewhen no device matches or when the entity does not belong to a device. - Name lookups need an exact match, including capitalization and spaces.
- When you set a custom device name, that name takes precedence over the default device name.
Try it yourself
Ready to test this? Open Developer tools > Template, paste the example into the Template editor, and watch the result update on the right. Edit the values to see how the function adapts to your own entitiesAn entity represents a sensor, actor, or function in Home Assistant. Entities are used to monitor physical properties or to control other entities. An entity is usually part of a device or a service. [Learn more].
More examples
Real scenarios where this function comes up in automations and templates. Copy any example and adapt it to your setup.
Look up a device ID by device name
You can also pass a device name instead of an entity ID. This is handy when you know the name of the device but not its ID.
{{ device_id("Living Room Thermostat") }}
a1b2c3d4e5f6a1b2c3d4e5f6
Chain with device_entities to find sibling entities
Find all entities that share the same device as a known entity. This is useful when you know one entity on a device and want to discover the rest.
{{
device_id("sensor.living_room_temperature")
| device_entities
}}
[
"sensor.living_room_temperature",
"sensor.living_room_humidity",
"binary_sensor.living_room_battery",
]
Get the manufacturer of a device from an entity ID
Combine device_id with device_attr to look up device attributes starting from an entity ID.
{{
device_attr(
device_id("sensor.living_room_temperature"),
"manufacturer"
)
}}
Aqara
Still stuck?
The Home Assistant community is quick to help: join Discord for real-time chat, post on the community forum with your template and expected result, or share on our subreddit /r/homeassistant.
AI assistants like ChatGPT or Claude can also explain or fix templates when you describe what you want in plain language.
Related template functions
These functions work well alongside this one:
-
Get entities for a device: device_entities - Returns a list of entity IDs associated with a given device.
-
Get a device name: device_name - Returns the name of a device from a device ID or entity ID.
-
Get device attribute: device_attr - Returns the value of a specific attribute from a device.
-
Test device attribute: is_device_attr - Tests if a specific attribute of a device has a given value.