816 lines
32 KiB
YAML
816 lines
32 KiB
YAML
weather:
|
|
- platform: template
|
|
name: "Iron Nerd Weather Station"
|
|
condition_template: "{{ states('weather.iron_nerd_studios') }}"
|
|
temperature_template: "{{ states('sensor.pirateweather_temperature') | float }}"
|
|
humidity_template: "{{ states('sensor.pirateweather_humidity') | float }}"
|
|
forecast_template: "{{ state_attr('weather.iron_nerd_studios', 'forecast') }}"
|
|
pressure_template: "{{ states('sensor.barometric_pressure') | float }}"
|
|
wind_speed_template: "{{ states('sensor.pirateweather_wind_speed') | float }}"
|
|
wind_bearing_template: "{{ states('sensor.pirateweather_wind_bearing') | float }}"
|
|
visibility_template: "{{ states('sensor.kdfi_visibility') | float }}"
|
|
attribution_template: "Weather data from Iron Nerd's custom weather station template"
|
|
ozone_template: "{{ states('sensor.pirateweather_ozone') | float }}"
|
|
- platform: pirateweather
|
|
api_key: !secret pirate_weather_api
|
|
mode: "daily"
|
|
name: Iron Nerd Studios
|
|
|
|
sensor:
|
|
# - platform: template
|
|
# sensors:
|
|
# pirateweather_pressure_inhg:
|
|
# friendly_name: Pirateweather Pressure inHg
|
|
# device_class: pressure
|
|
# unit_of_measurement: 'inHg'
|
|
# value_template: "{{ (states('sensor.pirateweather_pressure') | float * 0.029529983071445) | round(2) }}"
|
|
- platform: pirateweather
|
|
api_key: !secret pirate_weather_api
|
|
scan_interval: '00:15:00'
|
|
monitored_conditions:
|
|
- icon
|
|
- temperature
|
|
- precip_probability
|
|
- precip_type
|
|
- humidity
|
|
- cloud_cover
|
|
- nearest_storm_distance
|
|
- precip_intensity
|
|
- wind_speed
|
|
- precip_accumulation
|
|
- apparent_temperature
|
|
- dew_point
|
|
- wind_gust
|
|
- wind_bearing
|
|
- pressure
|
|
- ozone
|
|
- minutely_summary
|
|
- hourly_summary
|
|
- daily_summary
|
|
- temperature_high
|
|
- temperature_low
|
|
- apparent_temperature_high
|
|
- apparent_temperature_low
|
|
- precip_intensity_max
|
|
- uv_index
|
|
- moon_phase
|
|
- sunrise_time
|
|
- sunset_time
|
|
- nearest_storm_bearing
|
|
- alerts
|
|
units: us
|
|
- platform: weatheralerts
|
|
state: OH
|
|
zone: 4
|
|
county: 39
|
|
|
|
- platform: average
|
|
name: 'Average Temperature'
|
|
duration:
|
|
days: 7
|
|
entities:
|
|
- sensor.pirateweather_temperature
|
|
- platform: average
|
|
name: 'Average Feels Like'
|
|
duration:
|
|
days: 7
|
|
entities:
|
|
- sensor.pirateweather_apparent_temperature
|
|
- platform: average
|
|
name: 'Average Wind Speed'
|
|
duration:
|
|
days: 7
|
|
entities:
|
|
- sensor.pirateweather_wind_speed
|
|
|
|
|
|
- platform: template
|
|
sensors:
|
|
current_forecast:
|
|
friendly_name: Current Forecast
|
|
unit_of_measurement: ''
|
|
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 }}
|
|
current_forecast_detail:
|
|
friendly_name: Current Forecast Detail
|
|
unit_of_measurement: ''
|
|
icon_template: mdi:weather-sunny
|
|
value_template: >-
|
|
{%- macro getReport() -%}
|
|
{{ [
|
|
'Today in Defiance ',
|
|
'Later Today ',
|
|
'For the rest of the day '
|
|
] | random }}
|
|
expect a high of {{ state_attr('sensor.current_forecast','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 }}
|
|
{{ state_attr('sensor.current_forecast','overnight_low') }} degrees.
|
|
{%- endmacro -%}
|
|
{# a macro that removes all newline characters, empty spaces, and returns formatted text #}
|
|
{%- macro cleanup(data) -%}
|
|
{%- for item in data.split("\n") if item | trim != "" -%}
|
|
{{ item | trim }} {% endfor -%}
|
|
{%- endmacro -%}
|
|
{# a macro to call all macros :) #}
|
|
{%- macro mother_of_all_macros() -%}
|
|
{{ getReport() }}
|
|
{%- endmacro -%}
|
|
|
|
{# Call the macro #}
|
|
{{- cleanup(mother_of_all_macros()) -}}
|
|
tomorrow_forecast:
|
|
friendly_name: Tomorrows Forecast
|
|
unit_of_measurement: ''
|
|
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
|
|
unit_of_measurement: ''
|
|
icon_template: mdi:weather-sunny
|
|
value_template: >-
|
|
{%- 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 -%}
|
|
{# a macro that removes all newline characters, empty spaces, and returns formatted text #}
|
|
{%- macro cleanup(data) -%}
|
|
{%- for item in data.split("\n") if item | trim != "" -%}
|
|
{{ item | trim }} {% endfor -%}
|
|
{%- endmacro -%}
|
|
{# a macro to call all macros :) #}
|
|
{%- macro mother_of_all_macros() -%}
|
|
{{ getReport() }}
|
|
{%- endmacro -%}
|
|
|
|
{# Call the macro #}
|
|
{{- cleanup(mother_of_all_macros()) -}}
|
|
current_conditions:
|
|
friendly_name: Current Conditions
|
|
unit_of_measurement: ''
|
|
icon_template: mdi:weather-sunny
|
|
value_template: >-
|
|
{%- macro getReport() -%}
|
|
The Weather in Defiance
|
|
{{ [
|
|
' is ',
|
|
' is currently '
|
|
] | random }}
|
|
{{states('sensor.pirateweather_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 -%}
|
|
{# a macro that removes all newline characters, empty spaces, and returns formatted text #}
|
|
{%- macro cleanup(data) -%}
|
|
{%- for item in data.split("\n") if item | trim != "" -%}
|
|
{{ item | trim }} {% endfor -%}
|
|
{%- endmacro -%}
|
|
{# a macro to call all macros :) #}
|
|
{%- macro mother_of_all_macros() -%}
|
|
{{ getReport() }}
|
|
{%- endmacro -%}
|
|
|
|
{# Call the macro #}
|
|
{{- cleanup(mother_of_all_macros()) -}}
|
|
current_conditions_detail:
|
|
friendly_name: Current Conditions Detail
|
|
unit_of_measurement: ''
|
|
icon_template: mdi:weather-sunny
|
|
value_template: >-
|
|
{%- macro getReport() -%}
|
|
The Weather in Defiance
|
|
{{ [
|
|
' is ',
|
|
' is currently '
|
|
] | random }}
|
|
{{states('sensor.pirateweather_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 %}
|
|
{%- if is_state('binary_sensor.night','off')%}
|
|
{{ [
|
|
'Later Today ',
|
|
'For the rest of the day '
|
|
] | random }}
|
|
expect a high of {{ state_attr('sensor.current_forecast','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 }}
|
|
{{ state_attr('sensor.current_forecast','overnight_low') }} degrees.
|
|
{%- else -%}
|
|
{{ [
|
|
'Tonight expect a low of ',
|
|
'Overnight expect a low of '
|
|
] | random }}
|
|
{{ state_attr('sensor.current_forecast','overnight_low') }} degrees.
|
|
{% endif %}
|
|
{%- endmacro -%}
|
|
{# a macro that removes all newline characters, empty spaces, and returns formatted text #}
|
|
{%- macro cleanup(data) -%}
|
|
{%- for item in data.split("\n") if item | trim != "" -%}
|
|
{{ item | trim }} {% endfor -%}
|
|
{%- endmacro -%}
|
|
{# a macro to call all macros :) #}
|
|
{%- macro mother_of_all_macros() -%}
|
|
{{ getReport() }}
|
|
{%- endmacro -%}
|
|
|
|
{# Call the macro #}
|
|
{{- cleanup(mother_of_all_macros()) -}}
|
|
outside_pressure:
|
|
friendly_name: 'Outside Pressure'
|
|
value_template: '{{ state_attr(''weather.iron_nerd_weather_station'',''pressure'') }}'
|
|
unit_of_measurement: ''
|
|
todays_high_temp:
|
|
friendly_name: "Today's High Temp"
|
|
unit_of_measurement: ''
|
|
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"
|
|
unit_of_measurement: ''
|
|
device_class: temperature
|
|
value_template: >-
|
|
{% set forecast = state_attr('weather.iron_nerd_weather_station','forecast')[1] %}
|
|
{{ forecast.lowtemp }}
|
|
clothing_forecast:
|
|
friendly_name: "Clothing Forecast"
|
|
unit_of_measurement: ''
|
|
value_template: >-
|
|
{% if is_state('binary_sensor.overnight', 'off') %}
|
|
{% set temp = states('sensor.todays_high_temp')|int %}
|
|
{% else %}
|
|
{% set temp = states('sensor.pirateweather_temperature')|round %}
|
|
{% endif %}
|
|
{%- if states('sensor.todays_high_temp')|int > 63 %}
|
|
{%- if states('sensor.todays_high_temp')|int < 80 %}
|
|
Nice
|
|
{% elif states('sensor.todays_high_temp')|int > 95 %}
|
|
Hot
|
|
{% else %}
|
|
Toasty
|
|
{%- endif %}
|
|
{% elif states('sensor.todays_high_temp')|int < 64 %}
|
|
{%- if states('sensor.todays_high_temp')|int < 32 %}
|
|
Freezing
|
|
{% elif states('sensor.todays_high_temp')|int > 50 %}
|
|
Chilly
|
|
{% else %}
|
|
Cold
|
|
{%- endif %}
|
|
{% else %}
|
|
Unknown
|
|
{%- endif %}
|
|
clothing_forecast_detail:
|
|
friendly_name: "Clothing Forecast Detail"
|
|
unit_of_measurement: ''
|
|
value_template: >-
|
|
{% if is_state('binary_sensor.morning','on') %}
|
|
Based on the forecasted high temperature,
|
|
{% if is_state('sensor.clothing_forecast', 'Freezing') %}
|
|
It is going to be freezing today. so I suggest wearing long pants and a heavy coat.
|
|
{% elif is_state('sensor.clothing_forecast','Cold') %}
|
|
It is going to be cold today. so I suggest wearing long pants and a light jacket.
|
|
{% elif is_state('sensor.clothing_forecast', 'Chilly') %}
|
|
It is going to be chilly today. so I suggest wearing at least long pants.
|
|
{% elif is_state('sensor.clothing_forecast', 'Nice') %}
|
|
It is going to be
|
|
{{ [ 'nice outside. ',
|
|
'pretty nice outside. ',
|
|
'a good day to be outside. ',
|
|
'rather enjoyable outside. ',
|
|
] | random }}
|
|
So I suggest wearing shorts.
|
|
{% elif is_state('sensor.clothing_forecast', 'Toasty') %}
|
|
It is going to be
|
|
{{ [ 'bit warm ',
|
|
' 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
|
|
{{ [ 'hot',
|
|
'hotter than the sun ',
|
|
'hotter than hot. but in a lot of bad ways ',
|
|
'hotter than the sun outside ',
|
|
'super hot ',
|
|
'hotter than the inside of a volcano '
|
|
] | random }}
|
|
today. So I suggest wearing shorts.
|
|
{% else %}
|
|
It is going to be {{ states.sensor.clothing_forecast.state }} today so I suggest wearing shorts.
|
|
{% endif %}
|
|
{% else %}
|
|
Based on the current temperature,
|
|
{% if is_state('sensor.clothing_forecast', 'Freezing') %}
|
|
It is freezing. 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 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
|
|
{{ [ 'nice outside. ',
|
|
'pretty nice outside. ',
|
|
'a good day to be outside. ',
|
|
'rather enjoyable outside. ',
|
|
] | random }}
|
|
So I suggest wearing shorts.
|
|
{% elif is_state('sensor.clothing_forecast', 'Toasty') %}
|
|
It is
|
|
{{ [ 'bit warm ',
|
|
' rather warm outside ',
|
|
' almost too hot outside ',
|
|
' a little warm ',
|
|
] | random }}
|
|
outside. So I suggest wearing shorts.
|
|
{% elif is_state('sensor.clothing_forecast', 'Hot') %}
|
|
It is
|
|
{{ [ 'hot',
|
|
'hotter than the sun ',
|
|
'hotter than hot. but in a lot of bad ways ',
|
|
'hotter than the sun outside ',
|
|
'super hot ',
|
|
'hotter than the inside of a volcano '
|
|
] | random }}
|
|
outside. So I suggest wearing shorts.
|
|
{% else %}
|
|
It is {{ states.sensor.clothing_forecast.state }} right now so I suggest wearing shorts.
|
|
{% endif %}
|
|
{% endif %}
|
|
nws_current_visibility:
|
|
friendly_name: "Current Visibility"
|
|
value_template: "{{ ((state_attr('weather.iron_nerd_weather_station','visibility') | int) * 0.621371) | round }}"
|
|
|
|
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 }}"
|
|
# lightning_warning:
|
|
# friendly_name: "Lightning Warning"
|
|
# value_template: >-
|
|
# {%- if states('sensor.recent_lightning_strikes') | int > 0 %}
|
|
# Unsafe
|
|
# {% else %}
|
|
# Safe
|
|
# {%- endif %}
|
|
|
|
input_boolean:
|
|
freeze_warning:
|
|
name: Freeze Warning
|
|
icon: mdi:snowflake-alert
|
|
weather_alert_texts:
|
|
name: Weather Alert Texts
|
|
icon: mdi:telegram
|
|
lightning_warning:
|
|
name: Lightning Warning
|
|
icon: mdi:flash-alert
|
|
tornado_alarm:
|
|
name: Tornado Alarm
|
|
icon: mdi:speaker-wireless
|
|
tstorm_alarm:
|
|
name: T-Storm Alarm
|
|
icon: mdi:speaker-wireless
|
|
raining:
|
|
name: Raining
|
|
|
|
automation:
|
|
- alias: 'record previous day rainfall'
|
|
trigger:
|
|
- platform: time
|
|
at: '23:58:00'
|
|
action:
|
|
service: mqtt.publish
|
|
data_template:
|
|
topic: 'house/rain/yesterday_total'
|
|
retain: true
|
|
payload: "{{ states('sensor.todays_rainfall') }}"
|
|
|
|
- alias: Forecast Low Near Freezing
|
|
trigger:
|
|
- platform: numeric_state
|
|
entity_id: sensor.tonights_low_temp
|
|
below: 35
|
|
- platform: numeric_state
|
|
entity_id: sensor.pirateweather_temperature
|
|
below: 35
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.freeze_warning
|
|
state: 'off'
|
|
action:
|
|
- service: input_boolean.turn_on
|
|
entity_id: input_boolean.freeze_warning
|
|
|
|
- alias: Forecast Low Above Freezing
|
|
trigger:
|
|
- platform: numeric_state
|
|
entity_id: sensor.tonights_low_temp
|
|
above: 33
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.freeze_warning
|
|
state: 'on'
|
|
- condition: numeric_state
|
|
entity_id: sensor.tonights_low_temp
|
|
above: 35
|
|
action:
|
|
- service: input_boolean.turn_off
|
|
entity_id: input_boolean.freeze_warning
|
|
|
|
|
|
script:
|
|
|
|
refresh_weather_alert_sensors:
|
|
sequence:
|
|
- service: homeassistant.update_entity
|
|
entity_id: sensor.tornado_warning
|
|
- service: homeassistant.update_entity
|
|
entity_id: sensor.tornado_watch
|
|
- service: homeassistant.update_entity
|
|
entity_id: sensor.tstorm_warning
|
|
- service: homeassistant.update_entity
|
|
entity_id: sensor.tstorm_watch
|
|
- service: homeassistant.update_entity
|
|
entity_id: sensor.flood_warning
|
|
- service: homeassistant.update_entity
|
|
entity_id: sensor.flood_watch
|