home-assistant-configuration/config/packages/weather.yaml

683 lines
31 KiB
YAML
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

###############################################################################
# @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
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
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
lightning_warning:
name: Lightning Warning
icon: mdi:flash-alert
### You first need to find either your NWS Zone ID or County ID. Im 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
#Ive 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:
- platform: nws_alerts
zone_id: 'GAZ034,GAC135'
- platform: mqtt
name: "Back Porch"
state_topic: "house/acurite2mqtt/Acurite-6045M_3078"
unit_of_measurement: '°F'
value_template: "{{ value_json.temperature_F }}"
json_attributes_topic: "house/acurite2mqtt/Acurite-6045M_3078"
device_class: temperature
- platform: mqtt
name: "Crawlspace"
state_topic: "house/acurite2mqtt/Acurite-609TXC_73"
unit_of_measurement: '°F'
value_template: "{{ value_json.temperature_F }}"
json_attributes_topic: "house/acurite2mqtt/Acurite-609TXC_73"
device_class: temperature
- platform: mqtt
name: "Garage"
state_topic: "house/acurite2mqtt/Acurite-Tower_10968"
unit_of_measurement: '°F'
value_template: "{{ value_json.temperature_F }}"
json_attributes_topic: "house/acurite2mqtt/Acurite-Tower_10968"
device_class: temperature
- platform: mqtt
name: "Lightning total count"
state_topic: "house/lightning/total_count"
- platform: statistics
name: Inside Humidity Stats
entity_id: sensor.current_inside_humidity
sampling_size: 500
- platform: template
sensors:
flood_watch:
friendly_name: 'Flood Watch'
entity_id: sensor.time
value_template: >-
{% if 'Flood Watch' in states.sensor.nws_alerts.attributes.title.split(' - ')[0] or
'Flood Watch' in states.sensor.nws_alerts.attributes.title.split(' - ')[1] or
'Flood Watch' in states.sensor.nws_alerts.attributes.title.split(' - ')[2] or
'Flood Watch' in states.sensor.nws_alerts.attributes.title.split(' - ')[3] or
'Flood Watch' in states.sensor.nws_alerts.attributes.title.split(' - ')[4] or
'Flood Watch' in states.sensor.nws_alerts.attributes.title.split(' - ')[5]
%}
{{ states.sensor.nws_alerts.attributes.spoken_desc }}
{% else %}
inactive
{% endif %}
flood_warning:
friendly_name: 'Flood Warning'
entity_id: sensor.time
value_template: >-
{% if 'Flood Warning' in states.sensor.nws_alerts.attributes.title.split(' - ')[0] or
'Flood Warning' in states.sensor.nws_alerts.attributes.title.split(' - ')[1] or
'Flood Warning' in states.sensor.nws_alerts.attributes.title.split(' - ')[2] or
'Flood Warning' in states.sensor.nws_alerts.attributes.title.split(' - ')[3] or
'Flood Warning' in states.sensor.nws_alerts.attributes.title.split(' - ')[4] or
'Flood Warning' in states.sensor.nws_alerts.attributes.title.split(' - ')[5]
%}
{{ states.sensor.nws_alerts.attributes.spoken_desc }}
{% else %}
inactive
{% endif %}
tstorm_warning:
friendly_name: 'Thunderstorm Warning'
entity_id: sensor.time
value_template: >-
{% if 'Thunderstorm Warning' in states.sensor.nws_alerts.attributes.title.split(' - ')[0] or
'Thunderstorm Warning' in states.sensor.nws_alerts.attributes.title.split(' - ')[1] or
'Thunderstorm Warning' in states.sensor.nws_alerts.attributes.title.split(' - ')[2] or
'Thunderstorm Warning' in states.sensor.nws_alerts.attributes.title.split(' - ')[3] or
'Thunderstorm Warning' in states.sensor.nws_alerts.attributes.title.split(' - ')[4] or
'Thunderstorm Warning' in states.sensor.nws_alerts.attributes.title.split(' - ')[5]
%}
{{ states.sensor.nws_alerts.attributes.spoken_desc }}
{% else %}
inactive
{% endif %}
tstorm_watch:
friendly_name: 'Thunderstorm Watch'
entity_id: sensor.time
value_template: >-
{% if 'Thunderstorm Watch' in states.sensor.nws_alerts.attributes.title.split(' - ')[0] or
'Thunderstorm Watch' in states.sensor.nws_alerts.attributes.title.split(' - ')[1] or
'Thunderstorm Watch' in states.sensor.nws_alerts.attributes.title.split(' - ')[2] or
'Thunderstorm Watch' in states.sensor.nws_alerts.attributes.title.split(' - ')[3] or
'Thunderstorm Watch' in states.sensor.nws_alerts.attributes.title.split(' - ')[4] or
'Thunderstorm Watch' in states.sensor.nws_alerts.attributes.title.split(' - ')[5]
%}
{{ states.sensor.nws_alerts.attributes.spoken_desc }}
{% else %}
inactive
{% endif %}
tornado_watch:
friendly_name: 'Tornado Watch'
entity_id: sensor.time
value_template: >-
{% if 'Tornado Watch' in states.sensor.nws_alerts.attributes.title.split(' - ')[0] or
'Tornado Watch' in states.sensor.nws_alerts.attributes.title.split(' - ')[1] or
'Tornado Watch' in states.sensor.nws_alerts.attributes.title.split(' - ')[2] or
'Tornado Watch' in states.sensor.nws_alerts.attributes.title.split(' - ')[3] or
'Tornado Watch' in states.sensor.nws_alerts.attributes.title.split(' - ')[4] or
'Tornado Watch' in states.sensor.nws_alerts.attributes.title.split(' - ')[5]
%}
{{ states.sensor.nws_alerts.attributes.spoken_desc }}
{% else %}
inactive
{% endif %}
tornado_warning:
friendly_name: 'Tornado Warning'
entity_id: sensor.time
value_template: >-
{% if 'Tornado Warning' in states.sensor.nws_alerts.attributes.title.split(' - ')[0] or
'Tornado Warning' in states.sensor.nws_alerts.attributes.title.split(' - ')[1] or
'Tornado Warning' in states.sensor.nws_alerts.attributes.title.split(' - ')[2] or
'Tornado Warning' in states.sensor.nws_alerts.attributes.title.split(' - ')[3] or
'Tornado Warning' in states.sensor.nws_alerts.attributes.title.split(' - ')[4] or
'Tornado Warning' in states.sensor.nws_alerts.attributes.title.split(' - ')[5]
%}
{{ states.sensor.nws_alerts.attributes.spoken_desc }}
{% else %}
inactive
{% endif %}
backporch_weather:
friendly_name: Back Porch Weather
value_template: "{{ states.sensor.back_porch.state | round}} °F / {{ states.sensor.back_porch.attributes.humidity }} %"
garage_weather:
friendly_name: Garage Weather
value_template: "{{ states.sensor.garage.state | round}} °F / {{ states.sensor.garage.attributes.humidity }} %"
crawlspace_weather:
friendly_name: Crawlspace Weather
value_template: "{{ states.sensor.crawlspace.state | round}} °F / {{ states.sensor.crawlspace.attributes.humidity }} %"
clothing_forecast:
friendly_name: "Clothing Forecast"
unit_of_measurement: ''
entity_id: sensor.nws_daytime_temperature
value_template: >-
{%- if states('sensor.nws_daytime_temperature')|float > 63 %}
{%- if states('sensor.nws_daytime_temperature')|float < 80 %}
Nice
{% elif states('sensor.nws_daytime_temperature')|float > 95 %}
Hot
{% else %}
Toasty
{%- endif %}
{% elif states('sensor.nws_daytime_temperature')|float < 64 %}
{%- if states('sensor.nws_daytime_temperature')|float < 32 %}
Freezing
{% elif states('sensor.nws_daytime_temperature')|float > 50 %}
Chilly
{% else %}
Cold
{%- endif %}
{% else %}
Unknown
{%- endif %}
nws_current_forecast:
friendly_name: 'Current Forecast'
entity_id: weather.klzu_daynight
value_template: "{{ states.weather.klzu_daynight.attributes.forecast[0].detailed_description | truncate(250, False) }}"
nws_current_rain_forecast:
friendly_name: 'Current Rain Chance'
entity_id: weather.klzu_daynight
value_template: "{{ states.weather.klzu_daynight.attributes.forecast[0].precipitation_probability }}"
unit_of_measurement: '%'
nws_current_temperature:
friendly_name: 'Current Temperature'
entity_id: weather.klzu_daynight
value_template: "{{ states.weather.klzu_daynight.attributes.temperature }}"
device_class: temperature
nws_daytime_temperature:
friendly_name: 'Daytime Temperature'
entity_id: weather.klzu_daynight
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'
entity_id: weather.klzu_daynight
value_template: "{{ states.weather.klzu_daynight.state }}"
nws_current_humidity:
friendly_name: 'Current Humidity'
entity_id: weather.klzu_daynight
value_template: "{{ states.weather.klzu_daynight.attributes.humidity }}"
nws_current_visibility:
friendly_name: "Current Visability"
entity_id: weather.klzu_daynight
value_template: "{{ states.weather.klzu_daynight.attributes.visibility }}"
nws_current_windspeed:
friendly_name: "Current Windspeed"
entity_id: weather.klzu_daynight
value_template: "{{ states.weather.klzu_daynight.attributes.wind_speed }}"
nws_overnight_low:
friendly_name: "Overnight Low"
entity_id: weather.klzu_daynight
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"
entity_id: weather.klzu_daynight
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"
entity_id: weather.klzu_daynight
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"
entity_id: weather.klzu_daynight
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"
entity_id: weather.klzu_daynight
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"
entity_id: weather.klzu_daynight
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"
entity_id: climate.home
unit_of_measurement: '%'
value_template: "{{ states.climate.home.attributes.current_humidity }}"
lighting_stike_count:
friendly_name: "Lightning Strike Count"
entity_id: sensor.back_porch
value_template: "{{ states.sensor.back_porch.attributes.strike_count }}"
automation:
- alias: 'NWS Weather Alert Pop Up Control'
trigger:
platform: state
entity_id: sensor.nws_alerts
condition:
- condition: template
value_template: '{{states.sensor.nws_alerts.state | int > 0}}'
- condition: template
value_template: '{{ trigger.to_state.state|float > trigger.from_state.state|float }}'
action:
service: script.nws_popup_on_wx_alert
data_template:
title: >
{% if states.sensor.nws_alerts.attributes.title.split(' - ')[5] is defined %}
"{{ states.sensor.nws_alerts.attributes.title.split(' - ')[5] }}"
{% elif states.sensor.nws_alerts.attributes.title.split(' - ')[4] is defined %}
"{{ states.sensor.nws_alerts.attributes.title.split(' - ')[4] }}"
{% elif states.sensor.nws_alerts.attributes.title.split(' - ')[3] is defined %}
"{{ states.sensor.nws_alerts.attributes.title.split(' - ')[3] }}"
{% elif states.sensor.nws_alerts.attributes.title.split(' - ')[2] is defined %}
"{{ states.sensor.nws_alerts.attributes.title.split(' - ')[2] }}"
{% elif states.sensor.nws_alerts.attributes.title.split(' - ')[1] is defined %}
"{{ states.sensor.nws_alerts.attributes.title.split(' - ')[1] }}"
{% else %}
"{{ states.sensor.nws_alerts.attributes.title.split(' - ')[0] }}"
{% endif %}
message: >
{% if states.sensor.nws_alerts.attributes.display_desc.split('\n\n-\n\n')[5] is defined %}
"{{ states.sensor.nws_alerts.attributes.display_desc.split('\n\n-\n\n')[5] }}"
{% elif states.sensor.nws_alerts.attributes.display_desc.split('\n\n-\n\n')[4] is defined %}
"{{ states.sensor.nws_alerts.attributes.display_desc.split('\n\n-\n\n')[4] }}"
{% elif states.sensor.nws_alerts.attributes.display_desc.split('\n\n-\n\n')[3] is defined %}
"{{ states.sensor.nws_alerts.attributes.display_desc.split('\n\n-\n\n')[3] }}"
{% elif states.sensor.nws_alerts.attributes.display_desc.split('\n\n-\n\n')[2] is defined %}
"{{ states.sensor.nws_alerts.attributes.display_desc.split('\n\n-\n\n')[2] }}"
{% elif states.sensor.nws_alerts.attributes.display_desc.split('\n\n-\n\n')[1] is defined %}
"{{ states.sensor.nws_alerts.attributes.display_desc.split('\n\n-\n\n')[1] }}"
{% else %}
"{{ states.sensor.nws_alerts.attributes.display_desc.split('\n\n-\n\n')[0] }}"
{% endif %}
- alias: 'NWS Weather Sensor Refresh'
trigger:
platform: state
entity_id: sensor.nws_alerts
action:
- service: script.refresh_weather_alert_sensors
- alias: NWS Notification Weather Alert
trigger:
platform: state
entity_id: sensor.nws_alerts
condition:
- condition: template
value_template: '{{states.sensor.nws_alerts.state | int > 0}}'
- condition: template
value_template: '{{ trigger.to_state.state|float > trigger.from_state.state|float }}'
- condition: state
entity_id: input_boolean.weather_alert_texts
state: 'on'
action:
- service: script.text_notify
data_template:
title: "Weather Alert for Anchorage House"
message: >
{% if states.sensor.nws_alerts.attributes.title.split(' - ')[5] is defined %}
"NWS: {{ states.sensor.nws_alerts.attributes.title.split(' - ')[5] }}"
{% elif states.sensor.nws_alerts.attributes.title.split(' - ')[4] is defined %}
"NWS: {{ states.sensor.nws_alerts.attributes.title.split(' - ')[4] }}"
{% elif states.sensor.nws_alerts.attributes.title.split(' - ')[3] is defined %}
"NWS: {{ states.sensor.nws_alerts.attributes.title.split(' - ')[3] }}"
{% elif states.sensor.nws_alerts.attributes.title.split(' - ')[2] is defined %}
"NWS: {{ states.sensor.nws_alerts.attributes.title.split(' - ')[2] }}"
{% elif states.sensor.nws_alerts.attributes.title.split(' - ')[1] is defined %}
"NWS: {{ states.sensor.nws_alerts.attributes.title.split(' - ')[1] }}"
{% else %}
"NWS: {{ states.sensor.nws_alerts.attributes.title.split(' - ')[0] }}"
{% endif %}
- alias: NWS Announce Weather Alert
trigger:
- platform: state
entity_id: sensor.nws_alerts
condition:
condition: and
conditions:
- condition: template
value_template: "{{states.sensor.nws_alerts.state | int > 0}}"
- condition: template
value_template: '{{ trigger.to_state.state|float > trigger.from_state.state|float }}'
- condition: template
value_template: "{{ (('Severe' in states.sensor.nws_alerts.attributes.title) or ('Thunderstorm' in states.sensor.nws_alerts.attributes.title)) and 'Warning' in states.sensor.nws_alerts.attributes.title }}"
action:
- service: script.ah_report
data_template:
speech_message: >
{% if states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[5] is defined %}
The National Weather Service Has issued a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[5] }}
{% elif states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[4] is defined %}
The National Weather Service Has issued a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[4] }}
{% elif states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[3] is defined %}
The National Weather Service Has issued a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[3] }}
{% elif states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[2] is defined %}
The National Weather Service Has issued a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[2] }}
{% elif states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[1] is defined %}
The National Weather Service Has issued a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[1] }}
{% else %}
The National Weather Service Has issued a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[0] }}
{% endif %}
- service: script.twitter_notify_image
data_template:
tweet: '{{ [ "Anchorage House is battening down the hatches. Servere Weather is imminent. ",
"The weather outside is getting intense, so I just made a weather announcement.",
"Anchorage House monitors the NWS for severe weather using #HomeAssistant just for these occasions. Thanks for the heads up @NWSAtlanta " ] | random }}'
image: >-
{{ [ "/config/www/tweet_images/lightning.jpg",
"/config/www/tweet_images/lightning-bolt.jpg"] | random }}
- delay: '00:00:15'
- service: script.ah_report
data_template:
speech_message: >
{% if states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[5] is defined %}
The National Weather Service Has issued a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[5] }}
{% elif states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[4] is defined %}
The National Weather Service Has issued a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[4] }}
{% elif states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[3] is defined %}
The National Weather Service Has issued a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[3] }}
{% elif states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[2] is defined %}
The National Weather Service Has issued a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[2] }}
{% elif states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[1] is defined %}
The National Weather Service Has issued a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[1] }}
{% else %}
The National Weather Service Has issued a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[0] }}
{% endif %}
- alias: NWS Announce Weather Alert for Tornado
trigger:
- platform: state
entity_id: sensor.nws_alerts
condition:
condition: and
conditions:
- condition: template
value_template: "{{states.sensor.nws_alerts.state | int > 0}}"
- condition: template
value_template: "{{ 'Tornado Warning' in states.sensor.nws_alerts.attributes.title}}"
action:
- service: script.jarvis_alert
data_template:
message: "Attention!,,,Attention!,,,The National Weather Service Has issued a Tornado Warning for our area."
- service: script.twitter_notify_image
data_template:
tweet: '{{ [ "NWS is sounding the Tornado alarm, so I am too. Anchorage House is taking cover. ",
"Anchorage House is heading to the closet because the NWS just issued a tornado warning for our area.",
"I just activated the internal Tornado Alarm. Thanks for the heads up @NWSAtlanta " ] | random }}'
image: >-
"/config/www/tweet_images/tornado.jpg"
- delay: '00:00:15'
- service: script.jarvis_alert
data_template:
message: "Attention!,,,Attention!,,,The National Weather Service Has issued a Tornado Warning for our area."
- delay: '00:00:15'
- service: input_boolean.turn_on
entity_id: input_boolean.tornado_alarm
- service: script.text_alert
data_template:
title: "Tornado Warning!"
message: "The National Weather Service Has issued a Tornado Warning for our area."
- alias: Lightning Detected
trigger:
- platform: template
value_template: '{{ states.sensor.back_porch.attributes.strike_count | int > states.sensor.lightning_total_count.state | int }}'
condition:
- condition: state
entity_id: input_boolean.lightning_warning
state: 'off'
action:
- service: script.text_notify
data_template:
who: "jeff"
title: "Lightning Detected!"
message: "Lightning has been detected within 20 miles of Anchorage House"
- service: input_boolean.turn_on
entity_id: input_boolean.lightning_warning
- service: script.lightning_warning_audible
- alias: Lightning Warning Off
mode: restart
trigger:
- platform: template
value_template: '{{ states.sensor.back_porch.attributes.strike_count | int == states.sensor.lightning_total_count.state | int }}'
for:
minutes: 20
condition:
- condition: state
entity_id: input_boolean.lightning_warning
state: 'on'
action:
- service: script.text_notify
data_template:
who: "jeff"
title: "Lightning Threat Over."
message: "No more Lightning Strikes detected."
- service: input_boolean.turn_off
entity_id: input_boolean.lightning_warning
- service: script.lightning_clear_audible
- alias: NWS Freeze Warning
trigger:
- platform: state
entity_id: sensor.nws_alerts
condition:
condition: and
conditions:
- condition: template
value_template: "{{states.sensor.nws_alerts.state | int > 0}}"
- condition: template
value_template: "{{ 'Freeze Warning' in states.sensor.nws_alerts.attributes.title}}"
action:
- service: input_boolean.turn_on
entity_id: input_boolean.freeze_warning
- 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
- alias: Activate Tornado alarm
trigger:
- platform: state
entity_id: input_boolean.tornado_alarm
from: 'off'
to: 'on'
action:
- service: script.turn_on
entity_id: script.tornado_alarm
- alias: Deactivate Tornado alarm
trigger:
- platform: state
entity_id: input_boolean.tornado_alarm
from: 'on'
to: 'off'
action:
- service: script.turn_off
entity_id: script.tornado_alarm
- service: media_player.media_stop
entity_id: media_player.ha_speaker
script:
nws_popup_on_wx_alert:
alias: NWS Weather Alert Pop Up
sequence:
## Dismiss any current alert so the UI isn't filled
## up with these if there are more then one.
## Only show the latest alert
- service: persistent_notification.dismiss
data:
notification_id: "nwswxalert"
## Create a new persistant notification in the UI for a new alert
- service_template: >
{% if states.sensor.nws_alerts.state != '0' %}
persistent_notification.create
{% endif %}
data_template:
notification_id: "nwswxalert"
message: "{{ message }}"
title: '{{ title }}'
tornado_alarm:
sequence:
- delay:
seconds: 15
- service: media_player.play_media
entity_id: media_player.ha_speaker
data:
media_content_id: http://192.168.7.40/audio/tornado_alarm.mp3
media_content_type: "music"
- delay:
seconds: 110
- service: media_player.play_media
entity_id: media_player.ha_speaker
data:
media_content_id: http://192.168.7.40/audio/tornado_alarm.mp3
media_content_type: "music"
lightning_warning_audible:
sequence:
- condition: state
entity_id: binary_sensor.day
state: 'on'
- service: script.twitter_notify_image
data_template:
tweet: '{{ [ "Did you see that flash? I did. Letting everyone know there is lightning nearby.",
"When Lightning is near I notify the residents of Anchorage House to keep them safe.",
"If the residents of Anchorage House didnt hear the thunder I just gave them a heads up.",
"Everyone inside! If you are near Anchorage House that is. Lightning is near." ] | random }}'
image: >-
{{ [ "/config/www/tweet_images/lightning.jpg",
"/config/www/tweet_images/lightning-bolt.jpg"] | random }}
- service: script.ah_report
data:
call_lightning_alert: 1
lightning_clear_audible:
sequence:
- condition: state
entity_id: binary_sensor.day
state: 'on'
- service: script.ah_report
data:
call_lightning_clear: 1
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