Help with explanation of different ID's in configurations

I’ve been running openHAB for +10 years and just started a test-migration to Home Assistant. So there is a lot of new terms and tweaks for me to learn. Starting to get an idea of the basics but the usage of different key names for ID’s are confusing me a lot:
“id”, “entity_id”, “item_id”, “unique_id”, “alias”, “description”, “name”, “friendly_name”, etc

Do someone have a simple explanation of the purpose of these and what the difference is between them?

Many of these (and others not listed) are paired, existing to provide stable identifiers in the database and link them to unstable/user-editable identifiers in the front-end.

Home Assistant Glossary

Device ID : A device is a model representing a physical or logical unit that contains entities. Most devices are created automatically by an integration and assigned a Device ID automatically as well. The most common place an average user might encounter Device IDs is in Device triggers or conditions within automations and scripts, but it is not necessary to know the Device ID to use these functions.

Entity ID : An entity represents a sensor, actor, or function in Home Assistant. Entities are used to monitor physical properties or to control other entities. An Entity ID is composed of two parts; a domain such as light or sensor and an object_id which can be any slug like center_living_room_window or aqara_p1_motion. Entity IDs can be altered to suit the need and preferences of the user. Most users will interact with Entity IDs far more than any of the other identifiers in this list.

Unique ID : A Unique ID is used to match a config entry to the underlying device, entities, or API. By necessity a Unique ID needs to be stable. Most Unique IDs are assigned by the backend and cannot be changed by the user. Some manually configured entities can be assigned a Unique ID by the user. There are very few circumstances where the average user would need to access the Unique ID.

Friendly Name : The friendly_name attribute is automatically generated, but can be altered by the user to suit their needs or preferences. It is seen in many dashboard cards and is meant for human-friendly identification.

Name : The name property of an entity is automatically generated based on the friendly_name attribute. If an entity does not have a friendly_name, name will be assigned the value of the entity_id.

These are used primarily in automations and scripts.

Alias : The name of a script, automation, or subsection within such as defined in its configuration using the alias key. The Alias of an automation also acts as the initial source for its Entity ID, though that can be changed at any time by the user.

Description : A user-provided text, often summarizing the triggers and/or actions of a script or automation.

Example of Alias and Description

YAML Configuration

alias: Helper - Trash Holiday Week
description: >-
  If trash holiday check is true the automation sets a boolean for other
  automations during the week. Resets boolean to "off" at 8pm on Thursday
  night.

How it appears in the Automation Editor

Other

Trigger ID : Automation triggers can be assigned an ID to ease comprehension by users and/or simplify automations that use branching logic. If not defined by the user, a trigger’s id is automatically assigned the value of it’s index in the list of triggers.

Area Name : The user-defined name assigned to an Area.

Area ID : Basically the “unique id” of an area. An stable, automatically generated ID used by HA to in the Area registry

“id”, “item_id”
AFAIK, these are not commonly used on their own, though they may be specific to certain integrations.

2 Likes

I’m still kind of struggling because I don’t spend enough time with HA to be able to remember the role of all different ID’s. So when searching for a solution to some integration issue, an answer with some obsolete ID’s often pops up and I have to refresh my knowledge over again and rewrite the solution. Over all it still doesn’t feel intuitive at all. Especially the automatic Free-text-To-Lowercase-underscore translation. I want to be in total control of all ID’s and aliases when I’m setting up a system.