Trigger Based Template Sensor


Referring page: Dynamic Weather Dashboard




This is the yaml to create a “max_temperature” trigger based template sensor in Home Assistant. It captures the current day’s max temperature along with the time it occurred. Attributes are used capture the same data points for: this week, this month, this year, and the all time high.


Sensor Code:

- trigger:
  - id: daily_reset
    platform: time
    at: '00:00'
  - platform: template
    value_template: "{{ states('sensor.outdoor_temperature_merged') | float(0) > states('sensor.max_temperature_san_jose_today') | float(0) }}"
  #- platform: state
  #  entity_id: sensor.outdoor_temperature_merged
  #- platform: state
  #  entity_id: input_boolean.test_toggle
  sensor:
    - name: Max Temperature San Jose Today
      unique_id: max_temperature_san_jose_today
      unit_of_measurement: "°F"
      device_class: temperature
      icon: mdi:thermometer-chevron-up
      state: |
        {% set t_now = states('sensor.outdoor_temperature_merged') | float(0) %}
        {% set t_max = states('sensor.max_temperature_san_jose_today') | float(0) %} 
        {% if trigger.id == "daily_reset" %}
          {{ t_now }}
        {% elif t_now > t_max %}
          {{ t_now }}
        {% else %}
          {{ t_max }}
        {% endif %}
      attributes:
        last_updated: |
          {% set t_now = states('sensor.outdoor_temperature_merged') | float(0) %}        
          {% set t_max = states('sensor.max_temperature_san_jose_today') | float(0) %}
          {% set t_max_lu = state_attr('sensor.max_temperature_san_jose_today','last_updated') %}
          {% if trigger.id == "daily_reset" %}
            {{ now() | as_local }}
          {% elif t_now > t_max %}
            {{ now() | as_local }}
          {% else %}
            {{ t_max_lu }}
          {% endif %}
        max_temperature_san_jose_this_week: |
          {% set t_now = states('sensor.outdoor_temperature_merged') | float(0) %}
          {% set t_max = state_attr('sensor.max_temperature_san_jose_today','max_temperature_san_jose_this_week') | float(0) %}
          {% if now().weekday() == 6 and now().hour == 0 and now().minute == 0 %}
            {{ t_now }}
          {% elif t_now > t_max %}
            {{ t_now }}
          {% else %}
            {{ t_max }}
          {% endif %}
        max_temperature_san_jose_this_week_lu: |
          {% set t_now = states('sensor.outdoor_temperature_merged') | float(0) %}
          {% set t_max = state_attr('sensor.max_temperature_san_jose_today','max_temperature_san_jose_this_week') | float(0) %}
          {% set t_max_lu = state_attr('sensor.max_temperature_san_jose_today','max_temperature_san_jose_this_week_lu') %}
          {% if now().weekday() == 6 and now().hour == 0 and now().minute == 0 %}
            {{ now() | as_local }}
          {% elif t_now > t_max %}
            {{ now() | as_local }}
          {% else %}
            {{ t_max_lu }}
          {% endif %}
        max_temperature_san_jose_this_month: |
          {% set t_now = states('sensor.outdoor_temperature_merged') | float(0) %}
          {% set t_max = state_attr('sensor.max_temperature_san_jose_today','max_temperature_san_jose_this_month') | float(0) %}
          {% if now().day == 1 and now().hour == 0 and now().minute == 0 %}
            {{ t_now }}
          {% elif t_now > t_max %}
            {{ t_now }}
          {% else %}
            {{ t_max }}
          {% endif %}
        max_temperature_san_jose_this_month_lu: |
          {% set t_now = states('sensor.outdoor_temperature_merged') | float(0) %}
          {% set t_max = state_attr('sensor.max_temperature_san_jose_today','max_temperature_san_jose_this_month') | float(0) %}
          {% set t_max_lu = state_attr('sensor.max_temperature_san_jose_today','max_temperature_san_jose_this_month_lu') %}
          {% if now().day == 1 and now().hour == 0 and now().minute == 0 %}
            {{ now() | as_local }}
          {% elif t_now > t_max %}
            {{ now() | as_local }}
          {% else %}
            {{ t_max_lu }}
          {% endif %}
        max_temperature_san_jose_this_year: |
          {% set t_now = states('sensor.outdoor_temperature_merged') | float(0) %}
          {% set t_max = state_attr('sensor.max_temperature_san_jose_today','max_temperature_san_jose_this_year') | float(0) %}
          {% if now().month == 1 and now().day == 1 and now().hour == 0 and now().minute == 0 %}
            {{ t_now }}
          {% elif t_now > t_max %}
            {{ t_now }}
          {% else %}
            {{ t_max }}
          {% endif %}
        max_temperature_san_jose_this_year_lu: |
          {% set t_now = states('sensor.outdoor_temperature_merged') | float(0) %}
          {% set t_max = state_attr('sensor.max_temperature_san_jose_today','max_temperature_san_jose_this_year') | float(0) %}          
          {% set t_max_lu = state_attr('sensor.max_temperature_san_jose_today','max_temperature_san_jose_this_year_lu') %}
          {% if now().month == 1 and now().day == 1 and now().hour == 0 and now().minute == 0 %}
            {{ now() | as_local }}
          {% elif t_now > t_max %}
            {{ now() | as_local }}
          {% else %}
            {{ t_max_lu }}
          {% endif %}
        max_temperature_san_jose_ath: |
          {% set t_now = states('sensor.outdoor_temperature_merged') | float(0) %}
          {% set t_max = state_attr('sensor.max_temperature_san_jose_today','max_temperature_san_jose_ath') | float(0) %}
          {% if t_now > t_max %}
            {{ t_now }}
          {% else %}
            {{ t_max }}
          {% endif %}
        max_temperature_san_jose_ath_lu: |
          {% set t_now = states('sensor.outdoor_temperature_merged') | float(0) %}
          {% set t_max = state_attr('sensor.max_temperature_san_jose_today','max_temperature_san_jose_ath') | float(0) %}          
          {% set t_max_lu = state_attr('sensor.max_temperature_san_jose_today','max_temperature_san_jose_ath_lu') %}
          {% if t_now > t_max %}
            {{ now() | as_local }}
          {% else %}
            {{ t_max_lu }}
          {% endif %}