I had a Blueprint that I am creating that was working well for weeks
I wanted to make a 2nd automation based on the blueprint and it does not run at all.
Within ‘trace’ nothing runs and the timeline says:
Stopped because of unknown reason "null"
It seems there are a number of people saying similar in recent weeks and they have added ‘mode: queued’ or ‘mose: single’ into their automation - as per below this hasn’t worked for me.
Really odd is that the old automation carried on working until I deleted it and tried to re-create.
Any ideas, here is my Blueprint: (my first one so don’t judge!)
blueprint:
name: HVAC automation
description: Adjust HVAC (utilising remote sensor) setting acceptable ranges varying at time of day
domain: automation
input:
hvac_unit:
name: HVAC device
description: Select desired climate decive
selector:
entity:
filter:
- domain: climate
temp_sensor:
name: Temperature sensor
description: Select desired temperature sensor (could be the from the HVAC or a wireless one elsewhere in the room e.g. zigbee)
selector:
entity:
filter:
- domain: sensor
trigger_mins:
name: ' '
description: How often should the automation run? (minutes)
default: '/5'
selector:
text:
morning_start_time:
name: ' '
description: '# ☀️ Morining start time ☀️'
default: '07:00:00'
selector:
time: {}
morning_low_temp:
name: ' '
description: '🥶 Morning low temperature 🥶'
default: 20
selector:
number:
min: 12
max: 24
step: 0.5
unit_of_measurement: "°C"
mode: slider
morning_high_temp:
name: ' '
description: '🥵 Morning high temperature 🥵'
default: 24
selector:
number:
min: 18
max: 28
step: 0.5
unit_of_measurement: "°C"
mode: slider
day_start_time:
name: ' '
description: '# 🏢 Day start time 🏢'
default: '09:00:00'
selector:
time: {}
day_low_temp:
name: ' '
description: '🥶 Day low temperature 🥶'
default: 18
selector:
number:
min: 12
max: 24
step: 0.5
unit_of_measurement: "°C"
mode: slider
day_high_temp:
name: ' '
description: '🥵 Day high temperature 🥵'
default: 26
selector:
number:
min: 18
max: 28
step: 0.5
unit_of_measurement: "°C"
mode: slider
evening_start_time:
name: ' '
description: '# 🌇 Evening start time 🌇'
default: '18:00:00'
selector:
time: {}
evening_low_temp:
name: ' '
description: '🥶 Evening low temperature 🥶'
default: 20
selector:
number:
min: 12
max: 24
step: 0.5
unit_of_measurement: "°C"
mode: slider
evening_high_temp:
name: ' '
description: '🥵 Evening high temperature 🥵'
default: 24
selector:
number:
min: 18
max: 28
step: 0.5
unit_of_measurement: "°C"
mode: slider
night_start_time:
name: ' '
description: '# 🌙 Night start time 🌙'
default: '23:30:00'
selector:
time: {}
night_low_temp:
name: ' '
description: '🥶 Night low temperature 🥶'
default: 18.5
selector:
number:
min: 12
max: 24
step: 0.5
unit_of_measurement: "°C"
mode: slider
night_high_temp:
name: ' '
description: '🥵 Night high temperature 🥵'
default: 25
selector:
number:
min: 18
max: 28
step: 0.5
unit_of_measurement: "°C"
mode: slider
low_temp_target_offset:
name: ' '
description: |
# 🥶 Offset for low target temp 🥶
e.g. if the low temperature is set to 20°C and this is set to -2°C then the HVAC will not kick in until 18°C
default: '-0.25'
selector:
number:
min: -1.5
max: 0
step: 0.25
unit_of_measurement: "°C"
mode: slider
high_temp_target_offset:
name: ' '
description: |
# 🥵 Offset for high target temp 🥵
e.g. if the high temperature is set to 24°C and this is set to 2°C then the HVAC will not kick in until 26°C
default: '0.25'
selector:
number:
min: 0
max: 1.5
step: 0.25
unit_of_measurement: "°C"
mode: slider
within_range_mode:
name: ' '
description: When the temperature is within range what mode should the HVAC operate?
default: "Fan only"
selector:
select:
options:
- label: Auto
value: auto
- label: Dry
value: dry
- label: Fan only
value: fan_only
- label: "Off"
value: "off"
mode: dropdown
high_mode:
name: ' '
description: 🥵When the temperature is high what mode should the HVAC operate?🥵
default: "Cool"
selector:
select:
options:
- label: Cool
value: cool
- label: Auto
value: auto
- label: Dry
value: dry
- label: Fan only
value: fan_only
- label: "Off"
value: "off"
mode: dropdown
low_mode:
name: ' '
description: 🥶 When the temperature is low what mode should the HVAC operate? 🥶
default: "Heat"
selector:
select:
options:
- label: Heat
value: heat
- label: Auto
value: auto
- label: "Off"
value: "off"
mode: dropdown
fan_mode_morning:
name: ' '
description: What fan mode to use during morning
default: "Auto"
selector:
select:
options:
- label: Quiet
value: Quiet
- label: Low
value: low
- label: Medium
value: medium
- label: High
value: high
- label: Auto
value: auto
mode: dropdown
fan_mode_day:
name: ' '
description: What fan mode to use during day
default: "Auto"
selector:
select:
options:
- label: Quiet
value: Quiet
- label: Low
value: low
- label: Medium
value: medium
- label: High
value: high
- label: Auto
value: auto
mode: dropdown
fan_mode_evening:
name: ' '
description: What fan mode to use during evening
default: "Auto"
selector:
select:
options:
- label: Quiet
value: Quiet
- label: Low
value: low
- label: Medium
value: medium
- label: High
value: high
- label: Auto
value: auto
mode: dropdown
fan_mode_night:
name: ' '
description: What fan mode to use during night
default: "Auto"
selector:
select:
options:
- label: Quiet
value: Quiet
- label: Low
value: low
- label: Medium
value: medium
- label: High
value: high
- label: Auto
value: auto
mode: dropdown
ext_air_enable:
name: External air function
description: "Do you want the external air function enabled (must have following two ections completed)"
default: false
selector:
boolean:
ext_air_actuator:
name: External air damper actuator (optional)
description: External air damper actuator (used for ducted systems with a way of controlling e.g. ESPHOME controlled actuator)
default:
selector:
entity:
filter:
- domain: switch
ext_air_temp:
name: External air teperature (optional)
description: External air sensor used to open/close external air intake
default:
selector:
entity:
filter:
- domain: sensor
ext_air_low_temp_offset:
name: ' '
description: |
# 🥶 Offset for low external air intake temp
e.g. if the low temperature is set to 20 and this is set to -2°C then the external air will remain open until below 18°C
default: '-4'
selector:
number:
min: -8
max: 0
step: 0.5
unit_of_measurement: "°C"
mode: slider
ext_air_high_temp_offset:
name: ' '
description: |
# 🥵 Offset for high external air intake temp
e.g. if the high temperature is set to 24 and this is set to +2°C then the external air will remain open until above 26°C
default: '2'
selector:
number:
min: 0
max: 1.5
step: 0.25
unit_of_measurement: "°C"
mode: slider
mode: queued
trigger_variables:
trigger_mins: !input trigger_mins
trigger:
- platform: time_pattern
minutes: !input trigger_mins
variables:
hvac_unit: !input hvac_unit
temp_sensor: !input temp_sensor
temp_sensor_value: "{{ states(temp_sensor) }}"
fan_mode_morning: !input fan_mode_morning
fan_mode_day: !input fan_mode_day
fan_mode_evening: !input fan_mode_evening
fan_mode_night: !input fan_mode_night
within_range_mode: !input within_range_mode
low_mode: !input low_mode
high_mode: !input high_mode
morning_start_time: !input morning_start_time
day_start_time: !input day_start_time
evening_start_time: !input evening_start_time
night_start_time: !input night_start_time
morning_low_temp: !input morning_low_temp
day_low_temp: !input day_low_temp
evening_low_temp: !input evening_low_temp
night_low_temp: !input night_low_temp
morning_high_temp: !input morning_high_temp
day_high_temp: !input day_high_temp
evening_high_temp: !input evening_high_temp
night_high_temp: !input night_high_temp
time_attribute: >
{% set a = today_at(morning_start_time) %}
{% set b = today_at(day_start_time) %}
{% set c = today_at(evening_start_time) %}
{% set d = today_at(night_start_time) %}
{% set now = now() %}
{% set map = {
a < now <= b: ['morning', morning_low_temp, morning_high_temp, fan_mode_morning],
b < now <= c: [ 'day', day_low_temp, day_high_temp, fan_mode_day],
c < now <= d: ['evening', evening_low_temp, evening_high_temp, fan_mode_evening],
d < now or a > now: ['night', night_low_temp, night_high_temp, fan_mode_night] } %}
{{ map.get(True) }}
avg_target_temp: "{{ ((time_attribute[1] + time_attribute[2]) / 2) | round(0, default=0) }}"
low_temp_target_offset: !input low_temp_target_offset
low_target_temp_padded: "{{ (time_attribute[1] + low_temp_target_offset) | round(1, default=0) }}"
low_target_temp_range: "{{time_attribute[1]}}"
high_temp_target_offset: !input high_temp_target_offset
high_target_temp_padded: "{{ (time_attribute[2] + high_temp_target_offset) | round(1, default=0) }}"
high_target_temp_range: "{{time_attribute[2]}}"
calc_target: >
{% set map = {
low_target_temp_range <= temp_sensor_value <= high_target_temp_range: ['withinrange', avg_target_temp, within_range_mode],
low_target_temp_padded > temp_sensor_value: ['low', time_attribute[1], low_mode ],
high_target_temp_padded < temp_sensor_value: ['high', time_attribute[2], high_mode ] } %}
{{ map.get(True) }}
ext_air_enable: !input ext_air_enable
ext_air_temp: !input ext_air_temp
ext_air_actuator: !input ext_air_actuator
ext_air_low_temp_offset: !input ext_air_low_temp_offset
ext_air_high_temp_offset: !input ext_air_high_temp_offset
action:
#debugging message (remove later)
# - if:
# - condition: template
# value_template: "{{ now().minute == 0 }}"
# then:
# - service: notify.persistent_notification
# data:
# message: it is {{ time_attribute[0] }} and the low temp is set as {{ time_attribute[1] }} and the high temp is set as {{ time_attribute[2] }}. Status is {{ calc_target[0] }}. Calc mode is {{ calc_target[2] }}
#set HVAC mode/temp/fan so long as temp sensor available
- if:
- condition: template
value_template: "{{ states(temp_sensor) == 'unavailable' }}"
then:
- service: notify.persistent_notification
data:
message: HVAC remote temperature sensor unavailable - HVAC automation halted until resolved
- stop: "Stop running the rest of the sequence"
else:
- service: climate.set_temperature
data:
temperature: '{{calc_target[1]}}'
target:
entity_id: !input 'hvac_unit'
- service: climate.set_hvac_mode
data:
hvac_mode: '{{ calc_target[2] }}'
target:
entity_id: !input 'hvac_unit'
- service: climate.set_fan_mode
data:
fan_mode: '{{ time_attribute[3] }}'
target:
entity_id: !input 'hvac_unit'
#check if external air inlet setup
- choose:
- conditions:
- condition: template
value_template: "{{ ext_air_enable }}"
sequence:
- choose:
- conditions: >
{{ (states(ext_air_temp) < states(temp_sensor)) and ((calc_target[0]) == 'high') }}
sequence:
- service: homeassistant.turn_on
target:
entity_id: "{{ ext_air_actuator }}"
- conditions: >
{{ (states(ext_air_temp) > states(temp_sensor)) and ((calc_target[0]) == 'high') }}
sequence:
- service: homeassistant.turn_off
target:
entity_id: "{{ ext_air_actuator }}"
- conditions: >
{{ (states(ext_air_temp) > states(temp_sensor)) and ((calc_target[0]) == 'low') }}
sequence:
- service: homeassistant.turn_on
target:
entity_id: "{{ ext_air_actuator }}"
- conditions: >
{{ (states(ext_air_temp) < states(temp_sensor)) and ((calc_target[0]) == 'low') }}
sequence:
- service: homeassistant.turn_off
target:
entity_id: "{{ ext_air_actuator }}"
- conditions: >
{{ ( (low_target_temp_range | float + ext_air_low_temp_offset | float ) < (states(ext_air_temp) | float) < (high_target_temp_range | float + ext_air_high_temp_offset | float) ) and (calc_target[0] == 'withinrange') }}
sequence:
- service: homeassistant.turn_on
target:
entity_id: "{{ ext_air_actuator }}"
- conditions: >
{{ (( (low_target_temp_range | float + ext_air_low_temp_offset | float ) > (states(ext_air_temp) | float) ) or ( (states(ext_air_temp) | float) > (high_target_temp_range | float + ext_air_high_temp_offset | float) )) and ((calc_target[0]) == 'withinrange') }}
sequence:
- service: homeassistant.turn_off
target:
entity_id: "{{ ext_air_actuator }}"