From ba0a90a990c0ac7c2311f14310b1828c82fcf43c Mon Sep 17 00:00:00 2001 From: Tony Stork Date: Fri, 25 Aug 2023 18:29:12 -0400 Subject: [PATCH] Update template sensor definitions to current standard, close #109 --- configuration.yaml | 3 +- packages/climate.yaml | 86 +- packages/custom_weather.yaml | 1446 +++++++++--------- packages/history_stats.yaml | 121 ++ packages/kallen.yaml | 15 + packages/lighting_and_scenes.yaml | 241 ++- packages/presence.yaml | 3 + packages/school.yaml | 287 ++-- packages/security.yaml | 175 ++- packages/sysmon.yaml | 38 +- packages/time.yaml | 10 + packages/tony.yaml | 15 + packages/twitch.yaml | 10 + packages/weatheralerts.yaml | 2354 ++++++++++++++--------------- sensors/ages.yaml | 112 +- sensors/entertainment.yaml | 63 +- sensors/house_stats.yaml | 702 ++++----- sensors/tasks.yaml | 94 +- sensors/time.yaml | 52 +- template.yaml | 4 - 20 files changed, 2859 insertions(+), 2972 deletions(-) create mode 100644 packages/history_stats.yaml create mode 100644 packages/twitch.yaml delete mode 100644 template.yaml diff --git a/configuration.yaml b/configuration.yaml index 627ba60..a4fad9c 100644 --- a/configuration.yaml +++ b/configuration.yaml @@ -17,12 +17,11 @@ scene: token: !secret lifx_token input_boolean: !include input_boolean.yaml binary_sensor: !include binary_sensor.yaml -sensor: !include_dir_merge_list sensors switch: !include switches.yaml input_select: !include input_select.yaml input_text: !include input_text.yaml input_datetime: !include input_datetime.yaml -template: !include template.yaml +template: !include_dir_merge_list sensors input_number: !include input_number.yaml frontend: diff --git a/packages/climate.yaml b/packages/climate.yaml index 2f8ca03..1950f72 100644 --- a/packages/climate.yaml +++ b/packages/climate.yaml @@ -1,50 +1,3 @@ -sensor: - - platform: template - sensors: - master_bedroom_current_temp: - friendly_name: "Master Bedroom Current Temp" - unique_id: 40c6b591-09d3-45cd-8cab-9838517cc08a - value_template: "{{ state_attr('climate.master_bedroom_aircon','current_temperature') | float }}" - availability_template: "{{ states('climate.master_bedroom_aircon') not in ['unavailable','unknown'] }}" - master_bedroom_outdoor_temp: - friendly_name: "Master Bedroom Outdoor Temp" - unique_id: 1a79ac59-0faf-4de5-b546-5d6d5e151dd6 - value_template: "{{ state_attr('climate.master_bedroom_aircon','outdoor_temperature') | float }}" - availability_template: "{{ states('climate.master_bedroom_aircon') not in ['unavailable','unknown'] }}" - master_bedroom_target_temp: - friendly_name: "Master Bedroom Target Temp" - unique_id: 2ce31844-b115-42b8-8213-feccf24e236c - value_template: "{{ state_attr('climate.master_bedroom_aircon','temperature') | float }}" - availability_template: "{{ states('climate.master_bedroom_aircon') not in ['unavailable','unknown'] }}" - master_bedroom_aircon_eco_mode: - friendly_name: "Master Bedroom Eco Mode" - unique_id: edf36e23-adcf-4506-80eb-a14f4ea2fce0 - value_template: "{{ is_state_attr('climate.master_bedroom_aircon','preset_mode','eco') }}" - icon_template: >- - {% if is_state_attr('climate.master_bedroom_aircon','preset_mode','eco') %} - mdi:home-lightning-bolt - {% else %} - mdi:home-lightning-bolt-outline - {% endif %} - availability_template: "{{ states('climate.master_bedroom_aircon') not in ['unavailable','unknown'] }}" - master_bedroom_aircon_fan_mode: - friendly_name: "Master Bedroom Aircon Fan Mode" - unique_id: c0e4f9ba-0c6c-4673-9a75-13f253f2f2e8 - value_template: "{{ state_attr('climate.master_bedroom_aircon','fan_mode') }}" - icon_template: > - {% if is_state_attr('climate.master_bedroom_aircon','fan_mode','Auto') %} - mdi:fan-auto - {% elif is_state_attr('climate.master_bedroom_aircon','fan_mode','Low') %} - mdi:fan-speed-1 - {% elif is_state_attr('climate.master_bedroom_aircon','fan_mode','Medium') %} - mdi:fan-speed-2 - {% elif is_state_attr('climate.master_bedroom_aircon','fan_mode','High') %} - mdi:fan-speed-3 - {% else %} - mdi:fan-off - {% endif %} - availability_template: "{{ states('climate.master_bedroom_aircon') not in ['unavailable','unknown'] }}" - template: - binary_sensor: - name: Emma Aircon - Compressor @@ -66,6 +19,45 @@ template: - name: Kallen Fan - Separate Schedule unique_id: 3f243861-6a1f-412f-b9e3-933b54793b08 state: "{{ states('input_datetime.kallen_fan') != states('input_datetime.kallen_bedtime') }}" + - sensor: + - name: "Master Bedroom Current Temp" + unique_id: 40c6b591-09d3-45cd-8cab-9838517cc08a + state: "{{ state_attr('climate.master_bedroom_aircon','current_temperature') | float }}" + availability: "{{ states('climate.master_bedroom_aircon') not in ['unavailable','unknown'] }}" + - name: "Master Bedroom Outdoor Temp" + unique_id: 1a79ac59-0faf-4de5-b546-5d6d5e151dd6 + state: "{{ state_attr('climate.master_bedroom_aircon','outdoor_temperature') | float }}" + availability: "{{ states('climate.master_bedroom_aircon') not in ['unavailable','unknown'] }}" + - name: "Master Bedroom Target Temp" + unique_id: 2ce31844-b115-42b8-8213-feccf24e236c + state: "{{ state_attr('climate.master_bedroom_aircon','temperature') | float }}" + availability: "{{ states('climate.master_bedroom_aircon') not in ['unavailable','unknown'] }}" + - name: "Master Bedroom Eco Mode" + unique_id: edf36e23-adcf-4506-80eb-a14f4ea2fce0 + state: "{{ is_state_attr('climate.master_bedroom_aircon','preset_mode','eco') }}" + icon: >- + {% if is_state_attr('climate.master_bedroom_aircon','preset_mode','eco') %} + mdi:home-lightning-bolt + {% else %} + mdi:home-lightning-bolt-outline + {% endif %} + availability: "{{ states('climate.master_bedroom_aircon') not in ['unavailable','unknown'] }}" + - name: "Master Bedroom Aircon Fan Mode" + unique_id: c0e4f9ba-0c6c-4673-9a75-13f253f2f2e8 + state: "{{ state_attr('climate.master_bedroom_aircon','fan_mode') }}" + icon: > + {% if is_state_attr('climate.master_bedroom_aircon','fan_mode','Auto') %} + mdi:fan-auto + {% elif is_state_attr('climate.master_bedroom_aircon','fan_mode','Low') %} + mdi:fan-speed-1 + {% elif is_state_attr('climate.master_bedroom_aircon','fan_mode','Medium') %} + mdi:fan-speed-2 + {% elif is_state_attr('climate.master_bedroom_aircon','fan_mode','High') %} + mdi:fan-speed-3 + {% else %} + mdi:fan-off + {% endif %} + availability: "{{ states('climate.master_bedroom_aircon') not in ['unavailable','unknown'] }}" input_boolean: master_bedroom_climate_protocol: diff --git a/packages/custom_weather.yaml b/packages/custom_weather.yaml index af9fa40..55d0462 100644 --- a/packages/custom_weather.yaml +++ b/packages/custom_weather.yaml @@ -159,6 +159,81 @@ weather: {{ states(result) | float }} precipitation_unit: in +binary_sensor: + - platform: bayesian + unique_id: 3e9640d9-57a0-4495-8731-e64b34774065 + name: Raining Bayesian + prior: 0.17 + probability_threshold: 0.6 + observations: + - entity_id: "sensor.myradar_precip" + prob_given_true: 0.99 + prob_given_false: 0.45 + platform: "state" + to_state: "rain" + - entity_id: "sensor.pirateweather_precip" + prob_given_true: 0.13 + prob_given_false: 0.005 + platform: "state" + to_state: "rain" + - entity_id: "sensor.openweathermap_precipitation_kind" + prob_given_true: 0.75 + prob_given_false: 0.005 + platform: "state" + to_state: "rain" + - entity_id: "sensor.tomorrow_io_stratton_ave_precipitation_type" + prob_given_true: 0.99 + prob_given_false: 0.005 + platform: "state" + to_state: "rain" + - entity_id: "sensor.stratton_ave_precipitation" + prob_given_true: 0.99 + prob_given_false: 0.2 + platform: "numeric_state" + above: 0 + +sensor: + - platform: weatheralerts + state: OH + zone: 4 + county: 39 + + # - platform: statistics + # unique_id: b5996cb4-b715-4fc9-b3d8-98fc12c2b7dd + # name: Outside Temp Average + # entity_id: sensor.pirateweather_temperature + # state_characteristic: average_linear + # max_age: + # days: 7 + # - platform: statistics + # unique_id: 6192c95a-8fd1-4ba0-87de-d06fdc071d6b + # name: Apparent Temp Average + # entity_id: sensor.stratton_ave_apparent_temperature + # state_characteristic: average_linear + # max_age: + # days: 7 + # - platform: statistics + # unique_id: 7b9c269c-40b7-4255-a051-2d1b7a6af017 + # name: Wind Speed Average + # entity_id: sensor.pirateweather_wind_speed + # state_characteristic: average_linear + # max_age: + # days: 7 + # - platform: statistics + # unique_id: b43d053f-aafb-4237-a742-a2ca841498fa + # name: Visibility Stats Average + # entity_id: sensor.kdfi_visibility + # state_characteristic: average_linear + # max_age: + # days: 7 + # - platform: statistics + # unique_id: b1206da2-fa00-4f7d-9af4-f2cf6794bd24 + # name: Humidity Stats Average + # entity_id: sensor.pirateweather_humidity + # state_characteristic: average_linear + # max_age: + # days: 7 + template: - binary_sensor: - name: Heat Threshold @@ -267,119 +342,351 @@ template: {% else %} true {% endif %} - -binary_sensor: - - platform: bayesian - unique_id: 3e9640d9-57a0-4495-8731-e64b34774065 - name: Raining Bayesian - prior: 0.17 - probability_threshold: 0.6 - observations: - - entity_id: "sensor.myradar_precip" - prob_given_true: 0.99 - prob_given_false: 0.45 - platform: "state" - to_state: "rain" - - entity_id: "sensor.pirateweather_precip" - prob_given_true: 0.13 - prob_given_false: 0.005 - platform: "state" - to_state: "rain" - - entity_id: "sensor.openweathermap_precipitation_kind" - prob_given_true: 0.75 - prob_given_false: 0.005 - platform: "state" - to_state: "rain" - - entity_id: "sensor.tomorrow_io_stratton_ave_precipitation_type" - prob_given_true: 0.99 - prob_given_false: 0.005 - platform: "state" - to_state: "rain" - - entity_id: "sensor.stratton_ave_precipitation" - prob_given_true: 0.99 - prob_given_false: 0.2 - platform: "numeric_state" - above: 0 - -sensor: - - platform: weatheralerts - state: OH - zone: 4 - county: 39 - - # - platform: statistics - # unique_id: b5996cb4-b715-4fc9-b3d8-98fc12c2b7dd - # name: Outside Temp Average - # entity_id: sensor.pirateweather_temperature - # state_characteristic: average_linear - # max_age: - # days: 7 - # - platform: statistics - # unique_id: 6192c95a-8fd1-4ba0-87de-d06fdc071d6b - # name: Apparent Temp Average - # entity_id: sensor.stratton_ave_apparent_temperature - # state_characteristic: average_linear - # max_age: - # days: 7 - # - platform: statistics - # unique_id: 7b9c269c-40b7-4255-a051-2d1b7a6af017 - # name: Wind Speed Average - # entity_id: sensor.pirateweather_wind_speed - # state_characteristic: average_linear - # max_age: - # days: 7 - # - platform: statistics - # unique_id: b43d053f-aafb-4237-a742-a2ca841498fa - # name: Visibility Stats Average - # entity_id: sensor.kdfi_visibility - # state_characteristic: average_linear - # max_age: - # days: 7 - # - platform: statistics - # unique_id: b1206da2-fa00-4f7d-9af4-f2cf6794bd24 - # name: Humidity Stats Average - # entity_id: sensor.pirateweather_humidity - # state_characteristic: average_linear - # max_age: - # days: 7 - - - platform: template - sensors: - current_forecast: - friendly_name: Current Forecast - unique_id: c0faea33-2ac3-40f1-8558-584c3f5d6b16 - icon_template: mdi:weather-sunny - value_template: >- - {% set forecast = state_attr('weather.iron_nerd_weather_station','forecast')[0] %} - {{ forecast.condition }} - attribute_templates: - high_temp: >- - {% set forecast = state_attr('weather.iron_nerd_weather_station','forecast')[0] %} - {{ forecast.temperature }} - overnight_low: >- - {% set forecast = state_attr('weather.iron_nerd_weather_station','forecast')[0] %} - {{ forecast.templow }} - wind_bearing: >- - {% set forecast = state_attr('weather.iron_nerd_weather_station','forecast')[0] %} - {{ forecast.wind_bearing }} - wind_speed: >- - {% set forecast = state_attr('weather.iron_nerd_weather_station','forecast')[0] %} - {{ forecast.wind_speed }} - precipitation: >- - {% set forecast = state_attr('weather.iron_nerd_weather_station','forecast')[0] %} - {{ forecast.precipitation }} - friendly: >- - {% set forecast = state_attr('weather.iron_nerd_weather_station','forecast')[0] %} - {{ forecast.condition | replace("partlycloudy","partly cloudy") }} - current_forecast_detail: - friendly_name: Current Forecast Detail - unique_id: e5ae9864-70b5-402c-9d2f-c4d6a10085df - icon_template: mdi:weather-sunny - value_template: >- - {% from 'formatting.jinja' import cleanup %} - {%- macro getReport() -%} + - sensor: + - name: Current Forecast + unique_id: c0faea33-2ac3-40f1-8558-584c3f5d6b16 + icon: mdi:weather-sunny + state: >- + {% set forecast = state_attr('weather.iron_nerd_weather_station','forecast')[0] %} + {{ forecast.condition }} + attributes: + high_temp: >- + {% set forecast = state_attr('weather.iron_nerd_weather_station','forecast')[0] %} + {{ forecast.temperature }} + overnight_low: >- + {% set forecast = state_attr('weather.iron_nerd_weather_station','forecast')[0] %} + {{ forecast.templow }} + wind_bearing: >- + {% set forecast = state_attr('weather.iron_nerd_weather_station','forecast')[0] %} + {{ forecast.wind_bearing }} + wind_speed: >- + {% set forecast = state_attr('weather.iron_nerd_weather_station','forecast')[0] %} + {{ forecast.wind_speed }} + precipitation: >- + {% set forecast = state_attr('weather.iron_nerd_weather_station','forecast')[0] %} + {{ forecast.precipitation }} + friendly: >- + {% set forecast = state_attr('weather.iron_nerd_weather_station','forecast')[0] %} + {{ forecast.condition | replace("partlycloudy","partly cloudy") }} + - name: Current Forecast Detail + unique_id: e5ae9864-70b5-402c-9d2f-c4d6a10085df + icon: mdi:weather-sunny + state: >- + {% from 'formatting.jinja' import cleanup %} + {%- macro getReport() -%} + {{ [ + 'Today in Defiance ', + 'Later Today ', + 'For the rest of the day ' + ] | random }} + expect a high of {{ states('sensor.today_corrected_high_temp') }} + {%- if states('sensor.current_forecast') == 'sunny' and is_state('binary_sensor.night','off')%} + {{ [ + 'and sunny. ', + 'with sun. ', + 'with sunny conditions prevailing. ' + ] | random }} + {%- elif states('sensor.current_forecast') == 'sunny' and is_state('binary_sensor.night','on') %} + {{ [ + 'and clear. ', + 'with clear skies. ' + ] | random }} + {%- elif states('sensor.current_forecast') == 'clear-night' %} + {{ [ + 'and clear. ', + 'with clear skies. ' + ] | random }} + {%- elif states('sensor.current_forecast') == 'rainy' %} + {{ [ + 'with rain. ', + 'with showers. ', + 'and rainy. ' + ] | random }} + {{ [ + 'Rainfall accumulations ', + 'Total Rainfall amounts ' + ] | random }} + near {{ state_attr('sensor.current_forecast','precipitation') }} inches + {{ 'possible. ' }} + {%- elif states('sensor.current_forecast') == 'snowy' %} + {{ [ + 'with snow. ', + 'with snow showers. ' + ] | random }} + {{ [ + 'Snowfall accumulations ', + 'Total snowfall amounts ' + ] | random }} + near {{ state_attr('sensor.current_forecast','precipitation') }} inches + {{ 'possible. ' }} + {%- elif states('sensor.current_forecast') == 'snowy-rainy' %} + {{ [ + 'with mix preciptation possible. ', + 'with snow and rain showers. ' + ] | random }} + Total accumulation near {{ state_attr('sensor.current_forecast','precipitation') }} inches + {{ 'possible. ' }} + {%- elif states('sensor.current_forecast') == 'windy' %} + {{ [ + 'and windy. ', + 'with lots of wind. ' + ] | random }} + {%- elif states('sensor.current_forecast') == 'fog' %} + {{ [ + 'and foggy. ', + 'with some fog. ' + ] | random }} + {% elif states('sensor.current_forecast') == 'cloudy' %} + {{ [ + 'with clouds. ', + 'with cloudy skies. ' + ] | random }} + {% elif states('sensor.current_forecast') == 'partlycloudy' %} + {{ [ + 'with some clouds. ', + 'with partly cloudy skies. ', + 'with scattered clouds ' + ] | random }} + {%- elif states('sensor.current_forecast') == 'hail' %} + {{ [ + 'with severe thunderstorms possible. ', + 'with hail possible. ' + ] | random }} + {{ [ + 'Rainfall accumulations ', + 'Total Rainfall amounts ' + ] | random }} + near {{ state_attr('sensor.current_forecast','precipitation') }} inches + {{ 'possible. ' }} + {%- elif states('sensor.current_forecast') == 'lightning' %} + {{ [ + 'with thunderstorms possible. ', + 'with the potential of thunderstorms. ' + ] | random }} + {{ [ + 'Rainfall accumulations ', + 'Total Rainfall amounts ' + ] | random }} + near {{ state_attr('sensor.current_forecast','precipitation') }} inches + {{ 'possible. ' }} + {% endif -%} + {{ [ + 'Later tonight expect a low of ', + 'Overnight expect a low of ' + ] | random }} + {{ states('sensor.overnight_lowest_temperature') }} degrees. + {%- endmacro -%} + {{- cleanup(getReport()) -}} + - name: Tomorrows Forecast + unique_id: a8ae26b0-ed26-4568-bb2b-f7c72707b009 + icon: mdi:weather-sunny + state: >- + {% set forecast = state_attr('weather.iron_nerd_weather_station','forecast')[1] %} + {{ forecast.condition }} + attributes: + high_temp: >- + {% set forecast = state_attr('weather.iron_nerd_weather_station','forecast')[1] %} + {{ forecast.temperature }} + overnight_low: >- + {% set forecast = state_attr('weather.iron_nerd_weather_station','forecast')[1] %} + {{ forecast.templow }} + wind_bearing: >- + {% set forecast = state_attr('weather.iron_nerd_weather_station','forecast')[1] %} + {{ forecast.wind_bearing }} + wind_speed: >- + {% set forecast = state_attr('weather.iron_nerd_weather_station','forecast')[1] %} + {{ forecast.wind_speed }} + precipitation: >- + {% set forecast = state_attr('weather.iron_nerd_weather_station','forecast')[1] %} + {{ forecast.precipitation }} + - name: Tomorrow Forecast Detail + unique_id: 21374ed0-80d1-49ba-817d-3e93eb3865e4 + icon: mdi:weather-sunny + state: >- + {% from 'formatting.jinja' import cleanup %} + {%- macro getReport() -%} + {{ [ + 'Tomorrow in Defiance ', + 'For the next day ', + 'Tomorrow ' + ] | random }} + expect a high of {{ state_attr('sensor.tomorrow_forecast','high_temp') }} + {%- if states('sensor.tomorrow_forecast') == 'sunny' %} + {{ [ + 'and sunny. ', + 'with sun. ', + 'with sunny conditions prevailing. ' + ] | random }} + {%- elif states('sensor.tomorrow_forecast') == 'rainy' %} + {{ [ + 'with rain. ', + 'with showers. ', + 'and rainy. ' + ] | random }} + {{ [ + 'Rainfall accumulations ', + 'Total Rainfall amounts ' + ] | random }} + near {{ state_attr('sensor.tomorrow_forecast','precipitation') }} inches + {{ 'possible. ' }} + {%- elif states('sensor.tomorrow_forecast') == 'snowy' %} + {{ [ + 'with snow. ', + 'with snow showers. ' + ] | random }} + {{ [ + 'Snowfall accumulations ', + 'Total snowfall amounts ' + ] | random }} + near {{ state_attr('sensor.tomorrow_forecast','precipitation') }} inches + {{ 'possible. ' }} + {%- elif states('sensor.tomorrow_forecast') == 'snowy-rainy' %} + {{ [ + 'with mix preciptation possible. ', + 'with snow and rain showers. ' + ] | random }} + Total accumulation near {{ state_attr('sensor.tomorrow_forecast','precipitation') }} inches + {{ 'possible. ' }} + {%- elif states('sensor.tomorrow_forecast') == 'windy' %} + {{ [ + 'and windy. ', + 'with lots of wind. ' + ] | random }} + {%- elif states('sensor.current_forecast') == 'fog' %} + {{ [ + 'and foggy. ', + 'with some fog. ' + ] | random }} + {% elif states('sensor.tomorrow_forecast') == 'cloudy' %} + {{ [ + 'with clouds. ', + 'with cloudy skies. ' + ] | random }} + {% elif states('sensor.tomorrow_forecast') == 'partlycloudy' %} + {{ [ + 'with some clouds. ', + 'with partly cloudy skies. ', + 'with scattered clouds ' + ] | random }} + {%- elif states('sensor.tomorrow_forecast') == 'hail' %} + {{ [ + 'with severe thunderstorms possible. ', + 'with hail possible. ' + ] | random }} + {{ [ + 'Rainfall accumulations ', + 'Total Rainfall amounts ' + ] | random }} + near {{ state_attr('sensor.current_forecast','precipitation') }} inches + {{ 'possible. ' }} + {%- elif states('sensor.current_forecast') == 'lightning' %} + {{ [ + 'with thunderstorms possible. ', + 'with the potential of thunderstorms. ' + ] | random }} + {{ [ + 'Rainfall accumulations ', + 'Total Rainfall amounts ' + ] | random }} + near {{ state_attr('sensor.current_forecast','precipitation') }} inches + {{ 'possible. ' }} + {% endif -%} + {{ [ + ' Tomorrow night expect a low of ' + ] | random }} + {{ state_attr('sensor.tomorrow_forecast','overnight_low') }} degrees. + {%- endmacro -%} + {{- cleanup(getReport()) -}} + - name: Current Conditions + unique_id: 70db7e57-08db-48b2-919b-03b5face37b9 + icon: mdi:weather-sunny + state: >- + {% from 'formatting.jinja' import cleanup %} + {%- macro getReport() -%} + The Weather in Defiance + {{ [ + ' is ', + ' is currently ' + ] | random }} + {{state_attr('weather.iron_nerd_weather_station','temperature')|round}} degrees + {% if is_state('weather.iron_nerd_weather_station', 'rainy') %} + {{ [ + 'with rain. ', + 'with showers. ' + ] | random }} + {% elif is_state('weather.iron_nerd_weather_station', 'cloudy') %} + {{ [ + 'with clouds. ', + 'with cloudy skies. ' + ] | random }} + {% elif is_state('weather.iron_nerd_weather_station', 'partlycloudy') %} + {{ [ + 'with some clouds. ', + 'with partly cloudy skies. ', + 'with scatterd clouds ' + ] | random }} + {% elif is_state('weather.iron_nerd_weather_station', 'sunny') %} + {% if is_state('sun.sun', 'above_horizon') %} + {{ [ + 'and sunny. ', + 'with sun. ' + ] | random }} + {% else %} + {{ [ + 'and clear. ', + 'with clear skies. ' + ] | random }} + {% endif %} + {% else %} + and {{ states.weather.iron_nerd_weather_station.state }} + {% endif %} + {%- endmacro -%} + {{- cleanup(getReport()) -}} + - name: Current Conditions Detail + unique_id: 2b3687d1-bdd5-4551-8c0a-05b1ff617543 + icon: mdi:weather-sunny + state: >- + {% from 'formatting.jinja' import cleanup %} + {%- macro getReport() -%} + The Weather in Defiance + {{ [ + ' is ', + ' is currently ' + ] | random }} + {{state_attr('weather.iron_nerd_weather_station','temperature')|round}} degrees + {% if is_state('weather.iron_nerd_weather_station', 'rainy') %} + {{ [ + 'with rain. ', + 'with showers. ' + ] | random }} + {% elif is_state('weather.iron_nerd_weather_station', 'cloudy') %} + {{ [ + 'with clouds. ', + 'with cloudy skies. ' + ] | random }} + {% elif is_state('weather.iron_nerd_weather_station', 'partlycloudy') %} + {{ [ + 'with some clouds. ', + 'with partly cloudy skies. ', + 'with scattered clouds. ' + ] | random }} + {% elif is_state('weather.iron_nerd_weather_station', 'sunny') %} + {% if is_state('sun.sun', 'above_horizon') %} + {{ [ + 'and sunny. ', + 'with sun. ' + ] | random }} + {% else %} + {{ [ + 'and clear. ', + 'with clear skies. ' + ] | random }} + {% endif %} + {% else %} + and {{ states.weather.iron_nerd_weather_station.state }} + {% endif %} + {%- if is_state('binary_sensor.early_night_mode','off')%} {{ [ - 'Today in Defiance ', 'Later Today ', 'For the rest of the day ' ] | random }} @@ -410,8 +717,7 @@ sensor: 'Rainfall accumulations ', 'Total Rainfall amounts ' ] | random }} - near {{ state_attr('sensor.current_forecast','precipitation') }} inches - {{ 'possible. ' }} + near {{ state_attr('sensor.current_forecast','precipitation') }} inches {{ 'possible. ' }} {%- elif states('sensor.current_forecast') == 'snowy' %} {{ [ 'with snow. ', @@ -428,8 +734,7 @@ sensor: 'with mix preciptation possible. ', 'with snow and rain showers. ' ] | random }} - Total accumulation near {{ state_attr('sensor.current_forecast','precipitation') }} inches - {{ 'possible. ' }} + Total accumulation near {{ state_attr('sensor.current_forecast','precipitation') }} inches {{ 'possible. ' }} {%- elif states('sensor.current_forecast') == 'windy' %} {{ [ 'and windy. ', @@ -449,7 +754,7 @@ sensor: {{ [ 'with some clouds. ', 'with partly cloudy skies. ', - 'with scattered clouds ' + 'with scattered clouds. ' ] | random }} {%- elif states('sensor.current_forecast') == 'hail' %} {{ [ @@ -479,638 +784,315 @@ sensor: 'Overnight expect a low of ' ] | random }} {{ states('sensor.overnight_lowest_temperature') }} degrees. - {%- endmacro -%} - {{- cleanup(getReport()) -}} - tomorrow_forecast: - friendly_name: Tomorrows Forecast - unique_id: a8ae26b0-ed26-4568-bb2b-f7c72707b009 - icon_template: mdi:weather-sunny - value_template: >- - {% set forecast = state_attr('weather.iron_nerd_weather_station','forecast')[1] %} - {{ forecast.condition }} - attribute_templates: - high_temp: >- - {% set forecast = state_attr('weather.iron_nerd_weather_station','forecast')[1] %} - {{ forecast.temperature }} - overnight_low: >- - {% set forecast = state_attr('weather.iron_nerd_weather_station','forecast')[1] %} - {{ forecast.templow }} - wind_bearing: >- - {% set forecast = state_attr('weather.iron_nerd_weather_station','forecast')[1] %} - {{ forecast.wind_bearing }} - wind_speed: >- - {% set forecast = state_attr('weather.iron_nerd_weather_station','forecast')[1] %} - {{ forecast.wind_speed }} - precipitation: >- - {% set forecast = state_attr('weather.iron_nerd_weather_station','forecast')[1] %} - {{ forecast.precipitation }} - tomorrow_forecast_detail: - friendly_name: Tomorrow Forecast Detail - unique_id: 21374ed0-80d1-49ba-817d-3e93eb3865e4 - icon_template: mdi:weather-sunny - value_template: >- - {% from 'formatting.jinja' import cleanup %} - {%- macro getReport() -%} + {%- else -%} {{ [ - 'Tomorrow in Defiance ', - 'For the next day ', - 'Tomorrow ' - ] | random }} - expect a high of {{ state_attr('sensor.tomorrow_forecast','high_temp') }} - {%- if states('sensor.tomorrow_forecast') == 'sunny' %} - {{ [ - 'and sunny. ', - 'with sun. ', - 'with sunny conditions prevailing. ' - ] | random }} - {%- elif states('sensor.tomorrow_forecast') == 'rainy' %} - {{ [ - 'with rain. ', - 'with showers. ', - 'and rainy. ' - ] | random }} - {{ [ - 'Rainfall accumulations ', - 'Total Rainfall amounts ' - ] | random }} - near {{ state_attr('sensor.tomorrow_forecast','precipitation') }} inches - {{ 'possible. ' }} - {%- elif states('sensor.tomorrow_forecast') == 'snowy' %} - {{ [ - 'with snow. ', - 'with snow showers. ' - ] | random }} - {{ [ - 'Snowfall accumulations ', - 'Total snowfall amounts ' - ] | random }} - near {{ state_attr('sensor.tomorrow_forecast','precipitation') }} inches - {{ 'possible. ' }} - {%- elif states('sensor.tomorrow_forecast') == 'snowy-rainy' %} - {{ [ - 'with mix preciptation possible. ', - 'with snow and rain showers. ' - ] | random }} - Total accumulation near {{ state_attr('sensor.tomorrow_forecast','precipitation') }} inches - {{ 'possible. ' }} - {%- elif states('sensor.tomorrow_forecast') == 'windy' %} - {{ [ - 'and windy. ', - 'with lots of wind. ' - ] | random }} - {%- elif states('sensor.current_forecast') == 'fog' %} - {{ [ - 'and foggy. ', - 'with some fog. ' - ] | random }} - {% elif states('sensor.tomorrow_forecast') == 'cloudy' %} - {{ [ - 'with clouds. ', - 'with cloudy skies. ' - ] | random }} - {% elif states('sensor.tomorrow_forecast') == 'partlycloudy' %} - {{ [ - 'with some clouds. ', - 'with partly cloudy skies. ', - 'with scattered clouds ' - ] | random }} - {%- elif states('sensor.tomorrow_forecast') == 'hail' %} - {{ [ - 'with severe thunderstorms possible. ', - 'with hail possible. ' - ] | random }} - {{ [ - 'Rainfall accumulations ', - 'Total Rainfall amounts ' - ] | random }} - near {{ state_attr('sensor.current_forecast','precipitation') }} inches - {{ 'possible. ' }} - {%- elif states('sensor.current_forecast') == 'lightning' %} - {{ [ - 'with thunderstorms possible. ', - 'with the potential of thunderstorms. ' - ] | random }} - {{ [ - 'Rainfall accumulations ', - 'Total Rainfall amounts ' - ] | random }} - near {{ state_attr('sensor.current_forecast','precipitation') }} inches - {{ 'possible. ' }} - {% endif -%} - {{ [ - ' Tomorrow night expect a low of ' - ] | random }} - {{ state_attr('sensor.tomorrow_forecast','overnight_low') }} degrees. - {%- endmacro -%} - {{- cleanup(getReport()) -}} - current_conditions: - friendly_name: Current Conditions - unique_id: 70db7e57-08db-48b2-919b-03b5face37b9 - icon_template: mdi:weather-sunny - value_template: >- - {% from 'formatting.jinja' import cleanup %} - {%- macro getReport() -%} - The Weather in Defiance - {{ [ - ' is ', - ' is currently ' - ] | random }} - {{state_attr('weather.iron_nerd_weather_station','temperature')|round}} degrees - {% if is_state('weather.iron_nerd_weather_station', 'rainy') %} - {{ [ - 'with rain. ', - 'with showers. ' - ] | random }} - {% elif is_state('weather.iron_nerd_weather_station', 'cloudy') %} - {{ [ - 'with clouds. ', - 'with cloudy skies. ' - ] | random }} - {% elif is_state('weather.iron_nerd_weather_station', 'partlycloudy') %} - {{ [ - 'with some clouds. ', - 'with partly cloudy skies. ', - 'with scatterd clouds ' - ] | random }} - {% elif is_state('weather.iron_nerd_weather_station', 'sunny') %} - {% if is_state('sun.sun', 'above_horizon') %} - {{ [ - 'and sunny. ', - 'with sun. ' - ] | random }} - {% else %} - {{ [ - 'and clear. ', - 'with clear skies. ' - ] | random }} - {% endif %} - {% else %} - and {{ states.weather.iron_nerd_weather_station.state }} - {% endif %} - {%- endmacro -%} - {{- cleanup(getReport()) -}} - current_conditions_detail: - friendly_name: Current Conditions Detail - unique_id: 2b3687d1-bdd5-4551-8c0a-05b1ff617543 - icon_template: mdi:weather-sunny - value_template: >- - {% from 'formatting.jinja' import cleanup %} - {%- macro getReport() -%} - The Weather in Defiance - {{ [ - ' is ', - ' is currently ' - ] | random }} - {{state_attr('weather.iron_nerd_weather_station','temperature')|round}} degrees - {% if is_state('weather.iron_nerd_weather_station', 'rainy') %} - {{ [ - 'with rain. ', - 'with showers. ' - ] | random }} - {% elif is_state('weather.iron_nerd_weather_station', 'cloudy') %} - {{ [ - 'with clouds. ', - 'with cloudy skies. ' - ] | random }} - {% elif is_state('weather.iron_nerd_weather_station', 'partlycloudy') %} - {{ [ - 'with some clouds. ', - 'with partly cloudy skies. ', - 'with scattered clouds. ' - ] | random }} - {% elif is_state('weather.iron_nerd_weather_station', 'sunny') %} - {% if is_state('sun.sun', 'above_horizon') %} - {{ [ - 'and sunny. ', - 'with sun. ' - ] | random }} - {% else %} - {{ [ - 'and clear. ', - 'with clear skies. ' - ] | random }} - {% endif %} - {% else %} - and {{ states.weather.iron_nerd_weather_station.state }} - {% endif %} - {%- if is_state('binary_sensor.early_night_mode','off')%} - {{ [ - 'Later Today ', - 'For the rest of the day ' - ] | random }} - expect a high of {{ states('sensor.today_corrected_high_temp') }} - {%- if states('sensor.current_forecast') == 'sunny' and is_state('binary_sensor.night','off')%} - {{ [ - 'and sunny. ', - 'with sun. ', - 'with sunny conditions prevailing. ' - ] | random }} - {%- elif states('sensor.current_forecast') == 'sunny' and is_state('binary_sensor.night','on') %} - {{ [ - 'and clear. ', - 'with clear skies. ' - ] | random }} - {%- elif states('sensor.current_forecast') == 'clear-night' %} - {{ [ - 'and clear. ', - 'with clear skies. ' - ] | random }} - {%- elif states('sensor.current_forecast') == 'rainy' %} - {{ [ - 'with rain. ', - 'with showers. ', - 'and rainy. ' - ] | random }} - {{ [ - 'Rainfall accumulations ', - 'Total Rainfall amounts ' - ] | random }} - near {{ state_attr('sensor.current_forecast','precipitation') }} inches {{ 'possible. ' }} - {%- elif states('sensor.current_forecast') == 'snowy' %} - {{ [ - 'with snow. ', - 'with snow showers. ' - ] | random }} - {{ [ - 'Snowfall accumulations ', - 'Total snowfall amounts ' - ] | random }} - near {{ state_attr('sensor.current_forecast','precipitation') }} inches - {{ 'possible. ' }} - {%- elif states('sensor.current_forecast') == 'snowy-rainy' %} - {{ [ - 'with mix preciptation possible. ', - 'with snow and rain showers. ' - ] | random }} - Total accumulation near {{ state_attr('sensor.current_forecast','precipitation') }} inches {{ 'possible. ' }} - {%- elif states('sensor.current_forecast') == 'windy' %} - {{ [ - 'and windy. ', - 'with lots of wind. ' - ] | random }} - {%- elif states('sensor.current_forecast') == 'fog' %} - {{ [ - 'and foggy. ', - 'with some fog. ' - ] | random }} - {% elif states('sensor.current_forecast') == 'cloudy' %} - {{ [ - 'with clouds. ', - 'with cloudy skies. ' - ] | random }} - {% elif states('sensor.current_forecast') == 'partlycloudy' %} - {{ [ - 'with some clouds. ', - 'with partly cloudy skies. ', - 'with scattered clouds. ' - ] | random }} - {%- elif states('sensor.current_forecast') == 'hail' %} - {{ [ - 'with severe thunderstorms possible. ', - 'with hail possible. ' - ] | random }} - {{ [ - 'Rainfall accumulations ', - 'Total Rainfall amounts ' - ] | random }} - near {{ state_attr('sensor.current_forecast','precipitation') }} inches - {{ 'possible. ' }} - {%- elif states('sensor.current_forecast') == 'lightning' %} - {{ [ - 'with thunderstorms possible. ', - 'with the potential of thunderstorms. ' - ] | random }} - {{ [ - 'Rainfall accumulations ', - 'Total Rainfall amounts ' - ] | random }} - near {{ state_attr('sensor.current_forecast','precipitation') }} inches - {{ 'possible. ' }} - {% endif -%} - {{ [ - 'Later tonight expect a low of ', + 'Tonight expect a low of ', 'Overnight expect a low of ' ] | random }} {{ states('sensor.overnight_lowest_temperature') }} degrees. - {%- else -%} - {{ [ - 'Tonight expect a low of ', - 'Overnight expect a low of ' - ] | random }} - {{ states('sensor.overnight_lowest_temperature') }} degrees. - {% endif %} - {%- endmacro -%} - {{- cleanup(getReport()) -}} - outside_pressure: - friendly_name: 'Outside Pressure' - unique_id: ac2944bb-e9d7-40a3-9707-ef477fd5f309 - value_template: '{{ state_attr(''weather.iron_nerd_weather_station'',''pressure'') }}' - unit_of_measurement: '' - todays_high_temp: - friendly_name: "Today's High Temp" - unique_id: 532904af-940b-45cd-af8e-c69d1a9c4531 - unit_of_measurement: '°F' - device_class: temperature - value_template: >- - {% set forecast = state_attr('weather.iron_nerd_weather_station','forecast')[0] %} - {{ forecast.temperature }} - tonights_low_temp: - friendly_name: "Tonight's Low Temp" - unique_id: 8ddc55b6-4728-4897-a32f-90be970f744b - unit_of_measurement: '°F' - device_class: temperature - value_template: >- - {% set forecast = state_attr('weather.iron_nerd_weather_station','forecast')[0] %} - {{ forecast.templow }} - clothing_forecast: - friendly_name: "Clothing Forecast" - unique_id: 8ed2684b-d0ad-402c-bc3c-340cb9b2437a - value_template: >- - {% if is_state('binary_sensor.overnight', 'off') %} - {% set temp = states('sensor.today_corrected_high_temp')|int %} + {% endif %} + {%- endmacro -%} + {{- cleanup(getReport()) -}} + - name: 'Outside Pressure' + unique_id: ac2944bb-e9d7-40a3-9707-ef477fd5f309 + state: '{{ state_attr(''weather.iron_nerd_weather_station'',''pressure'') }}' + unit_of_measurement: '' + - name: "Today's High Temp" + unique_id: 532904af-940b-45cd-af8e-c69d1a9c4531 + unit_of_measurement: '°F' + device_class: temperature + state: >- + {% set forecast = state_attr('weather.iron_nerd_weather_station','forecast')[0] %} + {{ forecast.temperature }} + - name: "Tonight's Low Temp" + unique_id: 8ddc55b6-4728-4897-a32f-90be970f744b + unit_of_measurement: '°F' + device_class: temperature + state: >- + {% set forecast = state_attr('weather.iron_nerd_weather_station','forecast')[0] %} + {{ forecast.templow }} + - name: "Clothing Forecast" + unique_id: 8ed2684b-d0ad-402c-bc3c-340cb9b2437a + state: >- + {% if is_state('binary_sensor.overnight', 'off') %} + {% set temp = states('sensor.today_corrected_high_temp')|int %} + {% else %} + {% set temp = state_attr('weather.iron_nerd_weather_station','temperature')|round %} + {% endif %} + {%- if states('sensor.today_corrected_high_temp')|int > 63 %} + {%- if states('sensor.today_corrected_high_temp')|int < 80 %} + Nice + {% elif states('sensor.today_corrected_high_temp')|int > 90 %} + Hot {% else %} - {% set temp = state_attr('weather.iron_nerd_weather_station','temperature')|round %} - {% endif %} - {%- if states('sensor.today_corrected_high_temp')|int > 63 %} - {%- if states('sensor.today_corrected_high_temp')|int < 80 %} - Nice - {% elif states('sensor.today_corrected_high_temp')|int > 90 %} - Hot - {% else %} - Toasty - {%- endif %} - {% elif states('sensor.today_corrected_high_temp')|int < 64 %} - {%- if states('sensor.today_corrected_high_temp')|int < 32 %} - Freezing - {% elif states('sensor.today_corrected_high_temp')|int > 48 %} - Chilly - {% else %} - Cold - {%- endif %} - {% else %} - Unknown + Toasty {%- endif %} - clothing_forecast_detail: - friendly_name: "Clothing Forecast Detail" - unique_id: 13065f50-5eef-4afd-830e-2a2c87f47496 - value_template: >- - {% from 'formatting.jinja' import cleanup %} - {%- macro getReport() -%} - {% if is_state('binary_sensor.morning','on') %} - Based on the forecasted high temperature, - {% if is_state('sensor.clothing_forecast', 'Freezing') %} - You're gonna freeze your balls off out there. so I suggest wearing long pants and a heavy coat. - {% elif is_state('sensor.clothing_forecast','Cold') %} - It's gonna be cold as balls today. so I suggest wearing long pants and a light jacket. - {% elif is_state('sensor.clothing_forecast', 'Chilly') %} - It's gonna be on the chilly side today. so I suggest wearing at least long pants. - {% elif is_state('sensor.clothing_forecast', 'Nice') %} - It is going to be - {{ [ 'pretty nice outside. ', - 'a good day to be outside. ', - 'a decent day outside for once. ', - 'downright tolerable outside. ', - ] | random }} - So I suggest wearing shorts. - {% elif is_state('sensor.clothing_forecast', 'Toasty') and is_state('sensor.current_forecast', 'sunny') %} - It is going to be - {{ [ 'on the warm side ', - ' rather warm outside ', - ' almost too hot outside ', - ' a little warm ', - ] | random }} - today, and very sunny. So I suggest wearing shorts and - {{ [ 'bringing your shades, hat, and maybe some sunscreen.', - 'preparing to bake under the sun.', - 'getting ready to be cooked alive.', - ] | random }} - {% elif is_state('sensor.clothing_forecast', 'Hot') and is_state('sensor.current_forecast', 'sunny') %} - It is going to be - {{ [ 'so hot you will sweat your balls off', - 'hotter than the sun ', - 'hotter than the inside of a volcano ', - ] | random }} - today, and very sunny. So I suggest wearing shorts and - {{ [ 'bringing your shades, hat, and maybe some sunscreen.', - 'preparing to bake under the sun.', - 'getting ready to be cooked alive.', - ] | random }} - {% elif is_state('sensor.clothing_forecast', 'Toasty') %} - It is going to be - {{ [ 'on the warm side ', - ' rather warm outside ', - ' almost too hot outside ', - ' a little warm ', - ] | random }} - today. So I suggest wearing shorts. - {% elif is_state('sensor.clothing_forecast', 'Hot') %} - It is going to be - {{ [ 'so hot you will sweat your balls off', - 'hotter than the sun ', - 'hotter than the inside of a volcano ', - 'hotter than hell itself ', - ] | random }} - today. So I suggest wearing shorts. - {% else %} - It is going to be {{ states('sensor.clothing_forecast') }} today so I suggest wearing shorts. - {% endif %} - {% if is_state('input_boolean.hot_day','on') %} - Warning, today will be a very sweaty day, so please remember to stay hydrated! - {% endif %} - {% if is_state('input_boolean.cold_day','on') %} - Warning, today will be excessively cold, please make sure all exposed skin is covered to avoid frostbite! - {% endif %} + {% elif states('sensor.today_corrected_high_temp')|int < 64 %} + {%- if states('sensor.today_corrected_high_temp')|int < 32 %} + Freezing + {% elif states('sensor.today_corrected_high_temp')|int > 48 %} + Chilly {% else %} - Based on the current temperature, - {% if is_state('sensor.clothing_forecast', 'Freezing') %} - You're gonna freeze your balls off out there. so I suggest wearing long pants and a heavy coat if you are going out. - {% elif is_state('sensor.clothing_forecast','Cold') %} - It is cold as balls outside. so I suggest wearing long pants and a light jacket. - {% elif is_state('sensor.clothing_forecast', 'Chilly') %} - It is chilly right now. so I suggest wearing at least long pants - if you are going to venture outside. - {% elif is_state('sensor.clothing_forecast', 'Nice') %} - It is - {{ [ 'pretty nice outside. ', - 'a good day to be outside. ', - 'a decent day outside for once. ', - 'downright tolerable outside. ', - ] | random }} - So I suggest wearing shorts. - {% elif is_state('sensor.clothing_forecast', 'Toasty') and is_state('weather.iron_nerd_weather_station','sunny') %} - It is - {{ [ 'on the warm side ', - ' rather warm ', - ' almost too hot ', - ' a little warm ', - ] | random }} - and very sunny outside. So I suggest wearing shorts and - {{ [ 'bringing your shades, hat, and maybe some sunscreen.', - 'preparing to bake under the sun.', - 'getting ready to be cooked alive.', - ] | random }} - {% elif is_state('sensor.clothing_forecast', 'Hot') and is_state('weather.iron_nerd_weather_station','sunny') %} - It is - {{ [ 'so hot you will sweat your balls off', - 'hotter than the sun ', - 'hotter than the inside of a volcano ', - ] | random }} - and very sunny outside. So I suggest wearing shorts and - {{ [ 'bringing your shades, hat, and maybe some sunscreen.', - 'preparing to bake under the sun.', - 'getting ready to be cooked alive.', - ] | random }} - {% elif is_state('sensor.clothing_forecast', 'Toasty') %} - It is - {{ [ 'on the warm side ', - ' rather warm ', - ' almost too hot ', - ' a little warm ', - ] | random }} - outside. So I suggest wearing shorts. - {% elif is_state('sensor.clothing_forecast', 'Hot') %} - It is - {{ [ 'so hot you will sweat your balls off', - 'hotter than the sun ', - 'hotter than the inside of a volcano ', - 'hotter than hell itself ', - ] | random }} - outside. So I suggest wearing shorts. - {% else %} - It is {{ states('sensor.clothing_forecast') }} right now so I suggest wearing shorts. - {% endif %} - {% if is_state('binary_sensor.heat_index_threshold','on') %} - Warning, the heat index is {{ states('sensor.stratton_ave_apparent_temperature') | float | round }} degrees right now, which is very high. So please make sure to stay hydrated! - {% endif %} - {% if is_state('binary_sensor.wind_chill_threshold','on') %} - Warning, it currently feels like {{ states('sensor.stratton_ave_apparent_temperature') | float | round }} degrees outside, so please make sure all exposed skin is covered to avoid frostbite! - {% endif %} + Cold + {%- endif %} + {% else %} + Unknown + {%- endif %} + - name: "Clothing Forecast Detail" + unique_id: 13065f50-5eef-4afd-830e-2a2c87f47496 + state: >- + {% from 'formatting.jinja' import cleanup %} + {%- macro getReport() -%} + {% if is_state('binary_sensor.morning','on') %} + Based on the forecasted high temperature, + {% if is_state('sensor.clothing_forecast', 'Freezing') %} + You're gonna freeze your balls off out there. so I suggest wearing long pants and a heavy coat. + {% elif is_state('sensor.clothing_forecast','Cold') %} + It's gonna be cold as balls today. so I suggest wearing long pants and a light jacket. + {% elif is_state('sensor.clothing_forecast', 'Chilly') %} + It's gonna be on the chilly side today. so I suggest wearing at least long pants. + {% elif is_state('sensor.clothing_forecast', 'Nice') %} + It is going to be + {{ [ 'pretty nice outside. ', + 'a good day to be outside. ', + 'a decent day outside for once. ', + 'downright tolerable outside. ', + ] | random }} + So I suggest wearing shorts. + {% elif is_state('sensor.clothing_forecast', 'Toasty') and is_state('sensor.current_forecast', 'sunny') %} + It is going to be + {{ [ 'on the warm side ', + ' rather warm outside ', + ' almost too hot outside ', + ' a little warm ', + ] | random }} + today, and very sunny. So I suggest wearing shorts and + {{ [ 'bringing your shades, hat, and maybe some sunscreen.', + 'preparing to bake under the sun.', + 'getting ready to be cooked alive.', + ] | random }} + {% elif is_state('sensor.clothing_forecast', 'Hot') and is_state('sensor.current_forecast', 'sunny') %} + It is going to be + {{ [ 'so hot you will sweat your balls off', + 'hotter than the sun ', + 'hotter than the inside of a volcano ', + ] | random }} + today, and very sunny. So I suggest wearing shorts and + {{ [ 'bringing your shades, hat, and maybe some sunscreen.', + 'preparing to bake under the sun.', + 'getting ready to be cooked alive.', + ] | random }} + {% elif is_state('sensor.clothing_forecast', 'Toasty') %} + It is going to be + {{ [ 'on the warm side ', + ' rather warm outside ', + ' almost too hot outside ', + ' a little warm ', + ] | random }} + today. So I suggest wearing shorts. + {% elif is_state('sensor.clothing_forecast', 'Hot') %} + It is going to be + {{ [ 'so hot you will sweat your balls off', + 'hotter than the sun ', + 'hotter than the inside of a volcano ', + 'hotter than hell itself ', + ] | random }} + today. So I suggest wearing shorts. + {% else %} + It is going to be {{ states('sensor.clothing_forecast') }} today so I suggest wearing shorts. {% endif %} - {% if states('sensor.thermal_comfort_simmerindex') in ['extremely_warm','danger_of_heatstroke','extreme_danger_of_heatstroke','circulatory_collapse_imminent'] %} - "I cannot stress this enough, the current weather is dangerously hot! " + {% if is_state('input_boolean.hot_day','on') %} + Warning, today will be a very sweaty day, so please remember to stay hydrated! {% endif %} - {% if is_state('sensor.thermal_comfort_perception','somewhat_uncomfortable') %} - "The humidity is somewhat uncomfortable outside." - {% elif is_state('sensor.thermal_comfort_perception','quite_uncomfortable') %} - "The humidity is very uncomfortable outside. " - {% elif is_state('sensor.thermal_comfort_perception','extremely_uncomfortable') %} - "The humidity outside is extremely uncomfortable and oppresive. " - {% elif is_state('sensor.thermal_comfort_perception','severely_high') %} - "The humidity outside is severely high, and could even be deadly for asthma related illnesses. " + {% if is_state('input_boolean.cold_day','on') %} + Warning, today will be excessively cold, please make sure all exposed skin is covered to avoid frostbite! {% endif %} - {% if is_state('sensor.thermal_comfort_frostrisk','high') %} - "There is currently a high chance of frost outside. Plan accordingly! " - {% elif is_state('sensor.thermal_comfort_frostrisk','probable') %} - "The possibility of frost exists currently. Be prepared. " + {% else %} + Based on the current temperature, + {% if is_state('sensor.clothing_forecast', 'Freezing') %} + You're gonna freeze your balls off out there. so I suggest wearing long pants and a heavy coat if you are going out. + {% elif is_state('sensor.clothing_forecast','Cold') %} + It is cold as balls outside. so I suggest wearing long pants and a light jacket. + {% elif is_state('sensor.clothing_forecast', 'Chilly') %} + It is chilly right now. so I suggest wearing at least long pants + if you are going to venture outside. + {% elif is_state('sensor.clothing_forecast', 'Nice') %} + It is + {{ [ 'pretty nice outside. ', + 'a good day to be outside. ', + 'a decent day outside for once. ', + 'downright tolerable outside. ', + ] | random }} + So I suggest wearing shorts. + {% elif is_state('sensor.clothing_forecast', 'Toasty') and is_state('weather.iron_nerd_weather_station','sunny') %} + It is + {{ [ 'on the warm side ', + ' rather warm ', + ' almost too hot ', + ' a little warm ', + ] | random }} + and very sunny outside. So I suggest wearing shorts and + {{ [ 'bringing your shades, hat, and maybe some sunscreen.', + 'preparing to bake under the sun.', + 'getting ready to be cooked alive.', + ] | random }} + {% elif is_state('sensor.clothing_forecast', 'Hot') and is_state('weather.iron_nerd_weather_station','sunny') %} + It is + {{ [ 'so hot you will sweat your balls off', + 'hotter than the sun ', + 'hotter than the inside of a volcano ', + ] | random }} + and very sunny outside. So I suggest wearing shorts and + {{ [ 'bringing your shades, hat, and maybe some sunscreen.', + 'preparing to bake under the sun.', + 'getting ready to be cooked alive.', + ] | random }} + {% elif is_state('sensor.clothing_forecast', 'Toasty') %} + It is + {{ [ 'on the warm side ', + ' rather warm ', + ' almost too hot ', + ' a little warm ', + ] | random }} + outside. So I suggest wearing shorts. + {% elif is_state('sensor.clothing_forecast', 'Hot') %} + It is + {{ [ 'so hot you will sweat your balls off', + 'hotter than the sun ', + 'hotter than the inside of a volcano ', + 'hotter than hell itself ', + ] | random }} + outside. So I suggest wearing shorts. + {% else %} + It is {{ states('sensor.clothing_forecast') }} right now so I suggest wearing shorts. {% endif %} - {%- endmacro -%} - {{- cleanup(getReport()) -}} + {% if is_state('binary_sensor.heat_index_threshold','on') %} + Warning, the heat index is {{ states('sensor.stratton_ave_apparent_temperature') | float | round }} degrees right now, which is very high. So please make sure to stay hydrated! + {% endif %} + {% if is_state('binary_sensor.wind_chill_threshold','on') %} + Warning, it currently feels like {{ states('sensor.stratton_ave_apparent_temperature') | float | round }} degrees outside, so please make sure all exposed skin is covered to avoid frostbite! + {% endif %} + {% endif %} + {% if states('sensor.thermal_comfort_simmerindex') in ['extremely_warm','danger_of_heatstroke','extreme_danger_of_heatstroke','circulatory_collapse_imminent'] %} + "I cannot stress this enough, the current weather is dangerously hot! " + {% endif %} + {% if is_state('sensor.thermal_comfort_perception','somewhat_uncomfortable') %} + "The humidity is somewhat uncomfortable outside." + {% elif is_state('sensor.thermal_comfort_perception','quite_uncomfortable') %} + "The humidity is very uncomfortable outside. " + {% elif is_state('sensor.thermal_comfort_perception','extremely_uncomfortable') %} + "The humidity outside is extremely uncomfortable and oppresive. " + {% elif is_state('sensor.thermal_comfort_perception','severely_high') %} + "The humidity outside is severely high, and could even be deadly for asthma related illnesses. " + {% endif %} + {% if is_state('sensor.thermal_comfort_frostrisk','high') %} + "There is currently a high chance of frost outside. Plan accordingly! " + {% elif is_state('sensor.thermal_comfort_frostrisk','probable') %} + "The possibility of frost exists currently. Be prepared. " + {% endif %} + {%- endmacro -%} + {{- cleanup(getReport()) -}} - # current_inside_humidity: - # friendly_name: "Current Inside Humidity" - # unit_of_measurement: '%' - # value_template: "{{ state_attr('climate.home','current_humidity') }}" - # lighting_stike_count: - # friendly_name: "Lightning Strike Count" - # value_template: "{{ states('sensor.acurite_6045m_3078_strcnt') }}" - # yesterday_rainfall_in: - # friendly_name: "Yesterday Rainfall" - # value_template: "{{ state_attr('sensor.daily_rainfall_in', 'last_period') }}" - # previous_rainfall: - # friendly_name: "Past 48h Rainfall" - # value_template: "{{ states('sensor.daily_rainfall_in') | float + state_attr('sensor.daily_rainfall_in', 'last_period') | float }}" - weather_alert_string: - friendly_name: Weather Alert String - unique_id: 66b5f020-0b5e-48ed-92a2-740d2d708b30 - value_template: > - {% from 'formatting.jinja' import cleanup %} - {%- macro getReport() -%} - {% set alerts = [ - states('sensor.weatheralerts_alert_1_most_recent_active_alert'), - states('sensor.weatheralerts_alert_2_most_recent_active_alert'), - states('sensor.weatheralerts_alert_3_most_recent_active_alert'), - states('sensor.weatheralerts_alert_4_most_recent_active_alert'), - states('sensor.weatheralerts_alert_5_most_recent_active_alert'), - ] %} - {% set main = alerts | reject('eq','unavailable') | select('ne','Flood Warning') | join(", ") | default('') %} - {% set flood = alerts | reject ('eq','unavailable') | select('eq','Flood Warning') | first | default('') %} - {% if flood not in [''] and main not in [''] %} - {{ main + ", " + flood }} - {% elif flood not in [''] and main in [''] %} - {{ flood }} - {% elif main not in [''] and flood in [''] %} - {{ main }} - {% else %} - 'None' - {% endif %} - {%- endmacro -%} - {{- cleanup(getReport()) -}} - attribute_templates: - active_alerts: "{{ states('sensor.weatheralerts_active_alerts') }}" - icon_template: > - {% if (states('sensor.weatheralerts_active_alerts') | int ) > 0 %} - mdi:alert + # current_inside_humidity: + # - name: "Current Inside Humidity" + # unit_of_measurement: '%' + # state: "{{ state_attr('climate.home','current_humidity') }}" + # lighting_stike_count: + # - name: "Lightning Strike Count" + # state: "{{ states('sensor.acurite_6045m_3078_strcnt') }}" + # yesterday_rainfall_in: + # - name: "Yesterday Rainfall" + # state: "{{ state_attr('sensor.daily_rainfall_in', 'last_period') }}" + # previous_rainfall: + # - name: "Past 48h Rainfall" + # state: "{{ states('sensor.daily_rainfall_in') | float + state_attr('sensor.daily_rainfall_in', 'last_period') | float }}" + - name: Weather Alert String + unique_id: 66b5f020-0b5e-48ed-92a2-740d2d708b30 + state: > + {% from 'formatting.jinja' import cleanup %} + {%- macro getReport() -%} + {% set alerts = [ + states('sensor.weatheralerts_alert_1_most_recent_active_alert'), + states('sensor.weatheralerts_alert_2_most_recent_active_alert'), + states('sensor.weatheralerts_alert_3_most_recent_active_alert'), + states('sensor.weatheralerts_alert_4_most_recent_active_alert'), + states('sensor.weatheralerts_alert_5_most_recent_active_alert'), + ] %} + {% set main = alerts | reject('eq','unavailable') | select('ne','Flood Warning') | join(", ") | default('') %} + {% set flood = alerts | reject ('eq','unavailable') | select('eq','Flood Warning') | first | default('') %} + {% if flood not in [''] and main not in [''] %} + {{ main + ", " + flood }} + {% elif flood not in [''] and main in [''] %} + {{ flood }} + {% elif main not in [''] and flood in [''] %} + {{ main }} {% else %} - mdi:alert-remove - {% endif %} - weather_alerts_active_corrected: - friendly_name: 'Weather Alerts Active - Corrected' - unique_id: e2f51da4-2271-4719-8edf-a28f76ac1e3f - value_template: > - {% from 'formatting.jinja' import cleanup %} - {%- macro getReport() -%} - {% set alerts = [ - states('sensor.weatheralerts_alert_1_most_recent_active_alert'), - states('sensor.weatheralerts_alert_2_most_recent_active_alert'), - states('sensor.weatheralerts_alert_3_most_recent_active_alert'), - states('sensor.weatheralerts_alert_4_most_recent_active_alert'), - states('sensor.weatheralerts_alert_5_most_recent_active_alert'), - ] %} - {% set main = alerts | reject('eq','unavailable') | select('ne','Flood Warning') | list | count | int %} - {% set flood = alerts | reject ('eq','unavailable') | select('eq','Flood Warning') | list | count | int %} - {% set flood1 = 1 if (flood > 0) else 0 %} - {{ (main + flood1) | int }} - {%- endmacro -%} - {{- cleanup(getReport()) -}} - icon_template: > - {% if (states('sensor.weatheralerts_active_alerts') | int ) > 0 %} - mdi:alert - {% else %} - mdi:alert-remove + 'None' {% endif %} + {%- endmacro -%} + {{- cleanup(getReport()) -}} + attributes: + active_alerts: "{{ states('sensor.weatheralerts_active_alerts') }}" + icon: > + {% if (states('sensor.weatheralerts_active_alerts') | int ) > 0 %} + mdi:alert + {% else %} + mdi:alert-remove + {% endif %} + - name: 'Weather Alerts Active - Corrected' + unique_id: e2f51da4-2271-4719-8edf-a28f76ac1e3f + state: > + {% from 'formatting.jinja' import cleanup %} + {%- macro getReport() -%} + {% set alerts = [ + states('sensor.weatheralerts_alert_1_most_recent_active_alert'), + states('sensor.weatheralerts_alert_2_most_recent_active_alert'), + states('sensor.weatheralerts_alert_3_most_recent_active_alert'), + states('sensor.weatheralerts_alert_4_most_recent_active_alert'), + states('sensor.weatheralerts_alert_5_most_recent_active_alert'), + ] %} + {% set main = alerts | reject('eq','unavailable') | select('ne','Flood Warning') | list | count | int %} + {% set flood = alerts | reject ('eq','unavailable') | select('eq','Flood Warning') | list | count | int %} + {% set flood1 = 1 if (flood > 0) else 0 %} + {{ (main + flood1) | int }} + {%- endmacro -%} + {{- cleanup(getReport()) -}} + icon: > + {% if (states('sensor.weatheralerts_active_alerts') | int ) > 0 %} + mdi:alert + {% else %} + mdi:alert-remove + {% endif %} # Sensors to more accurately forecast the overnight temperatures - overnight_lowest_temperature: - friendly_name: 'Overnight Lowest Temperature' - unique_id: 70bdffbe-dc55-4913-af70-a37a6db2bcaa - unit_of_measurement: '°F' - value_template: > - {% set ns = namespace(temps=[]) %} - {% set x = state_attr('weather.iron_nerd_weather_station_hourly','forecast') | count %} - {% set pd = state_attr('weather.iron_nerd_weather_station_hourly','forecast') %} - {% for i in range(0,x) %} - {% set hr = as_timestamp(as_local(as_datetime(pd[i].datetime))) | timestamp_custom('%H') | int %} - {% if hr in range(21,24) or hr in range(0,8) %} - {% if as_local(as_datetime(pd[i].datetime)) == now().replace(hour=hr, minute=00, second=0, microsecond=0) + timedelta(days=0) or - as_local(as_datetime(pd[i].datetime)) == now().replace(hour=hr, minute=00, second=0, microsecond=0) + timedelta(days=1) %} - {% set ns.temps = ns.temps + [pd[i].temperature] %} - {% endif %} + - name: 'Overnight Lowest Temperature' + unique_id: 70bdffbe-dc55-4913-af70-a37a6db2bcaa + unit_of_measurement: '°F' + state: > + {% set ns = namespace(temps=[]) %} + {% set x = state_attr('weather.iron_nerd_weather_station_hourly','forecast') | count %} + {% set pd = state_attr('weather.iron_nerd_weather_station_hourly','forecast') %} + {% for i in range(0,x) %} + {% set hr = as_timestamp(as_local(as_datetime(pd[i].datetime))) | timestamp_custom('%H') | int %} + {% if hr in range(21,24) or hr in range(0,8) %} + {% if as_local(as_datetime(pd[i].datetime)) == now().replace(hour=hr, minute=00, second=0, microsecond=0) + timedelta(days=0) or + as_local(as_datetime(pd[i].datetime)) == now().replace(hour=hr, minute=00, second=0, microsecond=0) + timedelta(days=1) %} + {% set ns.temps = ns.temps + [pd[i].temperature] %} {% endif %} - {% endfor %} - {{ ns.temps | min | int }} - icon_template: mdi:thermometer - rain_24hr: - friendly_name: 'Rain - 24 Hours' - unique_id: 26d2b945-f676-4c3c-8a4f-4b3b909d62dd - unit_of_measurement: 'in' - value_template: "{{ state_attr('sensor.rain_factor','day_0_rain') | float }}" - icon_template: mdi:weather-rainy - today_corrected_high_temp: - friendly_name: 'Today Corrected High Temp' - unique_id: c0c40ec1-605e-4739-a935-ac0a2937fab2 - unit_of_measurement: °F - value_template: "{{ states('input_number.today_corrected_high_temp') | int }}" - icon_template: mdi:thermometer-high + {% endif %} + {% endfor %} + {{ ns.temps | min | int }} + icon: mdi:thermometer + - name: 'Rain - 24 Hours' + unique_id: 26d2b945-f676-4c3c-8a4f-4b3b909d62dd + unit_of_measurement: 'in' + state: "{{ state_attr('sensor.rain_factor','day_0_rain') | float }}" + icon: mdi:weather-rainy + - name: 'Today Corrected High Temp' + unique_id: c0c40ec1-605e-4739-a935-ac0a2937fab2 + unit_of_measurement: °F + state: "{{ states('input_number.today_corrected_high_temp') | int }}" + icon: mdi:thermometer-high input_number: today_corrected_high_temp: diff --git a/packages/history_stats.yaml b/packages/history_stats.yaml new file mode 100644 index 0000000..85d7f58 --- /dev/null +++ b/packages/history_stats.yaml @@ -0,0 +1,121 @@ +sensor: +- platform: history_stats + name: Basement TV Time + entity_id: media_player.basement_tv + state: 'playing' + type: time + end: '{{ now() }}' + duration: + hours: 24 +- platform: history_stats + name: Basement TV Chromecast Time + entity_id: media_player.basement_tv_chromecast + state: 'playing' + type: time + end: '{{ now() }}' + duration: + hours: 24 +- platform: history_stats + name: Living Room TV Time + entity_id: media_player.living_room_tv + state: 'playing' + type: time + end: '{{ now() }}' + duration: + hours: 24 +- platform: history_stats + name: Living Room TV Chromecast Time + entity_id: media_player.living_room_tv_chromecast + state: 'playing' + type: time + end: '{{ now() }}' + duration: + hours: 24 +- platform: history_stats + name: Master Bedroom TV Time + entity_id: media_player.master_bedroom_firetv + state: 'playing' + type: time + end: '{{ now() }}' + duration: + hours: 24 +- platform: history_stats + name: Outside Lights + entity_id: light.outside_lights + state: 'on' + type: time + end: '{{ now() }}' + duration: + hours: 24 +- platform: history_stats + name: Windows Open Time + entity_id: sensor.windows_open + state: 'on' + type: time + end: '{{ now() }}' + duration: + hours: 24 +- platform: history_stats + name: Doors Open Time + entity_id: sensor.doors_open + state: 'on' + type: time + end: '{{ now() }}' + duration: + hours: 24 +- platform: history_stats + name: Emma A/C Compressor Time + entity_id: binary_sensor.emma_aircon_compressor + state: 'on' + type: time + end: '{{ now() }}' + duration: + hours: 24 +- platform: history_stats + name: Emma A/C Fan Time + entity_id: binary_sensor.emma_aircon_fan + state: 'on' + type: time + end: '{{ now() }}' + duration: + hours: 24 +- platform: history_stats + name: Master Bedroom A/C Compressor Time + entity_id: binary_sensor.master_bedroom_aircon_compressor + state: 'on' + type: time + end: '{{ now() }}' + duration: + hours: 24 +- platform: history_stats + name: Master Bedroom A/C Fan Time + entity_id: binary_sensor.master_bedroom_aircon_fan + state: 'on' + type: time + end: '{{ now() }}' + duration: + hours: 24 +- platform: history_stats + name: Master Bedroom Fan Time + entity_id: fan.master_bedroom_fan + state: 'on' + type: time + end: '{{ now() }}' + duration: + hours: 24 +- platform: history_stats + name: Kallen Fan Time + entity_id: fan.kallen_bedroom_fan + state: 'on' + type: time + end: '{{ now() }}' + duration: + hours: 24 +- platform: history_stats + name: Basement Fan Time + entity_id: fan.basement_fan + state: 'on' + type: time + end: '{{ now() }}' + duration: + hours: 24 \ No newline at end of file diff --git a/packages/kallen.yaml b/packages/kallen.yaml index b2fce43..12c931f 100644 --- a/packages/kallen.yaml +++ b/packages/kallen.yaml @@ -78,6 +78,21 @@ input_datetime: has_time: true icon: mdi:alarm +sensor: +- platform: rest + name: Kallen Tasks + method: GET + resource: 'https://api.todoist.com/sync/v9/projects/get_data' + params: + project_id: 2285969005 + headers: + Authorization: !secret todoist_api_token + value_template: '{{value_json[''project''][''id'']}}' + json_attributes: + - project + - items + scan_interval: 30 + automation: - id: 67fbdb66-b94b-4351-86de-a388d601e93c alias: Kallen Meds Handler diff --git a/packages/lighting_and_scenes.yaml b/packages/lighting_and_scenes.yaml index 52cbad5..b6812e4 100644 --- a/packages/lighting_and_scenes.yaml +++ b/packages/lighting_and_scenes.yaml @@ -303,135 +303,6 @@ input_text: tina_desk_selected_scene: name: Tina Desk Selected Scene -sensor: - - platform: template - sensors: - basement_studio_lights_brightness_actual: - friendly_name: "Basement Studio Lights - Brightness Actual" - unique_id: dee4dc84-a6a0-4150-903e-5b8bd436d962 - value_template: > - {% from 'lighting.jinja' import get_brightness_pct %} - {{ get_brightness_pct('light.basement_studio_lights') }} - availability_template: "{{ is_state('light.basement_studio_lights','on') }}" - unit_of_measurement: '%' - icon_template: mdi:brightness-percent - basement_studio_lights_brightness_intended: - friendly_name: "Basement Studio Lights - Brightness Intended" - unique_id: 3542077f-24c6-460c-a73f-fe7bc8413b81 - value_template: "{{ state_attr('switch.adaptive_lighting_basement_studio','brightness_pct') | float | round(2) }}" - availability_template: "{{ is_state('switch.adaptive_lighting_basement_studio','on') }}" - unit_of_measurement: '%' - icon_template: mdi:brightness-percent - basement_studio_lights_colortemp_actual: - friendly_name: "Basement Studio Lights - Colortemp Actual" - unique_id: 93cb2a2f-c8a7-44bf-813f-26ce349a072f - value_template: "{{ state_attr('light.basement_studio_lights','color_temp_kelvin') | int }}" - availability_template: "{{ is_state('light.basement_studio_lights','on') }}" - unit_of_measurement: 'K' - icon_template: mdi:thermometer-lines - basement_studio_lights_colortemp_intended: - friendly_name: "Basement Studio Lights - Colortemp Intended" - unique_id: 85d4b063-bae8-43c2-9fea-35820b13f26f - value_template: "{{ state_attr('switch.adaptive_lighting_basement_studio','color_temp_kelvin') | int }}" - availability_template: "{{ is_state('switch.adaptive_lighting_basement_studio','on') }}" - unit_of_measurement: 'K' - icon_template: mdi:thermometer-lines - basement_studio_lights_brightness_diff: - friendly_name: "Basement Studio Lights - Brightness Diff" - unique_id: ab24a44c-6c6b-4ae9-b256-52592b0503bb - value_template: > - {% set current = states('sensor.basement_studio_lights_brightness_actual') | float %} - {% set intended = states('sensor.basement_studio_lights_brightness_intended') | float %} - {{ (current - intended) | float | round(2) }} - availability_template: "{{ is_state('light.basement_studio_lights','on') and is_state('switch.adaptive_lighting_basement_studio','on') }}" - unit_of_measurement: '%' - icon_template: mdi:brightness-percent - basement_studio_lights_colortemp_diff: - friendly_name: "Basement Studio Lights - Colortemp Diff" - unique_id: fecf7d42-9a5c-471e-9af3-e1a330a6ae3e - value_template: > - {% set current = states('sensor.basement_studio_lights_colortemp_actual') | float %} - {% set intended = states('sensor.basement_studio_lights_colortemp_intended') | float %} - {{ (current - intended) | float | round(2) }} - availability_template: "{{ is_state('light.basement_studio_lights','on') and is_state('switch.adaptive_lighting_basement_studio','on') }}" - unit_of_measurement: 'K' - icon_template: mdi:thermometer-lines - living_room_lights_brightness_actual: - friendly_name: "Living Room Lights - Brightness Actual" - unique_id: e557022a-184f-4111-bb6a-6c0869cce42c - value_template: > - {% from 'lighting.jinja' import get_brightness_pct %} - {{ get_brightness_pct('light.living_room_lights') }} - availability_template: "{{ is_state('light.living_room_lights','on') }}" - unit_of_measurement: '%' - icon_template: mdi:brightness-percent - living_room_lights_brightness_intended: - friendly_name: "Living Room Lights - Brightness Intended" - unique_id: a758742f-6724-4920-a9d1-325fe4f02664 - value_template: "{{ state_attr('switch.adaptive_lighting_living_room','brightness_pct') | float | round(2) }}" - availability_template: "{{ is_state('switch.adaptive_lighting_living_room','on') }}" - unit_of_measurement: '%' - icon_template: mdi:brightness-percent - living_room_lights_colortemp_actual: - friendly_name: "Living Room Lights - Colortemp Actual" - unique_id: dbe08826-e113-4474-bbca-60d3c32a4b65 - value_template: "{{ state_attr('light.living_room_lights','color_temp_kelvin') | int }}" - availability_template: "{{ is_state('light.living_room_lights','on') }}" - unit_of_measurement: 'K' - icon_template: mdi:thermometer-lines - living_room_lights_colortemp_intended: - friendly_name: "Living Room Lights - Colortemp Intended" - unique_id: 8b974c03-ab5b-4b89-97bf-afee78fa1a40 - value_template: "{{ state_attr('switch.adaptive_lighting_living_room','color_temp_kelvin') | int }}" - availability_template: "{{ is_state('switch.adaptive_lighting_living_room','on') }}" - unit_of_measurement: 'K' - icon_template: mdi:thermometer-lines - living_room_lights_brightness_diff: - friendly_name: "Living Room Lights - Brightness Diff" - unique_id: 05f911d3-3b6a-4ca2-8181-5365707b2456 - value_template: > - {% set current = states('sensor.living_room_lights_brightness_actual') | float %} - {% set intended = states('sensor.living_room_lights_brightness_intended') | float %} - {{ (current - intended) | float | round(2) }} - availability_template: "{{ is_state('light.living_room_lights','on') and is_state('switch.adaptive_lighting_living_room','on') }}" - unit_of_measurement: '%' - icon_template: mdi:brightness-percent - living_room_lights_colortemp_diff: - friendly_name: "Living Room Lights - Colortemp Diff" - unique_id: d8fcaa26-d3dc-48d8-b4b9-9e701a1506a8 - value_template: > - {% set current = states('sensor.living_room_lights_colortemp_actual') | float %} - {% set intended = states('sensor.living_room_lights_colortemp_intended') | float %} - {{ (current - intended) | float | round(2) }} - availability_template: "{{ is_state('light.living_room_lights','on') and is_state('switch.adaptive_lighting_living_room','on') }}" - unit_of_measurement: 'K' - icon_template: mdi:thermometer-lines - basement_led_strip_resets: - friendly_name: "Basement LED Strip Resets" - unique_id: 0d016f09-a89b-4616-83b7-934580612d00 - value_template: "{{ states('input_number.basement_led_strip_resets') | int }}" - unit_of_measurement: 'resets' - icon_template: mdi:restore - tina_desk_scene: - friendly_name: Tina Desk Scene - unique_id: 0d94ba35-bc9d-40a2-aa77-776d26bc3538 - value_template: > - {% if is_state('input_boolean.give_me_darkness','on') %} - Night Mode - {% elif is_state('binary_sensor.early_night_mode','on') and is_state('input_boolean.give_me_darkness','off') %} - Evening Mode - {% else %} - Day Mode - {% endif %} - icon_template: > - {% if is_state('input_boolean.give_me_darkness','on') %} - mdi:weather-night - {% elif is_state('binary_sensor.early_night_mode','on') and is_state('input_boolean.give_me_darkness','off') %} - mdi:lightbulb-night - {% else %} - mdi:lightbulb - {% endif %} - template: - binary_sensor: - name: Basement Lights Sync Issue @@ -532,6 +403,118 @@ template: {% endif %} device_class: problem delay_on: "00:00:10" + - sensor: + - name: "Basement Studio Lights - Brightness Actual" + unique_id: dee4dc84-a6a0-4150-903e-5b8bd436d962 + state: > + {% from 'lighting.jinja' import get_brightness_pct %} + {{ get_brightness_pct('light.basement_studio_lights') }} + availability: "{{ is_state('light.basement_studio_lights','on') }}" + unit_of_measurement: '%' + icon: mdi:brightness-percent + - name: "Basement Studio Lights - Brightness Intended" + unique_id: 3542077f-24c6-460c-a73f-fe7bc8413b81 + state: "{{ state_attr('switch.adaptive_lighting_basement_studio','brightness_pct') | float | round(2) }}" + availability: "{{ is_state('switch.adaptive_lighting_basement_studio','on') }}" + unit_of_measurement: '%' + icon: mdi:brightness-percent + - name: "Basement Studio Lights - Colortemp Actual" + unique_id: 93cb2a2f-c8a7-44bf-813f-26ce349a072f + state: "{{ state_attr('light.basement_studio_lights','color_temp_kelvin') | int }}" + availability: "{{ is_state('light.basement_studio_lights','on') }}" + unit_of_measurement: 'K' + icon: mdi:thermometer-lines + - name: "Basement Studio Lights - Colortemp Intended" + unique_id: 85d4b063-bae8-43c2-9fea-35820b13f26f + state: "{{ state_attr('switch.adaptive_lighting_basement_studio','color_temp_kelvin') | int }}" + availability: "{{ is_state('switch.adaptive_lighting_basement_studio','on') }}" + unit_of_measurement: 'K' + icon: mdi:thermometer-lines + - name: "Basement Studio Lights - Brightness Diff" + unique_id: ab24a44c-6c6b-4ae9-b256-52592b0503bb + state: > + {% set current = states('sensor.basement_studio_lights_brightness_actual') | float %} + {% set intended = states('sensor.basement_studio_lights_brightness_intended') | float %} + {{ (current - intended) | float | round(2) }} + availability: "{{ is_state('light.basement_studio_lights','on') and is_state('switch.adaptive_lighting_basement_studio','on') }}" + unit_of_measurement: '%' + icon: mdi:brightness-percent + - name: "Basement Studio Lights - Colortemp Diff" + unique_id: fecf7d42-9a5c-471e-9af3-e1a330a6ae3e + state: > + {% set current = states('sensor.basement_studio_lights_colortemp_actual') | float %} + {% set intended = states('sensor.basement_studio_lights_colortemp_intended') | float %} + {{ (current - intended) | float | round(2) }} + availability: "{{ is_state('light.basement_studio_lights','on') and is_state('switch.adaptive_lighting_basement_studio','on') }}" + unit_of_measurement: 'K' + icon: mdi:thermometer-lines + - name: "Living Room Lights - Brightness Actual" + unique_id: e557022a-184f-4111-bb6a-6c0869cce42c + state: > + {% from 'lighting.jinja' import get_brightness_pct %} + {{ get_brightness_pct('light.living_room_lights') }} + availability: "{{ is_state('light.living_room_lights','on') }}" + unit_of_measurement: '%' + icon: mdi:brightness-percent + - name: "Living Room Lights - Brightness Intended" + unique_id: a758742f-6724-4920-a9d1-325fe4f02664 + state: "{{ state_attr('switch.adaptive_lighting_living_room','brightness_pct') | float | round(2) }}" + availability: "{{ is_state('switch.adaptive_lighting_living_room','on') }}" + unit_of_measurement: '%' + icon: mdi:brightness-percent + - name: "Living Room Lights - Colortemp Actual" + unique_id: dbe08826-e113-4474-bbca-60d3c32a4b65 + state: "{{ state_attr('light.living_room_lights','color_temp_kelvin') | int }}" + availability: "{{ is_state('light.living_room_lights','on') }}" + unit_of_measurement: 'K' + icon: mdi:thermometer-lines + - name: "Living Room Lights - Colortemp Intended" + unique_id: 8b974c03-ab5b-4b89-97bf-afee78fa1a40 + state: "{{ state_attr('switch.adaptive_lighting_living_room','color_temp_kelvin') | int }}" + availability: "{{ is_state('switch.adaptive_lighting_living_room','on') }}" + unit_of_measurement: 'K' + icon: mdi:thermometer-lines + - name: "Living Room Lights - Brightness Diff" + unique_id: 05f911d3-3b6a-4ca2-8181-5365707b2456 + state: > + {% set current = states('sensor.living_room_lights_brightness_actual') | float %} + {% set intended = states('sensor.living_room_lights_brightness_intended') | float %} + {{ (current - intended) | float | round(2) }} + availability: "{{ is_state('light.living_room_lights','on') and is_state('switch.adaptive_lighting_living_room','on') }}" + unit_of_measurement: '%' + icon: mdi:brightness-percent + - name: "Living Room Lights - Colortemp Diff" + unique_id: d8fcaa26-d3dc-48d8-b4b9-9e701a1506a8 + state: > + {% set current = states('sensor.living_room_lights_colortemp_actual') | float %} + {% set intended = states('sensor.living_room_lights_colortemp_intended') | float %} + {{ (current - intended) | float | round(2) }} + availability: "{{ is_state('light.living_room_lights','on') and is_state('switch.adaptive_lighting_living_room','on') }}" + unit_of_measurement: 'K' + icon: mdi:thermometer-lines + - name: "Basement LED Strip Resets" + unique_id: 0d016f09-a89b-4616-83b7-934580612d00 + state: "{{ states('input_number.basement_led_strip_resets') | int }}" + unit_of_measurement: 'resets' + icon: mdi:restore + - name: Tina Desk Scene + unique_id: 0d94ba35-bc9d-40a2-aa77-776d26bc3538 + state: > + {% if is_state('input_boolean.give_me_darkness','on') %} + Night Mode + {% elif is_state('binary_sensor.early_night_mode','on') and is_state('input_boolean.give_me_darkness','off') %} + Evening Mode + {% else %} + Day Mode + {% endif %} + icon: > + {% if is_state('input_boolean.give_me_darkness','on') %} + mdi:weather-night + {% elif is_state('binary_sensor.early_night_mode','on') and is_state('input_boolean.give_me_darkness','off') %} + mdi:lightbulb-night + {% else %} + mdi:lightbulb + {% endif %} switch: - platform: animated_scenes diff --git a/packages/presence.yaml b/packages/presence.yaml index 89b7480..31dfabc 100644 --- a/packages/presence.yaml +++ b/packages/presence.yaml @@ -153,6 +153,9 @@ binary_sensor: template: - binary_sensor: + - name: People Present + state: > + {{ is_state('person.tony_stork', 'home') or is_state('person.christina_stork', 'home') }} - name: "Tony Home" unique_id: 4f0d8c3d-dc49-4b7a-a1fc-5d286b4a954d state: "{{ is_state('device_tracker.tony_s_iphone', 'home') or is_state('device_tracker.life360_tony_stork','home') }}" diff --git a/packages/school.yaml b/packages/school.yaml index 7bdd8ea..c6183df 100644 --- a/packages/school.yaml +++ b/packages/school.yaml @@ -85,155 +85,150 @@ template: off {% endif %} icon: mdi:school - -sensor: - - platform: template - sensors: - school_start_days2go: - unique_id: 94a53e67-c00f-4cc7-9309-f9033a9482f9 - value_template: > - {% from 'easy_time.jinja' import count_the_days %} - {{ count_the_days('input_datetime.school_first_day') }} - attribute_templates: - date: "{{ state_attr('input_datetime.school_first_day','timestamp') | timestamp_custom('%B %d, %Y') }}" - unit_of_measurement: 'Days' - school_end_days2go: - unique_id: 589c44ec-7e16-4c72-a264-cdf54de409a9 - value_template: > - {% from 'easy_time.jinja' import count_the_days %} - {{ count_the_days('input_datetime.school_last_day') | int }} - attribute_templates: - date: "{{ state_attr('input_datetime.school_last_day','timestamp') | timestamp_custom('%B %d, %Y') }}" - unit_of_measurement: 'Days' - vacation_days2go: - unique_id: f1628d87-e58a-4d1a-8a49-a71f0a9ed3e5 - value_template: > - {% from 'easy_time.jinja' import count_the_days %} - {% if state_attr('calendar.vacation', 'start_time') %} - {{ count_the_days('calendar.vacation','start_time') }} - {% else %} - 999 - {% endif %} - unit_of_measurement: 'Days' - thanksgiving_break_days2go: - unique_id: 2381e9de-407b-4304-b09a-448c169bbaf2 - value_template: > - {% from 'easy_time.jinja' import count_the_days %} - {{ count_the_days('input_datetime.thanksgiving_break_start') }} - attribute_templates: - date: "{{ state_attr('input_datetime.thanksgiving_break_start','timestamp') | timestamp_custom('%B %d, %Y') }}" - unit_of_measurement: 'Days' - christmas_break_days2go: - unique_id: 851700f7-c593-4db8-ba4f-001cbffcfc4a - value_template: > - {% from 'easy_time.jinja' import count_the_days %} - {{ count_the_days('input_datetime.christmas_break_start') }} - attribute_templates: - date: "{{ state_attr('input_datetime.christmas_break_start','timestamp') | timestamp_custom('%B %d, %Y') }}" - unit_of_measurement: 'Days' - spring_break_days2go: - unique_id: cec6e687-8999-4548-991c-02ba546335f5 - value_template: > - {% from 'easy_time.jinja' import count_the_days %} - {{ count_the_days('input_datetime.spring_break_start') }} - attribute_templates: - date: "{{ state_attr('input_datetime.spring_break_start','timestamp') | timestamp_custom('%B %d, %Y') }}" - unit_of_measurement: 'Days' - kallen_lunch_menu_week: - friendly_name: Lunch Menu Week - unique_id: 62ba9dcb-3cd3-4875-8e6f-86bebf542c37 - value_template: > - {% if is_state('calendar.elementary_school_lunch','on') %} - {{ state_attr('calendar.elementary_school_lunch','message') }} - {% else %} - No Menu - {% endif %} - icon_template: > - {% if is_state_attr('calendar.elementary_school_lunch','message','First Menu') %} - mdi:numeric-1-circle - {% elif is_state_attr('calendar.elementary_school_lunch','message','Second Menu') %} - mdi:numeric-2-circle - {% elif is_state_attr('calendar.elementary_school_lunch','message','Third Menu') %} - mdi:numeric-3-circle - {% elif is_state_attr('calendar.elementary_school_lunch','message','Fourth Menu') %} - mdi:numeric-4-circle - {% else %} - mdi:calendar-end - {% endif %} - kallen_lunch_menu_items: - friendly_name: Lunch Menu Items - unique_id: a2cb62d7-ae9f-4bab-81c1-81f2006391b2 - icon_template: > + - sensor: + - name: School Start Days2go + unique_id: 94a53e67-c00f-4cc7-9309-f9033a9482f9 + state: > + {% from 'easy_time.jinja' import count_the_days %} + {{ count_the_days('input_datetime.school_first_day') }} + attributes: + date: "{{ state_attr('input_datetime.school_first_day','timestamp') | timestamp_custom('%B %d, %Y') }}" + unit_of_measurement: 'Days' + - name: School End Days2go + unique_id: 589c44ec-7e16-4c72-a264-cdf54de409a9 + state: > + {% from 'easy_time.jinja' import count_the_days %} + {{ count_the_days('input_datetime.school_last_day') | int }} + attributes: + date: "{{ state_attr('input_datetime.school_last_day','timestamp') | timestamp_custom('%B %d, %Y') }}" + unit_of_measurement: 'Days' + - name: Vacation Days2go + unique_id: f1628d87-e58a-4d1a-8a49-a71f0a9ed3e5 + state: > + {% from 'easy_time.jinja' import count_the_days %} + {% if state_attr('calendar.vacation', 'start_time') %} + {{ count_the_days('calendar.vacation','start_time') }} + {% else %} + 999 + {% endif %} + unit_of_measurement: 'Days' + - name: Thanksgiving Break Days2go + unique_id: 2381e9de-407b-4304-b09a-448c169bbaf2 + state: > + {% from 'easy_time.jinja' import count_the_days %} + {{ count_the_days('input_datetime.thanksgiving_break_start') }} + attributes: + date: "{{ state_attr('input_datetime.thanksgiving_break_start','timestamp') | timestamp_custom('%B %d, %Y') }}" + unit_of_measurement: 'Days' + - name: Christmas Break Days2go + unique_id: 851700f7-c593-4db8-ba4f-001cbffcfc4a + state: > + {% from 'easy_time.jinja' import count_the_days %} + {{ count_the_days('input_datetime.christmas_break_start') }} + attributes: + date: "{{ state_attr('input_datetime.christmas_break_start','timestamp') | timestamp_custom('%B %d, %Y') }}" + unit_of_measurement: 'Days' + - name: Spring Break Days2go + unique_id: cec6e687-8999-4548-991c-02ba546335f5 + state: > + {% from 'easy_time.jinja' import count_the_days %} + {{ count_the_days('input_datetime.spring_break_start') }} + attributes: + date: "{{ state_attr('input_datetime.spring_break_start','timestamp') | timestamp_custom('%B %d, %Y') }}" + unit_of_measurement: 'Days' + - name: Lunch Menu Week + unique_id: 62ba9dcb-3cd3-4875-8e6f-86bebf542c37 + state: > + {% if is_state('calendar.elementary_school_lunch','on') %} + {{ state_attr('calendar.elementary_school_lunch','message') }} + {% else %} + No Menu + {% endif %} + icon: > + {% if is_state_attr('calendar.elementary_school_lunch','message','First Menu') %} + mdi:numeric-1-circle + {% elif is_state_attr('calendar.elementary_school_lunch','message','Second Menu') %} + mdi:numeric-2-circle + {% elif is_state_attr('calendar.elementary_school_lunch','message','Third Menu') %} + mdi:numeric-3-circle + {% elif is_state_attr('calendar.elementary_school_lunch','message','Fourth Menu') %} + mdi:numeric-4-circle + {% else %} + mdi:calendar-end + {% endif %} + - name: Lunch Menu Items + unique_id: a2cb62d7-ae9f-4bab-81c1-81f2006391b2 + icon: > + {% set week = states('sensor.kallen_lunch_menu_week') %} + {% if week == 'First Menu' %} + mdi:numeric-1-circle + {% elif week == 'Second Menu' %} + mdi:numeric-2-circle + {% elif week == 'Third Menu' %} + mdi:numeric-3-circle + {% elif week == 'Fourth Menu' %} + mdi:numeric-4-circle + {% else %} + mdi:calendar-end + {% endif %} + state: > + {% from 'formatting.jinja' import cleanup %} + {%- macro getReport() -%} {% set week = states('sensor.kallen_lunch_menu_week') %} + {% set dow = now().strftime('%A') %} {% if week == 'First Menu' %} - mdi:numeric-1-circle - {% elif week == 'Second Menu' %} - mdi:numeric-2-circle - {% elif week == 'Third Menu' %} - mdi:numeric-3-circle - {% elif week == 'Fourth Menu' %} - mdi:numeric-4-circle - {% else %} - mdi:calendar-end - {% endif %} - value_template: > - {% from 'formatting.jinja' import cleanup %} - {%- macro getReport() -%} - {% set week = states('sensor.kallen_lunch_menu_week') %} - {% set dow = now().strftime('%A') %} - {% if week == 'First Menu' %} - {% if dow == 'Monday' %} - Sloppy Joe, tomatoes or dip, green beans, mixed fruit, and milk. - {% elif dow == 'Tuesday' %} - Beef, taco salad, refried beans, spanish rice, peaches, and milk. - {% elif dow == 'Wednesday' %} - Optionally, Papa Johns Pizza. Otherwise, pulled pork, steamed broccoli, carrots, apples, and milk. - {% elif dow == 'Thursday' %} - Beef Stroganoff, steamed cauliflower, cucumbers, fresh fruit, and milk. - {% elif dow == 'Friday' %} - Hamburger, spinach salad, oven potatoes, applesauce, and milk. - {% endif %} - {% elif week == 'Second Menu' %} - {% if dow == 'Monday' %} - Popcorn chicken, mashed potatoes, corn, pears, bread, and milk. - {% elif dow == 'Tuesday' %} - Lasagna, garlic bread, celery, tomatoes, apple crisp, and milk. - {% elif dow == 'Wednesday' %} - Optionally, Papa Johns Pizza. Otherwise, hot ham and cheese, spinach salad, broccoli, fresh fruit, and milk. - {% elif dow == 'Thursday' %} - Turkey and noodles, mashed potatoes, carrots, peaches, bread, and milk. - {% elif down == 'Friday' %} - Hot dog with chili sauce, oven potatoes, backed beans, mixed fruit, and milk. - {% endif %} - {% elif week == 'Third Menu' %} - {% if dow == 'Monday' %} - Bosco sticks with pizza sauce, black bean salad, oven potatoes, peach crisp, and milk. - {% elif dow == 'Tuesday' %} - Toasted cheese, tomato soup, mixed vegetables, fresh fruit, treat, and milk. - {% elif dow == 'Wednesday' %} - Optionally, Papa Johns Pizza. Otherwise, popcorn chicken, mashed potatoes, carrots, apples, corn bread, and milk. - {% elif dow == 'Thursday' %} - Spaghetti, broccoli, green beans, fresh fruit, breadsticks, and milk. - {% elif dow == 'Friday' %} - Cold cut sub, spinach salad, tomatoes, pears, and milk. - {% endif %} - {% elif week == 'Fourth Menu' %} - {% if dow == 'Monday' %} - Chicken patty, baked beans, celery, mixed fruit, and milk. - {% elif dow == 'Tuesday' %} - Omelet or french toast, sausage, hash browns, tomatoes, orange, and milk. - {% elif dow == 'Wednesday' %} - Optionally, Papa Johns Pizza. Otherwise, hamburger, green beans, cauliflower, apple crisp, and milk. - {% elif dow == 'Thursday' %} - Mac and cheese, steamed broccoli, carrots, pears, bread, and milk. - {% elif dow == 'Friday' %} - Hot dog, spinach salad, oven potatoes, fresh fruit, and milk. - {% endif %} - {% else %} - No menu for the current day. + {% if dow == 'Monday' %} + Sloppy Joe, tomatoes or dip, green beans, mixed fruit, and milk. + {% elif dow == 'Tuesday' %} + Beef, taco salad, refried beans, spanish rice, peaches, and milk. + {% elif dow == 'Wednesday' %} + Optionally, Papa Johns Pizza. Otherwise, pulled pork, steamed broccoli, carrots, apples, and milk. + {% elif dow == 'Thursday' %} + Beef Stroganoff, steamed cauliflower, cucumbers, fresh fruit, and milk. + {% elif dow == 'Friday' %} + Hamburger, spinach salad, oven potatoes, applesauce, and milk. {% endif %} - {%- endmacro -%} - {{- cleanup(getReport()) -}} + {% elif week == 'Second Menu' %} + {% if dow == 'Monday' %} + Popcorn chicken, mashed potatoes, corn, pears, bread, and milk. + {% elif dow == 'Tuesday' %} + Lasagna, garlic bread, celery, tomatoes, apple crisp, and milk. + {% elif dow == 'Wednesday' %} + Optionally, Papa Johns Pizza. Otherwise, hot ham and cheese, spinach salad, broccoli, fresh fruit, and milk. + {% elif dow == 'Thursday' %} + Turkey and noodles, mashed potatoes, carrots, peaches, bread, and milk. + {% elif down == 'Friday' %} + Hot dog with chili sauce, oven potatoes, backed beans, mixed fruit, and milk. + {% endif %} + {% elif week == 'Third Menu' %} + {% if dow == 'Monday' %} + Bosco sticks with pizza sauce, black bean salad, oven potatoes, peach crisp, and milk. + {% elif dow == 'Tuesday' %} + Toasted cheese, tomato soup, mixed vegetables, fresh fruit, treat, and milk. + {% elif dow == 'Wednesday' %} + Optionally, Papa Johns Pizza. Otherwise, popcorn chicken, mashed potatoes, carrots, apples, corn bread, and milk. + {% elif dow == 'Thursday' %} + Spaghetti, broccoli, green beans, fresh fruit, breadsticks, and milk. + {% elif dow == 'Friday' %} + Cold cut sub, spinach salad, tomatoes, pears, and milk. + {% endif %} + {% elif week == 'Fourth Menu' %} + {% if dow == 'Monday' %} + Chicken patty, baked beans, celery, mixed fruit, and milk. + {% elif dow == 'Tuesday' %} + Omelet or french toast, sausage, hash browns, tomatoes, orange, and milk. + {% elif dow == 'Wednesday' %} + Optionally, Papa Johns Pizza. Otherwise, hamburger, green beans, cauliflower, apple crisp, and milk. + {% elif dow == 'Thursday' %} + Mac and cheese, steamed broccoli, carrots, pears, bread, and milk. + {% elif dow == 'Friday' %} + Hot dog, spinach salad, oven potatoes, fresh fruit, and milk. + {% endif %} + {% else %} + No menu for the current day. + {% endif %} + {%- endmacro -%} + {{- cleanup(getReport()) -}} # - platform: rest diff --git a/packages/security.yaml b/packages/security.yaml index 2afba4e..f1231ba 100644 --- a/packages/security.yaml +++ b/packages/security.yaml @@ -126,96 +126,91 @@ alarm_control_panel: who: living_room call_security_not_armed: 1 -sensor: - - platform: template - sensors: - windows_open: - friendly_name: "Windows" - unique_id: 780770d2-8b5a-4c96-aee4-459281cc3471 - unit_of_measurement: 'open' - value_template: >- - {% set windows = [ - states.binary_sensor.front_window_near, - states.binary_sensor.kitchen_big_window, - states.binary_sensor.mud_room_window, - states.binary_sensor.stairway_window_lower, - ] %} - {% set windows_open = windows | selectattr('state','eq','on') | list | count %} - {{ windows_open }} - icon_template: >- - {% set windows = [ - states.binary_sensor.front_window_near, - states.binary_sensor.kitchen_big_window, - states.binary_sensor.mud_room_window, - states.binary_sensor.stairway_window_lower, - ] %} - {% set windows_open = windows | selectattr('state','eq','on') | list | count %} - {% if windows_open == 0 %} - mdi:window-closed - {% else %} - mdi:window-open - {% endif %} - doors_open: #! This sensor is only for exterior doors, and interior doors that are NOT excluded from security protocols - friendly_name: "Doors" - unique_id: 61b1a98a-51a4-4faa-947d-7883de2430c0 - unit_of_measurement: 'open' - value_template: >- - {% set doors = [ - states.binary_sensor.front_door, - states.binary_sensor.back_door, - ] %} - {% set doors_open = doors | selectattr('state','eq','on') | list | count %} - {{ doors_open }} - icon_template: >- - {% set doors = [ - states.binary_sensor.front_door, - states.binary_sensor.back_door, - ] %} - {% set doors_open = doors | selectattr('state','eq','on') | list | count %} - {% if doors_open == 0 %} - mdi:door-closed - {% else %} - mdi:door-open - {% endif %} - interior_doors_open: # This sensor is not used for security purposes, only for information - friendly_name: "Interior Doors" - unique_id: 772aa056-881a-4778-ba5b-19e46afc107a - unit_of_measurement: 'open' - value_template: >- - {% set doors = [ - states.binary_sensor.basement_studio_door, - states.binary_sensor.downstairs_bathroom_door, - ] %} - {% set doors_open = doors | selectattr('state','eq','on') | list | count %} - {{ doors_open }} - icon_template: >- - {% set doors = [ - states.binary_sensor.basement_studio_door, - states.binary_sensor.downstairs_bathroom_door, - ] %} - {% set doors_open = doors | selectattr('state','eq','on') | list | count %} - {% if doors_open == 0 %} - mdi:door-closed - {% else %} - mdi:door-open - {% endif %} - total_faults: - friendly_name: Faults - unique_id: 1629a83a-a46c-4041-9e49-8e54c5195388 - unit_of_measurement: 'open' - value_template: >- - {% set windows_open = states('sensor.windows_open') | int %} - {% set doors_open = states('sensor.doors_open') | int %} - {{ doors_open + windows_open }} - icon_template: >- - {% set windows_open = states('sensor.windows_open') | int %} - {% set doors_open = states('sensor.doors_open') | int %} - {% set faults = ( doors_open + windows_open ) %} - {% if faults == 0 %} - mdi:shield-home - {% else %} - mdi:shield-off - {% endif %} +template: + - sensor: + - name: "Windows" + unique_id: 780770d2-8b5a-4c96-aee4-459281cc3471 + unit_of_measurement: 'open' + state: >- + {% set windows = [ + states.binary_sensor.front_window_near, + states.binary_sensor.kitchen_big_window, + states.binary_sensor.mud_room_window, + states.binary_sensor.stairway_window_lower, + ] %} + {% set windows_open = windows | selectattr('state','eq','on') | list | count %} + {{ windows_open }} + icon: >- + {% set windows = [ + states.binary_sensor.front_window_near, + states.binary_sensor.kitchen_big_window, + states.binary_sensor.mud_room_window, + states.binary_sensor.stairway_window_lower, + ] %} + {% set windows_open = windows | selectattr('state','eq','on') | list | count %} + {% if windows_open == 0 %} + mdi:window-closed + {% else %} + mdi:window-open + {% endif %} + - name: "Doors" #! This sensor is only for exterior doors, and interior doors that are NOT excluded from security protocols + unique_id: 61b1a98a-51a4-4faa-947d-7883de2430c0 + unit_of_measurement: 'open' + state: >- + {% set doors = [ + states.binary_sensor.front_door, + states.binary_sensor.back_door, + ] %} + {% set doors_open = doors | selectattr('state','eq','on') | list | count %} + {{ doors_open }} + icon: >- + {% set doors = [ + states.binary_sensor.front_door, + states.binary_sensor.back_door, + ] %} + {% set doors_open = doors | selectattr('state','eq','on') | list | count %} + {% if doors_open == 0 %} + mdi:door-closed + {% else %} + mdi:door-open + {% endif %} + - name: "Interior Doors" # This sensor is not used for security purposes, only for information + unique_id: 772aa056-881a-4778-ba5b-19e46afc107a + unit_of_measurement: 'open' + state: >- + {% set doors = [ + states.binary_sensor.basement_studio_door, + states.binary_sensor.downstairs_bathroom_door, + ] %} + {% set doors_open = doors | selectattr('state','eq','on') | list | count %} + {{ doors_open }} + icon: >- + {% set doors = [ + states.binary_sensor.basement_studio_door, + states.binary_sensor.downstairs_bathroom_door, + ] %} + {% set doors_open = doors | selectattr('state','eq','on') | list | count %} + {% if doors_open == 0 %} + mdi:door-closed + {% else %} + mdi:door-open + {% endif %} + - name: Faults + unique_id: 1629a83a-a46c-4041-9e49-8e54c5195388 + unit_of_measurement: 'open' + state: >- + {% set windows_open = states('sensor.windows_open') | int %} + {% set doors_open = states('sensor.doors_open') | int %} + {{ doors_open + windows_open }} + icon: >- + {% set windows_open = states('sensor.windows_open') | int %} + {% set doors_open = states('sensor.doors_open') | int %} + {% set faults = ( doors_open + windows_open ) %} + {% if faults == 0 %} + mdi:shield-home + {% else %} + mdi:shield-off + {% endif %} automation: - id: 51819f36-2407-496c-afcd-ae160d747f0a diff --git a/packages/sysmon.yaml b/packages/sysmon.yaml index e7bcd66..993bd45 100644 --- a/packages/sysmon.yaml +++ b/packages/sysmon.yaml @@ -50,28 +50,6 @@ command_line: scan_interval: 20000 unit_of_measurement: '' -sensor: - - platform: template - sensors: - min_ping: - friendly_name: "Min Ping" - unique_id: ddcb9f6f-7c94-41fe-9453-2a2205b078e0 - value_template: "{{ state_attr('binary_sensor.internet','round_trip_time_min') }}" - availability_template: "{{ is_state('binary_sensor.internet','on') }}" - unit_of_measurement: "ms" - avg_ping: - friendly_name: "Avg Ping" - unique_id: 79a13c64-7508-48de-8b44-2a23c59917c8 - value_template: "{{ state_attr('binary_sensor.internet','round_trip_time_avg') }}" - availability_template: "{{ is_state('binary_sensor.internet','on') }}" - unit_of_measurement: "ms" - max_ping: - friendly_name: "Max Ping" - unique_id: c9c71ab6-c7fa-4425-a4ed-768d60e93781 - value_template: "{{ state_attr('binary_sensor.internet','round_trip_time_max') }}" - availability_template: "{{ is_state('binary_sensor.internet','on') }}" - unit_of_measurement: "ms" - mqtt: sensor: - name: "Uptime Kuma Status" @@ -127,6 +105,22 @@ template: state: "{{ states('sensor.asus_laptop_system_idle_time') | int > 1800 }}" attributes: idle_time: "{{ states('sensor.asus_laptop_system_idle_time') }}s" + - sensor: + - name: "Min Ping" + unique_id: ddcb9f6f-7c94-41fe-9453-2a2205b078e0 + state: "{{ state_attr('binary_sensor.internet','round_trip_time_min') }}" + availability: "{{ is_state('binary_sensor.internet','on') }}" + unit_of_measurement: "ms" + - name: "Avg Ping" + unique_id: 79a13c64-7508-48de-8b44-2a23c59917c8 + state: "{{ state_attr('binary_sensor.internet','round_trip_time_avg') }}" + availability: "{{ is_state('binary_sensor.internet','on') }}" + unit_of_measurement: "ms" + - name: "Max Ping" + unique_id: c9c71ab6-c7fa-4425-a4ed-768d60e93781 + state: "{{ state_attr('binary_sensor.internet','round_trip_time_max') }}" + availability: "{{ is_state('binary_sensor.internet','on') }}" + unit_of_measurement: "ms" # - platform: influxdb # host: 192.168.1.26 diff --git a/packages/time.yaml b/packages/time.yaml index ad9d2d4..a58dbbd 100644 --- a/packages/time.yaml +++ b/packages/time.yaml @@ -1,3 +1,13 @@ +sensor: +- platform: time_date + display_options: + - 'time' + - 'date' + - 'date_time' + - 'time_date' + - 'time_utc' + - 'beat' + intent_script: SetTimer: action: diff --git a/packages/tony.yaml b/packages/tony.yaml index c11ac86..86c0721 100644 --- a/packages/tony.yaml +++ b/packages/tony.yaml @@ -38,6 +38,21 @@ input_datetime: has_time: true icon: mdi:medical-bag +sensor: +- platform: rest + name: Home Tech + method: GET + resource: 'https://api.todoist.com/sync/v9/projects/get_data' + params: + project_id: 2285967948 + headers: + Authorization: !secret todoist_api_token + value_template: '{{value_json[''project''][''id'']}}' + json_attributes: + - project + - items + scan_interval: 30 + automation: - id: c583aebf-4500-412c-9436-e1b534ba1a44 alias: Tony Meds Handler diff --git a/packages/twitch.yaml b/packages/twitch.yaml new file mode 100644 index 0000000..34c89f4 --- /dev/null +++ b/packages/twitch.yaml @@ -0,0 +1,10 @@ +sensor: +- platform: twitch_helix + client_id: !secret twitch_client_id + client_secret: !secret twitch_client_secret + own_channel: ironnerd24 + thumbnail_dimensions: 320x180 + entity_prefix: Twitch_ + channels: + - ironnerd24 + - Xia_P988 diff --git a/packages/weatheralerts.yaml b/packages/weatheralerts.yaml index c20b08d..cf6cf61 100644 --- a/packages/weatheralerts.yaml +++ b/packages/weatheralerts.yaml @@ -47,1050 +47,1056 @@ ################################################################################ ## sensor ## -sensor: - - platform: template - sensors: - weatheralerts_active_alerts: - ## You can add your county or city name to friendly_name for personalization - ## For example: Weather Alerts for YourCountyName - friendly_name: Weather Alerts - unique_id: 32371252-89ff-47b2-86e3-32ef92a05205 - unit_of_measurement: Alerts - icon_template: mdi:alert-rhombus - value_template: >- - {% set alerts_total = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0 %} - {% set alerts_total.count = alerts_total.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ alerts_total.count }} - attribute_templates: - warning_count: >- - {% set warnings = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if 'warning' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} - {% set warnings.count = warnings.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ warnings.count }} - tornado_warning_count: >- - {% set warnings = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if 'tornado warning' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} - {% set warnings.count = warnings.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ warnings.count }} - freeze_warning_count: >- - {% set warnings = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if 'freeze warning' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} - {% set warnings.count = warnings.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ warnings.count }} - tstorm_warning_count: >- - {% set warnings = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if 'thunderstorm warning' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} - {% set warnings.count = warnings.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ warnings.count }} - flood_warning_count: >- - {% set warnings = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if 'flood warning' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} - {% set warnings.count = warnings.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ warnings.count }} - watch_count: >- - {% set watches = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if 'watch' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} - {% set watches.count = watches.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ watches.count }} - tornado_watch_count: >- - {% set watches = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if 'tornado watch' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} - {% set watches.count = watches.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ watches.count }} - tstorm_watch_count: >- - {% set watches = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if 'thunderstorm watch' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} - {% set watches.count = watches.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ watches.count }} - flood_watch_count: >- - {% set watches = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if 'flood watch' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} - {% set watches.count = watches.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ watches.count }} - advisory_count: >- - {% set advisories = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if 'advisory' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} - {% set advisories.count = advisories.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ advisories.count }} - statement_count: >- - {% set statements = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if 'statement' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} - {% set statements.count = statements.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ statements.count }} - outlook_count: >- - {% set outlooks = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if 'outlook' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} - {% set outlooks.count = outlooks.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ outlooks.count }} - alert_count: >- - {% set alerts = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if 'alert' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} - {% set alerts.count = alerts.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ alerts.count }} - message_count: >- - {% set messages = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if 'message' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} - {% set messages.count = messages.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ messages.count }} - important_count: >- - {% set important = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if ('emergency' in alert.event.lower() or 'danger' in alert.event.lower() or 'immediate' in alert.event.lower()) and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} - {% set important.count = important.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ important.count }} - test_count: >- - {% set test = namespace(count=0) %} - {% if (state_attr('sensor.weatheralerts', 'alerts')) %} - {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} - {% if 'Test' in alert.event and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} - {% set test.count = test.count + 1 %} - {% endif %} - {% endfor %} - {% endif %} - {{ test.count }} - weatheralerts_alert_1: - friendly_name: Weather Alert 1 - unique_id: 752fb9ae-a61f-41f8-8882-f8d025b892e3 - icon_template: mdi:alert-rhombus - value_template: >- - {% if (states('sensor.weatheralerts') != 'unavailable') and (state_attr('sensor.weatheralerts', 'alerts')[0] != null) or ((states('sensor.weatheralerts') == 'unavailable') and (as_timestamp(state_attr('sensor.weatheralerts', 'alerts')[0].endsExpires) - as_timestamp(now()) > 0)) %} - on - {% else %} - off +template: + - sensor: + ## You can add your county or city name to sensorname for personalization + ## For example: Weather Alerts for YourCountyName + - name: Weather Alerts + unique_id: 32371252-89ff-47b2-86e3-32ef92a05205 + unit_of_measurement: Alerts + icon: mdi:alert-rhombus + state: >- + {% set alerts_total = namespace(count=0) %} + {% if (state_attr('sensor.weatheralerts', 'alerts')) %} + {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} + {% if as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0 %} + {% set alerts_total.count = alerts_total.count + 1 %} + {% endif %} + {% endfor %} {% endif %} - attribute_templates: - alert_id: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].id }} - {% else %} - None - {% endif %} - alert_event: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].event }} - {% else %} - None - {% endif %} - alert_area: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].area }} - {% else %} - None - {% endif %} - alert_NWSheadline: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') }} - {% else %} - None - {% endif %} - alert_description: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].description }} - {% else %} - None - {% endif %} - alert_messageType: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].messageType }} - {% else %} - None - {% endif %} - alert_status: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].status }} - {% else %} - None - {% endif %} - alert_category: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].category }} - {% else %} - None - {% endif %} - alert_urgency: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].urgency }} - {% else %} - None - {% endif %} - alert_severity: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].severity }} - {% else %} - None - {% endif %} - alert_certainty: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].certainty }} - {% else %} - None - {% endif %} - alert_response: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].response }} - {% else %} - None - {% endif %} - alert_instruction: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].instruction }} - {% else %} - None - {% endif %} - alert_sent: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].sent }} - {% else %} - None - {% endif %} - alert_effective: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].effective }} - {% else %} - None - {% endif %} - alert_onset: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].onset }} - {% else %} - None - {% endif %} - alert_expires: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].expires }} - {% else %} - None - {% endif %} - alert_title: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].title }} - {% else %} - None - {% endif %} - alert_zoneid: >- - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].zoneid }} - {% else %} - None - {% endif %} - display_title: > - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].title }} - {% else %} - None - {% endif %} - display_message: > - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {% if states.sensor.weatheralerts.attributes.alerts[0].NWSheadline != "null" %} - {{ states.sensor.weatheralerts.attributes.alerts[0].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') }}
+ {{ alerts_total.count }} + attributes: + warning_count: >- + {% set warnings = namespace(count=0) %} + {% if (state_attr('sensor.weatheralerts', 'alerts')) %} + {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} + {% if 'warning' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} + {% set warnings.count = warnings.count + 1 %} {% endif %} -
{{ states.sensor.weatheralerts.attributes.alerts[0].description | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }}
- {% if states.sensor.weatheralerts.attributes.alerts[0].instruction != None %} - {{ states.sensor.weatheralerts.attributes.alerts[0].instruction | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }}
- {% endif %} -
Where : {{ state_attr('sensor.weatheralerts', 'friendly_name') }} -
Effective: {{ states.sensor.weatheralerts.attributes.alerts[0].effective }} - {%- if states.sensor.weatheralerts.attributes.alerts[0].ends != None %} -
Ends: {{ states.sensor.weatheralerts.attributes.alerts[0].ends }} - {%- endif %} -
Expires: {{ states.sensor.weatheralerts.attributes.alerts[0].expires }} - {% else %} - None - {% endif %} - spoken_title: > - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - Attention!!! Weather alert for {{ state_attr('sensor.weatheralerts', 'friendly_name') }}. A {{ states.sensor.weatheralerts.attributes.alerts[0].title }}. {{ states.sensor.weatheralerts.attributes.alerts[0].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') | capitalize }}. - {% else %} - None - {% endif %} - spoken_message: > - {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[0].description | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }} - {% if states.sensor.weatheralerts.attributes.alerts[0].instruction != None %} - {{ states.sensor.weatheralerts.attributes.alerts[0].instruction | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }} - {% endif %} - {% else %} - None - {% endif %} - weatheralerts_alert_2: - friendly_name: Weather Alert 2 - unique_id: 4ecaa8ce-65ec-429f-956c-ac478f1c3d6f - icon_template: mdi:alert-rhombus - value_template: >- - {% if (states('sensor.weatheralerts') != 'unavailable') and (state_attr('sensor.weatheralerts', 'alerts')[1] != null) or ((states('sensor.weatheralerts') == 'unavailable') and (as_timestamp(state_attr('sensor.weatheralerts', 'alerts')[1].endsExpires) - as_timestamp(now()) > 0)) %} - on - {% else %} - off + {% endfor %} {% endif %} - attribute_templates: - alert_id: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].id }} - {% else %} - None - {% endif %} - alert_event: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].event }} - {% else %} - None - {% endif %} - alert_area: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].area }} - {% else %} - None - {% endif %} - alert_NWSheadline: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') }} - {% else %} - None - {% endif %} - alert_description: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].description }} - {% else %} - None - {% endif %} - alert_messageType: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].messageType }} - {% else %} - None - {% endif %} - alert_status: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].status }} - {% else %} - None - {% endif %} - alert_category: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].category }} - {% else %} - None - {% endif %} - alert_urgency: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].urgency }} - {% else %} - None - {% endif %} - alert_severity: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].severity }} - {% else %} - None - {% endif %} - alert_certainty: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].certainty }} - {% else %} - None - {% endif %} - alert_response: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].response }} - {% else %} - None - {% endif %} - alert_instruction: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].instruction }} - {% else %} - None - {% endif %} - alert_sent: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].sent }} - {% else %} - None - {% endif %} - alert_effective: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].effective }} - {% else %} - None - {% endif %} - alert_onset: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].onset }} - {% else %} - None - {% endif %} - alert_expires: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].expires }} - {% else %} - None - {% endif %} - alert_title: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].title }} - {% else %} - None - {% endif %} - alert_zoneid: >- - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].zoneid }} - {% else %} - None - {% endif %} - display_title: > - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].title }} - {% else %} - None - {% endif %} - display_message: > - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {% if states.sensor.weatheralerts.attributes.alerts[1].NWSheadline != "null" %} - {{ states.sensor.weatheralerts.attributes.alerts[1].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') }}
+ {{ warnings.count }} + tornado_warning_count: >- + {% set warnings = namespace(count=0) %} + {% if (state_attr('sensor.weatheralerts', 'alerts')) %} + {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} + {% if 'tornado warning' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} + {% set warnings.count = warnings.count + 1 %} {% endif %} -
{{ states.sensor.weatheralerts.attributes.alerts[1].description | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }}
- {% if states.sensor.weatheralerts.attributes.alerts[1].instruction != None %} - {{ states.sensor.weatheralerts.attributes.alerts[1].instruction | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }}
- {% endif %} -
Where : {{ state_attr('sensor.weatheralerts', 'friendly_name') }} -
Effective: {{ states.sensor.weatheralerts.attributes.alerts[1].effective }} - {%- if states.sensor.weatheralerts.attributes.alerts[1].ends != None %} -
Ends: {{ states.sensor.weatheralerts.attributes.alerts[1].ends }} - {%- endif %} -
Expires: {{ states.sensor.weatheralerts.attributes.alerts[1].expires }} - {% else %} - None - {% endif %} - spoken_title: > - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - Attention!!! Weather alert for {{ state_attr('sensor.weatheralerts', 'friendly_name') }}. A {{ states.sensor.weatheralerts.attributes.alerts[1].title }}. {{ states.sensor.weatheralerts.attributes.alerts[1].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') | capitalize }}. - {% else %} - None - {% endif %} - spoken_message: > - {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[1].description | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }} - {% if states.sensor.weatheralerts.attributes.alerts[1].instruction != None %} - {{ states.sensor.weatheralerts.attributes.alerts[1].instruction | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }} - {% endif %} - {% else %} - None - {% endif %} - weatheralerts_alert_3: - friendly_name: Weather Alert 3 - unique_id: 0dcc3731-c90e-427a-abd9-dee29a5ed1e1 - icon_template: mdi:alert-rhombus - value_template: >- - {% if (states('sensor.weatheralerts') != 'unavailable') and (state_attr('sensor.weatheralerts', 'alerts')[2] != null) or ((states('sensor.weatheralerts') == 'unavailable') and (as_timestamp(state_attr('sensor.weatheralerts', 'alerts')[2].endsExpires) - as_timestamp(now()) > 0)) %} - on - {% else %} - off + {% endfor %} {% endif %} - attribute_templates: - alert_id: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].id }} - {% else %} - None - {% endif %} - alert_event: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].event }} - {% else %} - None - {% endif %} - alert_area: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].area }} - {% else %} - None - {% endif %} - alert_NWSheadline: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') }} - {% else %} - None - {% endif %} - alert_description: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].description }} - {% else %} - None - {% endif %} - alert_messageType: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].messageType }} - {% else %} - None - {% endif %} - alert_status: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].status }} - {% else %} - None - {% endif %} - alert_category: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].category }} - {% else %} - None - {% endif %} - alert_urgency: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].urgency }} - {% else %} - None - {% endif %} - alert_severity: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].severity }} - {% else %} - None - {% endif %} - alert_certainty: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].certainty }} - {% else %} - None - {% endif %} - alert_response: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].response }} - {% else %} - None - {% endif %} - alert_instruction: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].instruction }} - {% else %} - None - {% endif %} - alert_sent: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].sent }} - {% else %} - None - {% endif %} - alert_effective: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].effective }} - {% else %} - None - {% endif %} - alert_onset: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].onset }} - {% else %} - None - {% endif %} - alert_expires: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].expires }} - {% else %} - None - {% endif %} - alert_title: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].title }} - {% else %} - None - {% endif %} - alert_zoneid: >- - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].zoneid }} - {% else %} - None - {% endif %} - display_title: > - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].title }} - {% else %} - None - {% endif %} - display_message: > - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {% if states.sensor.weatheralerts.attributes.alerts[2].NWSheadline != "null" %} - {{ states.sensor.weatheralerts.attributes.alerts[2].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') }}
+ {{ warnings.count }} + freeze_warning_count: >- + {% set warnings = namespace(count=0) %} + {% if (state_attr('sensor.weatheralerts', 'alerts')) %} + {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} + {% if 'freeze warning' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} + {% set warnings.count = warnings.count + 1 %} {% endif %} -
{{ states.sensor.weatheralerts.attributes.alerts[2].description | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }}
- {% if states.sensor.weatheralerts.attributes.alerts[2].instruction != None %} - {{ states.sensor.weatheralerts.attributes.alerts[2].instruction | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }}
- {% endif %} -
Where : {{ state_attr('sensor.weatheralerts', 'friendly_name') }} -
Effective: {{ states.sensor.weatheralerts.attributes.alerts[2].effective }} - {%- if states.sensor.weatheralerts.attributes.alerts[2].ends != None %} -
Ends: {{ states.sensor.weatheralerts.attributes.alerts[2].ends }} - {%- endif %} -
Expires: {{ states.sensor.weatheralerts.attributes.alerts[2].expires }} - {% else %} - None - {% endif %} - spoken_title: > - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - Attention!!! Weather alert for {{ state_attr('sensor.weatheralerts', 'friendly_name') }}. A {{ states.sensor.weatheralerts.attributes.alerts[2].title }}. {{ states.sensor.weatheralerts.attributes.alerts[2].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') | capitalize }}. - {% else %} - None - {% endif %} - spoken_message: > - {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[2].description | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }} - {% if states.sensor.weatheralerts.attributes.alerts[2].instruction != None %} - {{ states.sensor.weatheralerts.attributes.alerts[2].instruction | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }} - {% endif %} - {% else %} - None - {% endif %} - weatheralerts_alert_4: - friendly_name: Weather Alert 4 - unique_id: 18f756d2-f3aa-476f-a1c0-12c70f173ead - icon_template: mdi:alert-rhombus - value_template: >- - {% if (states('sensor.weatheralerts') != 'unavailable') and (state_attr('sensor.weatheralerts', 'alerts')[3] != null) or ((states('sensor.weatheralerts') == 'unavailable') and (as_timestamp(state_attr('sensor.weatheralerts', 'alerts')[3].endsExpires) - as_timestamp(now()) > 0)) %} - on - {% else %} - off + {% endfor %} {% endif %} - attribute_templates: - alert_id: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].id }} - {% else %} - None - {% endif %} - alert_event: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].event }} - {% else %} - None - {% endif %} - alert_area: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].area }} - {% else %} - None - {% endif %} - alert_NWSheadline: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') }} - {% else %} - None - {% endif %} - alert_description: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].description }} - {% else %} - None - {% endif %} - alert_messageType: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].messageType }} - {% else %} - None - {% endif %} - alert_status: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].status }} - {% else %} - None - {% endif %} - alert_category: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].category }} - {% else %} - None - {% endif %} - alert_urgency: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].urgency }} - {% else %} - None - {% endif %} - alert_severity: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].severity }} - {% else %} - None - {% endif %} - alert_certainty: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].certainty }} - {% else %} - None - {% endif %} - alert_response: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].response }} - {% else %} - None - {% endif %} - alert_instruction: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].instruction }} - {% else %} - None - {% endif %} - alert_sent: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].sent }} - {% else %} - None - {% endif %} - alert_effective: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].effective }} - {% else %} - None - {% endif %} - alert_onset: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].onset }} - {% else %} - None - {% endif %} - alert_expires: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].expires }} - {% else %} - None - {% endif %} - alert_title: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].title }} - {% else %} - None - {% endif %} - alert_zoneid: >- - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].zoneid }} - {% else %} - None - {% endif %} - display_title: > - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].title }} - {% else %} - None - {% endif %} - display_message: > - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {% if states.sensor.weatheralerts.attributes.alerts[3].NWSheadline != "null" %} - {{ states.sensor.weatheralerts.attributes.alerts[3].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') }}
+ {{ warnings.count }} + tstorm_warning_count: >- + {% set warnings = namespace(count=0) %} + {% if (state_attr('sensor.weatheralerts', 'alerts')) %} + {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} + {% if 'thunderstorm warning' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} + {% set warnings.count = warnings.count + 1 %} {% endif %} -
{{ states.sensor.weatheralerts.attributes.alerts[3].description | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }}
- {% if states.sensor.weatheralerts.attributes.alerts[3].instruction != None %} - {{ states.sensor.weatheralerts.attributes.alerts[3].instruction | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }}
- {% endif %} -
Where : {{ state_attr('sensor.weatheralerts', 'friendly_name') }} -
Effective: {{ states.sensor.weatheralerts.attributes.alerts[3].effective }} - {%- if states.sensor.weatheralerts.attributes.alerts[3].ends != None %} -
Ends: {{ states.sensor.weatheralerts.attributes.alerts[3].ends }} - {%- endif %} -
Expires: {{ states.sensor.weatheralerts.attributes.alerts[3].expires }} - {% else %} - None - {% endif %} - spoken_title: > - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - Attention!!! Weather alert for {{ state_attr('sensor.weatheralerts', 'friendly_name') }}. A {{ states.sensor.weatheralerts.attributes.alerts[3].title }}. {{ states.sensor.weatheralerts.attributes.alerts[3].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') | capitalize }}. - {% else %} - None - {% endif %} - spoken_message: > - {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[3].description | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }} - {% if states.sensor.weatheralerts.attributes.alerts[3].instruction != None %} - {{ states.sensor.weatheralerts.attributes.alerts[3].instruction | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }} - {% endif %} - {% else %} - None - {% endif %} - weatheralerts_alert_5: - friendly_name: Weather Alert 5 - unique_id: c9690a26-84e8-439d-9718-469b227c4d66 - icon_template: mdi:alert-rhombus - value_template: >- - {% if (states('sensor.weatheralerts') != 'unavailable') and (state_attr('sensor.weatheralerts', 'alerts')[4] != null) or ((states('sensor.weatheralerts') == 'unavailable') and (as_timestamp(state_attr('sensor.weatheralerts', 'alerts')[4].endsExpires) - as_timestamp(now()) > 0)) %} - on - {% else %} - off + {% endfor %} {% endif %} - attribute_templates: - alert_id: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].id }} - {% else %} - None - {% endif %} - alert_event: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].event }} - {% else %} - None - {% endif %} - alert_area: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].area }} - {% else %} - None - {% endif %} - alert_NWSheadline: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') }} - {% else %} - None - {% endif %} - alert_description: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].description }} - {% else %} - None - {% endif %} - alert_messageType: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].messageType }} - {% else %} - None - {% endif %} - alert_status: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].status }} - {% else %} - None - {% endif %} - alert_category: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].category }} - {% else %} - None - {% endif %} - alert_urgency: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].urgency }} - {% else %} - None - {% endif %} - alert_severity: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].severity }} - {% else %} - None - {% endif %} - alert_certainty: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].certainty }} - {% else %} - None - {% endif %} - alert_response: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].response }} - {% else %} - None - {% endif %} - alert_instruction: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].instruction }} - {% else %} - None - {% endif %} - alert_sent: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].sent }} - {% else %} - None - {% endif %} - alert_effective: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].effective }} - {% else %} - None - {% endif %} - alert_onset: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].onset }} - {% else %} - None - {% endif %} - alert_expires: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].expires }} - {% else %} - None - {% endif %} - alert_title: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].title }} - {% else %} - None - {% endif %} - alert_zoneid: >- - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].zoneid }} - {% else %} - None - {% endif %} - display_title: > - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].title }} - {% else %} - None - {% endif %} - display_message: > - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {% if states.sensor.weatheralerts.attributes.alerts[4].NWSheadline != "null" %} - {{ states.sensor.weatheralerts.attributes.alerts[4].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') }}
+ {{ warnings.count }} + flood_warning_count: >- + {% set warnings = namespace(count=0) %} + {% if (state_attr('sensor.weatheralerts', 'alerts')) %} + {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} + {% if 'flood warning' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} + {% set warnings.count = warnings.count + 1 %} {% endif %} -
{{ states.sensor.weatheralerts.attributes.alerts[4].description | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }}
- {% if states.sensor.weatheralerts.attributes.alerts[4].instruction != None %} - {{ states.sensor.weatheralerts.attributes.alerts[4].instruction | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }}
+ {% endfor %} + {% endif %} + {{ warnings.count }} + watch_count: >- + {% set watches = namespace(count=0) %} + {% if (state_attr('sensor.weatheralerts', 'alerts')) %} + {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} + {% if 'watch' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} + {% set watches.count = watches.count + 1 %} {% endif %} -
Where : {{ state_attr('sensor.weatheralerts', 'friendly_name') }} -
Effective: {{ states.sensor.weatheralerts.attributes.alerts[4].effective }} - {%- if states.sensor.weatheralerts.attributes.alerts[4].ends != None %} -
Ends: {{ states.sensor.weatheralerts.attributes.alerts[4].ends }} - {%- endif %} -
Expires: {{ states.sensor.weatheralerts.attributes.alerts[4].expires }} - {% else %} - None - {% endif %} - spoken_title: > - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - Attention!!! Weather alert for {{ state_attr('sensor.weatheralerts', 'friendly_name') }}. A {{ states.sensor.weatheralerts.attributes.alerts[4].title }}. {{ states.sensor.weatheralerts.attributes.alerts[4].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') | capitalize }}. - {% else %} - None - {% endif %} - spoken_message: > - {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} - {{ states.sensor.weatheralerts.attributes.alerts[4].description | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }} - {% if states.sensor.weatheralerts.attributes.alerts[4].instruction != None %} - {{ states.sensor.weatheralerts.attributes.alerts[4].instruction | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }} + {% endfor %} + {% endif %} + {{ watches.count }} + tornado_watch_count: >- + {% set watches = namespace(count=0) %} + {% if (state_attr('sensor.weatheralerts', 'alerts')) %} + {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} + {% if 'tornado watch' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} + {% set watches.count = watches.count + 1 %} {% endif %} - {% else %} - None - {% endif %} - weatheralerts_alert_1_last_changed: - unique_id: 3db32f1f-a6d3-4321-9078-2577d403f314 - value_template: >- - {% if states('sensor.weatheralerts_alert_1') == "on" %} - {{ states.sensor.weatheralerts_alert_1.last_updated }} + {% endfor %} + {% endif %} + {{ watches.count }} + tstorm_watch_count: >- + {% set watches = namespace(count=0) %} + {% if (state_attr('sensor.weatheralerts', 'alerts')) %} + {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} + {% if 'thunderstorm watch' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} + {% set watches.count = watches.count + 1 %} + {% endif %} + {% endfor %} + {% endif %} + {{ watches.count }} + flood_watch_count: >- + {% set watches = namespace(count=0) %} + {% if (state_attr('sensor.weatheralerts', 'alerts')) %} + {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} + {% if 'flood watch' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} + {% set watches.count = watches.count + 1 %} + {% endif %} + {% endfor %} + {% endif %} + {{ watches.count }} + advisory_count: >- + {% set advisories = namespace(count=0) %} + {% if (state_attr('sensor.weatheralerts', 'alerts')) %} + {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} + {% if 'advisory' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} + {% set advisories.count = advisories.count + 1 %} + {% endif %} + {% endfor %} + {% endif %} + {{ advisories.count }} + statement_count: >- + {% set statements = namespace(count=0) %} + {% if (state_attr('sensor.weatheralerts', 'alerts')) %} + {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} + {% if 'statement' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} + {% set statements.count = statements.count + 1 %} + {% endif %} + {% endfor %} + {% endif %} + {{ statements.count }} + outlook_count: >- + {% set outlooks = namespace(count=0) %} + {% if (state_attr('sensor.weatheralerts', 'alerts')) %} + {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} + {% if 'outlook' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} + {% set outlooks.count = outlooks.count + 1 %} + {% endif %} + {% endfor %} + {% endif %} + {{ outlooks.count }} + alert_count: >- + {% set alerts = namespace(count=0) %} + {% if (state_attr('sensor.weatheralerts', 'alerts')) %} + {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} + {% if 'alert' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} + {% set alerts.count = alerts.count + 1 %} + {% endif %} + {% endfor %} + {% endif %} + {{ alerts.count }} + message_count: >- + {% set messages = namespace(count=0) %} + {% if (state_attr('sensor.weatheralerts', 'alerts')) %} + {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} + {% if 'message' in alert.event.lower() and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} + {% set messages.count = messages.count + 1 %} + {% endif %} + {% endfor %} + {% endif %} + {{ messages.count }} + important_count: >- + {% set important = namespace(count=0) %} + {% if (state_attr('sensor.weatheralerts', 'alerts')) %} + {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} + {% if ('emergency' in alert.event.lower() or 'danger' in alert.event.lower() or 'immediate' in alert.event.lower()) and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} + {% set important.count = important.count + 1 %} + {% endif %} + {% endfor %} + {% endif %} + {{ important.count }} + test_count: >- + {% set test = namespace(count=0) %} + {% if (state_attr('sensor.weatheralerts', 'alerts')) %} + {% for alert in state_attr('sensor.weatheralerts', 'alerts') %} + {% if 'Test' in alert.event and (as_timestamp(alert['endsExpires']) - as_timestamp(now()) > 0) %} + {% set test.count = test.count + 1 %} + {% endif %} + {% endfor %} + {% endif %} + {{ test.count }} + - name: Weather Alert 1 + unique_id: 752fb9ae-a61f-41f8-8882-f8d025b892e3 + icon: mdi:alert-rhombus + state: >- + {% if (states('sensor.weatheralerts') != 'unavailable') and (state_attr('sensor.weatheralerts', 'alerts')[0] != null) or ((states('sensor.weatheralerts') == 'unavailable') and (as_timestamp(state_attr('sensor.weatheralerts', 'alerts')[0].endsExpires) - as_timestamp(now()) > 0)) %} + on + {% else %} + off + {% endif %} + attributes: + alert_id: >- + {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[0].id }} {% else %} None {% endif %} - weatheralerts_alert_2_last_changed: - unique_id: 75e746a0-b776-4dbb-b018-1e808a204f65 - value_template: >- - {% if states('sensor.weatheralerts_alert_2') == "on" %} - {{ states.sensor.weatheralerts_alert_2.last_updated }} + alert_event: >- + {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[0].event }} {% else %} None {% endif %} - weatheralerts_alert_3_last_changed: - unique_id: 4382f9a3-32bf-42f9-809f-ae33f33140b7 - value_template: >- - {% if states('sensor.weatheralerts_alert_3') == "on" %} - {{ states.sensor.weatheralerts_alert_3.last_updated }} + alert_area: >- + {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[0].area }} {% else %} None {% endif %} - weatheralerts_alert_4_last_changed: - unique_id: 4fbf5547-eac4-4ebf-b5fc-b043fafc0026 - value_template: >- - {% if states('sensor.weatheralerts_alert_4') == "on" %} - {{ states.sensor.weatheralerts_alert_4.last_updated }} + alert_NWSheadline: >- + {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[0].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') }} {% else %} None {% endif %} - weatheralerts_alert_5_last_changed: - unique_id: d7b66a73-8431-433c-8cd1-d413d726cb0a - value_template: >- - {% if states('sensor.weatheralerts_alert_5') == "on" %} - {{ states.sensor.weatheralerts_alert_5.last_updated }} + alert_description: >- + {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[0].description }} {% else %} None {% endif %} - weatheralerts_alert_1_most_recent_active_alert: - unique_id: 569944e9-b4cf-4ed2-9bed-40b2a0a9b898 - value_template: >- + alert_messageType: >- + {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[0].messageType }} + {% else %} + None + {% endif %} + alert_status: >- + {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[0].status }} + {% else %} + None + {% endif %} + alert_category: >- + {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[0].category }} + {% else %} + None + {% endif %} + alert_urgency: >- + {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[0].urgency }} + {% else %} + None + {% endif %} + alert_severity: >- + {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[0].severity }} + {% else %} + None + {% endif %} + alert_certainty: >- + {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[0].certainty }} + {% else %} + None + {% endif %} + alert_response: >- + {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[0].response }} + {% else %} + None + {% endif %} + alert_instruction: >- + {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[0].instruction }} + {% else %} + None + {% endif %} + alert_sent: >- + {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[0].sent }} + {% else %} + None + {% endif %} + alert_effective: >- + {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[0].effective }} + {% else %} + None + {% endif %} + alert_onset: >- + {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[0].onset }} + {% else %} + None + {% endif %} + alert_expires: >- + {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[0].expires }} + {% else %} + None + {% endif %} + alert_title: >- + {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[0].title }} + {% else %} + None + {% endif %} + alert_zoneid: >- + {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[0].zoneid }} + {% else %} + None + {% endif %} + display_title: > + {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[0].title }} + {% else %} + None + {% endif %} + display_message: > + {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} + {% if states.sensor.weatheralerts.attributes.alerts[0].NWSheadline != "null" %} + {{ states.sensor.weatheralerts.attributes.alerts[0].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') }}
+ {% endif %} +
{{ states.sensor.weatheralerts.attributes.alerts[0].description | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }}
+ {% if states.sensor.weatheralerts.attributes.alerts[0].instruction != None %} + {{ states.sensor.weatheralerts.attributes.alerts[0].instruction | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }}
+ {% endif %} +
Where : {{ state_attr('sensor.weatheralerts', 'friendly_name') }} +
Effective: {{ states.sensor.weatheralerts.attributes.alerts[0].effective }} + {%- if states.sensor.weatheralerts.attributes.alerts[0].ends != None %} +
Ends: {{ states.sensor.weatheralerts.attributes.alerts[0].ends }} + {%- endif %} +
Expires: {{ states.sensor.weatheralerts.attributes.alerts[0].expires }} + {% else %} + None + {% endif %} + spoken_title: > + {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} + Attention!!! Weather alert for {{ state_attr('sensor.weatheralerts', 'friendly_name') }}. A {{ states.sensor.weatheralerts.attributes.alerts[0].title }}. {{ states.sensor.weatheralerts.attributes.alerts[0].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') | capitalize }}. + {% else %} + None + {% endif %} + spoken_message: > + {% if states('sensor.weatheralerts')|int > 0 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_1') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[0].description | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }} + {% if states.sensor.weatheralerts.attributes.alerts[0].instruction != None %} + {{ states.sensor.weatheralerts.attributes.alerts[0].instruction | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }} + {% endif %} + {% else %} + None + {% endif %} + - name: Weather Alert 2 + unique_id: 4ecaa8ce-65ec-429f-956c-ac478f1c3d6f + icon: mdi:alert-rhombus + state: >- + {% if (states('sensor.weatheralerts') != 'unavailable') and (state_attr('sensor.weatheralerts', 'alerts')[1] != null) or ((states('sensor.weatheralerts') == 'unavailable') and (as_timestamp(state_attr('sensor.weatheralerts', 'alerts')[1].endsExpires) - as_timestamp(now()) > 0)) %} + on + {% else %} + off + {% endif %} + attributes: + alert_id: >- + {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[1].id }} + {% else %} + None + {% endif %} + alert_event: >- + {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[1].event }} + {% else %} + None + {% endif %} + alert_area: >- + {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[1].area }} + {% else %} + None + {% endif %} + alert_NWSheadline: >- + {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[1].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') }} + {% else %} + None + {% endif %} + alert_description: >- + {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[1].description }} + {% else %} + None + {% endif %} + alert_messageType: >- + {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[1].messageType }} + {% else %} + None + {% endif %} + alert_status: >- + {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[1].status }} + {% else %} + None + {% endif %} + alert_category: >- + {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[1].category }} + {% else %} + None + {% endif %} + alert_urgency: >- + {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[1].urgency }} + {% else %} + None + {% endif %} + alert_severity: >- + {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[1].severity }} + {% else %} + None + {% endif %} + alert_certainty: >- + {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[1].certainty }} + {% else %} + None + {% endif %} + alert_response: >- + {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[1].response }} + {% else %} + None + {% endif %} + alert_instruction: >- + {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[1].instruction }} + {% else %} + None + {% endif %} + alert_sent: >- + {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[1].sent }} + {% else %} + None + {% endif %} + alert_effective: >- + {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[1].effective }} + {% else %} + None + {% endif %} + alert_onset: >- + {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[1].onset }} + {% else %} + None + {% endif %} + alert_expires: >- + {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[1].expires }} + {% else %} + None + {% endif %} + alert_title: >- + {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[1].title }} + {% else %} + None + {% endif %} + alert_zoneid: >- + {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[1].zoneid }} + {% else %} + None + {% endif %} + display_title: > + {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[1].title }} + {% else %} + None + {% endif %} + display_message: > + {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} + {% if states.sensor.weatheralerts.attributes.alerts[1].NWSheadline != "null" %} + {{ states.sensor.weatheralerts.attributes.alerts[1].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') }}
+ {% endif %} +
{{ states.sensor.weatheralerts.attributes.alerts[1].description | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }}
+ {% if states.sensor.weatheralerts.attributes.alerts[1].instruction != None %} + {{ states.sensor.weatheralerts.attributes.alerts[1].instruction | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }}
+ {% endif %} +
Where : {{ state_attr('sensor.weatheralerts', 'friendly_name') }} +
Effective: {{ states.sensor.weatheralerts.attributes.alerts[1].effective }} + {%- if states.sensor.weatheralerts.attributes.alerts[1].ends != None %} +
Ends: {{ states.sensor.weatheralerts.attributes.alerts[1].ends }} + {%- endif %} +
Expires: {{ states.sensor.weatheralerts.attributes.alerts[1].expires }} + {% else %} + None + {% endif %} + spoken_title: > + {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} + Attention!!! Weather alert for {{ state_attr('sensor.weatheralerts', 'friendly_name') }}. A {{ states.sensor.weatheralerts.attributes.alerts[1].title }}. {{ states.sensor.weatheralerts.attributes.alerts[1].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') | capitalize }}. + {% else %} + None + {% endif %} + spoken_message: > + {% if states('sensor.weatheralerts')|int > 1 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_2') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[1].description | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }} + {% if states.sensor.weatheralerts.attributes.alerts[1].instruction != None %} + {{ states.sensor.weatheralerts.attributes.alerts[1].instruction | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }} + {% endif %} + {% else %} + None + {% endif %} + - name: Weather Alert 3 + unique_id: 0dcc3731-c90e-427a-abd9-dee29a5ed1e1 + icon: mdi:alert-rhombus + state: >- + {% if (states('sensor.weatheralerts') != 'unavailable') and (state_attr('sensor.weatheralerts', 'alerts')[2] != null) or ((states('sensor.weatheralerts') == 'unavailable') and (as_timestamp(state_attr('sensor.weatheralerts', 'alerts')[2].endsExpires) - as_timestamp(now()) > 0)) %} + on + {% else %} + off + {% endif %} + attributes: + alert_id: >- + {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[2].id }} + {% else %} + None + {% endif %} + alert_event: >- + {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[2].event }} + {% else %} + None + {% endif %} + alert_area: >- + {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[2].area }} + {% else %} + None + {% endif %} + alert_NWSheadline: >- + {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[2].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') }} + {% else %} + None + {% endif %} + alert_description: >- + {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[2].description }} + {% else %} + None + {% endif %} + alert_messageType: >- + {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[2].messageType }} + {% else %} + None + {% endif %} + alert_status: >- + {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[2].status }} + {% else %} + None + {% endif %} + alert_category: >- + {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[2].category }} + {% else %} + None + {% endif %} + alert_urgency: >- + {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[2].urgency }} + {% else %} + None + {% endif %} + alert_severity: >- + {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[2].severity }} + {% else %} + None + {% endif %} + alert_certainty: >- + {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[2].certainty }} + {% else %} + None + {% endif %} + alert_response: >- + {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[2].response }} + {% else %} + None + {% endif %} + alert_instruction: >- + {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[2].instruction }} + {% else %} + None + {% endif %} + alert_sent: >- + {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[2].sent }} + {% else %} + None + {% endif %} + alert_effective: >- + {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[2].effective }} + {% else %} + None + {% endif %} + alert_onset: >- + {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[2].onset }} + {% else %} + None + {% endif %} + alert_expires: >- + {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[2].expires }} + {% else %} + None + {% endif %} + alert_title: >- + {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[2].title }} + {% else %} + None + {% endif %} + alert_zoneid: >- + {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[2].zoneid }} + {% else %} + None + {% endif %} + display_title: > + {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[2].title }} + {% else %} + None + {% endif %} + display_message: > + {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} + {% if states.sensor.weatheralerts.attributes.alerts[2].NWSheadline != "null" %} + {{ states.sensor.weatheralerts.attributes.alerts[2].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') }}
+ {% endif %} +
{{ states.sensor.weatheralerts.attributes.alerts[2].description | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }}
+ {% if states.sensor.weatheralerts.attributes.alerts[2].instruction != None %} + {{ states.sensor.weatheralerts.attributes.alerts[2].instruction | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }}
+ {% endif %} +
Where : {{ state_attr('sensor.weatheralerts', 'friendly_name') }} +
Effective: {{ states.sensor.weatheralerts.attributes.alerts[2].effective }} + {%- if states.sensor.weatheralerts.attributes.alerts[2].ends != None %} +
Ends: {{ states.sensor.weatheralerts.attributes.alerts[2].ends }} + {%- endif %} +
Expires: {{ states.sensor.weatheralerts.attributes.alerts[2].expires }} + {% else %} + None + {% endif %} + spoken_title: > + {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} + Attention!!! Weather alert for {{ state_attr('sensor.weatheralerts', 'friendly_name') }}. A {{ states.sensor.weatheralerts.attributes.alerts[2].title }}. {{ states.sensor.weatheralerts.attributes.alerts[2].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') | capitalize }}. + {% else %} + None + {% endif %} + spoken_message: > + {% if states('sensor.weatheralerts')|int > 2 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_3') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[2].description | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }} + {% if states.sensor.weatheralerts.attributes.alerts[2].instruction != None %} + {{ states.sensor.weatheralerts.attributes.alerts[2].instruction | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }} + {% endif %} + {% else %} + None + {% endif %} + - name: Weather Alert 4 + unique_id: 18f756d2-f3aa-476f-a1c0-12c70f173ead + icon: mdi:alert-rhombus + state: >- + {% if (states('sensor.weatheralerts') != 'unavailable') and (state_attr('sensor.weatheralerts', 'alerts')[3] != null) or ((states('sensor.weatheralerts') == 'unavailable') and (as_timestamp(state_attr('sensor.weatheralerts', 'alerts')[3].endsExpires) - as_timestamp(now()) > 0)) %} + on + {% else %} + off + {% endif %} + attributes: + alert_id: >- + {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[3].id }} + {% else %} + None + {% endif %} + alert_event: >- + {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[3].event }} + {% else %} + None + {% endif %} + alert_area: >- + {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[3].area }} + {% else %} + None + {% endif %} + alert_NWSheadline: >- + {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[3].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') }} + {% else %} + None + {% endif %} + alert_description: >- + {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[3].description }} + {% else %} + None + {% endif %} + alert_messageType: >- + {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[3].messageType }} + {% else %} + None + {% endif %} + alert_status: >- + {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[3].status }} + {% else %} + None + {% endif %} + alert_category: >- + {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[3].category }} + {% else %} + None + {% endif %} + alert_urgency: >- + {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[3].urgency }} + {% else %} + None + {% endif %} + alert_severity: >- + {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[3].severity }} + {% else %} + None + {% endif %} + alert_certainty: >- + {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[3].certainty }} + {% else %} + None + {% endif %} + alert_response: >- + {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[3].response }} + {% else %} + None + {% endif %} + alert_instruction: >- + {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[3].instruction }} + {% else %} + None + {% endif %} + alert_sent: >- + {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[3].sent }} + {% else %} + None + {% endif %} + alert_effective: >- + {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[3].effective }} + {% else %} + None + {% endif %} + alert_onset: >- + {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[3].onset }} + {% else %} + None + {% endif %} + alert_expires: >- + {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[3].expires }} + {% else %} + None + {% endif %} + alert_title: >- + {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[3].title }} + {% else %} + None + {% endif %} + alert_zoneid: >- + {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[3].zoneid }} + {% else %} + None + {% endif %} + display_title: > + {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[3].title }} + {% else %} + None + {% endif %} + display_message: > + {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} + {% if states.sensor.weatheralerts.attributes.alerts[3].NWSheadline != "null" %} + {{ states.sensor.weatheralerts.attributes.alerts[3].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') }}
+ {% endif %} +
{{ states.sensor.weatheralerts.attributes.alerts[3].description | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }}
+ {% if states.sensor.weatheralerts.attributes.alerts[3].instruction != None %} + {{ states.sensor.weatheralerts.attributes.alerts[3].instruction | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }}
+ {% endif %} +
Where : {{ state_attr('sensor.weatheralerts', 'friendly_name') }} +
Effective: {{ states.sensor.weatheralerts.attributes.alerts[3].effective }} + {%- if states.sensor.weatheralerts.attributes.alerts[3].ends != None %} +
Ends: {{ states.sensor.weatheralerts.attributes.alerts[3].ends }} + {%- endif %} +
Expires: {{ states.sensor.weatheralerts.attributes.alerts[3].expires }} + {% else %} + None + {% endif %} + spoken_title: > + {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} + Attention!!! Weather alert for {{ state_attr('sensor.weatheralerts', 'friendly_name') }}. A {{ states.sensor.weatheralerts.attributes.alerts[3].title }}. {{ states.sensor.weatheralerts.attributes.alerts[3].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') | capitalize }}. + {% else %} + None + {% endif %} + spoken_message: > + {% if states('sensor.weatheralerts')|int > 3 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_4') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[3].description | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }} + {% if states.sensor.weatheralerts.attributes.alerts[3].instruction != None %} + {{ states.sensor.weatheralerts.attributes.alerts[3].instruction | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }} + {% endif %} + {% else %} + None + {% endif %} + - name: Weather Alert 5 + unique_id: c9690a26-84e8-439d-9718-469b227c4d66 + icon: mdi:alert-rhombus + state: >- + {% if (states('sensor.weatheralerts') != 'unavailable') and (state_attr('sensor.weatheralerts', 'alerts')[4] != null) or ((states('sensor.weatheralerts') == 'unavailable') and (as_timestamp(state_attr('sensor.weatheralerts', 'alerts')[4].endsExpires) - as_timestamp(now()) > 0)) %} + on + {% else %} + off + {% endif %} + attributes: + alert_id: >- + {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[4].id }} + {% else %} + None + {% endif %} + alert_event: >- + {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[4].event }} + {% else %} + None + {% endif %} + alert_area: >- + {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[4].area }} + {% else %} + None + {% endif %} + alert_NWSheadline: >- + {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[4].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') }} + {% else %} + None + {% endif %} + alert_description: >- + {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[4].description }} + {% else %} + None + {% endif %} + alert_messageType: >- + {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[4].messageType }} + {% else %} + None + {% endif %} + alert_status: >- + {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[4].status }} + {% else %} + None + {% endif %} + alert_category: >- + {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[4].category }} + {% else %} + None + {% endif %} + alert_urgency: >- + {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[4].urgency }} + {% else %} + None + {% endif %} + alert_severity: >- + {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[4].severity }} + {% else %} + None + {% endif %} + alert_certainty: >- + {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[4].certainty }} + {% else %} + None + {% endif %} + alert_response: >- + {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[4].response }} + {% else %} + None + {% endif %} + alert_instruction: >- + {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[4].instruction }} + {% else %} + None + {% endif %} + alert_sent: >- + {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[4].sent }} + {% else %} + None + {% endif %} + alert_effective: >- + {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[4].effective }} + {% else %} + None + {% endif %} + alert_onset: >- + {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[4].onset }} + {% else %} + None + {% endif %} + alert_expires: >- + {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[4].expires }} + {% else %} + None + {% endif %} + alert_title: >- + {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[4].title }} + {% else %} + None + {% endif %} + alert_zoneid: >- + {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[4].zoneid }} + {% else %} + None + {% endif %} + display_title: > + {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[4].title }} + {% else %} + None + {% endif %} + display_message: > + {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} + {% if states.sensor.weatheralerts.attributes.alerts[4].NWSheadline != "null" %} + {{ states.sensor.weatheralerts.attributes.alerts[4].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') }}
+ {% endif %} +
{{ states.sensor.weatheralerts.attributes.alerts[4].description | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }}
+ {% if states.sensor.weatheralerts.attributes.alerts[4].instruction != None %} + {{ states.sensor.weatheralerts.attributes.alerts[4].instruction | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }}
+ {% endif %} +
Where : {{ state_attr('sensor.weatheralerts', 'friendly_name') }} +
Effective: {{ states.sensor.weatheralerts.attributes.alerts[4].effective }} + {%- if states.sensor.weatheralerts.attributes.alerts[4].ends != None %} +
Ends: {{ states.sensor.weatheralerts.attributes.alerts[4].ends }} + {%- endif %} +
Expires: {{ states.sensor.weatheralerts.attributes.alerts[4].expires }} + {% else %} + None + {% endif %} + spoken_title: > + {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} + Attention!!! Weather alert for {{ state_attr('sensor.weatheralerts', 'friendly_name') }}. A {{ states.sensor.weatheralerts.attributes.alerts[4].title }}. {{ states.sensor.weatheralerts.attributes.alerts[4].NWSheadline | regex_replace('\[\'','') | regex_replace('\'\]','') | capitalize }}. + {% else %} + None + {% endif %} + spoken_message: > + {% if states('sensor.weatheralerts')|int > 4 or (states('sensor.weatheralerts') == "unavailable" and states('sensor.weatheralerts_alert_5') == "on") %} + {{ states.sensor.weatheralerts.attributes.alerts[4].description | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }} + {% if states.sensor.weatheralerts.attributes.alerts[4].instruction != None %} + {{ states.sensor.weatheralerts.attributes.alerts[4].instruction | regex_replace('\n\n','

') | regex_replace('\n',' ') | regex_replace('\*','\n*') | regex_replace('

','\n\n') }} + {% endif %} + {% else %} + None + {% endif %} + - name: Weatheralerts Alert 1 Last Changed + unique_id: 3db32f1f-a6d3-4321-9078-2577d403f314 + state: >- + {% if states('sensor.weatheralerts_alert_1') == "on" %} + {{ states.sensor.weatheralerts_alert_1.last_updated }} + {% else %} + None + {% endif %} + - name: Weatheralerts Alert 2 Last Changed + unique_id: 75e746a0-b776-4dbb-b018-1e808a204f65 + state: >- + {% if states('sensor.weatheralerts_alert_2') == "on" %} + {{ states.sensor.weatheralerts_alert_2.last_updated }} + {% else %} + None + {% endif %} + - name: Weatheralerts Alert 3 Last Changed + unique_id: 4382f9a3-32bf-42f9-809f-ae33f33140b7 + state: >- + {% if states('sensor.weatheralerts_alert_3') == "on" %} + {{ states.sensor.weatheralerts_alert_3.last_updated }} + {% else %} + None + {% endif %} + - name: Weatheralerts Alert 4 Last Changed + unique_id: 4fbf5547-eac4-4ebf-b5fc-b043fafc0026 + state: >- + {% if states('sensor.weatheralerts_alert_4') == "on" %} + {{ states.sensor.weatheralerts_alert_4.last_updated }} + {% else %} + None + {% endif %} + - name: Weatheralerts Alert 5 Last Changed + unique_id: d7b66a73-8431-433c-8cd1-d413d726cb0a + state: >- + {% if states('sensor.weatheralerts_alert_5') == "on" %} + {{ states.sensor.weatheralerts_alert_5.last_updated }} + {% else %} + None + {% endif %} + - name: Weatheralerts Alert 1 Most Recent Active Alert + unique_id: 569944e9-b4cf-4ed2-9bed-40b2a0a9b898 + state: >- + {% if states('sensor.weatheralerts_alert_1_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_1') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_1_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_1') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_1_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_1') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_1') == 'on' %} + {{ state_attr('sensor.weatheralerts_alert_1', 'alert_event') }} + {% else %} + {{ states('sensor.weatheralerts_alert_1_most_recent_active_alert') }} + {% endif %} + attributes: + alert_effective: >- {% if states('sensor.weatheralerts_alert_1_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_1') != 'on' %} unavailable {% elif states('sensor.weatheralerts_alert_1_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_1') != 'on' %} @@ -1098,38 +1104,38 @@ sensor: {% elif states('sensor.weatheralerts_alert_1_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_1') != 'on' %} unavailable {% elif states('sensor.weatheralerts_alert_1') == 'on' %} - {{ state_attr('sensor.weatheralerts_alert_1', 'alert_event') }} + {{ state_attr('sensor.weatheralerts_alert_1', 'alert_effective') }} {% else %} - {{ states('sensor.weatheralerts_alert_1_most_recent_active_alert') }} + {{ state_attr('sensor.weatheralerts_alert_1_most_recent_active_alert', 'alert_effective') }} {% endif %} - attribute_templates: - alert_effective: >- - {% if states('sensor.weatheralerts_alert_1_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_1') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_1_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_1') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_1_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_1') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_1') == 'on' %} - {{ state_attr('sensor.weatheralerts_alert_1', 'alert_effective') }} - {% else %} - {{ state_attr('sensor.weatheralerts_alert_1_most_recent_active_alert', 'alert_effective') }} - {% endif %} - alert_id: >- - {% if states('sensor.weatheralerts_alert_1_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_1') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_1_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_1') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_1_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_1') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_1') == 'on' %} - {{ state_attr('sensor.weatheralerts_alert_1', 'alert_id') }} - {% else %} - {{ state_attr('sensor.weatheralerts_alert_1_most_recent_active_alert', 'alert_id') }} - {% endif %} - weatheralerts_alert_2_most_recent_active_alert: - unique_id: 8112afda-58b9-4161-809c-9186212f86d7 - value_template: >- + alert_id: >- + {% if states('sensor.weatheralerts_alert_1_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_1') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_1_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_1') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_1_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_1') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_1') == 'on' %} + {{ state_attr('sensor.weatheralerts_alert_1', 'alert_id') }} + {% else %} + {{ state_attr('sensor.weatheralerts_alert_1_most_recent_active_alert', 'alert_id') }} + {% endif %} + - name: Weatheralerts Alert 2 Most Recent Active Alert + unique_id: 8112afda-58b9-4161-809c-9186212f86d7 + state: >- + {% if states('sensor.weatheralerts_alert_2_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_2') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_2_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_2') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_2_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_2') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_2') == 'on' %} + {{ state_attr('sensor.weatheralerts_alert_2', 'alert_event') }} + {% else %} + {{ states('sensor.weatheralerts_alert_2_most_recent_active_alert') }} + {% endif %} + attributes: + alert_effective: >- {% if states('sensor.weatheralerts_alert_2_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_2') != 'on' %} unavailable {% elif states('sensor.weatheralerts_alert_2_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_2') != 'on' %} @@ -1137,38 +1143,38 @@ sensor: {% elif states('sensor.weatheralerts_alert_2_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_2') != 'on' %} unavailable {% elif states('sensor.weatheralerts_alert_2') == 'on' %} - {{ state_attr('sensor.weatheralerts_alert_2', 'alert_event') }} + {{ state_attr('sensor.weatheralerts_alert_2', 'alert_effective') }} {% else %} - {{ states('sensor.weatheralerts_alert_2_most_recent_active_alert') }} + {{ state_attr('sensor.weatheralerts_alert_2_most_recent_active_alert', 'alert_effective') }} {% endif %} - attribute_templates: - alert_effective: >- - {% if states('sensor.weatheralerts_alert_2_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_2') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_2_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_2') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_2_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_2') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_2') == 'on' %} - {{ state_attr('sensor.weatheralerts_alert_2', 'alert_effective') }} - {% else %} - {{ state_attr('sensor.weatheralerts_alert_2_most_recent_active_alert', 'alert_effective') }} - {% endif %} - alert_id: >- - {% if states('sensor.weatheralerts_alert_2_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_2') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_2_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_2') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_2_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_2') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_2') == 'on' %} - {{ state_attr('sensor.weatheralerts_alert_2', 'alert_id') }} - {% else %} - {{ state_attr('sensor.weatheralerts_alert_2_most_recent_active_alert', 'alert_id') }} - {% endif %} - weatheralerts_alert_3_most_recent_active_alert: - unique_id: f71f4ab7-0959-43e9-877a-22084b9642c3 - value_template: >- + alert_id: >- + {% if states('sensor.weatheralerts_alert_2_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_2') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_2_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_2') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_2_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_2') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_2') == 'on' %} + {{ state_attr('sensor.weatheralerts_alert_2', 'alert_id') }} + {% else %} + {{ state_attr('sensor.weatheralerts_alert_2_most_recent_active_alert', 'alert_id') }} + {% endif %} + - name: Weatheralerts Alert 3 Most Recent Active Alert + unique_id: f71f4ab7-0959-43e9-877a-22084b9642c3 + state: >- + {% if states('sensor.weatheralerts_alert_3_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_3') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_3_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_3') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_3_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_3') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_3') == 'on' %} + {{ state_attr('sensor.weatheralerts_alert_3', 'alert_event') }} + {% else %} + {{ states('sensor.weatheralerts_alert_3_most_recent_active_alert') }} + {% endif %} + attributes: + alert_effective: >- {% if states('sensor.weatheralerts_alert_3_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_3') != 'on' %} unavailable {% elif states('sensor.weatheralerts_alert_3_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_3') != 'on' %} @@ -1176,77 +1182,77 @@ sensor: {% elif states('sensor.weatheralerts_alert_3_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_3') != 'on' %} unavailable {% elif states('sensor.weatheralerts_alert_3') == 'on' %} - {{ state_attr('sensor.weatheralerts_alert_3', 'alert_event') }} + {{ state_attr('sensor.weatheralerts_alert_3', 'alert_effective') }} {% else %} - {{ states('sensor.weatheralerts_alert_3_most_recent_active_alert') }} + {{ state_attr('sensor.weatheralerts_alert_3_most_recent_active_alert', 'alert_effective') }} {% endif %} - attribute_templates: - alert_effective: >- - {% if states('sensor.weatheralerts_alert_3_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_3') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_3_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_3') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_3_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_3') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_3') == 'on' %} - {{ state_attr('sensor.weatheralerts_alert_3', 'alert_effective') }} - {% else %} - {{ state_attr('sensor.weatheralerts_alert_3_most_recent_active_alert', 'alert_effective') }} - {% endif %} - alert_id: >- - {% if states('sensor.weatheralerts_alert_3_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_3') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_3_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_3') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_3_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_3') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_3') == 'on' %} - {{ state_attr('sensor.weatheralerts_alert_3', 'alert_id') }} - {% else %} - {{ state_attr('sensor.weatheralerts_alert_3_most_recent_active_alert', 'alert_id') }} - {% endif %} - weatheralerts_alert_4_most_recent_active_alert: - unique_id: e663e42b-a6b2-4a55-a3d9-1932b10fb0ca - value_template: >- - {% if states('sensor.weatheralerts_alert_4_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_4') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_4_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_4') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_4_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_4') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_4') == 'on' %} - {{ state_attr('sensor.weatheralerts_alert_4', 'alert_event') }} - {% else %} - {{ states('sensor.weatheralerts_alert_4_most_recent_active_alert') }} - {% endif %} - attribute_templates: - alert_effective: >- - {% if states('sensor.weatheralerts_alert_4_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_4') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_4_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_4') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_4_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_4') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_4') == 'on' %} - {{ state_attr('sensor.weatheralerts_alert_4', 'alert_effective') }} - {% else %} - {{ state_attr('sensor.weatheralerts_alert_4_most_recent_active_alert', 'alert_effective') }} - {% endif %} - alert_id: >- - {% if states('sensor.weatheralerts_alert_4_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_4') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_4_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_4') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_4_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_4') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_4') == 'on' %} - {{ state_attr('sensor.weatheralerts_alert_4', 'alert_id') }} - {% else %} - {{ state_attr('sensor.weatheralerts_alert_4_most_recent_active_alert', 'alert_id') }} - {% endif %} - weatheralerts_alert_5_most_recent_active_alert: - unique_id: 523d7026-1fdd-4621-91c0-87e0bd98f14d - value_template: >- + alert_id: >- + {% if states('sensor.weatheralerts_alert_3_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_3') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_3_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_3') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_3_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_3') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_3') == 'on' %} + {{ state_attr('sensor.weatheralerts_alert_3', 'alert_id') }} + {% else %} + {{ state_attr('sensor.weatheralerts_alert_3_most_recent_active_alert', 'alert_id') }} + {% endif %} + - name: Weatheralerts Alert 4 Most Recent Active Alert + unique_id: e663e42b-a6b2-4a55-a3d9-1932b10fb0ca + state: >- + {% if states('sensor.weatheralerts_alert_4_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_4') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_4_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_4') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_4_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_4') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_4') == 'on' %} + {{ state_attr('sensor.weatheralerts_alert_4', 'alert_event') }} + {% else %} + {{ states('sensor.weatheralerts_alert_4_most_recent_active_alert') }} + {% endif %} + attributes: + alert_effective: >- + {% if states('sensor.weatheralerts_alert_4_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_4') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_4_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_4') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_4_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_4') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_4') == 'on' %} + {{ state_attr('sensor.weatheralerts_alert_4', 'alert_effective') }} + {% else %} + {{ state_attr('sensor.weatheralerts_alert_4_most_recent_active_alert', 'alert_effective') }} + {% endif %} + alert_id: >- + {% if states('sensor.weatheralerts_alert_4_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_4') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_4_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_4') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_4_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_4') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_4') == 'on' %} + {{ state_attr('sensor.weatheralerts_alert_4', 'alert_id') }} + {% else %} + {{ state_attr('sensor.weatheralerts_alert_4_most_recent_active_alert', 'alert_id') }} + {% endif %} + - name: Weatheralerts Alert 5 Most Recent Active Alert + unique_id: 523d7026-1fdd-4621-91c0-87e0bd98f14d + state: >- + {% if states('sensor.weatheralerts_alert_5_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_5') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_5_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_5') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_5_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_5') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_5') == 'on' %} + {{ state_attr('sensor.weatheralerts_alert_5', 'alert_event') }} + {% else %} + {{ states('sensor.weatheralerts_alert_5_most_recent_active_alert') }} + {% endif %} + attributes: + alert_effective: >- {% if states('sensor.weatheralerts_alert_5_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_5') != 'on' %} unavailable {% elif states('sensor.weatheralerts_alert_5_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_5') != 'on' %} @@ -1254,45 +1260,31 @@ sensor: {% elif states('sensor.weatheralerts_alert_5_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_5') != 'on' %} unavailable {% elif states('sensor.weatheralerts_alert_5') == 'on' %} - {{ state_attr('sensor.weatheralerts_alert_5', 'alert_event') }} + {{ state_attr('sensor.weatheralerts_alert_5', 'alert_effective') }} {% else %} - {{ states('sensor.weatheralerts_alert_5_most_recent_active_alert') }} + {{ state_attr('sensor.weatheralerts_alert_5_most_recent_active_alert', 'alert_effective') }} {% endif %} - attribute_templates: - alert_effective: >- - {% if states('sensor.weatheralerts_alert_5_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_5') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_5_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_5') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_5_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_5') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_5') == 'on' %} - {{ state_attr('sensor.weatheralerts_alert_5', 'alert_effective') }} - {% else %} - {{ state_attr('sensor.weatheralerts_alert_5_most_recent_active_alert', 'alert_effective') }} - {% endif %} - alert_id: >- - {% if states('sensor.weatheralerts_alert_5_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_5') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_5_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_5') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_5_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_5') != 'on' %} - unavailable - {% elif states('sensor.weatheralerts_alert_5') == 'on' %} - {{ state_attr('sensor.weatheralerts_alert_5', 'alert_id') }} - {% else %} - {{ state_attr('sensor.weatheralerts_alert_5_most_recent_active_alert', 'alert_id') }} - {% endif %} - weatheralerts_alerts_are_active: - friendly_name: Weather Alerts Are Active - unique_id: 3f6ecba1-c102-4324-b56e-6d80ead0c829 - icon_template: mdi:alert-rhombus - value_template: > - {% if (states('sensor.weatheralerts') | int > 0) or ((states('sensor.weatheralerts') == 'unavailable') and (states('sensor.weatheralerts_alert_1') == 'on')) %} - Yes + alert_id: >- + {% if states('sensor.weatheralerts_alert_5_most_recent_active_alert') == '' and states('sensor.weatheralerts_alert_5') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_5_most_recent_active_alert') == 'unavailable' and states('sensor.weatheralerts_alert_5') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_5_most_recent_active_alert') == 'unknown' and states('sensor.weatheralerts_alert_5') != 'on' %} + unavailable + {% elif states('sensor.weatheralerts_alert_5') == 'on' %} + {{ state_attr('sensor.weatheralerts_alert_5', 'alert_id') }} {% else %} - No + {{ state_attr('sensor.weatheralerts_alert_5_most_recent_active_alert', 'alert_id') }} {% endif %} + - name: Weather Alerts Are Active + unique_id: 3f6ecba1-c102-4324-b56e-6d80ead0c829 + icon: mdi:alert-rhombus + state: > + {% if (states('sensor.weatheralerts') | int > 0) or ((states('sensor.weatheralerts') == 'unavailable') and (states('sensor.weatheralerts_alert_1') == 'on')) %} + Yes + {% else %} + No + {% endif %} ################################################################################ ## input_text ## diff --git a/sensors/ages.yaml b/sensors/ages.yaml index 1fc182d..5ddfcb8 100644 --- a/sensors/ages.yaml +++ b/sensors/ages.yaml @@ -1,60 +1,54 @@ -- platform: template - sensors: - tony_current_age: - friendly_name: 'Tony Current Age' - unique_id: a9178c12-6bc6-435d-9055-5e8adf31e2ff - value_template: "{{ state_attr('sensor.anniversary_tony_s_birthday','current_years') }}" - icon_template: > - {% if is_state('sensor.anniversary_tony_s_birthday','0') %} - mdi:cake - {% else %} - mdi:eye - {% endif %} - tina_current_age: - friendly_name: 'Tina Current Age' - unique_id: 56453052-150c-47bf-a351-2f8ce0d43378 - value_template: "{{ state_attr('sensor.anniversary_tina_s_birthday','current_years') }}" - icon_template: > - {% if is_state('sensor.anniversary_tina_s_birthday','0') %} - mdi:cake - {% else %} - mdi:eye - {% endif %} - kallen_current_age: - friendly_name: 'Kallen Current Age' - unique_id: f601002c-e6f0-4a19-bf13-1193ba1910d0 - value_template: "{{ state_attr('sensor.anniversary_kallen_s_birthday','current_years') }}" - icon_template: > - {% if is_state('sensor.anniversary_kallen_s_birthday','0') %} - mdi:cake - {% else %} - mdi:eye - {% endif %} - emma_current_age: - friendly_name: 'Emma Current Age' - unique_id: a9af85ab-ea43-4541-8e97-2d596dab5e69 - value_template: "{{ state_attr('sensor.anniversary_emmalynn_s_birthday','current_years') }}" - icon_template: > - {% if is_state('sensor.anniversary_emmalynn_s_birthday','0') %} - mdi:cake - {% else %} - mdi:eye - {% endif %} +- sensor: + - name: 'Tony Current Age' + unique_id: a9178c12-6bc6-435d-9055-5e8adf31e2ff + state: "{{ state_attr('sensor.anniversary_tony_s_birthday','current_years') }}" + icon: > + {% if is_state('sensor.anniversary_tony_s_birthday','0') %} + mdi:cake + {% else %} + mdi:eye + {% endif %} + - name: 'Tina Current Age' + unique_id: 56453052-150c-47bf-a351-2f8ce0d43378 + state: "{{ state_attr('sensor.anniversary_tina_s_birthday','current_years') }}" + icon: > + {% if is_state('sensor.anniversary_tina_s_birthday','0') %} + mdi:cake + {% else %} + mdi:eye + {% endif %} + - name: 'Kallen Current Age' + unique_id: f601002c-e6f0-4a19-bf13-1193ba1910d0 + state: "{{ state_attr('sensor.anniversary_kallen_s_birthday','current_years') }}" + icon: > + {% if is_state('sensor.anniversary_kallen_s_birthday','0') %} + mdi:cake + {% else %} + mdi:eye + {% endif %} + - name: 'Emma Current Age' + unique_id: a9af85ab-ea43-4541-8e97-2d596dab5e69 + state: "{{ state_attr('sensor.anniversary_emmalynn_s_birthday','current_years') }}" + icon: > + {% if is_state('sensor.anniversary_emmalynn_s_birthday','0') %} + mdi:cake + {% else %} + mdi:eye + {% endif %} - # The sum of all the years of life in our household, because why not LOL - total_age_years: - friendly_name: Total Age Years - unique_id: c1380627-b3a5-43ce-811d-3fb856c062a1 - unit_of_measurement: '' - value_template: > - {% set tony = states('sensor.tony_current_age') | int %} - {% set tina = states('sensor.tina_current_age') | int %} - {% set kallen = states('sensor.kallen_current_age') | int %} - {% set emmalynn = states('sensor.emma_current_age') | int %} - {{ tony + tina + kallen + emmalynn }} - icon_template: > - {% if (states('sensor.birthdays_today') | int) > 0 %} - mdi:cake - {% else %} - mdi:eye - {% endif %} + # The sum of all the years of life in our household, because why not LOL + - name: Total Age Years + unique_id: c1380627-b3a5-43ce-811d-3fb856c062a1 + unit_of_measurement: '' + state: > + {% set tony = states('sensor.tony_current_age') | int %} + {% set tina = states('sensor.tina_current_age') | int %} + {% set kallen = states('sensor.kallen_current_age') | int %} + {% set emmalynn = states('sensor.emma_current_age') | int %} + {{ tony + tina + kallen + emmalynn }} + icon: > + {% if (states('sensor.birthdays_today') | int) > 0 %} + mdi:cake + {% else %} + mdi:eye + {% endif %} diff --git a/sensors/entertainment.yaml b/sensors/entertainment.yaml index 2073938..17498f4 100644 --- a/sensors/entertainment.yaml +++ b/sensors/entertainment.yaml @@ -1,38 +1,25 @@ -- platform: twitch_helix - client_id: !secret twitch_client_id - client_secret: !secret twitch_client_secret - own_channel: ironnerd24 - thumbnail_dimensions: 320x180 - entity_prefix: Twitch_ - channels: - - ironnerd24 - - Xia_P988 -- platform: template - sensors: - basement_tv_current_app: - friendly_name: 'Basement TV Current App' - unique_id: 838c2320-24b6-4555-959e-0546580ae8b2 - value_template: >- - {% if is_state('media_player.basement_tv','off') %} - Off - {% else %} - {{ state_attr('media_player.basement_tv','app_name') }} - {% endif %} - living_room_tv_current_app: - friendly_name: 'Living Room TV Current App' - unique_id: b03de99d-b7fa-4f4c-8cdf-758c906dffe4 - value_template: >- - {% if is_state('media_player.living_room_tv','off') %} - Off - {% else %} - {{ state_attr('media_player.living_room_tv','app_name') }} - {% endif %} - master_bedroom_tv_current_app: - friendly_name: 'Master Bedroom TV Current App' - unique_id: 4bf4bef3-fc81-4259-a75c-6693ceba0926 - value_template: >- - {% if is_state('media_player.master_bedroom_firetv','off') %} - Off - {% else %} - {{ state_attr('media_player.master_bedroom_firetv','app_name') }} - {% endif %} \ No newline at end of file +- sensor: + - name: 'Basement TV Current App' + unique_id: 838c2320-24b6-4555-959e-0546580ae8b2 + state: >- + {% if is_state('media_player.basement_tv','off') %} + Off + {% else %} + {{ state_attr('media_player.basement_tv','app_name') }} + {% endif %} + - name: 'Living Room TV Current App' + unique_id: b03de99d-b7fa-4f4c-8cdf-758c906dffe4 + state: >- + {% if is_state('media_player.living_room_tv','off') %} + Off + {% else %} + {{ state_attr('media_player.living_room_tv','app_name') }} + {% endif %} + - name: 'Master Bedroom TV Current App' + unique_id: 4bf4bef3-fc81-4259-a75c-6693ceba0926 + state: >- + {% if is_state('media_player.master_bedroom_firetv','off') %} + Off + {% else %} + {{ state_attr('media_player.master_bedroom_firetv','app_name') }} + {% endif %} \ No newline at end of file diff --git a/sensors/house_stats.yaml b/sensors/house_stats.yaml index 8e074b9..a2207da 100644 --- a/sensors/house_stats.yaml +++ b/sensors/house_stats.yaml @@ -1,426 +1,276 @@ -- platform: template - sensors: - sensor_count: - friendly_name: 'Number of Sensors' - unique_id: e068dac5-a6f8-438d-a5df-93fa2c4eee2e - value_template: >- - {{ states.sensor | rejectattr('state', 'eq', 'unavailable') | list | count | int }} - unit_of_measurement: '' - automation_count: - friendly_name: 'Number of Automations' - unique_id: ff75e7c9-1eac-4254-9a8d-4ed742a95233 - value_template: >- - {{ states.automation| rejectattr('state', 'eq', 'unavailable') | list | count | int }} - unit_of_measurement: '' - script_count: - friendly_name: 'Number of Scripts' - unique_id: 29827719-36a0-4dad-9527-6b60aba3c4aa - value_template: >- - {{ states.script | rejectattr('state', 'eq', 'unavailable') | list | count | int }} - unit_of_measurement: '' - binary_sensor_count: - friendly_name: 'Number of Binary Sensors' - unique_id: ffee9622-84f6-40df-b870-b8f79aa01943 - value_template: >- - {{ states.binary_sensor | rejectattr('state', 'eq', 'unavailable') | list | count | int }} - unit_of_measurement: '' - tracker_count: - friendly_name: 'Number of Devices' - unique_id: bc5c5934-084d-4bcb-930b-d48347ba1b3c - value_template: >- - {{ states.device_tracker| rejectattr('state', 'eq', 'unavailable') | list | count | int }} - unit_of_measurement: '' - lights_count: - friendly_name: 'Number of Lights' - unique_id: 71b7d157-4701-49dd-9145-41c5c93e22b4 - value_template: >- - {{ states.light | rejectattr('state', 'eq', 'unavailable') | list | count | int }} - unit_of_measurement: '' - switches_count: - friendly_name: 'Number of Switches' - unique_id: d2d60031-818c-475f-8243-c0101616847d - value_template: >- - {{ states.switch | rejectattr('state', 'eq', 'unavailable') | list | count | int }} - unit_of_measurement: '' - camera_count: - friendly_name: 'Number of online Cameras' - unique_id: 46cefd93-b7d5-4fbf-b6d4-2fe94a053122 - value_template: >- - {{ states.camera | rejectattr('state', 'eq', 'unavailable') | list | count | int }} - unit_of_measurement: '' - media_player_count: - friendly_name: 'Number of Media Players' - unique_id: 295c724c-2044-4d06-8272-d92b086ff76f - value_template: >- - {{ states.media_player | rejectattr('state', 'eq', 'unavailable') | list | count | int }} - unit_of_measurement: '' - entities_count: - friendly_name: 'Number of Entities' - unique_id: f2b17937-59ca-4a84-9a1b-a666bfb0566b - value_template: >- - {{ states | rejectattr('state', 'eq', 'unavailable') | list | count | int }} - unit_of_measurement: '' - na_entities_count: - friendly_name: 'Number of NA Entities' - unique_id: cf2e5f8c-7f82-40c6-ae76-b587b7945c41 - value_template: >- - {{ states | selectattr('state', 'eq', 'unavailable') | map(attribute='entity_id') | list | count | int }} - unit_of_measurement: '' - current_lights_on: - friendly_name: Current Lights On - unique_id: ea4afe4a-d0ac-4fce-968f-b181e50f4dc8 - unit_of_measurement: '' - value_template: >- - {% set lights = [ - states.light.living_room_color_1, - states.light.living_room_color_2, - states.light.living_room_color_3, - states.light.dining_room_lamp, - states.light.mud_room_overhead, - states.light.downstairs_bathroom_left, - states.light.downstairs_bathroom_right, - states.light.tina_lamp_top, - states.light.tina_lamp_side, - states.light.tina_desk_strip, - states.light.basement_tall_lamp, - states.light.basement_short_lamp, - states.light.basement_stairwell, - states.light.basement_led_strip_1, - states.light.hallway_overhead, - states.light.upstairs_bathroom_left, - states.light.upstairs_bathroom_middle_left, - states.light.upstairs_bathroom_middle_right, - states.light.upstairs_bathroom_right, - states.light.upstairs_bathroom_wall, - states.light.master_bedroom_front, - states.light.master_bedroom_side, - states.light.master_bedroom_closet, - states.light.kallen_bedroom_wall, - states.light.kallen_bedroom_overhead, - states.light.emma_bedroom_light, - states.light.front_porch_light - ] %} - {{ lights | selectattr('state','eq','on') | list | count | int }} - first_floor_lights_on: - friendly_name: First Floor Lights On - unique_id: fca1468d-4e0c-40ff-8c7f-251f99ee1b5b - unit_of_measurement: '' - value_template: >- - {% set lights = [ - states.light.living_room_color_1, - states.light.living_room_color_2, - states.light.living_room_color_3, - states.light.dining_room_lamp, - states.light.mud_room_overhead, - states.light.downstairs_bathroom_left, - states.light.downstairs_bathroom_right, - states.light.tina_lamp_top, - states.light.tina_lamp_side, - states.light.tina_desk_strip - ] %} - {{ lights | selectattr('state','eq','on') | list | count | int }} - second_floor_lights_on: - friendly_name: Second Floor Lights On - unique_id: 517a73c0-67a0-44f9-99f3-5dfec784da18 - unit_of_measurement: '' - value_template: >- - {% set lights = [ - states.light.hallway_overhead, - states.light.upstairs_bathroom_left, - states.light.upstairs_bathroom_middle_left, - states.light.upstairs_bathroom_middle_right, - states.light.upstairs_bathroom_right, - states.light.upstairs_bathroom_wall, - states.light.master_bedroom_front, - states.light.master_bedroom_side, - states.light.master_bedroom_closet, - states.light.kallen_bedroom_wall, - states.light.kallen_bedroom_overhead, - states.light.emma_bedroom_light - ] %} - {{ lights | selectattr('state','eq','on') | list | count | int }} - basement_lights_on: - friendly_name: Basement Lights On - unique_id: 1a9e13d1-c2bd-44e4-82b2-b975ca61eed3 - unit_of_measurement: '' - value_template: >- - {% set lights = [ - states.light.basement_stairwell, - states.light.basement_tall_lamp, - states.light.basement_short_lamp, - states.light.basement_led_strip_1 - ] %} - {{ lights | selectattr('state','eq','on') | list | count | int }} - current_outdoor_lights_on: - friendly_name: Current Outdoor Lights On - unique_id: 252981eb-e7bf-464a-9bfb-ab14dec4eb70 - unit_of_measurement: '' - value_template: >- - {% set lights = [ - states.light.front_porch_light - ] %} - {{ lights | selectattr('state','eq','on') | list | count | int }} - current_computers_on: - friendly_name: Current Computers On - unique_id: fb3f14f3-d0c9-4880-88c6-143d56248f13 - unit_of_measurement: '' - value_template: >- - {% set computers = [ - states.binary_sensor.tony_desktop_on, - states.binary_sensor.tina_desktop_on, - states.binary_sensor.kallen_desktop_on, - states.binary_sensor.basement_server_on - ] %} - {{ computers | selectattr('state','eq','on') | list | count | int }} - climate_devices_installed: - friendly_name: Climate Devices Installed - unique_id: e227272d-a10b-4641-ad27-39dc88a1ac2a - unit_of_measurement: '' - value_template: >- - {% set devices = [ - states.input_boolean.master_bedroom_aircon_installed, - states.input_boolean.emma_bedroom_aircon_installed - ] %} - {{ devices | selectattr('state','eq','on') | list | count | int }} - ac_compressors_running: - friendly_name: A/C Compressors Running - unique_id: f27854e4-3a87-478e-9cdc-491cdb215d41 - unit_of_measurement: '' - value_template: >- - {% set compressors = [ - states.binary_sensor.emma_aircon_compressor, - states.binary_sensor.master_bedroom_aircon_compressor - ] %} - {{ compressors | selectattr('state','eq','on') | list | count | int }} - ac_fans_running: - friendly_name: A/C Fans Running - unique_id: 0b4b4362-4c35-42a0-98ba-55ac49ca2dbb - unit_of_measurement: '' - value_template: >- - {% set fans = [ - states.binary_sensor.emma_aircon_fan, - states.binary_sensor.master_bedroom_aircon_fan - ] %} - {{ fans | selectattr('state','eq','on') | list | count | int }} - fans_running: - friendly_name: Fans Running - unique_id: 31f2b8d8-4d21-4328-bb03-482943795359 - unit_of_measurement: '' - value_template: >- - {% set fans = [ - states.fan.basement_fan, - states.fan.master_bedroom_fan, - states.fan.kallen_bedroom_fan - ] %} - {{ fans | selectattr('state','eq','on') | list | count | int }} - aircons_running: - friendly_name: Air Conditioners Running - unique_id: e1a2a8d6-75d9-4de5-9b4b-449681ca27a4 - unit_of_measurement: '' - value_template: >- - {% set climate = states.climate | selectattr('state','ne','off') | rejectattr('state','eq','unavailable') | rejectattr('state','eq','unknown') | list | count | int %} - {% set fans = [ - states.fan.emma_air_conditioner - ] %} - {% set fans_on = fans | selectattr('state','eq','on') | list | count | int %} - {{ climate + fans_on | int }} - climate_devices_running: - friendly_name: Climate Devices Running - unique_id: 3c61c756-2934-4294-8085-7d3855b692dd - unit_of_measurement: '' - value_template: >- - {{ (states('sensor.fans_running') | int) + (states('sensor.aircons_running') | int) | int }} - front_porch_color_temp: - friendly_name: Front Porch Color Temp - unique_id: 21a01514-d382-4c57-9add-3d500464b22b - unit_of_measurement: 'mireds' - value_template: > - {% if is_state('light.front_porch_light','off') %} - {{ 0 | int }} - {% else %} - {{ state_attr('light.front_porch_light','color_temp') | int }} - {% endif %} - birthdays_today: - friendly_name: Birthdays Today - unique_id: ec61c919-60a0-47a2-978c-aa2453267d3d - unit_of_measurement: '' - value_template: > - {% set birthdays = [ - states.sensor.anniversary_tony_s_birthday, - states.sensor.anniversary_tina_s_birthday, - states.sensor.anniversary_kallen_s_birthday, - states.sensor.anniversary_emmalynn_s_birthday - ] %} - {{ birthdays | selectattr('state','eq','0') | list | count | int }} - icon_template: > - {% set birthdays = [ - states.sensor.anniversary_tony_s_birthday, - states.sensor.anniversary_tina_s_birthday, - states.sensor.anniversary_kallen_s_birthday, - states.sensor.anniversary_emmalynn_s_birthday - ] %} - {% set status = birthdays | selectattr('state','eq','0') | list | count | int %} - {% if status > 0 %} - mdi:cake - {% else %} - mdi:eye - {% endif %} - # The sum of all the years of life in our household, because why not LOL - second_floor_plugs_current: - friendly_name: Second Floor Plugs Current - unique_id: 7f78e126-3986-4a91-8815-8a9435541bea - unit_of_measurement: A - value_template: > - {% set outlets = [ - states.sensor.master_bedroom_fan_current.state, - states.sensor.master_bedroom_aircon_current.state, - states.sensor.kallen_bedroom_fan_current.state, - states.sensor.emma_air_conditioner_current.state - ] | map('float') | list %} - {{ outlets | sum | round(2) }} - icon_template: mdi:lightning-bolt-circle - first_floor_plugs_current: - friendly_name: First Floor Plugs Current - unique_id: 29ffd18a-c961-4022-82f3-9aca6919fb84 - unit_of_measurement: A - value_template: > - {% set outlets = [ - states.sensor.tina_desktop_current.state - ] | map('float') | list %} - {{ outlets | sum | round(2) }} - icon_template: mdi:lightning-bolt-circle - basement_plugs_current: - friendly_name: Basement Plugs Current - unique_id: 79052046-80ac-43e4-8fd4-ec7e36cefe3d - unit_of_measurement: A - value_template: > - {% set outlets = [ - states.sensor.basement_fan_current.state, - states.sensor.basement_led_strip_current.state, - states.sensor.basement_server_current.state, - states.sensor.kallen_desktop_current.state, - states.sensor.tony_desktop_current.state - ] | map('float') | list %} - {{ outlets | sum | round(2) }} - icon_template: mdi:lightning-bolt-circle - -- platform: history_stats - name: Basement TV Time - entity_id: media_player.basement_tv - state: 'playing' - type: time - end: '{{ now() }}' - duration: - hours: 24 -- platform: history_stats - name: Basement TV Chromecast Time - entity_id: media_player.basement_tv_chromecast - state: 'playing' - type: time - end: '{{ now() }}' - duration: - hours: 24 -- platform: history_stats - name: Living Room TV Time - entity_id: media_player.living_room_tv - state: 'playing' - type: time - end: '{{ now() }}' - duration: - hours: 24 -- platform: history_stats - name: Living Room TV Chromecast Time - entity_id: media_player.living_room_tv_chromecast - state: 'playing' - type: time - end: '{{ now() }}' - duration: - hours: 24 -- platform: history_stats - name: Master Bedroom TV Time - entity_id: media_player.master_bedroom_firetv - state: 'playing' - type: time - end: '{{ now() }}' - duration: - hours: 24 -- platform: history_stats - name: Outside Lights - entity_id: light.outside_lights - state: 'on' - type: time - end: '{{ now() }}' - duration: - hours: 24 -- platform: history_stats - name: Windows Open Time - entity_id: sensor.windows_open - state: 'on' - type: time - end: '{{ now() }}' - duration: - hours: 24 -- platform: history_stats - name: Doors Open Time - entity_id: sensor.doors_open - state: 'on' - type: time - end: '{{ now() }}' - duration: - hours: 24 -- platform: history_stats - name: Emma A/C Compressor Time - entity_id: binary_sensor.emma_aircon_compressor - state: 'on' - type: time - end: '{{ now() }}' - duration: - hours: 24 -- platform: history_stats - name: Emma A/C Fan Time - entity_id: binary_sensor.emma_aircon_fan - state: 'on' - type: time - end: '{{ now() }}' - duration: - hours: 24 -- platform: history_stats - name: Master Bedroom A/C Compressor Time - entity_id: binary_sensor.master_bedroom_aircon_compressor - state: 'on' - type: time - end: '{{ now() }}' - duration: - hours: 24 -- platform: history_stats - name: Master Bedroom A/C Fan Time - entity_id: binary_sensor.master_bedroom_aircon_fan - state: 'on' - type: time - end: '{{ now() }}' - duration: - hours: 24 -- platform: history_stats - name: Master Bedroom Fan Time - entity_id: fan.master_bedroom_fan - state: 'on' - type: time - end: '{{ now() }}' - duration: - hours: 24 -- platform: history_stats - name: Kallen Fan Time - entity_id: fan.kallen_bedroom_fan - state: 'on' - type: time - end: '{{ now() }}' - duration: - hours: 24 -- platform: history_stats - name: Basement Fan Time - entity_id: fan.basement_fan - state: 'on' - type: time - end: '{{ now() }}' - duration: - hours: 24 \ No newline at end of file +- sensor: + - name: 'Number of Sensors' + unique_id: e068dac5-a6f8-438d-a5df-93fa2c4eee2e + state: >- + {{ states.sensor | rejectattr('state', 'eq', 'unavailable') | list | count | int }} + unit_of_measurement: '' + - name: 'Number of Automations' + unique_id: ff75e7c9-1eac-4254-9a8d-4ed742a95233 + state: >- + {{ states.automation| rejectattr('state', 'eq', 'unavailable') | list | count | int }} + unit_of_measurement: '' + - name: 'Number of Scripts' + unique_id: 29827719-36a0-4dad-9527-6b60aba3c4aa + state: >- + {{ states.script | rejectattr('state', 'eq', 'unavailable') | list | count | int }} + unit_of_measurement: '' + - name: 'Number of Binary Sensors' + unique_id: ffee9622-84f6-40df-b870-b8f79aa01943 + state: >- + {{ states.binary_sensor | rejectattr('state', 'eq', 'unavailable') | list | count | int }} + unit_of_measurement: '' + - name: 'Number of Devices' + unique_id: bc5c5934-084d-4bcb-930b-d48347ba1b3c + state: >- + {{ states.device_tracker| rejectattr('state', 'eq', 'unavailable') | list | count | int }} + unit_of_measurement: '' + - name: 'Number of Lights' + unique_id: 71b7d157-4701-49dd-9145-41c5c93e22b4 + state: >- + {{ states.light | rejectattr('state', 'eq', 'unavailable') | list | count | int }} + unit_of_measurement: '' + - name: 'Number of Switches' + unique_id: d2d60031-818c-475f-8243-c0101616847d + state: >- + {{ states.switch | rejectattr('state', 'eq', 'unavailable') | list | count | int }} + unit_of_measurement: '' + - name: 'Number of online Cameras' + unique_id: 46cefd93-b7d5-4fbf-b6d4-2fe94a053122 + state: >- + {{ states.camera | rejectattr('state', 'eq', 'unavailable') | list | count | int }} + unit_of_measurement: '' + - name: 'Number of Media Players' + unique_id: 295c724c-2044-4d06-8272-d92b086ff76f + state: >- + {{ states.media_player | rejectattr('state', 'eq', 'unavailable') | list | count | int }} + unit_of_measurement: '' + - name: 'Number of Entities' + unique_id: f2b17937-59ca-4a84-9a1b-a666bfb0566b + state: >- + {{ states | rejectattr('state', 'eq', 'unavailable') | list | count | int }} + unit_of_measurement: '' + - name: 'Number of NA Entities' + unique_id: cf2e5f8c-7f82-40c6-ae76-b587b7945c41 + state: >- + {{ states | selectattr('state', 'eq', 'unavailable') | map(attribute='entity_id') | list | count | int }} + unit_of_measurement: '' + - name: Current Lights On + unique_id: ea4afe4a-d0ac-4fce-968f-b181e50f4dc8 + unit_of_measurement: '' + state: >- + {% set lights = [ + states.light.living_room_color_1, + states.light.living_room_color_2, + states.light.living_room_color_3, + states.light.dining_room_lamp, + states.light.mud_room_overhead, + states.light.downstairs_bathroom_left, + states.light.downstairs_bathroom_right, + states.light.tina_lamp_top, + states.light.tina_lamp_side, + states.light.tina_desk_strip, + states.light.basement_tall_lamp, + states.light.basement_short_lamp, + states.light.basement_stairwell, + states.light.basement_led_strip_1, + states.light.hallway_overhead, + states.light.upstairs_bathroom_left, + states.light.upstairs_bathroom_middle_left, + states.light.upstairs_bathroom_middle_right, + states.light.upstairs_bathroom_right, + states.light.upstairs_bathroom_wall, + states.light.master_bedroom_front, + states.light.master_bedroom_side, + states.light.master_bedroom_closet, + states.light.kallen_bedroom_wall, + states.light.kallen_bedroom_overhead, + states.light.emma_bedroom_light, + states.light.front_porch_light + ] %} + {{ lights | selectattr('state','eq','on') | list | count | int }} + - name: First Floor Lights On + unique_id: fca1468d-4e0c-40ff-8c7f-251f99ee1b5b + unit_of_measurement: '' + state: >- + {% set lights = [ + states.light.living_room_color_1, + states.light.living_room_color_2, + states.light.living_room_color_3, + states.light.dining_room_lamp, + states.light.mud_room_overhead, + states.light.downstairs_bathroom_left, + states.light.downstairs_bathroom_right, + states.light.tina_lamp_top, + states.light.tina_lamp_side, + states.light.tina_desk_strip + ] %} + {{ lights | selectattr('state','eq','on') | list | count | int }} + - name: Second Floor Lights On + unique_id: 517a73c0-67a0-44f9-99f3-5dfec784da18 + unit_of_measurement: '' + state: >- + {% set lights = [ + states.light.hallway_overhead, + states.light.upstairs_bathroom_left, + states.light.upstairs_bathroom_middle_left, + states.light.upstairs_bathroom_middle_right, + states.light.upstairs_bathroom_right, + states.light.upstairs_bathroom_wall, + states.light.master_bedroom_front, + states.light.master_bedroom_side, + states.light.master_bedroom_closet, + states.light.kallen_bedroom_wall, + states.light.kallen_bedroom_overhead, + states.light.emma_bedroom_light + ] %} + {{ lights | selectattr('state','eq','on') | list | count | int }} + - name: Basement Lights On + unique_id: 1a9e13d1-c2bd-44e4-82b2-b975ca61eed3 + unit_of_measurement: '' + state: >- + {% set lights = [ + states.light.basement_stairwell, + states.light.basement_tall_lamp, + states.light.basement_short_lamp, + states.light.basement_led_strip_1 + ] %} + {{ lights | selectattr('state','eq','on') | list | count | int }} + - name: Current Outdoor Lights On + unique_id: 252981eb-e7bf-464a-9bfb-ab14dec4eb70 + unit_of_measurement: '' + state: >- + {% set lights = [ + states.light.front_porch_light + ] %} + {{ lights | selectattr('state','eq','on') | list | count | int }} + - name: Current Computers On + unique_id: fb3f14f3-d0c9-4880-88c6-143d56248f13 + unit_of_measurement: '' + state: >- + {% set computers = [ + states.binary_sensor.tony_desktop_on, + states.binary_sensor.tina_desktop_on, + states.binary_sensor.kallen_desktop_on, + states.binary_sensor.basement_server_on + ] %} + {{ computers | selectattr('state','eq','on') | list | count | int }} + - name: Climate Devices Installed + unique_id: e227272d-a10b-4641-ad27-39dc88a1ac2a + unit_of_measurement: '' + state: >- + {% set devices = [ + states.input_boolean.master_bedroom_aircon_installed, + states.input_boolean.emma_bedroom_aircon_installed + ] %} + {{ devices | selectattr('state','eq','on') | list | count | int }} + - name: A/C Compressors Running + unique_id: f27854e4-3a87-478e-9cdc-491cdb215d41 + unit_of_measurement: '' + state: >- + {% set compressors = [ + states.binary_sensor.emma_aircon_compressor, + states.binary_sensor.master_bedroom_aircon_compressor + ] %} + {{ compressors | selectattr('state','eq','on') | list | count | int }} + - name: A/C Fans Running + unique_id: 0b4b4362-4c35-42a0-98ba-55ac49ca2dbb + unit_of_measurement: '' + state: >- + {% set fans = [ + states.binary_sensor.emma_aircon_fan, + states.binary_sensor.master_bedroom_aircon_fan + ] %} + {{ fans | selectattr('state','eq','on') | list | count | int }} + - name: Fans Running + unique_id: 31f2b8d8-4d21-4328-bb03-482943795359 + unit_of_measurement: '' + state: >- + {% set fans = [ + states.fan.basement_fan, + states.fan.master_bedroom_fan, + states.fan.kallen_bedroom_fan + ] %} + {{ fans | selectattr('state','eq','on') | list | count | int }} + - name: Air Conditioners Running + unique_id: e1a2a8d6-75d9-4de5-9b4b-449681ca27a4 + unit_of_measurement: '' + state: >- + {% set climate = states.climate | selectattr('state','ne','off') | rejectattr('state','eq','unavailable') | rejectattr('state','eq','unknown') | list | count | int %} + {% set fans = [ + states.fan.emma_air_conditioner + ] %} + {% set fans_on = fans | selectattr('state','eq','on') | list | count | int %} + {{ climate + fans_on | int }} + - name: Climate Devices Running + unique_id: 3c61c756-2934-4294-8085-7d3855b692dd + unit_of_measurement: '' + state: >- + {{ (states('sensor.fans_running') | int) + (states('sensor.aircons_running') | int) | int }} + - name: Front Porch Color Temp + unique_id: 21a01514-d382-4c57-9add-3d500464b22b + unit_of_measurement: 'mireds' + state: > + {% if is_state('light.front_porch_light','off') %} + {{ 0 | int }} + {% else %} + {{ state_attr('light.front_porch_light','color_temp') | int }} + {% endif %} + - name: Birthdays Today + unique_id: ec61c919-60a0-47a2-978c-aa2453267d3d + unit_of_measurement: '' + state: > + {% set birthdays = [ + states.sensor.anniversary_tony_s_birthday, + states.sensor.anniversary_tina_s_birthday, + states.sensor.anniversary_kallen_s_birthday, + states.sensor.anniversary_emmalynn_s_birthday + ] %} + {{ birthdays | selectattr('state','eq','0') | list | count | int }} + icon: > + {% set birthdays = [ + states.sensor.anniversary_tony_s_birthday, + states.sensor.anniversary_tina_s_birthday, + states.sensor.anniversary_kallen_s_birthday, + states.sensor.anniversary_emmalynn_s_birthday + ] %} + {% set status = birthdays | selectattr('state','eq','0') | list | count | int %} + {% if status > 0 %} + mdi:cake + {% else %} + mdi:eye + {% endif %} + # The sum of all the years of life in our household, because why not LOL + - name: Second Floor Plugs Current + unique_id: 7f78e126-3986-4a91-8815-8a9435541bea + unit_of_measurement: A + state: > + {% set outlets = [ + states.sensor.master_bedroom_fan_current.state, + states.sensor.master_bedroom_aircon_current.state, + states.sensor.kallen_bedroom_fan_current.state, + states.sensor.emma_air_conditioner_current.state + ] | map('float') | list %} + {{ outlets | sum | round(2) }} + icon: mdi:lightning-bolt-circle + - name: First Floor Plugs Current + unique_id: 29ffd18a-c961-4022-82f3-9aca6919fb84 + unit_of_measurement: A + state: > + {% set outlets = [ + states.sensor.tina_desktop_current.state + ] | map('float') | list %} + {{ outlets | sum | round(2) }} + icon: mdi:lightning-bolt-circle + - name: Basement Plugs Current + unique_id: 79052046-80ac-43e4-8fd4-ec7e36cefe3d + unit_of_measurement: A + state: > + {% set outlets = [ + states.sensor.basement_fan_current.state, + states.sensor.basement_led_strip_current.state, + states.sensor.basement_server_current.state, + states.sensor.kallen_desktop_current.state, + states.sensor.tony_desktop_current.state + ] | map('float') | list %} + {{ outlets | sum | round(2) }} + icon: mdi:lightning-bolt-circle diff --git a/sensors/tasks.yaml b/sensors/tasks.yaml index 473d052..988bb15 100644 --- a/sensors/tasks.yaml +++ b/sensors/tasks.yaml @@ -1,63 +1,31 @@ -- platform: rest - name: Kallen Tasks - method: GET - resource: 'https://api.todoist.com/sync/v9/projects/get_data' - params: - project_id: 2285969005 - headers: - Authorization: !secret todoist_api_token - value_template: '{{value_json[''project''][''id'']}}' - json_attributes: - - project - - items - scan_interval: 30 -- platform: rest - name: Home Tech - method: GET - resource: 'https://api.todoist.com/sync/v9/projects/get_data' - params: - project_id: 2285967948 - headers: - Authorization: !secret todoist_api_token - value_template: '{{value_json[''project''][''id'']}}' - json_attributes: - - project - - items - scan_interval: 30 -- platform: template - sensors: - home_tech_bug_reports: - friendly_name: 'Bug Reports' - unique_id: d9c3d6c5-f28f-4b60-a19f-355c8e58f9cb - value_template: "{{ states('sensor.home_tech') }}" - attribute_templates: - project: "{{ state_attr('sensor.home_tech', 'project') }}" - items: "{{ state_attr('sensor.home_tech', 'items')|selectattr('section_id', 'eq', '94865633')|list|selectattr('parent_id','eq',none)|list }}" - home_tech_improvements: - friendly_name: 'Improvements' - unique_id: f1af501a-de94-4951-a841-9ef82a08bb95 - value_template: "{{ states('sensor.home_tech') }}" - attribute_templates: - project: "{{ state_attr('sensor.home_tech', 'project') }}" - items: "{{ state_attr('sensor.home_tech', 'items')|selectattr('section_id', 'eq', '114199257')|list|selectattr('parent_id','eq',none)|list }}" - home_tech_in_progress: - friendly_name: 'In Progress' - unique_id: ea820db3-3b17-49a5-8ab9-b5d1e89c5da1 - value_template: "{{ states('sensor.home_tech') }}" - attribute_templates: - project: "{{ state_attr('sensor.home_tech', 'project') }}" - items: "{{ state_attr('sensor.home_tech', 'items')|selectattr('section_id', 'eq', '81234677')|list|selectattr('parent_id','eq',none)|list }}" - home_tech_long_term: - friendly_name: 'Long Term or Maintaining' - unique_id: 4c807471-6d9a-4f64-bad9-893a330a9499 - value_template: "{{ states('sensor.home_tech') }}" - attribute_templates: - project: "{{ state_attr('sensor.home_tech', 'project') }}" - items: "{{ state_attr('sensor.home_tech', 'items')|selectattr('section_id', 'eq', '88456343')|list|selectattr('parent_id','eq',none)|list }}" - home_tech_postponed_indefinitely: - friendly_name: 'Postponed Indefinitely' - unique_id: eadb779a-eb65-4cc8-a184-fb5d6f29c48d - value_template: "{{ states('sensor.home_tech') }}" - attribute_templates: - project: "{{ state_attr('sensor.home_tech', 'project') }}" - items: "{{ state_attr('sensor.home_tech', 'items')|selectattr('section_id', 'eq', '81234736')|list|selectattr('parent_id','eq',none)|list }}" \ No newline at end of file +- sensor: + - name: 'Bug Reports' + unique_id: d9c3d6c5-f28f-4b60-a19f-355c8e58f9cb + state: "{{ states('sensor.home_tech') }}" + attributes: + project: "{{ state_attr('sensor.home_tech', 'project') }}" + items: "{{ state_attr('sensor.home_tech', 'items')|selectattr('section_id', 'eq', '94865633')|list|selectattr('parent_id','eq',none)|list }}" + - name: 'Improvements' + unique_id: f1af501a-de94-4951-a841-9ef82a08bb95 + state: "{{ states('sensor.home_tech') }}" + attributes: + project: "{{ state_attr('sensor.home_tech', 'project') }}" + items: "{{ state_attr('sensor.home_tech', 'items')|selectattr('section_id', 'eq', '114199257')|list|selectattr('parent_id','eq',none)|list }}" + - name: 'In Progress' + unique_id: ea820db3-3b17-49a5-8ab9-b5d1e89c5da1 + state: "{{ states('sensor.home_tech') }}" + attributes: + project: "{{ state_attr('sensor.home_tech', 'project') }}" + items: "{{ state_attr('sensor.home_tech', 'items')|selectattr('section_id', 'eq', '81234677')|list|selectattr('parent_id','eq',none)|list }}" + - name: 'Long Term or Maintaining' + unique_id: 4c807471-6d9a-4f64-bad9-893a330a9499 + state: "{{ states('sensor.home_tech') }}" + attributes: + project: "{{ state_attr('sensor.home_tech', 'project') }}" + items: "{{ state_attr('sensor.home_tech', 'items')|selectattr('section_id', 'eq', '88456343')|list|selectattr('parent_id','eq',none)|list }}" + - name: 'Postponed Indefinitely' + unique_id: eadb779a-eb65-4cc8-a184-fb5d6f29c48d + state: "{{ states('sensor.home_tech') }}" + attributes: + project: "{{ state_attr('sensor.home_tech', 'project') }}" + items: "{{ state_attr('sensor.home_tech', 'items')|selectattr('section_id', 'eq', '81234736')|list|selectattr('parent_id','eq',none)|list }}" \ No newline at end of file diff --git a/sensors/time.yaml b/sensors/time.yaml index 39a5f58..0f1ce15 100644 --- a/sensors/time.yaml +++ b/sensors/time.yaml @@ -1,33 +1,19 @@ -- platform: template - sensors: - today_is: - friendly_name: 'Today is' - unique_id: 18e7d262-14f6-4f67-a291-8faf85d4104d - value_template: "{{ ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'][now().weekday()] }}" - month_is: - friendly_name: 'Month is' - unique_id: fd7a9fe3-4a29-4235-8959-b26d79c6646c - value_template: "{{ ['January','February','March','April','May','June','August','September','October','November','December'][now().month-1] }}" - kallen_timer_remaining_minutes: - friendly_name: 'Kallen Timer Remaining Minutes' - unique_id: ca06c860-2bc7-4c16-810b-c338724459ca - value_template: >- - {% set f = state_attr('timer.kallen_timer','finishes_at') %} - {{ '00' if f == none else - (as_datetime(f) - now()).total_seconds() | timestamp_custom('%M', false) }} - kallen_timer_remaining_seconds: - friendly_name: 'Kallen Timer Remaining Seconds' - unique_id: d81d5726-1229-4c0c-846c-69aeeead7313 - value_template: >- - {% set f = state_attr('timer.kallen_timer','finishes_at') %} - {{ '00' if f == none else - (as_datetime(f) - now()).total_seconds() | timestamp_custom('%S', false) }} - -- platform: time_date - display_options: - - 'time' - - 'date' - - 'date_time' - - 'time_date' - - 'time_utc' - - 'beat' \ No newline at end of file +- sensor: + - name: 'Today is' + unique_id: 18e7d262-14f6-4f67-a291-8faf85d4104d + state: "{{ ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'][now().weekday()] }}" + - name: 'Month is' + unique_id: fd7a9fe3-4a29-4235-8959-b26d79c6646c + state: "{{ ['January','February','March','April','May','June','August','September','October','November','December'][now().month-1] }}" + - name: 'Kallen Timer Remaining Minutes' + unique_id: ca06c860-2bc7-4c16-810b-c338724459ca + state: >- + {% set f = state_attr('timer.kallen_timer','finishes_at') %} + {{ '00' if f == none else + (as_datetime(f) - now()).total_seconds() | timestamp_custom('%M', false) }} + - name: 'Kallen Timer Remaining Seconds' + unique_id: d81d5726-1229-4c0c-846c-69aeeead7313 + state: >- + {% set f = state_attr('timer.kallen_timer','finishes_at') %} + {{ '00' if f == none else + (as_datetime(f) - now()).total_seconds() | timestamp_custom('%S', false) }} \ No newline at end of file diff --git a/template.yaml b/template.yaml deleted file mode 100644 index b768f1e..0000000 --- a/template.yaml +++ /dev/null @@ -1,4 +0,0 @@ -binary_sensor: - - name: People Present - state: > - {{ is_state('person.tony_stork', 'home') or is_state('person.christina_stork', 'home') }} \ No newline at end of file