Test state attribute: is_state_attr
The is_state_attr template function checks whether a specific attribute of 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] matches a given value. It returns true or false. This is the attribute equivalent of is_state, which checks the main state.
You’ll use this when you need to make decisions based on an entity’s attributes rather than its main state. For example, checking if a light’s color mode is set to color_temp, if a media player’s source is a specific input, or if a deviceA device is a model representing a physical or logical unit that contains entities.‘s battery level is at a certain value. Like is_state, it safely returns false if the entity doesn’t exist.
Usage
Here’s how to use this template function. Copy any example and adjust it to your setup.
{{ is_state_attr("light.desk", "color_mode", "color_temp") }}
true
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.
is_state_attr(
entity_id: str,
attribute: str,
value: Any,
) -> bool
Function parameters
The following parameters can be provided to this function.
To find the exact attribute names and values for an entity, go to Developer Tools > States and select the entity.
Good to know
- Returns
false(not an error) when the entity or attribute does not exist. - The comparison is type-strict.
is_state_attr("light.x", "brightness", "255")isfalsewhen the attribute is the integer255.
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.
Check if a media player is playing from a specific source
{{ is_state_attr("media_player.tv", "source", "HDMI 1") }}
true
Use in an automationAutomations in Home Assistant allow you to automatically respond to things that happen in and around your home. [Learn more] conditionConditions are an optional part of an automation that will prevent an action from firing if they are not met. [Learn more]
Only proceed if the climate system is in heating mode.
condition:
- condition: template
value_template: >
{{ is_state_attr("climate.living_room", "hvac_action", "heating") }}
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 state attribute: state_attr - Returns the value of a specific attribute from an entity’s state.
-
Test entity state: is_state - Tests if an entity is in a specific state.
-
Get entity state: states - Returns the state value of an entity, or lets you iterate over all entity states.
-
Check if entity has a value: has_value - Tests if an entity exists and has a valid state (not unavailable or unknown).