2020-06-12 20:02:42 +00:00
###############################################################################
# @author : Jeffrey Stone
# @date : 02/19/2019
# @package : Weather
# @description : Weather and NWS Alerts
# @original : https://github.com/Vasiley/Home-Assistant-Main/blob/master/packages/weather_alerts_nws.yaml
###############################################################################
homeassistant :
customize :
package.node_anchors :
customize : &customize
package : 'weather_alerts'
sensor.nws_alert_count :
friendly_name : Alerts
icon : mdi:alert-outline
2021-06-17 01:09:38 +00:00
# weather:
# # REMOVING darksky integration since API is EOL in 18 months. Migrated to NWS
# # - platform: darksky
# # api_key: !secret darksky_api
# - platform: nws
# api_key: !secret nws_api_key
# station: klzu
2020-06-12 20:02:42 +00:00
group :
alerts_card :
name : Alerts
entities :
- sensor.nws_alerts
input_boolean :
freeze_warning :
name : Freeze Warning
icon : mdi:snowflake-alert
weather_alert_texts :
name : Weather Alert Texts
icon : mdi:telegram
2020-08-22 03:28:38 +00:00
lightning_warning :
name : Lightning Warning
icon : mdi:flash-alert
2021-01-02 18:21:28 +00:00
tornado_alarm :
name : Tornado Alarm
icon : mdi:speaker-wireless
tstorm_alarm :
name : T-Storm Alarm
icon : mdi:speaker-wireless
2021-08-04 19:54:34 +00:00
raining :
name : Raining
utility_meter :
daily_rainfall_in :
source : sensor.acurite_rain899_2743_rt
cycle : daily
weekly_rainfall_in :
source : sensor.acurite_rain899_2743_rt
cycle : weekly
2021-08-15 20:44:14 +00:00
recent_lightning_strikes :
2021-08-04 19:54:34 +00:00
source : sensor.acurite_6045m_3078_strcnt
cycle : quarter-hourly
2020-06-12 20:02:42 +00:00
### You first need to find either your NWS Zone ID or County ID. I’ m not sure which is better but I used my Zone ID here.
### You can find your Zone ID by going to https://alerts.weather.gov/ 7, scroll down to your state and click on the “zone list” then look for the entry for your county.
### I recommond useing both
#I’ ve taken much of the underlying work here and created a custom component for nws alerts sensor.
#The sensor can be created by adding the nws_alerts.py file to <config_directory>/custom_components/sensor/ and adding the following to your sensor definitions:
sensor :
2021-06-17 01:09:38 +00:00
# - platform: nws_alerts
# zone_id: 'GAZ034,GAC135'
- platform : weatheralerts
state : GA
zone : 34
county : 135
2020-08-28 01:07:15 +00:00
2020-09-01 01:22:28 +00:00
- platform : statistics
name : Inside Humidity Stats
entity_id : sensor.current_inside_humidity
2021-12-18 15:27:53 +00:00
state_characteristic : mean
2020-09-01 01:22:28 +00:00
sampling_size : 500
2020-06-12 20:02:42 +00:00
- platform : template
sensors :
2020-09-01 01:22:28 +00:00
clothing_forecast :
friendly_name : "Clothing Forecast"
unit_of_measurement : ''
value_template : >-
2021-06-17 01:09:38 +00:00
{%- if states('sensor.nws_daytime_temperature')|int > 63 %}
{%- if states('sensor.nws_daytime_temperature')|int < 80 %}
2020-09-01 01:22:28 +00:00
Nice
2021-06-17 01:09:38 +00:00
{% elif states('sensor.nws_daytime_temperature')|int > 95 %}
2020-09-01 01:22:28 +00:00
Hot
{% else %}
Toasty
{%- endif %}
2021-06-17 01:09:38 +00:00
{% elif states('sensor.nws_daytime_temperature')|int < 64 %}
{%- if states('sensor.nws_daytime_temperature')|int < 32 %}
2020-09-01 01:22:28 +00:00
Freezing
2021-06-17 01:09:38 +00:00
{% elif states('sensor.nws_daytime_temperature')|int > 50 %}
2020-09-01 01:22:28 +00:00
Chilly
{% else %}
Cold
{%- endif %}
{% else %}
Unknown
{%- endif %}
nws_current_forecast :
friendly_name : 'Current Forecast'
value_template : "{{ states.weather.klzu_daynight.attributes.forecast[0].detailed_description | truncate(250, False) }}"
nws_current_rain_forecast :
friendly_name : 'Current Rain Chance'
value_template : "{{ states.weather.klzu_daynight.attributes.forecast[0].precipitation_probability }}"
unit_of_measurement : '%'
nws_current_temperature :
friendly_name : 'Current Temperature'
value_template : "{{ states.weather.klzu_daynight.attributes.temperature }}"
device_class : temperature
nws_daytime_temperature :
friendly_name : 'Daytime Temperature'
value_template : >-
{% if states.weather.klzu_daynight.attributes.forecast[0].daytime == True %}
{{ states.weather.klzu_daynight.attributes.forecast[0].temperature }}
{% elif states.weather.klzu_daynight.attributes.forecast[1].daytime == True %}
{{ states.weather.klzu_daynight.attributes.forecast[1].temperature }}
{% endif %}
device_class : temperature
nws_current_condition :
friendly_name : 'Current Condition'
value_template : "{{ states.weather.klzu_daynight.state }}"
nws_current_humidity :
friendly_name : 'Current Humidity'
value_template : "{{ states.weather.klzu_daynight.attributes.humidity }}"
nws_current_visibility :
friendly_name : "Current Visability"
value_template : "{{ states.weather.klzu_daynight.attributes.visibility }}"
nws_current_windspeed :
friendly_name : "Current Windspeed"
value_template : "{{ states.weather.klzu_daynight.attributes.wind_speed }}"
nws_overnight_low :
friendly_name : "Overnight Low"
unit_of_measurement : ''
value_template : >-
{% if states.weather.klzu_daynight.attributes.forecast[0].daytime == False %}
{{ states.weather.klzu_daynight.attributes.forecast[0].temperature }}
{% elif states.weather.klzu_daynight.attributes.forecast[1].daytime == False %}
{{ states.weather.klzu_daynight.attributes.forecast[1].temperature }}
{% endif %}
nws_overnight_forecast :
friendly_name : "Overnight Forecast"
unit_of_measurement : ''
value_template : >-
{% if states.weather.klzu_daynight.attributes.forecast[0].daytime == False %}
{{ states.weather.klzu_daynight.attributes.forecast[0].detailed_description | truncate(250, False) }}
{% elif states.weather.klzu_daynight.attributes.forecast[1].daytime == False %}
{{ states.weather.klzu_daynight.attributes.forecast[1].detailed_description | truncate(250, False) }}
{% elif states.weather.klzu_daynight.attributes.forecast[2].daytime == False %}
{{ states.weather.klzu_daynight.attributes.forecast[2].detailed_description | truncate(250, False) }}
{% endif %}
nws_forecast_tomorrow :
friendly_name : "Forecast Tomorrow"
unit_of_measurement : ''
value_template : >-
{%- if states.weather.klzu_daynight.attributes.forecast[1].daytime == True %}
{{ states.weather.klzu_daynight.attributes.forecast[1].detailed_description | truncate(250, False) }}
{% elif states.weather.klzu_daynight.attributes.forecast[2].daytime == True %}
{{ states.weather.klzu_daynight.attributes.forecast[2].detailed_description | truncate(250, False) }}
{%- endif %}
nws_forecast_rain_tomorrow :
friendly_name : "Rain Chance Tomorrow"
unit_of_measurement : '%'
value_template : >-
{%- if states.weather.klzu_daynight.attributes.forecast[1].daytime == True %}
{{ states.weather.klzu_daynight.attributes.forecast[1].precipitation_probability }}
{% elif states.weather.klzu_daynight.attributes.forecast[2].daytime == True %}
{{ states.weather.klzu_daynight.attributes.forecast[2].precipitation_probability }}
{%- endif %}
nws_forecast_tomorrow_night :
friendly_name : "Forecast Tomorrow Night"
unit_of_measurement : ''
value_template : >-
{%- if states.weather.klzu_daynight.attributes.forecast[1].daytime == True %}
{{ states.weather.klzu_daynight.attributes.forecast[2].detailed_description | truncate(250, False) }}
{% elif states.weather.klzu_daynight.attributes.forecast[2].daytime == True %}
{{ states.weather.klzu_daynight.attributes.forecast[3].detailed_description | truncate(250, False) }}
{%- endif %}
nws_forecast_rain_tomorrow_night :
friendly_name : "Rain Chance Tomorrow Night"
unit_of_measurement : '%'
value_template : >-
{%- if states.weather.klzu_daynight.attributes.forecast[1].daytime == True %}
{{ states.weather.klzu_daynight.attributes.forecast[2].precipitation_probability }}
{% elif states.weather.klzu_daynight.attributes.forecast[2].daytime == True %}
{{ states.weather.klzu_daynight.attributes.forecast[3].precipitation_probability }}
{%- endif %}
current_inside_humidity :
friendly_name : "Current Inside Humidity"
unit_of_measurement : '%'
value_template : "{{ states.climate.home.attributes.current_humidity }}"
lighting_stike_count :
friendly_name : "Lightning Strike Count"
2021-08-15 20:44:14 +00:00
value_template : "{{ states('sensor.acurite_6045m_3078_strcnt') }}"
2021-08-28 19:52:42 +00:00
yesterday_rainfall_in :
friendly_name : "Yesterday Rainfall"
value_template : "{{ state_attr('sensor.daily_rainfall_in', 'last_period') }}"
2021-08-04 19:54:34 +00:00
previous_rainfall :
2021-08-15 20:44:14 +00:00
friendly_name : "Past 48h Rainfall"
2021-08-28 19:54:53 +00:00
value_template : "{{ states('sensor.daily_rainfall_in') | float + state_attr('sensor.daily_rainfall_in', 'last_period') | float }}"
2021-08-28 19:52:42 +00:00
lightning_warning :
friendly_name : "Lightning Warning"
value_template : >-
{%- if states('sensor.recent_lightning_strikes') | int > 0 %}
Unsafe
{% else %}
Safe
{%- endif %}
2021-08-04 19:54:34 +00:00
2020-06-12 20:02:42 +00:00
automation :
2021-08-04 19:54:34 +00:00
- 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') }}"
2020-06-12 20:02:42 +00:00
- alias : Forecast Low Near Freezing
trigger :
- platform : numeric_state
entity_id : sensor.nws_overnight_low
below : 35
- platform : numeric_state
entity_id : sensor.nws_current_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.nws_overnight_low
above : 33
condition :
- condition : state
entity_id : input_boolean.freeze_warning
state : 'on'
- condition : numeric_state
entity_id : sensor.nws_overnight_low
above : 35
action :
- service : input_boolean.turn_off
entity_id : input_boolean.freeze_warning
2021-06-17 01:09:38 +00:00
2020-06-12 20:02:42 +00:00
script :
2020-11-07 16:20:26 +00:00
2020-06-12 20:02:42 +00:00
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
2020-08-22 03:28:38 +00:00
entity_id : sensor.flood_watch