Update, looks like the way templates works will be changing in 2026 - you will get warnings in the GUI with ways to fix it. It is nice that the GUI gives you the fix, but by way of example:
So this old code:
- platform: template
sensors:
breezeway_door_status_sc:
friendly_name: "Breezeway Door Status"
unique_id: breezeway-door-status-2ad4a16a-3d68-48bb-11f8-491226726111
value_template: >-
{% if ( (is_state('lock.breezeway','unlocked')) and (is_state('binary_sensor.door_breezeway_window_door_is_open','off')) ) %}
Unlocked
{% elif ( (is_state('binary_sensor.door_breezeway_window_door_is_open','on')) and (is_state('lock.breezeway','locked')) ) %}
Locked Open
{% elif ( (is_state('binary_sensor.door_breezeway_window_door_is_open','off')) and (is_state('lock.breezeway','locked')) ) %}
Locked
{% elif ( (is_state('binary_sensor.door_breezeway_window_door_is_open','on')) and (is_state('lock.breezeway','unlocked')) ) %}
Open
{% else %}
Unknown
{% endif %}
icon_template: >-
{% if ( (is_state('lock.breezeway','unlocked')) and (is_state('binary_sensor.door_breezeway_window_door_is_open','off')) ) %}
mdi:lock-open
{% elif ( (is_state('binary_sensor.door_breezeway_window_door_is_open','on')) and (is_state('lock.breezeway','locked')) ) %}
mdi:door-closed-cancel
{% elif ( (is_state('binary_sensor.door_breezeway_window_door_is_open','off')) and (is_state('lock.breezeway','locked')) ) %}
mdi:lock
{% elif ( (is_state('binary_sensor.door_breezeway_window_door_is_open','on')) and (is_state('lock.breezeway','unlocked')) ) %}
mdi:door-open
{% else %}
mdi:lock-question
{% endif %}
Becomes this:
- sensor:
- unique_id: breezeway-door-status-2ad4a16a-3d68-48bb-11f8-491226726111
default_entity_id: sensor.breezeway_door_status_sc
icon: "{% if ( (is_state('lock.breezeway','unlocked')) and (is_state('binary_sensor.door_breezeway_window_door_is_open','off'))
) %}\n mdi:lock-open\n{% elif ( (is_state('binary_sensor.door_breezeway_window_door_is_open','on'))
and (is_state('lock.breezeway','locked')) ) %}\n mdi:door-closed-cancel\n{%
elif ( (is_state('binary_sensor.door_breezeway_window_door_is_open','off'))
and (is_state('lock.breezeway','locked')) ) %}\n mdi:lock\n{% elif ( (is_state('binary_sensor.door_breezeway_window_door_is_open','on'))
and (is_state('lock.breezeway','unlocked')) ) %}\n mdi:door-open\n{% else %}\n
\ mdi:lock-question\n{% endif %}"
name: Breezeway Door Status
state: "{% if ( (is_state('lock.breezeway','unlocked')) and (is_state('binary_sensor.door_breezeway_window_door_is_open','off'))
) %}\n Unlocked\n{% elif ( (is_state('binary_sensor.door_breezeway_window_door_is_open','on'))
and (is_state('lock.breezeway','locked')) ) %}\n Locked Open\n{% elif ( (is_state('binary_sensor.door_breezeway_window_door_is_open','off'))
and (is_state('lock.breezeway','locked')) ) %}\n Locked\n{% elif ( (is_state('binary_sensor.door_breezeway_window_door_is_open','on'))
and (is_state('lock.breezeway','unlocked')) ) %}\n Open\n{% else %}\n Unknown\n{%
endif %}"
I also took all of these and combined them into a singular template.yaml and then referenced it in the main configuration.yaml with:
template: !include template.yaml