One of my latest additions is adding a "feels like" for outside temperature, based on a complex formula and then adding a 'custom:mini-graph-card' with color thresholds to show what the temperature feels like in rainbow colors.
This is what it looks like, bottom left.
View attachment 992664
I have my graph card combined with the weather-forecast card, so in code it looks like this:
Code:
cards:
- entity: weather.home
type: weather-forecast
- break
- entities:
- sensor.heat_index
icon: 'mdi:thermometer'
legend: true
name: Outside temperature feels like
show:
extrema: true
icon: true
type: 'custom:mini-graph-card'
points_per_hour: 2
color_thresholds:
- value: 37
color: '#7e0001'
- value: 35
color: '#9a0000'
- value: 32
color: '#d80100'
- value: 29
color: '#fe0000'
- value: 26
color: '#f46523'
- value: 24
color: '#ff9e07'
- value: 21
color: '#ffd728'
- value: 18
color: '#ffff01'
- value: 15
color: '#cdff00'
- value: 13
color: '#80ff00'
- value: 10
color: '#3ab54a'
- value: 7
color: '#05f7f8'
- value: 4
color: '#00ccff'
- value: 2
color: '#017eff'
- value: -1
color: '#0000fe'
- value: -4
color: '#1b1464'
- value: -7
color: '#662e93'
layout: vertical
min_columns: 1
type: 'custom:layout-card'
and my feels_like.yaml package:
Code:
sensor:
#Heat index
- platform: template
sensors:
heat_index:
friendly_name: 'Outside Feels Like'
#formula taken from http://www.srh.noaa.gov/ama/?n=heatindex
value_template: >-
{%- set outside_f = ((states('sensor.outside_temperature')|float * 1.8000)+32.00) -%}
{% if 112 > outside_f | float > 80 and states('sensor.outside_humidity') | float < 13 %}
{% set value = (((-42.379 + (2.04901523*(outside_f|float)) + (10.14333127*(states.sensor.outside_humidity.state|float)) - (0.22475541*(outside_f|float)*(states.sensor.outside_humidity.state|float)) - (0.00683783*(outside_f|float)*(outside_f|float)) - (0.05481717*(states.sensor.outside_humidity.state|float)*(states.sensor.outside_humidity.state|float)) + (0.00122874*(outside_f|float)*(outside_f|float)*(states.sensor.outside_humidity.state|float)) + (0.00085282*(outside_f|float)*(states.sensor.outside_humidity.state|float)*(states.sensor.outside_humidity.state|float)) - (0.00000199*(outside_f|float)*(outside_f|float)*(states.sensor.outside_humidity.state|float)*(states.sensor.outside_humidity.state|float)))-(((13-(states.sensor.outside_humidity.state|float))/4)*sqrt((17-(((outside_f|float)-95)|abs))/17))) | round(3)) %}
{% elif 87 > outside_f | float > 80 and states('sensor.outside_humidity') | float > 85 %}
{% set value = (((-42.379 + (2.04901523*(outside_f|float)) + (10.14333127*(states.sensor.outside_humidity.state|float)) - (0.22475541*(outside_f|float)*(states.sensor.outside_humidity.state|float)) - (0.00683783*(outside_f|float)*(outside_f|float)) - (0.05481717*(states.sensor.outside_humidity.state|float)*(states.sensor.outside_humidity.state|float)) + (0.00122874*(outside_f|float)*(outside_f|float)*(states.sensor.outside_humidity.state|float)) + (0.00085282*(outside_f|float)*(states.sensor.outside_humidity.state|float)*(states.sensor.outside_humidity.state|float)) - (0.00000199*(outside_f|float)*(outside_f|float)*(states.sensor.outside_humidity.state|float)*(states.sensor.outside_humidity.state|float)))-(((states.sensor.outside_humidity.state|float)-85)/10)*((87-(outside_f|float))/5)) | round(3)) %}
{% elif outside_f | float < 80 %}
{% set value = ((0.5*((outside_f|float) + 61.0 + (((outside_f|float)-68)*1.2) + ((states.sensor.outside_humidity.state|float)*0.094))) | round(3)) %}
{% else %}
{% set value = ((-42.379 + (2.04901523*(outside_f|float)) + (10.14333127*(states.sensor.outside_humidity.state|float)) - (0.22475541*(outside_f|float)*(states.sensor.outside_humidity.state|float)) - (0.00683783*(outside_f|float)*(outside_f|float)) - (0.05481717*(states.sensor.outside_humidity.state|float)*(states.sensor.outside_humidity.state|float)) + (0.00122874*(outside_f|float)*(outside_f|float)*(states.sensor.outside_humidity.state|float)) + (0.00085282*(outside_f|float)*(states.sensor.outside_humidity.state|float)*(states.sensor.outside_humidity.state|float)) - (0.00000199*(outside_f|float)*(outside_f|float)*(states.sensor.outside_humidity.state|float)*(states.sensor.outside_humidity.state|float)))| round(3)) %}
{% endif %}
{{ ((value - 32)/1.8000|float) | round(3) }}
unit_of_measurement: '°C'