Compare commits

...

15 Commits

12 changed files with 183 additions and 43 deletions

View File

@ -1 +1 @@
2025.5.2
2025.6.2

View File

@ -1869,54 +1869,70 @@
to: 'on'
id: recliner-on
trigger: state
alias: Recliner Mode On
- entity_id: input_boolean.recliner_mode
from: 'on'
to: 'off'
id: recliner-off
trigger: state
alias: Recliner Mode Off
conditions: []
actions:
- choose:
- alias: Routing
choose:
- conditions:
- condition: trigger
id: recliner-on
alias: Recliner Mode On
sequence:
- target:
entity_id: input_select.basement_studio_scenes
data:
option: Stairwell
action: input_select.select_option
alias: Set scene to Stairwell
- target:
entity_id:
- input_boolean.white_noise_basement
- input_boolean.studio_quiet
data: {}
action: input_boolean.turn_on
- if:
alias: Turn on white noise and Studio Quiet
- alias: Turn off TV
if:
- condition: template
value_template: "{% if is_state('media_player.basement_tv','playing') %}\n
\ false\n{% elif is_state('media_player.basement_tv','paused') or is_state('media_player.basement_tv','idle')
%}\n {{ state_attr('media_player.basement_tv','app_name') in ['TV','Android
TV Launcher'] }}\n{% else %}\n false\n{% endif %}\n"
alias: If nothing is playing
then:
- target:
entity_id: media_player.basement_tv
data: {}
action: media_player.turn_off
- if:
- condition: not
alias: Turn off TV
enabled: false
- alias: Turn off computer monitors
if:
- alias: If I'm not watching something
condition: not
conditions:
- condition: state
entity_id: media_player.tony_asus
state: playing
alias: PC playing video or music
then:
- target:
entity_id: script.tony_desktop_displays_off
data: {}
action: script.turn_on
alias: Turn off computer monitors
enabled: false
- conditions:
- condition: trigger
id: recliner-off
alias: Recliner Mode Off
sequence:
- data: {}
target:
@ -2046,10 +2062,12 @@
- script.tony_desktop_displays_on
data: {}
action: script.turn_on
enabled: false
- target:
entity_id: media_player.basement_tv
data: {}
action: media_player.turn_on
enabled: false
mode: restart
- id: '1696286540644'
alias: Basement Lights Adaptive Resync

View File

@ -825,7 +825,21 @@
'ottobre',
'novembre',
'dicembre',
]
],
'time_of_hour':{
0: '{hour}',
1: '{hour} e un minuto',
15: '{hour} ed un quarto',
30: '{hour} e mezzo',
45: '15 minuti alle {hour}',
59: 'un minuto alle {hour}',
'past_hour': '{hour} e {minute}',
'to_hour': '{hour} meno {minute}',
},
'time_of_day':{
'midnight': 'mezzanotte',
'noon': 'mezzogiorno',
}
},
'pt':{
'_language': 'Português',
@ -1041,7 +1055,21 @@
'Październik',
'Listopad',
'Grudzień',
]
],
'time_of_hour': {
0: '{hour}',
1: 'minuta po {hour}',
15: 'kwadrans po {hour}',
30: 'pół godziny po {hour}',
45: 'za kwadrans {hour}',
59: 'za minutę {hour}',
'past_hour': '{minute} po {hour}',
'to_hour': '{minute} do {hour}'
},
'time_of_day': {
'midnight': 'północ',
'noon': 'południe'
}
},
'ru':{
'_language': 'Русский',
@ -1779,9 +1807,9 @@
{%- else %}
{%- set t = translate('ago', language=language) %}
{%- if '%s' in t %}
{{ t % items }}
{{- t % items }}
{%- else %}
{{- items }} {{ translate('ago', language=language) }}
{{- items }} {{ t }}
{%- endif %}
{%- endif %}
{%- else %}
@ -2045,7 +2073,7 @@
{%- if '%s' in t %}
{{- t % ret }}
{%- else %}
{{- ret }} {{ translate('ago', language=language) }}
{{- ret }} {{ t }}
{%- endif %}
{%- endif %}
{%- endif %}

View File

@ -236,7 +236,7 @@
'hour': ['ч', 'час', 'часа', 'часов'],
'minute': ['м', 'минута', 'минуты', 'минут'],
'second': ['с', 'секунда', 'секунды', 'секунд'],
'millisecond': ['мс', 'милисекунда', 'милисекунды', 'милисекунд'],
'millisecond': ['мс', 'миллисекунда', 'миллисекунды', 'миллисекунд'],
'combine': 'и',
'error': 'Неверная дата',
}
@ -337,6 +337,22 @@
'error': 'Érvénytelen dátum',
}
},
{
'language': 'tr',
'plural_form': 'english',
'phrases': {
'year': ['yıl', 'yıl', 'yıl'],
'month': ['ay', 'ay', 'ay'],
'week': ['hf', 'hafta', 'hafta'],
'day': ['gün', 'gün', 'gün'],
'hour': ['sa', 'saat', 'saat'],
'minute': ['dk', 'dakika', 'dakika'],
'second': ['sn', 'saniye', 'saniye'],
'millisecond': ['ms', 'milisaniye', 'milisaniye'],
'combine': 've',
'error': 'Geçersiz tarih',
}
},
] -%}
{# macro to convert the abbreviated input for the not_use and always_show lists to the full time part names #}

View File

@ -27,8 +27,15 @@
{% set period_str = period_str(team) %}
{% set game_clock = state_attr(team,'clock') | lower %}
{% if state_attr(team,'league') == 'MLB' %}
{% set inning_parts = game_clock.split(' ') %}
in the {{ inning_parts[0] ~ ' of the ' ~ inning_parts[1] ~ ' ' ~ period_str }}
{% if 'rain delay' in game_clock %}
{# Handle cases like "Rain Delay, Top 1st" #}
{% set status, inning = game_clock.split(',', 1) %}
{% set inning_parts = inning.split(' ') %}
in a {{ status | trim }} in the {{ inning_parts[1] ~ ' of the ' ~ inning_parts[2] }} {{ period_str }}
{% else %}
{% set inning_parts = game_clock.split(' ') %}
in the {{ inning_parts[0] ~ ' of the ' ~ inning_parts[1] ~ ' ' ~ period_str }}
{% endif %}
{% else %}
{% if ' - ' in game_clock %}
{% set clock_time, quarter = game_clock.split(' - ') %}

View File

@ -19,15 +19,15 @@
{% if type in ['alerts','full'] %}
{% if is_state('input_boolean.tornado_alarm','on') %}
We are under a tornado warning. If you are not already in shelter, you should be. Get on it!
{% if state_attr('binary_sensor.tornado_warning','confirmed' == true) %}
{% if state_attr('binary_sensor.tornado_warning','confirmed') == true %}
A tornado has been confirmed in the area. Please take shelter immediately!
{% endif %}
{% elif is_state('binary_sensor.severe_thunderstorm_warning','on') %}
We are under a severe thunderstorm warning.
{% if state_attr('binary_sensor.severe_thunderstorm_warning','tornado_possible' == true) %}
{% if state_attr('binary_sensor.severe_thunderstorm_warning','tornado_possible') == true %}
The incoming storm has the potential to produce a tornado, so please pay attention and prepare to take shelter!
{% endif %}
{% if state_attr('binary_sensor.severe_thunderstorm_warning','considerable_destructive' == true) %}
{% if state_attr('binary_sensor.severe_thunderstorm_warning','considerable_destructive') == true %}
This storm has the potential to cause considerable damage. Please take shelter and stay safe!
{% endif %}
{% elif states('sensor.weatheralerts_active_alerts') > '0' and method != 'dashboard' %}
@ -39,7 +39,22 @@
There is lightning in the area. Nearest strike is {{ ltgdist }} miles away.
{% endif %}
{% if is_state('binary_sensor.raining','on') %}
It is currently raining. Make sure all doors and windows are closed!
{% if states('sensor.home_tempest_cloud_sensors_precipitation_intensity') not in ['unavailable','unknown','no_rain'] %}
{% set intensity = states('sensor.home_tempest_cloud_sensors_precipitation_intensity') %}
{% if intensity == 'very_light' %}
There is currently a very light drizzle falling.
{% elif intensity == 'light' %}
There is currently light rain falling. Front porch windows should be okay, but other windows should be closed.
{% elif intensity == 'moderate' %}
It is raining pretty good outside, you should probably make sure all windows are closed.
{% elif intensity in ['heavy','very_heavy'] %}
There is heavy rain falling, please make sure all doors and windows are closed at this time.
{% elif intensity == 'extreme' %}
It is raining extremely hard outside. Make sure all doors and windows are closed, and I recommend staying inside until it calms down. Perhaps check for roof leaks as well.
{% endif %}
{% else %}
It is currently raining. Make sure all doors and windows are closed!
{% endif %}
{% endif %}
{% endif %}
{% if state_attr('weather.iron_nerd_weather_station','visibility') | int < 3 %}
@ -60,15 +75,15 @@
{% endif %}
{% if is_state('input_boolean.tornado_alarm','on') %}
"We are under a tornado warning. If you are not already in shelter, you should be. Get on it! "
{% if state_attr('binary_sensor.tornado_warning','confirmed' == true) %}
{% if state_attr('binary_sensor.tornado_warning','confirmed') == true %}
"A tornado has been confirmed in the area. Please take shelter immediately! "
{% endif %}
{% elif is_state('binary_sensor.severe_thunderstorm_warning','on') %}
"We are under a severe thunderstorm warning. "
{% if state_attr('binary_sensor.severe_thunderstorm_warning','tornado_possible' == true) %}
{% if state_attr('binary_sensor.severe_thunderstorm_warning','tornado_possible') == true %}
"The incoming storm has the potential to produce a tornado, so please pay attention and prepare to take shelter! "
{% endif %}
{% if state_attr('binary_sensor.severe_thunderstorm_warning','considerable_destructive' == true) %}
{% if state_attr('binary_sensor.severe_thunderstorm_warning','considerable_destructive') == true %}
"This storm has the potential to cause considerable damage. Please take shelter and stay safe! "
{% endif %}
{% elif is_state('input_boolean.tornado_watch','on') %}
@ -90,12 +105,49 @@
"The nearest lightning strike is {{ ltgdist }} miles away. "
{% endif %}
{% if is_state('binary_sensor.raining','on') %}
{{ [
"I have looked outside and determined that it is raining. ",
"If you look outside the window, you will notice, it wainin. ",
"It wainin sideways! ",
"There appears to be excessive moisture currently falling from the sky. Plan accordingly. ",
] | random }}
{% if states('sensor.home_tempest_cloud_sensors_precipitation_intensity') not in ['unavailable','unknown','no_rain'] %}
{% set intensity = states('sensor.home_tempest_cloud_sensors_precipitation_intensity') %}
{% if intensity == 'very_light' %}
{{ [
"There is currently a very light drizzle falling. ",
"It is drizzling outside, but it is not too bad. ",
"The sky is spitting on us. That's not very nice, but a mild inconvenience at most. "
] | random }}
{% elif intensity == 'light' %}
{{ [
"There is currently light rain falling. ",
"It is raining lightly outside, but it is not too bad. ",
"It kinda wainin outside, but just a little. "
] | random }}
"Front porch windows should be okay, but other windows should be closed. "
{% elif intensity == 'moderate' %}
{{ [
"It is raining pretty good outside, you should probably make sure all windows are closed. ",
"It is raining at a decent rate outside, please make sure all windows are closed. "
"If you look outside, you will see that it wainin. "
] | random }}
{% elif intensity in ['heavy','very_heavy'] %}
{{ [
"There is heavy rain falling, please make sure all doors and windows are closed at this time. ",
"It is raining heavily outside, please make sure all doors and windows are closed. ",
"It wainin sideways! Please make sure all doors and windows are closed. "
] | random }}
{% elif intensity == 'extreme' %}
{{ [
"It is raining extremely hard outside. ",
"There is a torrential downpour outside. ",
"Holy crap, I have never seen it rain this hard before. "
] | random }}
"Make sure all doors and windows are closed, and I recommend staying inside until it calms down. Perhaps check for roof leaks as well. "
{% endif %}
{% else %}
{{ [
"I have looked outside and determined that it is raining. ",
"If you look outside the window, you will notice, it wainin. ",
"It wainin sideways! ",
"There appears to be excessive moisture currently falling from the sky. Plan accordingly. ",
] | random }}
{% endif %}
{% endif %}
{% if (state_attr('weather.iron_nerd_weather_station','visibility') | int ) < 3 %}
{{ [

View File

@ -239,6 +239,9 @@ script:
server_maintenance_annc:
alias: Server Maintenance Announcement
sequence:
- service: input_boolean.turn_on
target:
entity_id: input_boolean.server_maintenance
- service: script.status_annc
data:
who: "{{ who|default('everywhere') }}"
@ -248,6 +251,9 @@ script:
server_maintenance_done_annc:
alias: Server Maintenance Done Announcement
sequence:
- service: input_boolean.turn_off
target:
entity_id: input_boolean.server_maintenance
- service: script.status_annc
data:
who: "{{ who|default('everywhere') }}"

View File

@ -68,6 +68,7 @@ weather:
{{ 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
@ -173,6 +174,7 @@ weather:
{{ 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

View File

@ -44,6 +44,9 @@ input_boolean:
adaptive_lighting_adjustments:
name: Adaptive Lighting Adjustments
icon: mdi:knob
sunset_lights_triggered:
name: Sunset Lights Triggered
icon: mdi:weather-sunset
input_number:
upstairs_bathroom_motion_off_delay:
@ -215,6 +218,13 @@ input_number:
mode: box
unit_of_measurement: lx
icon: mdi:sun-wireless
sunset_lights_outdoor_lux_threshold:
name: Sunset Lights Outdoor Lux Threshold
min: 0
max: 10000
step: 100
unit_of_measurement: lx
icon: mdi:sun-wireless
# Settings for adaptive adjustments
daytime_colortemp_front_porch:

View File

@ -602,25 +602,15 @@ script:
{% set low = states('sensor.overnight_lowest_temperature') | int %}
{% set high = states('sensor.todays_high_temp') | int %}
{% set kallen_bedtime = state_attr('input_datetime.kallen_bedtime','timestamp') | int %}
{% set kallen_fantime = state_attr('input_datetime.kallen_fan','timestamp') | int %}
{% set bedroom_hot = is_state('binary_sensor.kallen_bedroom_hot','on') %}
{% set cutoff = 81000 %} {# Cutoff time is 22:30 #}
{% if is_state('binary_sensor.kallen_school_tomorrow','on') %}
{% if is_state('input_boolean.hot_day','on') %}
{{ (kallen_bedtime - 3600) | timestamp_custom('%H:%M',false) }}
{% elif low >= 56 or high >= 75 %}
{{ (kallen_bedtime - 1800) | timestamp_custom('%H:%M',false) }}
{% else %}
{{ kallen_bedtime | timestamp_custom('%H:%M',false) }}
{% endif %}
{% elif low > 60 or high > 74 %}
{% if kallen_bedtime < cutoff %}
{{ kallen_bedtime | timestamp_custom('%H:%M',false) }}
{% else %}
22:00
{% endif %}
{% elif 56 <= low <= 60 %}
22:30
{% if is_state('input_boolean.hot_day','on') or bedroom_hot == true %}
{{ (kallen_fantime - 3600) | timestamp_custom('%H:%M',false) }}
{% elif low >= 56 or high >= 75 %}
{{ (kallen_bedtime - 1800) | timestamp_custom('%H:%M',false) }}
{% else %}
00:00
{{ kallen_bedtime | timestamp_custom('%H:%M',false) }}
{% endif %}
- service: input_datetime.set_datetime
entity_id: input_datetime.master_bedroom_fan

View File

@ -1,3 +1,8 @@
input_boolean:
server_maintenance:
name: Server Maintenance
icon: mdi:wrench-clock
input_select:
log_level:
name: Log Level

View File

@ -854,6 +854,12 @@ adaptive_on_first_floor:
adaptive_on_second_floor:
alias: Adaptive on Second Floor
sequence:
- action: switch.turn_on
metadata: {}
data: {}
target:
entity_id: switch.adaptive_lighting_stairwell
alias: Turn on adaptive lighting in stairwell
- if:
- condition: state
entity_id: light.hallway_overhead