From 89013d70b9d9017fbf08171775987c6dbfb36bb3 Mon Sep 17 00:00:00 2001 From: Tony Stork Date: Wed, 31 May 2023 12:26:22 -0400 Subject: [PATCH] Improvements to hot weather detection --- packages/climate.yaml | 14 ++++++++++++++ packages/custom_weather.yaml | 24 ++++++++++++++++++++++++ packages/scheduling.yaml | 5 +++-- 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/packages/climate.yaml b/packages/climate.yaml index edf76c3..c4e40f9 100644 --- a/packages/climate.yaml +++ b/packages/climate.yaml @@ -241,4 +241,18 @@ input_number: max: 40 step: 1 unit_of_measurement: °F + icon: mdi:thermometer + hot_overnight_threshold: + name: Hot Overnight Threshold + min: 40 + max: 80 + step: 1 + unit_of_measurement: °F + icon: mdi:thermometer + extended_heat_threshold: + name: Extended Heat Threshold + min: 70 + max: 100 + step: 1 + unit_of_measurement: °F icon: mdi:thermometer \ No newline at end of file diff --git a/packages/custom_weather.yaml b/packages/custom_weather.yaml index e76f19c..522bd08 100644 --- a/packages/custom_weather.yaml +++ b/packages/custom_weather.yaml @@ -87,6 +87,30 @@ template: attributes: current_temp: "{{ state_attr('weather.iron_nerd_weather_station','temperature') | int }}" threshold: "{{ states('input_number.wind_chill_threshold') | int }}" + - name: Heat Warning + unique_id: 02b8020a-4fa1-4489-abea-bfadf82ec7e5 + state: > + {% set day = states('sensor.todays_high_temp') | int %} + {% set night = states('sensor.overnight_lowest_temperature') | int %} + {% set dayThreshold = states('input_number.extended_heat_threshold') | int %} + {% set nightThreshold = states('input_number.hot_overnight_threshold') | int %} + {% set hotDayThreshold = states('input_number.hot_day_threshold') | int %} + {{ (day >= dayThreshold and night >= nightThreshold) or day >= hotDayThreshold }} + device_class: heat + attributes: + trigger: > + {% set day = states('sensor.todays_high_temp') | int %} + {% set night = states('sensor.overnight_lowest_temperature') | int %} + {% set dayThreshold = states('input_number.extended_heat_threshold') | int %} + {% set nightThreshold = states('input_number.hot_overnight_threshold') | int %} + {% set hotDayThreshold = states('input_number.hot_day_threshold') | int %} + {% if day >= dayThreshold and night >= nightThreshold %} + Extended Threat + {% elif day >= hotDayThreshold %} + Hot Day + {% else %} + No Trigger + {% endif %} - name: "Lightning Warning" unique_id: edaddfc4-f7f0-4d75-aada-a2c588afe029 state: "{{ states('sensor.blitzortung_lightning_counter') | int > 0 }}" diff --git a/packages/scheduling.yaml b/packages/scheduling.yaml index 6b60888..08fbd77 100644 --- a/packages/scheduling.yaml +++ b/packages/scheduling.yaml @@ -484,8 +484,9 @@ script: {{ as_timestamp(this_weekday(3)) | timestamp_custom('%Y-%m-%d') }} {% endif %} - if: - - condition: template - value_template: "{{ states('sensor.todays_high_temp') | int >= states('input_number.hot_day_threshold') | int }}" + - condition: state + entity_id: binary_sensor.heat_warning + state: 'on' then: - service: input_boolean.turn_on target: