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