47eee0291f
revert Clean main branch
203 lines
7.0 KiB
YAML
203 lines
7.0 KiB
YAML
fun:
|
|
|
|
####################Таймеры###############################
|
|
timer:
|
|
vent_work:
|
|
name: Вытяжка в ванной – время работы
|
|
duration: "00:20:00"
|
|
|
|
vent_cooldown:
|
|
name: Вытяжка в ванной – время отдыха
|
|
duration: "01:00:00"
|
|
|
|
####################Автоматизации###############################
|
|
|
|
automation:
|
|
|
|
- alias: Вытяжка в ванной – умное включение
|
|
mode: single
|
|
trigger:
|
|
- platform: numeric_state
|
|
entity_id: sensor.datchik_temperatury_i_vlazhnosti_vanna_humidity
|
|
above: 50
|
|
|
|
- platform: state
|
|
entity_id: binary_sensor.datchik_prisutstviia_vannaia_presence
|
|
to: "on"
|
|
for: "00:10:00"
|
|
|
|
condition:
|
|
- condition: state
|
|
entity_id: timer.vent_cooldown
|
|
state: "idle"
|
|
|
|
- condition: or
|
|
conditions:
|
|
# Лето и влажность > 50
|
|
- condition: and
|
|
conditions:
|
|
- condition: template
|
|
value_template: "{{ now().month in [6,7,8] }}"
|
|
- condition: numeric_state
|
|
entity_id: sensor.datchik_temperatury_i_vlazhnosti_vanna_humidity
|
|
above: 50
|
|
|
|
# Не лето и влажность > 60
|
|
- condition: and
|
|
conditions:
|
|
- condition: template
|
|
value_template: "{{ now().month not in [6,7,8] }}"
|
|
- condition: numeric_state
|
|
entity_id: sensor.datchik_temperatury_i_vlazhnosti_vanna_humidity
|
|
above: 60
|
|
|
|
# Или присутствие
|
|
- condition: state
|
|
entity_id: binary_sensor.datchik_prisutstviia_vannaia_presence
|
|
state: "on"
|
|
|
|
action:
|
|
- service: switch.turn_on
|
|
target:
|
|
entity_id: switch.rele_zerkalo_i_ventiliatsiia_l2
|
|
|
|
- alias: Вытяжка в ванной – старт таймера при включении
|
|
mode: restart
|
|
trigger:
|
|
- platform: state
|
|
entity_id: switch.rele_zerkalo_i_ventiliatsiia_l2
|
|
to: "on"
|
|
|
|
action:
|
|
- service: timer.start
|
|
target:
|
|
entity_id: timer.vent_work
|
|
|
|
- alias: Вытяжка в ванной – выключение и cooldown
|
|
mode: restart
|
|
trigger:
|
|
- platform: event
|
|
event_type: timer.finished
|
|
event_data:
|
|
entity_id: timer.vent_work
|
|
|
|
action:
|
|
- service: switch.turn_off
|
|
target:
|
|
entity_id: switch.rele_zerkalo_i_ventiliatsiia_l2
|
|
|
|
- service: timer.start
|
|
target:
|
|
entity_id: timer.vent_cooldown
|
|
|
|
|
|
- alias: Вытяжка в ванной – периодическая проверка влажности
|
|
mode: single
|
|
trigger:
|
|
# После перезапуска Home Assistant
|
|
- platform: homeassistant
|
|
event: start
|
|
|
|
# Периодическая проверка каждые 5 минут
|
|
- platform: time_pattern
|
|
minutes: "/5"
|
|
|
|
condition:
|
|
# Вентиляция сейчас выключена
|
|
- condition: state
|
|
entity_id: switch.rele_zerkalo_i_ventiliatsiia_l2
|
|
state: "off"
|
|
|
|
# Таймер отдыха закончился
|
|
- condition: state
|
|
entity_id: timer.vent_cooldown
|
|
state: "idle"
|
|
|
|
# Влажность выше порога по сезонам
|
|
- condition: or
|
|
conditions:
|
|
|
|
# Лето → >50%
|
|
- condition: and
|
|
conditions:
|
|
- condition: template
|
|
value_template: "{{ now().month in [6,7,8] }}"
|
|
- condition: numeric_state
|
|
entity_id: sensor.datchik_temperatury_i_vlazhnosti_vanna_humidity
|
|
above: 50
|
|
|
|
# Не лето → >60%
|
|
- condition: and
|
|
conditions:
|
|
- condition: template
|
|
value_template: "{{ now().month not in [6,7,8] }}"
|
|
- condition: numeric_state
|
|
entity_id: sensor.datchik_temperatury_i_vlazhnosti_vanna_humidity
|
|
above: 60
|
|
|
|
action:
|
|
- service: switch.turn_on
|
|
target:
|
|
entity_id: switch.rele_zerkalo_i_ventiliatsiia_l2
|
|
|
|
|
|
- alias: Вытяжка в ванной – резкий рост влажности
|
|
mode: restart
|
|
|
|
trigger:
|
|
- platform: state
|
|
entity_id: sensor.datchik_temperatury_i_vlazhnosti_vanna_humidity
|
|
|
|
condition:
|
|
- condition: template
|
|
value_template: >
|
|
{% if trigger.from_state is none or trigger.to_state is none %}
|
|
false
|
|
{% else %}
|
|
{% set from_s = trigger.from_state.state %}
|
|
{% set to_s = trigger.to_state.state %}
|
|
{% if from_s in ['unknown','unavailable','none','']
|
|
or to_s in ['unknown','unavailable','none',''] %}
|
|
false
|
|
{% else %}
|
|
{{ (to_s | float - from_s | float) >= 15 }}
|
|
{% endif %}
|
|
{% endif %}
|
|
|
|
action:
|
|
- choose:
|
|
|
|
# Вытяжка уже работает → +10 минут
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: switch.rele_zerkalo_i_ventiliatsiia_l2
|
|
state: "on"
|
|
sequence:
|
|
- variables:
|
|
remaining: "{{ state_attr('timer.vent_work','remaining') }}"
|
|
|
|
- service: timer.start
|
|
target:
|
|
entity_id: timer.vent_work
|
|
data:
|
|
duration: >
|
|
{% if remaining is none %}
|
|
00:10:00
|
|
{% else %}
|
|
{{ (as_timedelta(remaining) + timedelta(minutes=10)) }}
|
|
{% endif %}
|
|
|
|
# Вытяжка выключена → включить на 20 минут (игнор cooldown)
|
|
default:
|
|
- service: switch.turn_on
|
|
target:
|
|
entity_id: switch.rele_zerkalo_i_ventiliatsiia_l2
|
|
|
|
- service: timer.start
|
|
target:
|
|
entity_id: timer.vent_work
|
|
data:
|
|
duration: "00:20:00"
|
|
|
|
|