Template Sensors - Attributes When Passed As Variables Evaluate To "unavailable"
The Problem
When passing sensor states and attributes as variables into a template sensor in Home Assistant, a peculiar behavior is observed. The sensor attributes evaluate to "unavailable" in certain scenarios, while in others, they return the correct value of the sensor or attribute. This article delves into the issue, providing a detailed analysis of the problem, its occurrence in specific versions of Home Assistant Core, and the necessary steps to resolve it.
The Issue in Home Assistant Core
The issue is observed in Home Assistant Core version core-2025.5.0
. The problem arises when using template sensors with variables that reference sensor attributes. In this version, the attributes evaluate to "unavailable" when passed as variables, whereas they return the correct value when directly referenced in the template sensor.
Example YAML Snippets
To better understand the issue, let's examine the following YAML snippets:
- unique_id: plop_attribute_test_1
variables:
descriptor: "{{ state_attr('sensor.weather_data', 'condition_0') }}"
state: >
{{ descriptor }}
- unique_id: plop_attribute_test_2
state: >
{{ state_attr('sensor.weather_data', 'condition_0') }}
- unique_id: plop_state_test_1
variables:
descriptor: "{{ states('sensor.rutherglen_icon_descriptor_0') }}"
state: >
{{ descriptor }}
- unique_id: plop_state_test_2
variables:
descriptor:
state: >
{{ states('sensor.rutherglen_icon_descriptor_0') }}
In the first snippet, the attribute condition_0
is passed as a variable, resulting in "unavailable." In contrast, the second snippet directly references the attribute, returning the correct value. Similarly, the third and fourth snippets demonstrate the same behavior, with the variable passing resulting in "unavailable" and direct referencing returning the correct value.
Resolving the Issue
To resolve this issue, you can follow these steps:
- Update Home Assistant Core: Ensure you are running the latest version of Home Assistant Core. If you are using version
core-2025.5.0
, update to the latest version. - Directly Reference Attributes: Instead of passing attributes as variables, directly reference them in the template sensor. This approach ensures that the attributes return the correct value.
- Use the
states
Function: When referencing states, use thestates
function instead ofstate_attr
. This function provides a more reliable way to access state attributes.
Example Solution
Here's an updated YAML snippet that resolves the issue:
- unique_id: plop_attribute_test_1
state: >
{{ state_attr('sensor.weather_data', 'condition_0') }}
- unique_id: plop_state_test_1
state: >
{{ states('sensor.rutherglen_icon_descriptor_0') }}
By following these steps and using the provided examples, you should be able to resolve the issue of template sensors attributes to "unavailable" when passed as variables.
Conclusion
Frequently Asked Questions
Q: What is the issue with template sensors in Home Assistant Core?
A: The issue arises when passing sensor states and attributes as variables into a template sensor. In certain scenarios, the attributes evaluate to "unavailable," while in others, they return the correct value of the sensor or attribute.
Q: Which version of Home Assistant Core is affected by this issue?
A: The issue is observed in Home Assistant Core version core-2025.5.0
.
Q: What is the difference between passing attributes as variables and directly referencing them in a template sensor?
A: When passing attributes as variables, they evaluate to "unavailable" in certain scenarios. In contrast, directly referencing attributes in a template sensor returns the correct value.
Q: How can I resolve this issue?
A: To resolve this issue, you can follow these steps:
- Update Home Assistant Core: Ensure you are running the latest version of Home Assistant Core. If you are using version
core-2025.5.0
, update to the latest version. - Directly Reference Attributes: Instead of passing attributes as variables, directly reference them in the template sensor. This approach ensures that the attributes return the correct value.
- Use the
states
Function: When referencing states, use thestates
function instead ofstate_attr
. This function provides a more reliable way to access state attributes.
Q: What is the states
function, and how does it differ from state_attr
?
A: The states
function is used to access state attributes in a more reliable way. It provides a more flexible and efficient way to access state attributes compared to state_attr
.
Q: Can I use the states
function with sensor attributes?
A: Yes, you can use the states
function with sensor attributes. This function provides a more reliable way to access state attributes, including sensor attributes.
Q: Are there any other solutions to this issue?
A: Yes, there are other solutions to this issue. You can also use the template
sensor with the source
parameter set to sensor
to access sensor attributes.
Q: How can I troubleshoot this issue?
A: To troubleshoot this issue, you can check the Home Assistant logs for any errors or warnings related to the template sensor. You can also use the debug
mode to enable debugging for the template sensor.
Q: Can I get more information about this issue?
A: Yes, you can get more information about this issue by checking the Home Assistant documentation and community forums. You can also reach out to the Home Assistant support team for further assistance.
Conclusion
The issue of template sensors evaluating attributes to "unavailable" when passed as variables is a known problem in Home Assistant Core version core-2025.5.0
. By directly referencing attributes, using the states
function, and updating to the latest version of Home Assistant Core, you can resolve this issue and ensure that your template sensors return the correct values. If you have any further questions or concerns, feel free to ask.