Making a usable weather dashboard


This is the yaml code to create a “max_temperature” trigger based template sensor in Home Assistant. It captures the current day’s max temperature and the time it occured and also has attributes to capture the same for: “this week”, “this month”, “this year”, and the all time high. I discuss how I use it this this post. here - INSERT LINK

If you try to use it, you will of course need to change the sensor references to match those in your system and will likely want to update the naming conventions.

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