Compare commits
18 Commits
2025.10.3
...
custom_med
| Author | SHA1 | Date | |
|---|---|---|---|
|
a33f9f66ae
|
|||
|
28e3b93441
|
|||
|
bdca4c702a
|
|||
|
4b57efcd74
|
|||
|
7255422ca1
|
|||
|
5ae5e5021e
|
|||
|
bd9c7190ed
|
|||
|
f176e3b867
|
|||
|
1b52cc31a8
|
|||
|
8993196366
|
|||
|
210434e4ad
|
|||
|
e37ac9d504
|
|||
|
bf19984b47
|
|||
|
4634b66866
|
|||
|
001dcbe625
|
|||
|
f70be6ceee
|
|||
|
265e129c06
|
|||
|
00bea40b6b
|
@@ -1 +1 @@
|
||||
2025.10.2
|
||||
2025.12.3
|
||||
146
automations.yaml
146
automations.yaml
@@ -2967,49 +2967,99 @@
|
||||
- id: '1696539209438'
|
||||
alias: Tony Custom Meds Handler
|
||||
description: ''
|
||||
trigger:
|
||||
- platform: time
|
||||
at: input_datetime.tony_custom_meds_notify_p1
|
||||
triggers:
|
||||
- minutes: /30
|
||||
id: trigger30
|
||||
alias: Every 30 minutes
|
||||
trigger: time_pattern
|
||||
- at: input_datetime.tony_custom_meds_notify_p1
|
||||
alias: Notify 1
|
||||
id: p1-notify
|
||||
- platform: state
|
||||
entity_id:
|
||||
trigger: time
|
||||
- alias: Notify 2
|
||||
at: input_datetime.tony_custom_meds_notify_p2
|
||||
id: p2-notify
|
||||
trigger: time
|
||||
- entity_id:
|
||||
- input_boolean.tony_custom_meds_taken_p1
|
||||
from: 'off'
|
||||
to: 'on'
|
||||
id: p1-taken
|
||||
alias: Taken 1
|
||||
condition: []
|
||||
action:
|
||||
- variables:
|
||||
trigger: '{{ trigger.id }}'
|
||||
num: '{{ trigger[:2] }}'
|
||||
reason: '{{ trigger.split(''-'')[1] }}'
|
||||
- if:
|
||||
- condition: template
|
||||
value_template: '{% set active = ''input_boolean.tony_custom_meds_tracker_''
|
||||
+ num %}
|
||||
|
||||
{{ is_state(active,''on'') }}'
|
||||
alias: Check tracker
|
||||
trigger: state
|
||||
- alias: Taken 2
|
||||
entity_id:
|
||||
- input_datetime.tony_custom_meds_taken_p2
|
||||
from: 'off'
|
||||
to: 'on'
|
||||
id: p2-taken
|
||||
trigger: state
|
||||
conditions:
|
||||
- condition: or
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id: input_boolean.tony_custom_meds_tracker_p1
|
||||
state: 'on'
|
||||
- condition: state
|
||||
entity_id: input_boolean.tony_custom_meds_tracker_p2
|
||||
state: 'on'
|
||||
alias: Any custom med trackers are on
|
||||
actions:
|
||||
- alias: Routing
|
||||
if:
|
||||
- condition: trigger
|
||||
id:
|
||||
- trigger30
|
||||
then:
|
||||
- if:
|
||||
- condition: template
|
||||
value_template: '{{ reason == ''notify'' }}'
|
||||
alias: Is this a notification
|
||||
- variables:
|
||||
trigger: '{{ trigger.id }}'
|
||||
num: all
|
||||
reason: notify
|
||||
alias: Override variables to indicate this is an interval notify request
|
||||
- alias: For each reminder entity
|
||||
repeat:
|
||||
for_each: '{{ states.input_boolean | selectattr(''entity_id'',''in'',label_entities(''Tony
|
||||
Custom Meds'')) | selectattr(''entity_id'',''search'',''reminder'') | map(attribute=''entity_id'')
|
||||
| list }}'
|
||||
sequence:
|
||||
- alias: Run custom meds script if tracker is active
|
||||
if:
|
||||
- alias: Check tracker
|
||||
condition: template
|
||||
value_template: '{{ is_state(repeat.item,''on'') }}'
|
||||
then:
|
||||
- data:
|
||||
num: '{{ num }}'
|
||||
reason: '{{ reason }}'
|
||||
alias: Run custom meds script
|
||||
action: script.tony_custom_meds
|
||||
else:
|
||||
- variables:
|
||||
trigger: '{{ trigger.id }}'
|
||||
num: '{{ trigger[:2] }}'
|
||||
reason: '{{ trigger.split(''-'')[1] }}'
|
||||
- alias: Run custom meds script if tracker is active
|
||||
if:
|
||||
- alias: Check tracker
|
||||
condition: template
|
||||
value_template: '{{ is_state(repeat.item,''on'') }}'
|
||||
then:
|
||||
- service: input_boolean.turn_off
|
||||
data: {}
|
||||
target:
|
||||
entity_id: '{{ ''input_boolean.tony_custom_meds_taken_'' + num }}'
|
||||
alias: Turn off "taken" boolean
|
||||
alias: Turn off "taken" boolean if this is a notification
|
||||
- service: script.tony_custom_meds
|
||||
data:
|
||||
num: '{{ num }}'
|
||||
reason: '{{ reason }}'
|
||||
alias: Run custom meds script
|
||||
alias: Run custom meds script if tracker is active
|
||||
- if:
|
||||
- condition: template
|
||||
value_template: '{{ reason == ''notify'' }}'
|
||||
alias: Is this a notification
|
||||
then:
|
||||
- data: {}
|
||||
target:
|
||||
entity_id: '{{ ''input_boolean.tony_custom_meds_taken_'' + num }}'
|
||||
alias: Turn off "taken" boolean
|
||||
action: input_boolean.turn_off
|
||||
alias: Turn off "taken" boolean if this is a notification
|
||||
- data:
|
||||
num: '{{ num }}'
|
||||
reason: '{{ reason }}'
|
||||
alias: Run custom meds script
|
||||
action: script.tony_custom_meds
|
||||
mode: parallel
|
||||
max: 10
|
||||
- id: '1696556688808'
|
||||
@@ -4659,7 +4709,7 @@
|
||||
id: night-notify
|
||||
alias: Night Notify
|
||||
trigger: time
|
||||
enabled: false
|
||||
enabled: true
|
||||
- entity_id:
|
||||
- input_boolean.kallen_morning_meds_taken
|
||||
to: 'on'
|
||||
@@ -4674,7 +4724,7 @@
|
||||
from: 'off'
|
||||
to: 'on'
|
||||
trigger: state
|
||||
enabled: false
|
||||
enabled: true
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id: input_boolean.kallen_overnight
|
||||
@@ -6309,3 +6359,27 @@
|
||||
who: all
|
||||
alias: Routing
|
||||
mode: restart
|
||||
- id: '1765674032722'
|
||||
alias: Emma Bedroom Heater
|
||||
description: Turns Emma's bedroom heater on at the scheduled time
|
||||
triggers:
|
||||
- trigger: time
|
||||
at: input_datetime.emma_bedroom_climate
|
||||
alias: Emma Bedroom Climate
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id: input_select.scheduled_climate_mode_emma_bedroom
|
||||
state:
|
||||
- Heat
|
||||
- condition: state
|
||||
entity_id: input_boolean.emma_bedroom_heater_installed
|
||||
state:
|
||||
- 'on'
|
||||
actions:
|
||||
- action: climate.set_hvac_mode
|
||||
metadata: {}
|
||||
target:
|
||||
entity_id: climate.emma_bedroom_vtherm
|
||||
data:
|
||||
hvac_mode: heat
|
||||
mode: restart
|
||||
|
||||
@@ -33,6 +33,7 @@ frontend:
|
||||
- /hacsfiles/hass-hue-icons/hass-hue-icons.js
|
||||
- /hacsfiles/hass-bha-icons/hass-bha-icons.js
|
||||
- /hacsfiles/material-you-utilities/material-you-utilities.min.js
|
||||
- /hacsfiles/lovelace-card-mod/card-mod.js?v4.1.0
|
||||
javascript_version: latest
|
||||
|
||||
panel_custom:
|
||||
|
||||
@@ -90,8 +90,8 @@
|
||||
{% elif state_attr(team,'opponent_winner') == true %}
|
||||
The {{ state_attr(team,'friendly_name') }} lost their game today against {% if state_attr(team,'league') != 'NCAAF'%}the{% endif %} {{ opponent_name }} by a score of {{ state_attr(team,'opponent_score') }} to {{ state_attr(team,'team_score') }}.
|
||||
{% endif %}
|
||||
{% if state_attr(team,'clock') not in ['postponed','Postponed'] %}
|
||||
This brings their record to {{ state_attr(team,'team_record') | replace("-"," and ") }} on the season.
|
||||
{% if state_attr(team,'clock') not in ['postponed','Postponed'] and state_attr(team,'team_record') != None %}
|
||||
This brings their record to {{ state_attr(team,'team_record') | replace("-"," and ") }} on the season.
|
||||
{% endif %}
|
||||
{% elif yday == date %}
|
||||
{% if state_attr(team,'clock') in ['postponed','Postponed'] %}
|
||||
@@ -171,6 +171,15 @@
|
||||
{% if is_state('binary_sensor.minnesota_wild_inhibit','off') %}
|
||||
{{ sports_pregame('sensor.minnesota_wild') }}
|
||||
{% endif %}
|
||||
{% if is_state('binary_sensor.michigan_wolverines_hockey','off') %}
|
||||
{{ sports_pregame('sensor.michigan_wolverines_hockey') }}
|
||||
{% endif %}
|
||||
{% if is_state('binary_sensor.minnesota_golden_gophers_hockey','off') %}
|
||||
{{ sports_pregame('sensor.minnesota_golden_gophers_hockey') }}
|
||||
{% endif %}
|
||||
{% if is_state('binary_sensor.minnesota_state_mavericks_hockey','off') %}
|
||||
{{ sports_pregame('sensor.minnesota_state_mavericks_hockey') }}
|
||||
{% endif %}
|
||||
{% elif time == 'main' %}
|
||||
{% if is_state('binary_sensor.michigan_wolverines_inhibit','off') %}
|
||||
{{ sports_main('sensor.michigan_wolverines') }}
|
||||
@@ -199,6 +208,15 @@
|
||||
{% if is_state('binary_sensor.minnesota_wild_inhibit','off') %}
|
||||
{{ sports_main('sensor.minnesota_wild') }}
|
||||
{% endif %}
|
||||
{% if is_state('binary_sensor.michigan_wolverines_hockey','off') %}
|
||||
{{ sports_main('sensor.michigan_wolverines_hockey') }}
|
||||
{% endif %}
|
||||
{% if is_state('binary_sensor.minnesota_golden_gophers_hockey','off') %}
|
||||
{{ sports_main('sensor.minnesota_golden_gophers_hockey') }}
|
||||
{% endif %}
|
||||
{% if is_state('binary_sensor.minnesota_state_mavericks_hockey','off') %}
|
||||
{{ sports_main('sensor.minnesota_state_mavericks_hockey') }}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endmacro %}
|
||||
{{ cleanup(data()) }}
|
||||
|
||||
@@ -352,6 +352,20 @@ input_number:
|
||||
step: 1
|
||||
unit_of_measurement: °F
|
||||
icon: mdi:thermometer
|
||||
emma_bedroom_heater_run_threshold:
|
||||
name: Emma Bedroom Heater Run Threshold
|
||||
min: 40
|
||||
max: 80
|
||||
step: 1
|
||||
unit_of_measurement: °F
|
||||
icon: mdi:thermometer
|
||||
emma_bedroom_heater_shutoff_threshold:
|
||||
name: Emma Bedroom Heater Shutoff Threshold
|
||||
min: 40
|
||||
max: 80
|
||||
step: 1
|
||||
unit_of_measurement: °F
|
||||
icon: mdi:thermometer
|
||||
emma_bedroom_aircon_run_threshold:
|
||||
name: Emma Bedroom Aircon Run Threshold
|
||||
min: 40
|
||||
|
||||
@@ -1,375 +1,304 @@
|
||||
weather:
|
||||
- platform: template
|
||||
name: "Iron Nerd Weather Station"
|
||||
condition_template: >
|
||||
{% set stations = [
|
||||
states.weather.home_tempest_forecast_home,
|
||||
states.weather.home,
|
||||
states.weather.kdfi_daynight,
|
||||
states.weather.iron_nerd_studios,
|
||||
states.weather.openweathermap
|
||||
] %}
|
||||
{% set result = stations | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) }}
|
||||
temperature_template: >
|
||||
{% set temps = [
|
||||
states.sensor.home_tempest_temperature,
|
||||
states.sensor.home_temperature,
|
||||
states.sensor.kdfi_temperature,
|
||||
states.sensor.pirateweather_temperature,
|
||||
states.sensor.openweathermap_temperature
|
||||
] %}
|
||||
{% set sensor = temps | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(sensor) | float }}
|
||||
temperature_unit: °F
|
||||
dew_point_template: >
|
||||
{% set dewpoints = [
|
||||
states.sensor.home_tempest_dew_point,
|
||||
states.sensor.home_dew_point,
|
||||
states.sensor.kdfi_dew_point,
|
||||
states.sensor.pirateweather_dew_point,
|
||||
states.sensor.openweathermap_dew_point
|
||||
] %}
|
||||
{% set sensor = dewpoints | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(sensor) | float }}
|
||||
apparent_temperature_template: >
|
||||
{% set apparent_temps = [
|
||||
states.sensor.home_tempest_feels_like,
|
||||
states.sensor.home_temperature_feels_like,
|
||||
states.sensor.pirateweather_apparent_temperature,
|
||||
states.sensor.stratton_ave_apparent_temperature
|
||||
] %}
|
||||
{% set sensor = apparent_temps | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(sensor) | float }}
|
||||
humidity_template: >
|
||||
{% set humidity = [
|
||||
states.sensor.home_tempest_humidity,
|
||||
states.sensor.home_relative_humidity,
|
||||
states.sensor.kdfi_relative_humidity,
|
||||
states.sensor.pirateweather_humidity,
|
||||
states.sensor.openweathermap_humidity
|
||||
] %}
|
||||
{% set result = humidity | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
forecast_daily_template: >
|
||||
{% set forecasts = [
|
||||
states.sensor.weather_com_daily_weather_forecast.attributes,
|
||||
states.weather.kdfi_daynight.attributes,
|
||||
states.sensor.pirateweather_daily_weather_forecast.attributes,
|
||||
states.sensor.openweathermap_daily_weather_forecast.attributes,
|
||||
states.weather.weatherapi_stratton_ave.attributes
|
||||
] %}
|
||||
{{ forecasts | selectattr('forecast','defined') | map(attribute='forecast') | list | first }}
|
||||
forecast_hourly_template: >
|
||||
{% set forecasts = [
|
||||
states.sensor.weather_com_hourly_weather_forecast.attributes,
|
||||
states.sensor.pirateweather_hourly_weather_forecast.attributes
|
||||
] %}
|
||||
{{ forecasts | selectattr('forecast','defined') | map(attribute='forecast') | list | first }}
|
||||
pressure_template: >
|
||||
{% set pressures = [
|
||||
states.sensor.home_tempest_local_slp,
|
||||
states.sensor.home_tempest_cloud_sensors_sea_level_pressure,
|
||||
states.sensor.home_pressure,
|
||||
states.sensor.kdfi_barometric_pressure
|
||||
] %}
|
||||
{% set result = pressures | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
pressure_unit: inHg
|
||||
wind_speed_template: >
|
||||
{% set windspeeds = [
|
||||
states.sensor.home_wind_speed,
|
||||
states.sensor.pirateweather_wind_speed,
|
||||
states.sensor.kdfi_wind_speed,
|
||||
states.sensor.openweathermap_wind_speed
|
||||
] %}
|
||||
{% set result = windspeeds | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
wind_speed_unit: mph
|
||||
wind_bearing_template: >
|
||||
{% set windbearings = [
|
||||
states.sensor.home_wind_direction_degrees,
|
||||
states.sensor.pirateweather_wind_bearing,
|
||||
states.sensor.openweathermap_wind_bearing
|
||||
] %}
|
||||
{% set result = windbearings | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
visibility_template: >
|
||||
{% set vis = [
|
||||
states.sensor.kdfi_visibility,
|
||||
states.sensor.pirateweather_visibility,
|
||||
states.sensor.openweathermap_visibility
|
||||
] %}
|
||||
{% set result = vis | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
visibility_unit: mi
|
||||
attribution_template: "Daily weather data from Iron Nerd's custom weather station template"
|
||||
ozone_template: >
|
||||
{% set ozones = [
|
||||
states.sensor.pirateweather_ozone
|
||||
] %}
|
||||
{% set result = ozones | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
precipitation_unit: in
|
||||
|
||||
- platform: template
|
||||
name: "Iron Nerd Weather Station - Hourly"
|
||||
condition_template: >
|
||||
{% set stations = [
|
||||
states.weather.home_tempest_forecast_home,
|
||||
states.weather.home,
|
||||
states.weather.tomorrow_io_stratton_ave_hourly,
|
||||
states.weather.iron_nerd_studios,
|
||||
states.weather.kdfi_daynight,
|
||||
states.weather.openweathermap
|
||||
] %}
|
||||
{% set result = stations | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) }}
|
||||
temperature_template: >
|
||||
{% set temps = [
|
||||
states.sensor.home_tempest_temperature,
|
||||
states.sensor.home_temperature,
|
||||
states.sensor.kdfi_temperature,
|
||||
states.sensor.pirateweather_temperature,
|
||||
states.sensor.openweathermap_temperature
|
||||
] %}
|
||||
{% set sensor = temps | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(sensor) | float }}
|
||||
temperature_unit: °F
|
||||
dew_point_template: >
|
||||
{% set dewpoints = [
|
||||
states.sensor.home_tempest_dew_point,
|
||||
states.sensor.home_dew_point,
|
||||
states.sensor.kdfi_dew_point,
|
||||
states.sensor.pirateweather_dew_point,
|
||||
states.sensor.openweathermap_dew_point
|
||||
] %}
|
||||
{% set sensor = dewpoints | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(sensor) | float }}
|
||||
apparent_temperature_template: >
|
||||
{% set apparent_temps = [
|
||||
states.sensor.home_tempest_feels_like,
|
||||
states.sensor.home_temperature_feels_like,
|
||||
states.sensor.pirateweather_apparent_temperature,
|
||||
states.sensor.stratton_ave_apparent_temperature
|
||||
] %}
|
||||
{% set sensor = apparent_temps | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(sensor) | float }}
|
||||
humidity_template: >
|
||||
{% set humidity = [
|
||||
states.sensor.home_tempest_humidity,
|
||||
states.sensor.home_relative_humidity,
|
||||
states.sensor.kdfi_relative_humidity,
|
||||
states.sensor.pirateweather_humidity,
|
||||
states.sensor.openweathermap_humidity
|
||||
] %}
|
||||
{% set result = humidity | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
forecast_hourly_template: >
|
||||
{% set forecasts = [
|
||||
states.sensor.weather_com_hourly_weather_forecast.attributes,
|
||||
states.weather.tomorrow_io_stratton_ave_hourly.attributes,
|
||||
states.sensor.pirateweather_hourly_weather_forecast.attributes
|
||||
] %}
|
||||
{{ forecasts | selectattr('forecast','defined') | map(attribute='forecast') | list | first }}
|
||||
pressure_template: >
|
||||
{% set pressures = [
|
||||
states.sensor.home_tempest_local_slp,
|
||||
states.sensor.home_tempest_cloud_sensors_sea_level_pressure,
|
||||
states.sensor.home_pressure,
|
||||
states.sensor.kdfi_barometric_pressure
|
||||
] %}
|
||||
{% set result = pressures | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
pressure_unit: inHg
|
||||
wind_speed_template: >
|
||||
{% set windspeeds = [
|
||||
states.sensor.home_wind_speed,
|
||||
states.sensor.pirateweather_wind_speed,
|
||||
states.sensor.kdfi_wind_speed,
|
||||
states.sensor.openweathermap_wind_speed
|
||||
] %}
|
||||
{% set result = windspeeds | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
wind_speed_unit: mph
|
||||
wind_bearing_template: >
|
||||
{% set windbearings = [
|
||||
states.sensor.home_wind_direction_degrees,
|
||||
states.sensor.pirateweather_wind_bearing,
|
||||
states.sensor.openweathermap_wind_bearing
|
||||
] %}
|
||||
{% set result = windbearings | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
visibility_template: >
|
||||
{% set vis = [
|
||||
states.sensor.kdfi_visibility,
|
||||
states.sensor.pirateweather_visibility,
|
||||
states.sensor.openweathermap_visibility
|
||||
] %}
|
||||
{% set result = vis | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
visibility_unit: mi
|
||||
attribution_template: "Hourly weather data from Iron Nerd's custom weather station template"
|
||||
ozone_template: >
|
||||
{% set ozones = [
|
||||
states.sensor.pirateweather_ozone
|
||||
] %}
|
||||
{% set result = ozones | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
precipitation_unit: in
|
||||
|
||||
- platform: template
|
||||
name: "Ashland Weather Station"
|
||||
condition_template: >
|
||||
{% set stations = [
|
||||
states.weather.ashland,
|
||||
states.weather.kasx,
|
||||
states.weather.pirateweather_ashland
|
||||
] %}
|
||||
{% set result = stations | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) }}
|
||||
temperature_template: >
|
||||
{% set temps = [
|
||||
states.sensor.ashland_temperature,
|
||||
states.sensor.kasx_temperature,
|
||||
states.sensor.pirateweather_ashland_temperature
|
||||
] %}
|
||||
{% set sensor = temps | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(sensor) | float }}
|
||||
temperature_unit: °F
|
||||
humidity_template: >
|
||||
{% set humidity = [
|
||||
states.sensor.ashland_relative_humidity,
|
||||
states.sensor.kasx_relative_humidity,
|
||||
states.sensor.pirateweather_ashland_humidity
|
||||
] %}
|
||||
{% set result = humidity | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
forecast_daily_template: >
|
||||
{% set forecasts = [
|
||||
states.sensor.weather_com_ashland_daily_weather_forecast.attributes,
|
||||
states.weather.kasx.attributes,
|
||||
states.sensor.pirateweather_ashland_daily_weather_forecast.attributes
|
||||
] %}
|
||||
{{ forecasts | selectattr('forecast','defined') | map(attribute='forecast') | list | first }}
|
||||
forecast_hourly_template: >
|
||||
{% set forecasts = [
|
||||
states.sensor.weather_com_ashland_hourly_weather_forecast,
|
||||
states.sensor.pirateweather_ashland_hourly_weather_forecast.attributes
|
||||
] %}
|
||||
{{ forecasts | selectattr('forecast','defined') | map(attribute='forecast') | list | first }}
|
||||
pressure_template: >
|
||||
{% set pressures = [
|
||||
states.sensor.ashland_pressure,
|
||||
states.sensor.kasx_barometric_pressure
|
||||
] %}
|
||||
{% set result = pressures | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
pressure_unit: inHg
|
||||
wind_speed_template: >
|
||||
{% set windspeeds = [
|
||||
states.sensor.ashland_wind_speed,
|
||||
states.sensor.pirateweather_ashland_wind_speed,
|
||||
states.sensor.kasx_wind_speed
|
||||
] %}
|
||||
{% set result = windspeeds | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
wind_speed_unit: mph
|
||||
wind_bearing_template: >
|
||||
{% set windbearings = [
|
||||
states.sensor.ashland_wind_direction_degrees,
|
||||
states.sensor.pirateweather_ashland_wind_bearing
|
||||
] %}
|
||||
{% set result = windbearings | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
visibility_template: >
|
||||
{% set vis = [
|
||||
states.sensor.kasx_visibility,
|
||||
states.sensor.pirateweather_ashland_visibility
|
||||
] %}
|
||||
{% set result = vis | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
visibility_unit: mi
|
||||
attribution_template: "Daily weather data from Iron Nerd's custom weather station template"
|
||||
ozone_template: >
|
||||
{% set ozones = [
|
||||
states.sensor.pirateweather_ashland_ozone
|
||||
] %}
|
||||
{% set result = ozones | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ 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.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.2
|
||||
# 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:
|
||||
- weather:
|
||||
- name: "Iron Nerd Weather Station"
|
||||
condition_template: >
|
||||
{% set stations = [
|
||||
states.weather.home_tempest_forecast_home,
|
||||
states.weather.home,
|
||||
states.weather.kdfi_daynight,
|
||||
states.weather.iron_nerd_studios,
|
||||
states.weather.openweathermap
|
||||
] %}
|
||||
{% set result = stations | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) }}
|
||||
temperature_template: >
|
||||
{% set temps = [
|
||||
states.sensor.home_tempest_temperature,
|
||||
states.sensor.home_temperature,
|
||||
states.sensor.kdfi_temperature,
|
||||
states.sensor.pirateweather_temperature,
|
||||
states.sensor.openweathermap_temperature
|
||||
] %}
|
||||
{% set sensor = temps | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(sensor) | float }}
|
||||
temperature_unit: °F
|
||||
dew_point_template: >
|
||||
{% set dewpoints = [
|
||||
states.sensor.home_tempest_dew_point,
|
||||
states.sensor.home_dew_point,
|
||||
states.sensor.kdfi_dew_point,
|
||||
states.sensor.pirateweather_dew_point,
|
||||
states.sensor.openweathermap_dew_point
|
||||
] %}
|
||||
{% set sensor = dewpoints | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(sensor) | float }}
|
||||
apparent_temperature_template: >
|
||||
{% set apparent_temps = [
|
||||
states.sensor.home_tempest_feels_like,
|
||||
states.sensor.home_temperature_feels_like,
|
||||
states.sensor.pirateweather_apparent_temperature,
|
||||
states.sensor.stratton_ave_apparent_temperature
|
||||
] %}
|
||||
{% set sensor = apparent_temps | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(sensor) | float }}
|
||||
humidity_template: >
|
||||
{% set humidity = [
|
||||
states.sensor.home_tempest_humidity,
|
||||
states.sensor.home_relative_humidity,
|
||||
states.sensor.kdfi_relative_humidity,
|
||||
states.sensor.pirateweather_humidity,
|
||||
states.sensor.openweathermap_humidity
|
||||
] %}
|
||||
{% set result = humidity | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
forecast_daily_template: >
|
||||
{% set forecasts = [
|
||||
states.sensor.weather_com_daily_weather_forecast.attributes,
|
||||
states.weather.kdfi_daynight.attributes,
|
||||
states.sensor.pirateweather_daily_weather_forecast.attributes,
|
||||
states.sensor.openweathermap_daily_weather_forecast.attributes,
|
||||
states.weather.weatherapi_stratton_ave.attributes
|
||||
] %}
|
||||
{{ forecasts | selectattr('forecast','defined') | map(attribute='forecast') | list | first }}
|
||||
forecast_hourly_template: >
|
||||
{% set forecasts = [
|
||||
states.sensor.weather_com_hourly_weather_forecast.attributes,
|
||||
states.sensor.pirateweather_hourly_weather_forecast.attributes
|
||||
] %}
|
||||
{{ forecasts | selectattr('forecast','defined') | map(attribute='forecast') | list | first }}
|
||||
pressure_template: >
|
||||
{% set pressures = [
|
||||
states.sensor.home_tempest_local_slp,
|
||||
states.sensor.home_tempest_cloud_sensors_sea_level_pressure,
|
||||
states.sensor.home_pressure,
|
||||
states.sensor.kdfi_barometric_pressure
|
||||
] %}
|
||||
{% set result = pressures | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
pressure_unit: inHg
|
||||
wind_speed_template: >
|
||||
{% set windspeeds = [
|
||||
states.sensor.home_wind_speed,
|
||||
states.sensor.pirateweather_wind_speed,
|
||||
states.sensor.kdfi_wind_speed,
|
||||
states.sensor.openweathermap_wind_speed
|
||||
] %}
|
||||
{% set result = windspeeds | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
wind_speed_unit: mph
|
||||
wind_bearing_template: >
|
||||
{% set windbearings = [
|
||||
states.sensor.home_wind_direction_degrees,
|
||||
states.sensor.pirateweather_wind_bearing,
|
||||
states.sensor.openweathermap_wind_bearing
|
||||
] %}
|
||||
{% set result = windbearings | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
visibility_template: >
|
||||
{% set vis = [
|
||||
states.sensor.kdfi_visibility,
|
||||
states.sensor.pirateweather_visibility,
|
||||
states.sensor.openweathermap_visibility
|
||||
] %}
|
||||
{% set result = vis | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
visibility_unit: mi
|
||||
attribution_template: "Daily weather data from Iron Nerd's custom weather station template"
|
||||
ozone_template: >
|
||||
{% set ozones = [
|
||||
states.sensor.pirateweather_ozone
|
||||
] %}
|
||||
{% set result = ozones | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
precipitation_unit: in
|
||||
|
||||
- weather:
|
||||
- name: "Iron Nerd Weather Station - Hourly"
|
||||
condition_template: >
|
||||
{% set stations = [
|
||||
states.weather.home_tempest_forecast_home,
|
||||
states.weather.home,
|
||||
states.weather.tomorrow_io_stratton_ave_hourly,
|
||||
states.weather.iron_nerd_studios,
|
||||
states.weather.kdfi_daynight,
|
||||
states.weather.openweathermap
|
||||
] %}
|
||||
{% set result = stations | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) }}
|
||||
temperature_template: >
|
||||
{% set temps = [
|
||||
states.sensor.home_tempest_temperature,
|
||||
states.sensor.home_temperature,
|
||||
states.sensor.kdfi_temperature,
|
||||
states.sensor.pirateweather_temperature,
|
||||
states.sensor.openweathermap_temperature
|
||||
] %}
|
||||
{% set sensor = temps | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(sensor) | float }}
|
||||
temperature_unit: °F
|
||||
dew_point_template: >
|
||||
{% set dewpoints = [
|
||||
states.sensor.home_tempest_dew_point,
|
||||
states.sensor.home_dew_point,
|
||||
states.sensor.kdfi_dew_point,
|
||||
states.sensor.pirateweather_dew_point,
|
||||
states.sensor.openweathermap_dew_point
|
||||
] %}
|
||||
{% set sensor = dewpoints | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(sensor) | float }}
|
||||
apparent_temperature_template: >
|
||||
{% set apparent_temps = [
|
||||
states.sensor.home_tempest_feels_like,
|
||||
states.sensor.home_temperature_feels_like,
|
||||
states.sensor.pirateweather_apparent_temperature,
|
||||
states.sensor.stratton_ave_apparent_temperature
|
||||
] %}
|
||||
{% set sensor = apparent_temps | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(sensor) | float }}
|
||||
humidity_template: >
|
||||
{% set humidity = [
|
||||
states.sensor.home_tempest_humidity,
|
||||
states.sensor.home_relative_humidity,
|
||||
states.sensor.kdfi_relative_humidity,
|
||||
states.sensor.pirateweather_humidity,
|
||||
states.sensor.openweathermap_humidity
|
||||
] %}
|
||||
{% set result = humidity | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
forecast_hourly_template: >
|
||||
{% set forecasts = [
|
||||
states.sensor.weather_com_hourly_weather_forecast.attributes,
|
||||
states.weather.tomorrow_io_stratton_ave_hourly.attributes,
|
||||
states.sensor.pirateweather_hourly_weather_forecast.attributes
|
||||
] %}
|
||||
{{ forecasts | selectattr('forecast','defined') | map(attribute='forecast') | list | first }}
|
||||
pressure_template: >
|
||||
{% set pressures = [
|
||||
states.sensor.home_tempest_local_slp,
|
||||
states.sensor.home_tempest_cloud_sensors_sea_level_pressure,
|
||||
states.sensor.home_pressure,
|
||||
states.sensor.kdfi_barometric_pressure
|
||||
] %}
|
||||
{% set result = pressures | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
pressure_unit: inHg
|
||||
wind_speed_template: >
|
||||
{% set windspeeds = [
|
||||
states.sensor.home_wind_speed,
|
||||
states.sensor.pirateweather_wind_speed,
|
||||
states.sensor.kdfi_wind_speed,
|
||||
states.sensor.openweathermap_wind_speed
|
||||
] %}
|
||||
{% set result = windspeeds | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
wind_speed_unit: mph
|
||||
wind_bearing_template: >
|
||||
{% set windbearings = [
|
||||
states.sensor.home_wind_direction_degrees,
|
||||
states.sensor.pirateweather_wind_bearing,
|
||||
states.sensor.openweathermap_wind_bearing
|
||||
] %}
|
||||
{% set result = windbearings | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
visibility_template: >
|
||||
{% set vis = [
|
||||
states.sensor.kdfi_visibility,
|
||||
states.sensor.pirateweather_visibility,
|
||||
states.sensor.openweathermap_visibility
|
||||
] %}
|
||||
{% set result = vis | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
visibility_unit: mi
|
||||
attribution_template: "Hourly weather data from Iron Nerd's custom weather station template"
|
||||
ozone_template: >
|
||||
{% set ozones = [
|
||||
states.sensor.pirateweather_ozone
|
||||
] %}
|
||||
{% set result = ozones | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
precipitation_unit: in
|
||||
|
||||
- weather:
|
||||
- name: "Ashland Weather Station"
|
||||
condition_template: >
|
||||
{% set stations = [
|
||||
states.weather.ashland,
|
||||
states.weather.kasx,
|
||||
states.weather.pirateweather_ashland
|
||||
] %}
|
||||
{% set result = stations | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) }}
|
||||
temperature_template: >
|
||||
{% set temps = [
|
||||
states.sensor.ashland_temperature,
|
||||
states.sensor.kasx_temperature,
|
||||
states.sensor.pirateweather_ashland_temperature
|
||||
] %}
|
||||
{% set sensor = temps | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(sensor) | float }}
|
||||
temperature_unit: °F
|
||||
humidity_template: >
|
||||
{% set humidity = [
|
||||
states.sensor.ashland_relative_humidity,
|
||||
states.sensor.kasx_relative_humidity,
|
||||
states.sensor.pirateweather_ashland_humidity
|
||||
] %}
|
||||
{% set result = humidity | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
forecast_daily_template: >
|
||||
{% set forecasts = [
|
||||
states.sensor.weather_com_ashland_daily_weather_forecast.attributes,
|
||||
states.weather.kasx.attributes,
|
||||
states.sensor.pirateweather_ashland_daily_weather_forecast.attributes
|
||||
] %}
|
||||
{{ forecasts | selectattr('forecast','defined') | map(attribute='forecast') | list | first }}
|
||||
forecast_hourly_template: >
|
||||
{% set forecasts = [
|
||||
states.sensor.weather_com_ashland_hourly_weather_forecast,
|
||||
states.sensor.pirateweather_ashland_hourly_weather_forecast.attributes
|
||||
] %}
|
||||
{{ forecasts | selectattr('forecast','defined') | map(attribute='forecast') | list | first }}
|
||||
pressure_template: >
|
||||
{% set pressures = [
|
||||
states.sensor.ashland_pressure,
|
||||
states.sensor.kasx_barometric_pressure
|
||||
] %}
|
||||
{% set result = pressures | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
pressure_unit: inHg
|
||||
wind_speed_template: >
|
||||
{% set windspeeds = [
|
||||
states.sensor.ashland_wind_speed,
|
||||
states.sensor.pirateweather_ashland_wind_speed,
|
||||
states.sensor.kasx_wind_speed
|
||||
] %}
|
||||
{% set result = windspeeds | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
wind_speed_unit: mph
|
||||
wind_bearing_template: >
|
||||
{% set windbearings = [
|
||||
states.sensor.ashland_wind_direction_degrees,
|
||||
states.sensor.pirateweather_ashland_wind_bearing
|
||||
] %}
|
||||
{% set result = windbearings | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
visibility_template: >
|
||||
{% set vis = [
|
||||
states.sensor.kasx_visibility,
|
||||
states.sensor.pirateweather_ashland_visibility
|
||||
] %}
|
||||
{% set result = vis | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
visibility_unit: mi
|
||||
attribution_template: "Daily weather data from Iron Nerd's custom weather station template"
|
||||
ozone_template: >
|
||||
{% set ozones = [
|
||||
states.sensor.pirateweather_ashland_ozone
|
||||
] %}
|
||||
{% set result = ozones | selectattr('state','ne','unavailable') | selectattr('state','ne','unknown') | map(attribute='entity_id') | list | first %}
|
||||
{{ states(result) | float }}
|
||||
precipitation_unit: in
|
||||
|
||||
- trigger:
|
||||
- platform: time_pattern
|
||||
minutes: /15
|
||||
@@ -1613,6 +1542,76 @@ template:
|
||||
hail_stroke: "{{ state_attr('sensor.spc_outlook_day_1','hail_stroke') }}"
|
||||
icon: mdi:weather-hail
|
||||
|
||||
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
|
||||
|
||||
# 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.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.2
|
||||
# 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
|
||||
|
||||
input_boolean:
|
||||
freeze_warning:
|
||||
name: Freeze Warning
|
||||
|
||||
@@ -48,8 +48,8 @@ input_datetime:
|
||||
has_date: false
|
||||
has_time: true
|
||||
icon: mdi:fan-auto
|
||||
emma_bedroom_cooling:
|
||||
name: Emma Bedroom Cooling
|
||||
emma_bedroom_climate:
|
||||
name: Emma Bedroom Climate
|
||||
has_date: false
|
||||
has_time: true
|
||||
icon: mdi:fan-auto
|
||||
@@ -899,3 +899,6 @@ script:
|
||||
- service: input_boolean.turn_off
|
||||
target:
|
||||
entity_id: input_boolean.white_noise_emma_bedroom
|
||||
- service: climate.turn_off
|
||||
target:
|
||||
entity_id: climate.emma_bedroom_vtherm
|
||||
|
||||
@@ -38,12 +38,13 @@ conversation:
|
||||
alexa:
|
||||
|
||||
powercalc:
|
||||
force_update_frequency: 00:01:00
|
||||
discovery:
|
||||
enabled: true
|
||||
energy_update_interval: 60
|
||||
power_sensor_naming: "{} Power Sensor"
|
||||
power_sensor_friendly_naming: "{} Power Sensor"
|
||||
energy_sensor_naming: "{} Energy Sensor"
|
||||
energy_sensor_friendly_naming: "{} Energy Sensor"
|
||||
enable_autodiscovery: true
|
||||
create_energy_sensors: true
|
||||
create_utility_meters: true
|
||||
create_domain_groups:
|
||||
@@ -58,6 +59,4 @@ pyscript:
|
||||
|
||||
animated_scenes:
|
||||
|
||||
grad_vol:
|
||||
|
||||
battery_notes:
|
||||
grad_vol:
|
||||
@@ -124,6 +124,8 @@ template:
|
||||
state: >
|
||||
{% if is_state('binary_sensor.basement_studio_motion','on') %}
|
||||
true
|
||||
{% elif is_state('input_boolean.recliner_mode','on') %}
|
||||
true
|
||||
{% elif is_state('sensor.xia_desktop_current_username','tm24f') %}
|
||||
false
|
||||
{% elif is_state('binary_sensor.tony_desktop_on','off') and
|
||||
|
||||
@@ -710,33 +710,51 @@ script:
|
||||
data:
|
||||
option: >
|
||||
{% set low = states('sensor.overnight_lowest_temperature') | int %}
|
||||
{% set run_threshold = states('input_number.emma_bedroom_aircon_run_threshold') | int %}
|
||||
{% set mode_threshold = states('input_number.emma_bedroom_aircon_mode_threshold') | int %}
|
||||
{% if is_state('input_boolean.emma_bedroom_aircon_installed','off') %}
|
||||
{% set aircon_run_threshold = states('input_number.emma_bedroom_aircon_run_threshold') | int %}
|
||||
{% set aircon_mode_threshold = states('input_number.emma_bedroom_aircon_mode_threshold') | int %}
|
||||
{% set heater_run_threshold = states('input_number.emma_bedroom_heater_run_threshold') | int %}
|
||||
{% if is_state('input_boolean.emma_bedroom_aircon_installed','off') and is_state('input_boolean.emma_bedroom_heater_installed','off') %}
|
||||
White Noise
|
||||
{% elif low >= run_threshold %}
|
||||
{% if low >= mode_threshold %}
|
||||
{% elif low >= aircon_run_threshold and is_state('input_boolean.emma_bedroom_aircon_installed','on') %}
|
||||
{% if low >= aircon_mode_threshold %}
|
||||
AC
|
||||
{% else %}
|
||||
Fan
|
||||
{% endif %}
|
||||
{% elif low < heater_run_threshold and is_state('input_boolean.emma_bedroom_heater_installed','on') %}
|
||||
Heat
|
||||
{% else %}
|
||||
White Noise
|
||||
{% endif %}
|
||||
- delay:
|
||||
milliseconds: 500
|
||||
- service: input_datetime.set_datetime
|
||||
target:
|
||||
entity_id: input_datetime.emma_bedroom_cooling
|
||||
entity_id: input_datetime.emma_bedroom_climate
|
||||
data:
|
||||
time: >
|
||||
{% set high = states('sensor.todays_high_temp') | int %}
|
||||
{% set low = states('sensor.overnight_lowest_temperature') | int %}
|
||||
{% set bedtime = state_attr('input_datetime.emma_bedtime','timestamp') | int %}
|
||||
{% if is_state('input_boolean.hot_day','on') %}
|
||||
{{ (bedtime - 5400) | timestamp_custom('%H:%M',false) }}
|
||||
{% elif high >= 80 or low >= 60 %}
|
||||
{{ (bedtime - 3600) | timestamp_custom('%H:%M',false) }}
|
||||
{% set schedmode = states('input_select.scheduled_climate_mode_emma_bedroom') %}
|
||||
{% if schedmode in ['AC','Fan'] and is_state('input_boolean.emma_bedroom_aircon_installed','on') %}
|
||||
{% if is_state('input_boolean.hot_day','on') %}
|
||||
{{ (bedtime - 5400) | timestamp_custom('%H:%M',false) }}
|
||||
{% elif high >= 80 or low >= 60 %}
|
||||
{{ (bedtime - 3600) | timestamp_custom('%H:%M',false) }}
|
||||
{% else %}
|
||||
{{ (bedtime - 1800) | timestamp_custom('%H:%M',false) }}
|
||||
{% endif %}
|
||||
{% elif schedmode == 'Heat' and is_state('input_boolean.emma_bedroom_heater_installed','on') %}
|
||||
{% if low <= 20 %}
|
||||
{{ (bedtime - 5400) | timestamp_custom('%H:%M',false) }}
|
||||
{% elif low <= 32 %}
|
||||
{{ (bedtime - 3600) | timestamp_custom('%H:%M',false) }}
|
||||
{% else %}
|
||||
{{ (bedtime - 1800) | timestamp_custom('%H:%M',false) }}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{{ (bedtime - 1800) | timestamp_custom('%H:%M',false) }}
|
||||
{{ bedtime | timestamp_custom('%H:%M',false) }}
|
||||
{% endif %}
|
||||
- service: input_boolean.turn_on
|
||||
target:
|
||||
|
||||
@@ -142,6 +142,36 @@ template:
|
||||
state: >
|
||||
{% from 'sports.jinja' import sports_today %}
|
||||
{{ sports_today('sensor.minnesota_wild') }}
|
||||
- name: Michigan Wolverines Hockey Inhibit
|
||||
unique_id: 8ecd46d5-64c2-49f5-bc8d-d88593273d92
|
||||
state: >
|
||||
{% from 'sports.jinja' import sports_inhibit %}
|
||||
{{ sports_inhibit('sensor.michigan_wolverines_hockey') }}
|
||||
- name: Michigan Wolverines Hockey Event Today
|
||||
unique_id: 551fdae5-e18c-4117-b3ba-df864068b13d
|
||||
state: >
|
||||
{% from 'sports.jinja' import sports_today %}
|
||||
{{ sports_today('sensor.michigan_wolverines_hockey') }}
|
||||
- name: Minnesota Golden Gophers Hockey Inhibit
|
||||
unique_id: 87653f3a-203c-4dbf-87e8-70bcacf6eb22
|
||||
state: >
|
||||
{% from 'sports.jinja' import sports_inhibit %}
|
||||
{{ sports_inhibit('sensor.minnesota_golden_gophers_hockey') }}
|
||||
- name: Minnesota Golden Gophers Hockey Event Today
|
||||
unique_id: 1f4ff7eb-cbc9-4c81-a5c9-6523b5fb52ff
|
||||
state: >
|
||||
{% from 'sports.jinja' import sports_today %}
|
||||
{{ sports_today('sensor.minnesota_golden_gophers_hockey') }}
|
||||
- name: Minnesota State Mavericks Hockey Inhibit
|
||||
unique_id: bd15870d-bccb-4c52-9690-473c31bb4090
|
||||
state: >
|
||||
{% from 'sports.jinja' import sports_inhibit %}
|
||||
{{ sports_inhibit('sensor.minnesota_state_mavericks_hockey') }}
|
||||
- name: Minnesota State Mavericks Hockey Event Today
|
||||
unique_id: e403be15-3ff2-47b1-8398-70f8ccb65026
|
||||
state: >
|
||||
{% from 'sports.jinja' import sports_today %}
|
||||
{{ sports_today('sensor.minnesota_state_mavericks_hockey') }}
|
||||
|
||||
intent_script:
|
||||
SportsScore:
|
||||
|
||||
@@ -113,6 +113,7 @@ ## HACS Lovelace Cards
|
||||
- [Comfortable Environment Card](https://github.com/argaar/comfortable-environment-card)
|
||||
- [Versatile Thermostat UI Card](https://github.com/jmcollin78/versatile-thermostat-ui-card)
|
||||
- [Gauge Card Pro](https://github.com/benjamin-dcs/gauge-card-pro)
|
||||
- [AdGuard Card](https://github.com/homeassistant-extras/adguard-card)
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
113
scripts.yaml
113
scripts.yaml
@@ -2591,27 +2591,28 @@ kallen_night_meds:
|
||||
minutes: 0
|
||||
seconds: 5
|
||||
milliseconds: 0
|
||||
- parallel:
|
||||
- data:
|
||||
- alias: Send text notifications
|
||||
parallel:
|
||||
- alias: Send to parents
|
||||
data:
|
||||
who: "{% if states('person.christina_stork') in ['Bob Evans','BobEvans'] %}\n
|
||||
\ tony\n{% else %}\n parents\n{% endif %}\n"
|
||||
type: alert
|
||||
title: Night Meds
|
||||
message: Kallen needs to take his night meds (melatonin)
|
||||
message: Kallen needs to take his night meds
|
||||
tag: kallen-night-meds
|
||||
actions:
|
||||
- action: KALLEN_NIGHT_MEDS_TAKEN
|
||||
title: Taken
|
||||
- action: KALLEN_NIGHT_MEDS_SKIPPED
|
||||
title: Skip
|
||||
alias: Send to parents
|
||||
action: script.text_notify
|
||||
- alias: Send to Kallen
|
||||
data:
|
||||
who: kallen
|
||||
type: alert
|
||||
title: Night Meds
|
||||
message: You need to take your night meds (melatonin)
|
||||
message: You need to take your night meds
|
||||
tag: kallen-night-meds
|
||||
actions:
|
||||
- action: KALLEN_NIGHT_MEDS_TAKEN
|
||||
@@ -2619,7 +2620,6 @@ kallen_night_meds:
|
||||
- action: KALLEN_NIGHT_MEDS_SKIPPED
|
||||
title: Skip
|
||||
action: script.text_notify
|
||||
alias: Send text notifications
|
||||
icon: mdi:medication
|
||||
mode: restart
|
||||
reset_annc_switches:
|
||||
@@ -3040,14 +3040,14 @@ rabbit_hutch_cleaning:
|
||||
emma_sleep:
|
||||
alias: Emma Sleep
|
||||
sequence:
|
||||
- if:
|
||||
- alias: Run scheduling if it hasn't already been run
|
||||
if:
|
||||
- condition: time
|
||||
after: 04:00:00
|
||||
after: 09:00:00
|
||||
before: '17:00:00'
|
||||
then:
|
||||
- data: {}
|
||||
action: script.emma_bedroom_scheduling_evening
|
||||
alias: Run scheduling if it hasn't already been run
|
||||
- target:
|
||||
entity_id:
|
||||
- script.emma_ibuprofen
|
||||
@@ -3071,33 +3071,74 @@ emma_sleep:
|
||||
option: Adaptive
|
||||
alias: Set lights to adaptive
|
||||
action: input_select.select_option
|
||||
- if:
|
||||
- alias: White Noise
|
||||
condition: and
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id: input_select.scheduled_climate_mode_emma_bedroom
|
||||
state: White Noise
|
||||
alias: Scheduled mode is White Noise
|
||||
- condition: state
|
||||
entity_id: input_boolean.white_noise_emma_bedroom
|
||||
state: 'off'
|
||||
alias: White Noise is not already on
|
||||
then:
|
||||
- target:
|
||||
entity_id: input_boolean.white_noise_emma_bedroom
|
||||
data: {}
|
||||
alias: Turn on white noise
|
||||
action: input_boolean.turn_on
|
||||
- data:
|
||||
who: parents
|
||||
title: Emma Climate Schedule
|
||||
message: White noise has been activated in Emma's Bedroom.
|
||||
type: normal
|
||||
tag: emma-climate
|
||||
alias: Send white noise notification
|
||||
action: script.text_notify
|
||||
alias: Select climate mode
|
||||
- alias: Set climate mode if not already set
|
||||
choose:
|
||||
- conditions:
|
||||
- alias: White Noise
|
||||
condition: and
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id: input_select.scheduled_climate_mode_emma_bedroom
|
||||
state: White Noise
|
||||
alias: Scheduled mode is White Noise
|
||||
- condition: state
|
||||
entity_id: input_boolean.white_noise_emma_bedroom
|
||||
state: 'off'
|
||||
alias: White Noise is not already on
|
||||
sequence:
|
||||
- target:
|
||||
entity_id: input_boolean.white_noise_emma_bedroom
|
||||
data: {}
|
||||
alias: Turn on white noise
|
||||
action: input_boolean.turn_on
|
||||
- data:
|
||||
who: parents
|
||||
title: Emma Climate Schedule
|
||||
message: White noise has been activated in Emma's Bedroom.
|
||||
type: normal
|
||||
tag: emma-climate
|
||||
alias: Send white noise notification
|
||||
action: script.text_notify
|
||||
- conditions:
|
||||
- alias: Heat
|
||||
condition: and
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id: input_select.scheduled_climate_mode_emma_bedroom
|
||||
state:
|
||||
- Heat
|
||||
alias: Heat
|
||||
sequence:
|
||||
- if:
|
||||
- alias: Heat is not already on
|
||||
condition: state
|
||||
entity_id: climate.emma_bedroom_vtherm
|
||||
state:
|
||||
- 'off'
|
||||
then:
|
||||
- alias: Send heater notification
|
||||
data:
|
||||
who: parents
|
||||
title: Emma Climate Schedule
|
||||
message: The space heater has been activated in Emma's Bedroom.
|
||||
type: normal
|
||||
tag: emma-climate
|
||||
action: script.text_notify
|
||||
alias: If heat was not already on, send notification that it has been turned
|
||||
on
|
||||
- action: climate.set_hvac_mode
|
||||
metadata: {}
|
||||
target:
|
||||
entity_id: climate.emma_bedroom_vtherm
|
||||
data:
|
||||
hvac_mode: heat
|
||||
alias: Turn on heater
|
||||
- action: input_boolean.turn_on
|
||||
metadata: {}
|
||||
target:
|
||||
entity_id: input_boolean.white_noise_emma_bedroom
|
||||
data: {}
|
||||
alias: Turn on white noise
|
||||
icon: mdi:lightbulb-night
|
||||
mode: restart
|
||||
tina_morning_meds:
|
||||
|
||||
@@ -73,11 +73,11 @@
|
||||
{% endif %}
|
||||
{% if states('input_select.scheduled_climate_mode_emma_bedroom_aircon') != 'N/A' %}
|
||||
{% if is_state('input_select.scheduled_climate_mode_emma_bedroom_aircon','AC') and is_state('input_boolean.hot_day','on') %}
|
||||
"Today was a hot day, so Emma's bedroom air conditioner will start cooling a bit earlier tonight at {{ input_datetime_read('input_datetime.emma_bedroom_cooling') }}. "
|
||||
"Today was a hot day, so Emma's bedroom air conditioner will start cooling a bit earlier tonight at {{ input_datetime_read('input_datetime.emma_bedroom_climate') }}. "
|
||||
{% elif is_state('input_select.scheduled_climate_mode_emma_bedroom_aircon','AC') %}
|
||||
"Emma's bedroom air conditioner will start cooling at {{ input_datetime_read('input_datetime.emma_bedroom_cooling') }}. "
|
||||
"Emma's bedroom air conditioner will start cooling at {{ input_datetime_read('input_datetime.emma_bedroom_climate') }}. "
|
||||
{% elif is_state('input_select.scheduled_climate_mode_emma_bedroom_aircon','Fan') %}
|
||||
"Emma's bedroom air conditioner will activate fan only mode at {{ input_datetime_read('input_datetime.emma_bedroom_cooling') }}. "
|
||||
"Emma's bedroom air conditioner will activate fan only mode at {{ input_datetime_read('input_datetime.emma_bedroom_climate') }}. "
|
||||
{% elif is_state('input_select.scheduled_climate_mode_emma_bedroom','White Noise') and is_state('input_boolean.white_noise_emma_bedroom','off') %}
|
||||
"Emma's white noise generator will activate at {{ input_datetime_read('input_datetime.emma_bedtime') }}. "
|
||||
{% endif %}
|
||||
|
||||
Reference in New Issue
Block a user