New error in recent releases: Stopped because of unknown reason "null"

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 }}"

I copied that BP into my system. It rendered fine. I added the 2 required and it saved file. Everything else as default.
I cannot re-create all the stuff you have going on there, so can’t fully test it.

suggestions:

  1. Make sure there is nothing in the logs that gives you a better indication of the error, something to chase. Clear your log, make sure it runs/run it or if it isn’t running save it see if something shows up.
  2. Set the non-required entries to default, then start adding them one by one to see if/when the fault starts. That could tell you what code is balking.
  3. This is a shot in the dark, but if you let HA build automations, the mode is always at the end. I have been putting mine at the end for that reason. Maybe there’s something to that, maybe not, don’t know. Try mode and mode modifiers as the last thing in the BP.

Thanks for looking.

  1. Nothing in my log. Is there a way to increase log output for an automation?
  2. Tried only setting the first two entities
  3. Tried but to no avail.

Just to confirm if you click on the * in the flow you don’t get the following error in the trace timeline:

I just installed the Blueprint on a HA box I was in the middle to setting up for family which is running 2023.8.4 and I got the same error.

Is it possible/advisable to downgrade to old versions of HA?

But it did give me this error log:

Logger: homeassistant.components.automation.new_automation
Source: components/automation/__init__.py:269
Integration: Automation (documentation, issues)
First occurred: 19:06:57 (1 occurrences)
Last logged: 19:06:57

Error rendering variables: TypeError: unsupported operand type(s) for +: 'int' and 'str'

Should work like with all other components, in configuration.yaml set the level for logger:

logger:
  default: info
  logs:
    homeassistant.components.automation: debug

Source:

Solved!

I had set up default temperatures for the high/low but with out surrounding ‘’

This was giving the following error in the log as the temperature was being sent as a strong rather than a number:

Error rendering variables: TypeError: unsupported operand type(s) for +: 'int' and 'str'

Hope this helps someone in the future searching for this error!

e.g. (look at the default: line)

    morning_low_temp:
      name: ' '
      description: '🥶 Morning low temperature 🥶'
      default: 20

should be:

    morning_low_temp:
      name: ' '
      description: '🥶 Morning low temperature 🥶'
      default: '20'
1 Like