Issue with returning the triggering room

Hi All. I’m having issue with this code (which checks whether the temperature and sensor for one of the rooms has been stale). I am trying to return the triggering room but can’t make it work using trigger:

alias: Stale Wiser
description: ""
triggers:
  - value_template: >-
      {{ now() -
      states.sensor.wiser_lts_temperature_masters_bedroom.last_changed >=
      timedelta(minutes=2) and now() -
      states.sensor.wiser_itrv_masters_bedroom_signal.last_changed >=
      timedelta(minutes=2) }}
    trigger: template
    enabled: false
  - value_template: >-
      {{ now() - states.sensor.wiser_lts_temperature_bedroom_2.last_changed >=
      timedelta(minutes=2) and now() -
      states.sensor.wiser_itrv_bedroom_2_signal.last_changed >=
      timedelta(minutes=2) }}
    trigger: template
    enabled: false
  - value_template: >-
      {{ now() - states.sensor.wiser_lts_temperature_office.last_changed >=
      timedelta(minutes=2) and now() -
      states.sensor.wiser_itrv_office_signal.last_changed >=
      timedelta(minutes=2) }}
    trigger: template
    enabled: true
  - value_template: >-
      {{ now() - states.sensor.wiser_lts_temperature_bedroom_3.last_changed >=
      timedelta(minutes=2) and now() -
      states.sensor.wiser_itrv_bedroom_3_signal.last_changed >=
      timedelta(minutes=2) }}
    trigger: template
    enabled: false
  - value_template: >-
      {{ now() - states.sensor.wiser_lts_temperature_living_room.last_changed >=
      timedelta(minutes=2) and now() -
      states.sensor.wiser_itrv_living_room_signal.last_changed >=
      timedelta(minutes=2) }}
    trigger: template
    enabled: false
  - value_template: >-
      {{ now() - states.sensor.wiser_lts_temperature_hallway.last_changed >=
      timedelta(minutes=2) and now() -
      states.sensor.wiser_itrv_hallway_signal.last_changed >=
      timedelta(minutes=2) }}
    trigger: template
    enabled: false
  - value_template: >-
      {{ now() - states.sensor.wiser_lts_temperature_dining.last_changed >=
      timedelta(minutes=2) and now() -
      states.sensor.wiser_itrv_dining_signal.last_changed >=
      timedelta(minutes=2) }}
    trigger: template
    enabled: false
  - value_template: >-
      {{ now() - states.sensor.wiser_lts_temperature_kitchen.last_changed >=
      timedelta(minutes=2) and now() -
      states.sensor.wiser_itrv_kitchen_signal.last_changed >=
      timedelta(minutes=2) }}
    trigger: template
    enabled: false
  - value_template: >-
      {{ now() - states.sensor.wiser_lts_temperature_wash_room_1.last_changed >=
      timedelta(minutes=2) and now() -
      states.sensor.wiser_itrv_wash_room_1_signal.last_changed >=
      timedelta(minutes=2) }}
    trigger: template
    enabled: false
  - value_template: >-
      {{ now() - states.sensor.wiser_lts_temperature_wash_room_2.last_changed >=
      timedelta(minutes=2) and now() -
      states.sensor.wiser_itrv_wash_room_2_signal.last_changed >=
      timedelta(minutes=2) }}
    trigger: template
    enabled: false
conditions: []
actions:
  - data:
      title: Stale Temperature
      message: >
        {{ now().timestamp() | timestamp_local }} Wiser {{ trigger.to_state.name
        }} {{ trigger.to_state.attributes.friendly_name }} have been unchanged
        for the past hour.
    action: notify.persistent_notification
mode: single

could you pls help me with this? Thanks

trigger.to_state is only available for state triggers, your massive wall of triggers are all template triggers. You will need to manually pass whatever information you need from the trigger as either a trigger variable or trigger id.

Thanks for the response.

I’ve tried this code but having issues with this - it does not get triggered (have reduced time from 1 hr to 30 secs) even if it shows as true under developer template:

It runs fine if I manually run it though.

Pls see full code here:

alias: Sample
description: ""
triggers:
  - value_template: >-
      {% set ns = namespace(stale=false) %} {% for room in ['masters_bedroom',
      'bedroom_2', 'office', 'bedroom_3', 'living_room', 'hallway', 'dining',
      'kitchen', 'wash_room_1', 'wash_room_2'] %}
        {% set temp_sensor = 'sensor.wiser_lts_temperature_' + room %}
        {% set signal_sensor = 'sensor.wiser_itrv_' + room + '_signal' %}

        {% set temp_state = states[temp_sensor] %}
        {% set signal_state = states[signal_sensor] %}

        {% if temp_state is not none and signal_state is not none %}
          {% if temp_state.state not in ['unavailable', 'unknown'] and signal_state.state not in ['unavailable', 'unknown'] %}
            {% if now() - temp_state.last_changed >= timedelta(seconds=30) and now() - signal_state.last_changed >= timedelta(seconds=30) %}
              {% set ns.stale = true %}
            {% endif %}
          {% endif %}
        {% endif %}
      {% endfor %} {{ ns.stale }}
    trigger: template
conditions: []
actions:
  - action: persistent_notification.create
    data:
      title: Stale Wiser Sensor Data
      message: >-
        {% set ns = namespace(stale_rooms=[]) %} {% for room in
        ['masters_bedroom', 'bedroom_2', 'office', 'bedroom_3', 'living_room',
        'hallway', 'dining', 'kitchen', 'wash_room_1', 'wash_room_2'] %}
          {% set temp_sensor = 'sensor.wiser_lts_temperature_' + room %}
          {% set signal_sensor = 'sensor.wiser_itrv_' + room + '_signal' %}

          {% set temp_state = states[temp_sensor] %}
          {% set signal_state = states[signal_sensor] %}

          {% if temp_state is not none and signal_state is not none %}
            {% if temp_state.state not in ['unavailable', 'unknown'] and signal_state.state not in ['unavailable', 'unknown'] %}
              {% if now() - temp_state.last_changed >= timedelta(seconds=30) and now() - signal_state.last_changed >= timedelta(seconds=30) %}
                {% set ns.stale_rooms = ns.stale_rooms + [room] %}
              {% endif %}
            {% endif %}
          {% endif %}
        {% endfor %} {% if ns.stale_rooms | length > 0 %}
          The following Wiser sensors have stale data (last update more than 1 hour ago): {{ ns.stale_rooms | join(', ') }}
        {% endif %}
mode: single



A template trigger will only fire when its value changes from false to true. If the template already returns true when the automation is loaded, it will never fire until it flips to false and then back to true again.

thanks for the explanation - forgot about that. Is there a way for me to have this triggered (aside from setting a long time and waiting for it to be actually true) so that I can test if it really works?