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