AutomationDataset/dext0r/dext0r_automations.yaml

7619 lines
204 KiB
YAML
Raw Permalink 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.

- id: alice_ping
alias: 'Alice: Ping'
trigger:
platform: event
event_type: yandex_intent
event_data:
text: Дом на связи
action:
- service: script.yandex_station_tts
data:
target: '{{ trigger.event.data.get(''entity_id'', ''last'') }}
'
text: Тук-тук! Дом на связи
- id: alice_tell_fairy_tale
alias: 'Alice: Tell fairy tale'
trigger:
platform: event
event_type: yandex_intent
event_data:
text: Расскажи сказку про белого бычка
action:
- service: script.yandex_station_tts
data:
target: '{{ trigger.event.data.get(''entity_id'', ''last'') }}
'
text: Присаживайся поудобнее мой дорогой дружок
- service: script.yandex_station_tts
data:
target: '{{ trigger.event.data.get(''entity_id'', ''last'') }}
'
text: Сейчас я расскажу тебе сказку про белого бычка
- service: script.yandex_station_tts
data:
target: '{{ trigger.event.data.get(''entity_id'', ''last'') }}
'
text: Нет!
- service: script.yandex_station_tts
data:
target: '{{ trigger.event.data.get(''entity_id'', ''last'') }}
'
text: Я тут подумала, а читай-ка ты её сам, ленивый ты крендель!
- id: bathroom_mirror_button_single_press
alias: 'Bathroom Mirror Button: Single press'
trigger:
- trigger: device
domain: mqtt
device_id: 88c16946d5bfcee7dfce360e772ab881
type: action
subtype: single
action:
if:
- condition: state
entity_id: input_select.home_mode
state: Night
- condition: state
entity_id: input_boolean.scene_waking_up
state: 'off'
then:
- service: input_boolean.turn_on
entity_id: input_boolean.scene_waking_up
else:
- service: light.toggle
entity_id: light.bathroom_mirror
- id: bathroom_mirror_button_double
alias: 'Bathroom Mirror Button: Double'
trigger:
- trigger: device
domain: mqtt
device_id: 88c16946d5bfcee7dfce360e772ab881
type: action
subtype: double
action:
- choose:
- conditions:
- condition: state
entity_id: light.bathroom_main
state: 'on'
- condition: numeric_state
entity_id: light.bathroom_main
attribute: brightness
below: 250
sequence:
- service: light.turn_on
entity_id: light.bathroom_main
data:
brightness_pct: 100
- conditions:
- condition: state
entity_id: light.bathroom_main
state: 'on'
- condition: numeric_state
entity_id: light.bathroom_main
attribute: brightness
above: 250
sequence:
- service: light.turn_on
entity_id: light.bathroom_main
data:
brightness_pct: 25
- id: bathroom_mirror_button_hold
alias: 'Bathroom Mirror Button: Hold'
trigger:
- trigger: device
domain: mqtt
device_id: 88c16946d5bfcee7dfce360e772ab881
type: action
subtype: hold
action:
- service: light.turn_off
entity_id: group.bathroom_path_lights
- id: bathroom_bathtub_button_single_press
alias: 'Bathroom Bathtub Button: Single press'
trigger:
- trigger: device
domain: mqtt
device_id: f0a662efaa0eddc62b7028e4e5214d8d
type: action
subtype: single
action:
- if:
- condition: state
entity_id: input_select.home_mode
state: Day
then:
- service: light.toggle
entity_id: light.bathroom_bathtub
else:
- service: light.turn_off
entity_id: light.bathroom_main
- service: light.turn_on
entity_id:
- light.bathroom_sink_path
- light.bathroom_toilet_path
data:
rgbw_color:
- 255
- 0
- 0
- 0
brightness_pct: 100
- id: bathroom_bathtub_button_call
alias: 'Bathroom Bathtube Button: Call'
trigger:
- trigger: device
domain: mqtt
device_id: f0a662efaa0eddc62b7028e4e5214d8d
type: action
subtype: double
- trigger: device
domain: mqtt
device_id: f0a662efaa0eddc62b7028e4e5214d8d
type: action
subtype: triple
- trigger: device
domain: mqtt
device_id: f0a662efaa0eddc62b7028e4e5214d8d
type: action
subtype: many
action:
- service: script.yandex_station_tts
data:
target: all
type: alert
pause_atv: true
text: "{{ [\n 'вызывают из ванной, сходи проверь',\n 'нужна помощь в ванной',\n\
\ 'тебя очень хотять видеть в ванной',\n ]|random\n}}\n"
- id: bedroom_ac_display_turn_off
alias: 'Bedroom AC Display: Turn off'
trigger:
- platform: state
entity_id: input_select.home_mode
to: Night
- platform: state
entity_id: climate.bedroom_ac
from: 'off'
condition:
- condition: state
entity_id: input_select.home_mode
state: Night
- condition: state
entity_id: climate.bedroom_ac
state:
- heat_cool
- cool
- heat
- dry
action:
- delay:
seconds: 2
- condition: state
entity_id: switch.bedroom_ac_display
state: 'on'
- service: switch.turn_off
entity_id: switch.bedroom_ac_display
- id: bedroom_ac_turn_off
alias: 'Bedroom AC: Turn off'
trigger:
- platform: state
entity_id: binary_sensor.anyone_home
from: 'on'
to: 'off'
for:
minutes: 20
- platform: state
entity_id: climate.bedroom_ac
to:
- heat_cool
- cool
- heat
- dry
for:
hours: 24
- platform: state
entity_id: input_select.home_mode
from: Night
for:
minutes: 5
condition:
- condition: state
entity_id: climate.bedroom_ac
state:
- heat_cool
- cool
- heat
- dry
action:
- service: climate.turn_off
entity_id: climate.bedroom_ac
- id: bedroom_ac_display_update
alias: 'Bedroom AC Display: Update'
trigger:
- id: 'on'
platform: state
entity_id: climate.bedroom_ac
from: 'off'
to:
- heat_cool
- cool
- heat
- dry
- id: 'off'
platform: state
entity_id: climate.bedroom_ac
from:
- heat_cool
- cool
- heat
- dry
to: 'off'
action:
- if:
- condition: trigger
id: 'on'
then:
- service: input_boolean.turn_on
entity_id: input_boolean.bedroom_ac_display
else:
- service: input_boolean.turn_off
entity_id: input_boolean.bedroom_ac_display
- id: bedroom_ac_turn_off_protect
alias: 'Bedroom AC: Turn off (protect)'
trigger:
- platform: time_pattern
seconds: /30
- platform: state
entity_id:
- climate.bedroom_ac
- input_select.washing_machine_status
condition:
- condition: or
conditions:
- and:
- condition: state
entity_id: input_select.washing_machine_status
state: Running
- condition: state
entity_id: climate.workshop_ac
state:
- heat_cool
- cool
- heat
- dry
- condition: numeric_state
entity_id: sensor.outside_temperature
below: -15
- condition: state
entity_id: climate.bedroom_ac
state:
- heat_cool
- cool
- heat
- dry
action:
- service: climate.turn_off
entity_id: climate.bedroom_ac
- id: home_airing_turn_off
alias: 'Home Airing: Turn off'
trigger:
- platform: state
entity_id: switch.home_airing
from: 'off'
to: 'on'
for:
minutes: 20
action:
- service: switch.turn_off
entity_id: switch.home_airing
- id: climate_anomaly_alert
alias: 'Climate: Anomaly alert'
trigger:
- platform: numeric_state
entity_id:
- sensor.bathroom_temperature
- sensor.bedroom_temperature
- sensor.kitchen_temperature
- sensor.living_room_temperature
- sensor.wardrobe_temperature
- sensor.workshop_temperature
below: 15
- platform: numeric_state
entity_id:
- sensor.bathroom_temperature
- sensor.bedroom_temperature
- sensor.kitchen_temperature
- sensor.living_room_temperature
- sensor.wardrobe_temperature
- sensor.workshop_temperature
above: 29
action:
- service: notify.dextor
data:
message: 🤨 Подозрительная температура в доме
- id: living_room_hot
alias: 'Living Room: Hot'
trigger:
- platform: event
event_type: yandex_intent
event_data:
text: Очень жарко
room: Гостиная
action:
- service: climate.set_temperature
entity_id:
- climate.bedroom_ac
- climate.workshop_ac
data:
temperature: 22
hvac_mode: cool
- service: script.yandex_station_tts
data:
target: '{{ trigger.event.data.get(''entity_id'', ''last'') }}
'
text: Сейчас попробую тебя охладить
- id: living_room_cold
alias: 'Living Room: cold'
trigger:
- platform: event
event_type: yandex_intent
event_data:
text: Я замёрз
room: Гостиная
action:
- service: climate.turn_off
entity_id:
- climate.bedroom_ac
- climate.workshop_ac
- service: script.yandex_station_tts
data:
target: '{{ trigger.event.data.get(''entity_id'', ''last'') }}
'
text: Ну и ладно
- id: closet_light_turn_on
alias: 'Closet Light: Turn on'
mode: queued
trigger:
- platform: state
entity_id: binary_sensor.closet_door
from: 'off'
to: 'on'
- platform: state
entity_id: binary_sensor.closet_motion
from: 'off'
to: 'on'
condition:
- condition: state
entity_id:
- input_boolean.light_control
- input_boolean.closet_light_control
state: 'on'
- condition: state
entity_id: light.closet
state: 'off'
- condition: state
entity_id: input_select.home_mode
state:
- Day
- Vacation
action:
- service: light.turn_on
entity_id: light.closet
- id: closet_light_turn_off
alias: 'Closet Light: Turn off'
trigger:
- platform: state
entity_id: binary_sensor.closet_door
from: 'on'
to: 'off'
- platform: state
entity_id: binary_sensor.closet_motion
from: 'on'
to: 'off'
for:
minutes: 5
- platform: state
entity_id: light.closet
to: 'on'
for:
minutes: 30
condition:
- condition: state
entity_id:
- input_boolean.light_control
- input_boolean.closet_light_control
- light.closet
state: 'on'
action:
- service: light.turn_off
entity_id: light.closet
- id: closet_light_control_turn_on
alias: 'Closet Light Control: Turn on'
trigger:
- platform: state
entity_id: light.closet
to: 'off'
condition:
- condition: state
entity_id: input_boolean.closet_light_control
state: 'off'
action:
- service: input_boolean.turn_on
entity_id: input_boolean.closet_light_control
- id: closet_light_control_turn_off
alias: 'Closet Light Control: Turn off'
trigger:
- platform: event
event_type: yandex_intent
event_data:
text: Не выключай свет в кладовке
action:
- service: input_boolean.turn_off
entity_id: input_boolean.closet_light_control
- id: automations_turn_off
alias: 'Automations: Turn off'
trigger:
platform: event
event_type: yandex_intent
event_data:
text: Выключи всю автоматику
action:
- service: automation.turn_off
entity_id: all
data:
stop_actions: false
- service: automation.turn_on
entity_id: automation.automations_turn_on
- service: script.yandex_station_tts
data:
target: '{{ trigger.event.data.get(''entity_id'', ''last'') }}
'
text: 'Готово! Теперь дом снова глупый. Что бы включить все назад, скажи: Алиса,
включи всю автоматику'
- id: automations_turn_on
alias: 'Automations: Turn on'
trigger:
platform: event
event_type: yandex_intent
event_data:
text: Включи всю автоматику
action:
- choose:
- conditions:
- condition: state
entity_id: automation.automations_turn_on
state: 'on'
sequence:
- service: script.yandex_station_tts
data:
target: '{{ trigger.event.data.get(''entity_id'', ''last'') }}
'
text: Нет необходимости, всё уже работает
default:
- service: automation.turn_on
entity_id: all
- service: script.yandex_station_tts
data:
target: '{{ trigger.event.data.get(''entity_id'', ''last'') }}
'
text: Включила, не делай больше так, мне страшно и обидно
- id: home_mode_night_auto_turn_on
alias: 'Home Mode Night: Auto turn on'
trigger:
- platform: time
at: 01:55
condition:
- condition: state
entity_id: binary_sensor.anyone_home
state: 'on'
- condition: state
entity_id: binary_sensor.motion_anywhere
state: 'off'
for:
hours: 1
- condition: not
conditions:
- condition: state
entity_id: input_select.home_mode
state: Night
action:
- service: input_select.select_option
entity_id: input_select.home_mode
data:
option: Night
- id: home_mode_manual_day
alias: 'Home Mode: Manual day'
trigger:
- platform: event
event_type: yandex_intent
event_data:
text: Сейчас день
action:
- if:
- condition: state
entity_id: input_select.home_mode
state: Day
then:
- service: script.yandex_station_tts
data:
target: '{{ trigger.event.data.get(''entity_id'', ''last'') }}
'
text: Действительно, сейчас день
else:
- service: input_select.select_option
entity_id: input_select.home_mode
data:
option: Day
- service: script.yandex_station_tts
data:
target: '{{ trigger.event.data.get(''entity_id'', ''last'') }}
'
text: Переключила дом в дневной режим
- id: scene_delivery_turn_on
alias: 'Scene Delivery: Turn on'
triggers:
- trigger: event
event_type: yandex_intent
event_data:
text: Заказана еда
- id: event
trigger: event
event_type: living_room_heater_button_hold_down
actions:
- if:
- condition: state
entity_id: input_boolean.scene_delivery
state: 'on'
then:
- service: script.yandex_station_tts
data:
target: '{{ ''media_player.living_room_station'' if trigger.id == ''event''
else trigger.event.data.get(''entity_id'', ''last'') }}
'
text: "{% set elapsed_seconds = as_timestamp(now()) - state_attr('input_datetime.scene_delivery_started',\
\ 'timestamp') %} {{ 'Еда заказана' if trigger.id == 'event' else ['Ага,',\
\ 'Я знаю,', 'Наверняка,']|random }} уже как {{ (elapsed_seconds / 60)|int\
\ }}мин назад {% if elapsed_seconds > 40 * 60 * 60 %}\n и я немного волнуюсь\n\
{% endif %}\n"
- condition: state
entity_id: input_boolean.scene_delivery
state: 'off'
- service: input_boolean.turn_on
entity_id: input_boolean.scene_delivery
- service: input_datetime.set_datetime
entity_id: input_datetime.scene_delivery_started
data:
datetime: '{{ now().strftime(''%Y-%m-%d %H:%M:%S'') }}
'
- if:
- condition: trigger
id: event
then:
- action: script.turn_on
entity_id: script.living_room_tv_status_light_ack_flash
- service: script.yandex_station_tts
data:
target: '{{ ''media_player.living_room_station'' if trigger.id == ''event''
else trigger.event.data.get(''entity_id'', ''last'') }}
'
text: "{{ [\n 'Еда заказана. Очень хочется кушать',\n 'Еда заказана.\
\ Скорей бы привезли кушать',\n 'Еда заказана. Ждём с нетерпением',\n\
\ 'Ждем курьера, но почему бы не приготовить самому?',\n 'Ждем курьера,\
\ но почему бы не приготовить самому?',\n 'Еда заказана. Не забудь всё\
\ подготовить.',\n ]|random\n}}\n"
else:
- service: script.yandex_station_tts
data:
target: '{{ ''media_player.living_room_station'' if trigger.id == ''event''
else trigger.event.data.get(''entity_id'', ''last'') }}
'
text: "{{ [\n 'Хорошо, ждём. Очень хочется кушать',\n 'Хорошо, скорей\
\ бы привезли кушать',\n 'Отлично, ждём с нетерпением',\n 'Ждем курьера,\
\ но почему бы не приготовить самому?',\n 'Ждем курьера, но почему бы\
\ не приготовить самому?',\n 'Хорошая новость. Не забудь всё подготовить.',\n\
\ ]|random\n}}\n"
- id: scene_delivery_30min_passed
alias: 'Scene Delivery: 30min passed'
trigger:
- platform: state
entity_id: input_boolean.scene_delivery
to: 'on'
for:
minutes: 30
condition:
- condition: state
entity_id: input_select.home_mode
state:
- Day
- Vacation
action:
- service: script.yandex_station_tts
data:
target: all
type: attention
text: "{{ [\n 'Уже прошло полчаса, курьер может уже выехал?',\n 'Тридцать\
\ минут прошло, голод только стал сильнее',\n 'Полчаса минуло, надеюсь\
\ курьер в пути'\n ]|random\n}}\n"
- id: scene_delivery_60min_passed
alias: 'Scene Delivery: 60min passed'
trigger:
- platform: state
entity_id: input_boolean.scene_delivery
to: 'on'
for:
minutes: 60
condition:
- condition: state
entity_id: input_select.home_mode
state:
- Day
- Vacation
action:
- service: script.yandex_station_tts
data:
target: all
type: attention
text: Тем временем еды уже нет целый час. Это вообще никуда не годится! Я буду
жаловаться!
- id: scene_delivery_turn_off
alias: 'Scene Delivery: Turn off'
trigger:
- platform: state
entity_id: binary_sensor.front_door
from: 'on'
to: 'off'
condition:
- condition: state
entity_id: input_boolean.scene_delivery
state: 'on'
- condition: state
entity_id: input_select.home_mode
state:
- Day
- Vacation
action:
- service: input_boolean.turn_off
entity_id: input_boolean.scene_delivery
- delay:
seconds: 8
- service: script.yandex_station_tts
data:
target: all
type: attention
text: '{% set elapsed_seconds = as_timestamp(now()) - state_attr(''input_datetime.scene_delivery_started'',
''timestamp'') %} А вот и еда! {{ [''Еду привезли за'', ''Еда доставлена
за'', ''Мы смогли продержаться эти'']|random }} {{ (elapsed_seconds / 60)|int
}}мин
'
- id: scene_delivery_turn_off_fallback
alias: 'Scene Delivery: Turn off (fallback)'
trigger:
- platform: state
entity_id: input_boolean.scene_delivery
to: 'on'
for:
hours: 6
action:
- service: input_boolean.turn_off
entity_id: input_boolean.scene_delivery
- id: scene_departure_sequence
alias: 'Scene Departure: Sequence'
mode: restart
trigger:
- platform: state
entity_id: lock.front_door
from: unlocked
to: locked
action:
- wait_for_trigger:
- platform: state
entity_id: binary_sensor.porch_door
from: 'on'
to: 'off'
for:
seconds: 2
timeout:
minutes: 1
continue_on_timeout: false
- if:
- condition: state
entity_id: binary_sensor.porch_door
state: 'off'
- condition: state
entity_id: lock.porch_door
state: unlocked
then:
- service: lock.lock
entity_id: lock.porch_door
- service: light.turn_off
entity_id:
- light.porch_path_light
- light.porch_lock_light
- id: device_unavailable_alert
alias: Device unavailable alert
mode: single
max_exceeded: silent
trigger:
- platform: event
event_type: state_changed
- platform: homeassistant
event: shutdown
id: shutdown
condition:
- or:
- condition: trigger
id: shutdown
- and:
- condition: template
value_template: '{{ trigger.event.data.new_state and trigger.event.data.new_state.state
== ''unavailable'' }}
'
- condition: template
value_template: "{{ (now() - state_attr('automation.device_unavailable_alert',\n\
\ 'last_triggered')|default(now() - timedelta(days=1),\
\ true)).total_seconds() > 1800 }}\n"
action:
- if:
- condition: trigger
id: shutdown
then:
- stop: Home Assistant is stopping
- delay:
minutes: 10
- condition: template
value_template: "{% set ns = namespace(break = false) %} {%- for entity in states\
\ if entity.state == 'unavailable' and entity.entity_id and ns.break == false\
\ -%}\n {%- if (now() - entity.last_changed).total_seconds() > 180 and\n \
\ not is_state_attr(entity.entity_id, 'volatile', true) and\n \
\ not is_state_attr(entity.entity_id, 'restored', true) and\n not\
\ 'xmas_' in entity.entity_id -%}\n {%- set ns.break = true -%}\n true\n\
\ {%- endif -%}\n{%- endfor %}\n"
- service: notify.dextor
data:
message: "⚠️ <b>Некоторые устройства недоступны:</b>{{ '\\n' }} {%- for entity\
\ in states if entity.state == 'unavailable' and\n \
\ not is_state_attr(entity.entity_id, 'volatile', true) and\n \
\ not is_state_attr(entity.entity_id, 'restored', true)\
\ -%}\n* {{ entity.name }}: {{ entity.last_changed|relative_time }}{{ '\\\
n' }} {%- endfor -%}\n"
- id: device_low_battery_alert
alias: Device low battery alert
trigger:
- platform: time
at: '18:00'
condition:
- condition: template
value_template: "{%- set ns = namespace(break = false) -%} {%- for entity in states\
\ if entity.entity_id.endswith('_battery') and ns.break == false -%} {%- if\
\ entity.state not in ['None', 'unavailable', 'unknown'] and entity.state|int\
\ <= 25 -%}\n {%- set ns.break = true -%}\n true\n{%- endif -%} {%- endfor\
\ -%}\n"
action:
- service: notify.dextor
data:
message: '⚠️ <b>Батарея подходит к концу:</b>{{ ''\n'' }} {%- for entity in
states if entity.entity_id.endswith(''_battery'') %} {%- if entity.state not
in [''None'', ''unavailable'', ''unknown''] and entity.state|int <= 25 -%}
* {{ entity.name }}: {{ entity.state }} %{{ ''\n'' }} {%- endif -%} {%- endfor
-%}
'
- id: device_unavailable_log
alias: Device unavailable log
mode: parallel
max_exceeded: silent
trigger:
- platform: event
event_type: state_changed
condition:
- condition: template
value_template: '{{ trigger.event.data.new_state and trigger.event.data.new_state.state
== ''unavailable'' }}
'
action:
- service: notify.send_message
data:
entity_id: notify.debug
message: 'Device unavailable: {{ trigger.event.data.new_state.entity_id }}'
- id: frozen_sensor_alert
alias: Frozen sensor alert
triggers:
- trigger: time
at: '12:00'
- trigger: time
at: '21:00'
conditions:
- condition: template
value_template: "{%- set ns = namespace(break = false) -%} {%- for entity in states\
\ if entity.attributes.get('device_class') in ('temperature', 'humidity', 'carbon_dioxide')\
\ and ns.break == false -%} {%- if (now() - entity.last_updated).total_seconds()\
\ > 6 * 60 * 60 and\n not set(entity.entity_id.split('_')).intersection(['target'])\
\ and\n not is_state_attr(entity.entity_id, 'sporadic', true) -%}\n \
\ {%- set ns.break = true -%}\n true\n{%- endif -%} {%- endfor -%}\n"
- condition: state
entity_id: input_select.home_mode
state:
- Day
- Night
actions:
- action: notify.dextor
data:
message: "\U0001F4C9 <b>Давно не обновлялись датчики:</b>{{ '\\n' }} {%- for\
\ entity in states if entity.attributes.get('device_class') in ('temperature',\
\ 'humidity', 'carbon_dioxide') -%} {%- if (now() - entity.last_updated).total_seconds()\
\ > 6 * 60 * 60 and\n not set(entity.entity_id.split('_')).intersection(['target'])\
\ and\n not is_state_attr(entity.entity_id, 'sporadic', true) -%}\n\
* {{ entity.name }}: {{ entity.last_updated.strftime('%d.%m.%Y %H:%M') }}\
\ {{ '\\n' }} {%- endif -%} {%- endfor -%}\n"
- id: dishwasher_cycle
alias: 'Dishwasher: Cycle'
mode: restart
trigger:
platform: state
entity_id: sensor.dishwasher_progress
from: Idle
to:
- Pre-wash
- Wash
action:
- service: input_select.select_option
entity_id: input_select.dishwasher_status
data:
option: Running
- wait_for_trigger:
- platform: state
entity_id: sensor.dishwasher_progress
to:
- Complete
- Idle
timeout:
hours: 4
continue_on_timeout: true
- if:
- condition: state
entity_id: binary_sensor.dishwasher_door
state: 'off'
then:
- service: input_select.select_option
entity_id: input_select.dishwasher_status
data:
option: Done
else:
- service: input_select.select_option
entity_id: input_select.dishwasher_status
data:
option: Idle
- id: dishwasher_free
alias: 'Dishwasher: Free'
trigger:
platform: state
entity_id: binary_sensor.dishwasher_door
to: 'on'
for:
seconds: 10
condition:
- condition: state
entity_id: input_select.dishwasher_status
state: Done
action:
- wait_for_trigger:
- platform: state
entity_id: binary_sensor.dishwasher_door
to: 'off'
timeout:
minutes: 10
continue_on_timeout: true
- service: input_select.select_option
entity_id: input_select.dishwasher_status
data:
option: Idle
- id: dishwasher_dirty
alias: 'Dishwasher: Dirty'
trigger:
platform: state
entity_id: binary_sensor.dishwasher_door
to: 'on'
for:
seconds: 30
condition:
- condition: state
entity_id: input_select.dishwasher_status
state: Idle
action:
- service: input_select.select_option
entity_id: input_select.dishwasher_status
data:
option: Dirty
- id: dishwasher_status
alias: 'Dishwasher: Status'
trigger:
platform: event
event_type: yandex_intent
event_data:
text: Что с посудомойкой
action:
- service: script.yandex_station_tts
data:
target: '{{ trigger.event.data.get(''entity_id'', ''last'') }}
'
text: "Посудомойка {% if is_state('input_select.dishwasher_status', 'Dirty')\
\ %}\n с грязной посудой, в ожидании запуска.\n{% elif is_state('input_select.dishwasher_status',\
\ 'Running') %}\n {% if is_state('sensor.dishwasher_progress', 'Pre-wash')\
\ %}\n в процессе предварительной мойки\n {% elif is_state('sensor.dishwasher_progress',\
\ 'Wash') %}\n в процессе основной мойки\n {% elif is_state('sensor.dishwasher_progress',\
\ 'Rinse') %}\n вспаласкивает тарелочки\n {% elif is_state('sensor.dishwasher_progress',\
\ 'Dry') %}\n сушит кружечки\n {% else %}\n делает бурлык-бурлык, посуда\
\ скоро будет чистой\n {% endif %}\n{% elif is_state('input_select.dishwasher_status',\
\ 'Done') %}\n закончила, можно доставать посуду\n{% elif is_state('input_select.dishwasher_status',\
\ 'Idle') %}\n простаивает без дела\n{% else %}\n в каком-то непонятном\
\ состоянии, что я даже хз\n{% endif %}\n{% if states('sensor.dishwasher_time_remaining')\
\ | float(0) > 0 %}\n . Осталось {{ states('sensor.dishwasher_time_remaining')\
\ }} мин.\n{% endif %}\n"
- id: dishwasher_status_light_update
alias: 'Dishwasher: Status light update'
mode: queued
trigger:
- platform: state
entity_id:
- input_select.dishwasher_status
- input_select.home_mode
action:
- choose:
- conditions:
- condition: state
entity_id: input_select.home_mode
state:
- Day
- Vacation
- condition: state
entity_id: input_select.dishwasher_status
state: Running
sequence:
- service: light.turn_on
entity_id: light.dishwasher_status
data:
brightness_pct: 100
rgbw_color:
- 255
- 0
- 0
- 0
- conditions:
- condition: state
entity_id: input_select.home_mode
state:
- Day
- Vacation
- condition: state
entity_id: input_select.dishwasher_status
state: Done
sequence:
- service: light.turn_on
entity_id: light.dishwasher_status
data:
brightness_pct: 30
rgbw_color:
- 0
- 255
- 0
- 0
- conditions:
- condition: state
entity_id: input_select.home_mode
state:
- Day
- Vacation
- condition: state
entity_id: input_select.dishwasher_status
state: Dirty
sequence:
- service: light.turn_on
entity_id: light.dishwasher_status
data:
brightness_pct: 40
rgbw_color:
- 255
- 0
- 215
- 0
default:
- service: light.turn_off
entity_id: light.dishwasher_status
- id: dryer_cycle
alias: 'Dryer: Cycle'
max_exceeded: silent
trigger:
- platform: numeric_state
entity_id: sensor.dryer_power
above: 0
for:
seconds: 10
- platform: numeric_state
entity_id: sensor.dryer_power
above: 200
for:
seconds: 10
condition:
- condition: state
entity_id: input_select.dryer_status
state: Idle
action:
- service: input_select.select_option
entity_id: input_select.dryer_status
data:
option: Running
- wait_for_trigger:
- platform: numeric_state
entity_id: sensor.dryer_power
below: 1
for:
minutes: 2
- platform: state
entity_id: binary_sensor.dryer_door
from: 'off'
to: 'on'
timeout:
hours: 6
continue_on_timeout: true
- condition: state
entity_id: input_select.dryer_status
state: Running
- if:
- condition: state
entity_id: binary_sensor.dryer_door
state: 'on'
then:
- service: input_select.select_option
entity_id: input_select.dryer_status
data:
option: Idle
else:
- service: input_select.select_option
entity_id: input_select.dryer_status
data:
option: Done
- id: dryer_door_open
alias: 'Dryer: Door open'
trigger:
platform: state
entity_id: binary_sensor.dryer_door
from: 'off'
to: 'on'
condition:
- condition: state
entity_id: input_select.dryer_status
state: Done
action:
- service: input_select.select_option
entity_id: input_select.dryer_status
data:
option: Idle
- id: dryer_idle
alias: 'Dryer: Idle'
trigger:
platform: state
entity_id: input_select.dryer_status
to: Idle
action:
- service: input_number.set_value
entity_id: input_number.dryer_done_alert_count
data:
value: 0
- id: dryer_done_alert
alias: 'Dryer: Done alert'
trigger:
- platform: time_pattern
minutes: /45
- platform: state
entity_id: input_select.dryer_status
from: Running
to: Done
condition:
- condition: state
entity_id: binary_sensor.anyone_home
state: 'on'
- condition: state
entity_id: input_select.home_mode
state:
- Day
- Vacation
- condition: state
entity_id: input_select.dryer_status
state: Done
- condition: numeric_state
entity_id: input_number.dryer_done_alert_count
below: 4
- condition: template
value_template: '{{ (now() - states.input_number.dryer_done_alert_count.last_changed).total_seconds()
> 1200 }}
'
action:
- wait_template: '{{ not is_state(''media_player.atv'', [''playing'', ''pause''])
}}
'
timeout:
minutes: 33
continue_on_timeout: true
- service: script.yandex_station_tts
data:
target: all
type: attention
text: "{{ states.sensor.alert_greeting.state }} {{ [\n 'Сушилка ждёт тебя,\
\ пора раскладывать бельё по полочкам.',\n 'Сушилка ждет тебя, в ней тебя\
\ ждёт что-то особенное.',\n 'Сушилка закончила, пора достать из неё мягонькое\
\ бельё.',\n ]|random\n}} {% if states('input_number.dryer_done_alert_count')|int\
\ == 2 %}\n Если я ошиблась - закрой дверцу машины и открой снова.\n{% endif\
\ %} {% if states('input_number.dryer_done_alert_count')|int == 3 %}\n Это\
\ последнее предупреждение! Мятое белье останется там навсегда!\n{% endif\
\ %}\n"
- service: input_number.increment
entity_id: input_number.dryer_done_alert_count
- id: dryer_status
alias: 'Dryer: Status'
trigger:
platform: event
event_type: yandex_intent
event_data:
text: Что с сушильной машиной
action:
- service: script.yandex_station_tts
data:
target: '{{ trigger.event.data.get(''entity_id'', ''last'') }}
'
text: "Сушилка {% if is_state('input_select.dryer_status', 'Running') %}\n \
\ делает пух-пух. Скоро вещи будут сухими и мягонькими\n{% elif is_state('input_select.dryer_status',\
\ 'Done') %}\n закончила, доставай быстрее белье и развешивай в гардеробную\n\
{% elif is_state('input_select.dryer_status', 'Idle') %}\n простаивает без\
\ дела и скучает по мокрому бельёю\n{% endif %}\n"
- id: living_room_evening
alias: 'Living Room: Evening'
trigger:
- id: lock_unlocked
platform: state
entity_id: lock.front_door
from: locked
to: unlocked
- platform: state
entity_id: binary_sensor.evening_time
from: 'off'
to: 'on'
for:
minutes: 5
- platform: state
entity_id: binary_sensor.living_room_balcony_door
from: 'on'
to: 'off'
for:
seconds: 20
condition:
- condition: state
entity_id: input_select.home_mode
state: Day
- condition: state
entity_id: binary_sensor.evening_time
state: 'on'
- condition: or
conditions:
- condition: trigger
id: lock_unlocked
- condition: state
entity_id: binary_sensor.anyone_home
state: 'on'
- condition: state
entity_id: binary_sensor.living_room_balcony_door
state: 'off'
- condition: state
entity_id: cover.living_room
state: open
- condition: template
value_template: "{{ (now() - state_attr('automation.living_room_evening',\n \
\ 'last_triggered')|default(now() - timedelta(days=1),\
\ true)).total_seconds() > 8 * 60 * 60 }}\n"
action:
- if:
- condition: state
entity_id: binary_sensor.living_room_occupancy
state: 'on'
- condition: state
entity_id: light.living_room_main
state: 'off'
then:
- if:
- condition: state
entity_id: light.living_room_tv
state: 'off'
then:
- service: light.turn_on
entity_id: light.living_room_tv
data:
brightness_pct: 45
transition: 2
- if:
- condition: state
entity_id: light.living_room_backlight
state: 'off'
then:
- service: light.turn_on
entity_id: light.living_room_backlight
data:
brightness_pct: 23
color_temp_kelvin: 3400
transition: 2
- delay:
seconds: 2
- service: cover.close_cover
entity_id: cover.living_room
- id: bedroom_evening
alias: 'Bedroom: Evening'
trigger:
- id: lock_unlocked
platform: state
entity_id: lock.front_door
from: locked
to: unlocked
- platform: state
entity_id: binary_sensor.evening_time
from: 'off'
to: 'on'
for:
minutes: 5
condition:
- condition: state
entity_id: input_select.home_mode
state: Day
- condition: state
entity_id: binary_sensor.evening_time
state: 'on'
- condition: or
conditions:
- condition: trigger
id: lock_unlocked
- condition: state
entity_id: binary_sensor.anyone_home
state: 'on'
- condition: state
entity_id: binary_sensor.bedroom_window
state: 'off'
- condition: state
entity_id: cover.bedroom
attribute: current_position
state: 100
- condition: template
value_template: "{{ (now() - state_attr('automation.bedroom_evening',\n \
\ 'last_triggered')|default(now() - timedelta(days=1), true)).total_seconds()\
\ > 8 * 60 * 60 }}\n"
action:
- service: cover.close_cover
entity_id: cover.bedroom
- if:
- condition: state
entity_id: binary_sensor.bedroom_occupancy
state: 'on'
then:
- service: light.turn_on
entity_id: light.bedroom_cat
data:
color_temp_kelvin: 2700
brightness_pct: 100
- id: fridge_door_alert
alias: 'Fridge: Door alert'
trigger:
- platform: state
entity_id: binary_sensor.fridge_door
id: 2m
to: 'on'
for:
minutes: 2
- platform: state
entity_id: binary_sensor.fridge_door
to: 'on'
for:
minutes: 4
- platform: state
entity_id: binary_sensor.fridge_door
to: 'on'
for:
minutes: 10
- platform: state
entity_id: binary_sensor.fridge_door
to: 'on'
for:
minutes: 15
action:
- if:
- condition: trigger
id: 2m
then:
- service: notify.dextor
data:
message: 🧊 Закрой холодильник!
else:
- service: script.yandex_station_tts
data:
target: all
type: alert
text: Проверь холодильник, кажется он открыт
- id: fridge_temperature_alert
alias: 'Fridge: Temperature alert'
trigger:
- platform: numeric_state
entity_id: sensor.fridge_temperature
above: 16
for:
minutes: 4
- platform: numeric_state
entity_id: sensor.fridge_temperature
above: 16
for:
minutes: 25
action:
- service: script.yandex_station_tts
data:
target: all
type: alert
text: В холодильнике очень жарко, проверь что там как
- id: freezer_door_alert
alias: 'Freezer: Door alert'
trigger:
- platform: state
entity_id: binary_sensor.freezer_door
id: 2m
to: 'on'
for:
minutes: 2
- platform: state
entity_id: binary_sensor.freezer_door
to: 'on'
for:
minutes: 4
- platform: state
entity_id: binary_sensor.freezer_door
to: 'on'
for:
minutes: 10
- platform: state
entity_id: binary_sensor.freezer_door
to: 'on'
for:
minutes: 15
action:
- if:
- condition: trigger
id: 2m
then:
- service: notify.dextor
data:
message: 🧊 Закрой морозильник!
else:
- service: script.yandex_station_tts
data:
target: all
type: alert
text: Проверь морозильник, кажется он открыт
- id: freezer_temperature_alert
alias: 'Freezer: Temperature alert'
trigger:
- platform: numeric_state
entity_id: sensor.freezer_temperature
above: 16
for:
minutes: 4
- platform: numeric_state
entity_id: sensor.freezer_temperature
above: 16
for:
minutes: 25
action:
- service: script.yandex_station_tts
data:
target: all
type: alert
text: В морозильнике очень жарко, проверь что там как
- id: everybody_left_home
alias: Everybody Left Home
trigger:
- platform: state
entity_id: binary_sensor.anyone_home
from: 'on'
to: 'off'
action:
- service: input_datetime.set_datetime
entity_id: input_datetime.anyone_home_last_seen
data:
datetime: '{{ now().strftime("%Y-%m-%d %H:%M:%S") }}'
- id: anyone_home_last_seen_update
alias: 'Anyone Home Last Seen: Update'
trigger:
- platform: time_pattern
minutes: /4
condition:
- condition: state
entity_id: binary_sensor.anyone_home
state: 'on'
- condition: template
value_template: '{{ (now() - states.binary_sensor.anyone_home.last_changed).total_seconds()
> 5 * 60 }}
'
action:
- service: input_datetime.set_datetime
entity_id: input_datetime.anyone_home_last_seen
data:
datetime: '{{ now().strftime("%Y-%m-%d %H:%M:%S") }}'
- id: anyone_near_home_detected
alias: Anyone Near Home Detected
triggers:
- trigger: state
entity_id: binary_sensor.anyone_near_home
from: 'off'
to: 'on'
actions:
- action: timer.start
entity_id: timer.anyone_near_home_recently
- id: kitchen_balcony_tracker_led_update
alias: 'Kitchen Balcony Tracker: LED Update'
mode: queued
triggers:
- trigger: state
entity_id: binary_sensor.anyone_near_home
to:
- 'on'
- 'off'
actions:
- action: switch.turn_{{ trigger.to_state.state }}
entity_id: switch.kitchen_balcony_tracker_led
- id: good_morning
alias: Good Morning
trigger:
- platform: event
event_type: yandex_intent
event_data:
text: Доброе утро
action:
- service: input_select.select_option
entity_id: input_select.home_mode
data:
option: Day
- service: cover.open_cover
entity_id:
- cover.living_room
- cover.kitchen
- cover.bedroom
- cover.workshop
- service: script.yandex_station_tts
data:
target: '{{ trigger.event.data.get("entity_id", "last") }}'
text: "{{ states.sensor.alert_greeting.state }} {{ [\n 'доброе утро! Сегодня\
\ будет отличный день.',\n 'доброго утра! Продуктивно провести этот день.',\n\
\ 'с добрым утром! Прекрасный день ждёт впереди.',\n 'хорошего утра\
\ и удачного дня.',\n 'доброго утречка! Посмотри как прекрасно за окном!',\n\
\ 'утра доброго, хорошо спалось?',\n ]|random\n}}\n"
- if:
- condition: state
entity_id: climate.kettle
state: 'off'
- condition: numeric_state
entity_id: climate.kettle
attribute: current_temperature
below: 75
then:
- if:
- condition: numeric_state
entity_id: sensor.kettle_water_level_ml
above: 299
then:
- service: climate.set_hvac_mode
entity_id: climate.kettle
data:
hvac_mode: auto
- service: script.yandex_station_tts
data:
target: '{{ trigger.event.data.get(''entity_id'', ''last'') }}
'
text: "{{ [\n 'Чай скоро будет готов',\n 'Я включила чайник для\
\ %s' % states('sensor.person_pronoun_gen'),\n '%s пить чай, кипяток\
\ на подходе' % ('Умывайся и готовься' if states('sensor.person_pronoun_nom')\
\ == 'ты' else 'Умывайтесь и готовьтесь'),\n 'Какое утро без чая?\
\ Я позабочусь о нём',\n ]|random\n}}\n"
else:
- service: script.yandex_station_tts
data:
target: '{{ trigger.event.data.get(''entity_id'', ''last'') }}
'
text: "{{ [\n 'Чая сегодня не будет, кто-то не долил воды с вечера,\
\ плак-плак',\n 'Не могу включить чайник, похоже там мало воды. Грусть\
\ печаль',\n 'Хватит валяться и иди включай чайник, без воды он сам\
\ себя не включит'\n ]|random\n}}\n"
- if:
- condition: state
entity_id: climate.kettle
state: unavailable
then:
- service: script.yandex_station_tts
data:
target: '{{ trigger.event.data.get(''entity_id'', ''last'') }}
'
text: "{{ [\n 'Чая сегодня не будет, он недоступен, плак-плак',\n \
\ 'Не могу включить чайник, он отпал. Грусть печаль',\n 'Хватит валяться\
\ и иди включай чайник, а то у меня лапки'\n ]|random\n}}\n"
- if:
- condition: template
value_template: "{% if state_attr('input_datetime.scene_delivery_scheduled_from',\
\ 'has_date') %}\n {% if states('input_datetime.scene_delivery_scheduled_from').split('\
\ ')|first == now().date()|string %}\n true\n {% endif %}\n{% endif %}\n"
then:
- service: script.yandex_station_tts
data:
target: '{{ trigger.event.data.get(''entity_id'', ''last'') }}
'
text: 'На сегодня запланирована доставка с {{ state_attr(''input_datetime.scene_delivery_scheduled_from'',
''hour'') }}:{{ ''%02d'' % state_attr(''input_datetime.scene_delivery_scheduled_from'',
''minute'') }} до {{ state_attr(''input_datetime.scene_delivery_scheduled_to'',
''hour'') }}:{{ ''%02d'' % state_attr(''input_datetime.scene_delivery_scheduled_to'',
''minute'') }}
'
- if:
- condition: template
value_template: '{{ 0 <= (states(''input_datetime.next_trip'') | as_datetime
| as_local - now()).days < 30 }}
'
then:
- service: script.yandex_station_tts
data:
target: '{{ trigger.event.data.get(''entity_id'', ''last'') }}
'
text: До поездки осталось {{ (states('input_datetime.next_trip') | as_datetime
| as_local - now()).days }} дн.
- service: script.yandex_station_command
data:
target: '{{ trigger.event.data.get(''entity_id'', ''last'') }}
'
command: Какой сегодня день и время
- service: script.yandex_station_command
data:
target: '{{ trigger.event.data.get(''entity_id'', ''last'') }}
'
command: Погода на сегодня
- if:
- condition: template
value_template: '{{ now().month == 12 and now().day >= 15 }}
'
then:
- service: script.yandex_station_command
data:
target: '{{ trigger.event.data.get(''entity_id'', ''last'') }}
'
command: Сколько осталось до нового года
- id: good_morning_fallback
alias: Good Morning (fallback)
trigger:
- platform: state
entity_id: light.bedroom_main
to: 'on'
for:
minutes: 2
condition:
- condition: state
entity_id: binary_sensor.anyone_home
state: 'on'
- condition: time
after: 07:00
before: '21:00'
- condition: not
conditions:
- condition: state
entity_id: input_select.home_mode
state: Day
action:
- service: input_select.select_option
entity_id: input_select.home_mode
data:
option: Day
- service: cover.open_cover
entity_id:
- cover.living_room
- cover.kitchen
- cover.bedroom
- id: good_night
alias: Good Night
trigger:
- platform: event
event_type: yandex_intent
event_data:
text: Спокойной ночи
action:
- service: script.turn_on
entity_id: script.yandex_station_tts
data:
variables:
target: '{{ trigger.event.data.get(''entity_id'', ''last'') }}
'
text: '{{ [''Спокойной ночи!'', ''Сладких снов!'', ''Приятных снов!'', ''Доброй
ночи!'']|random }}
'
- service: cover.close_cover
entity_id:
- cover.living_room
- cover.kitchen
- cover.bedroom
- service: light.turn_off
entity_id:
- group.bathroom_lights
- group.kitchen_lights
- group.living_room_lights
- group.path_lights
- light.entrance
- light.hallway
- light.wardrobe
- light.closet
- light.workshop_main
- light.bedroom_main
- service: input_select.select_option
entity_id: input_select.home_mode
data:
option: Night
- service: light.turn_off
entity_id: light.bedroom_bed
data:
transition: 7
- service: light.turn_off
entity_id:
- light.bedroom_cat
- light.bedroom_moon
- light.bedroom_string
- service: media_player.turn_off
entity_id: media_player.tv
- service: switch.turn_off
entity_id: switch.bedroom_airing
- id: hallway_light_turn_off_welcome_home
alias: 'Hallway Light: Turn off (welcome home)'
trigger:
- platform: state
entity_id: binary_sensor.entrance_motion
to: 'off'
for:
minutes: 2
condition:
- condition: state
entity_id: input_boolean.light_control
state: 'on'
- condition: state
entity_id:
- light.hallway
- light.entrance
match: any
state: 'on'
- condition: state
entity_id: timer.scene_welcome_home
state: active
action:
- service: light.turn_off
entity_id:
- light.hallway
- light.entrance
- id: entrance_light_turn_off
alias: 'Entrance Light: Turn off'
trigger:
- platform: state
entity_id: binary_sensor.entrance_motion
to: 'off'
for:
minutes: 15
condition:
- condition: state
entity_id: input_boolean.light_control
state: 'on'
- condition: state
entity_id: light.entrance
state: 'on'
action:
- service: light.turn_off
entity_id: light.entrance
- id: bedroom_bed_button_single_press
alias: 'Bedroom Bed Button: Single press'
trigger:
- trigger: device
domain: mqtt
device_id: 620c20157f0cbf8a0249f3f083a531ff
type: action
subtype: single
condition:
- condition: state
entity_id: input_boolean.scene_sleepy_mood
state: 'off'
action:
- choose:
- conditions:
- condition: state
entity_id:
- light.bedroom_bed
- light.hallway_path
match: any
state: 'on'
sequence:
- service: light.turn_off
entity_id:
- group.living_room_lights
- group.workshop_lights
- light.bedroom_bed
- light.bedroom_moon
- light.hallway_path
- light.wardrobe
- conditions:
- condition: state
entity_id: input_boolean.bedroom_airing_cold
state: 'on'
sequence:
- service: input_boolean.turn_off
entity_id: input_boolean.bedroom_airing_cold
- service: script.yandex_station_tts
data:
target: media_player.bedroom_station
text: '<speaker audio="dialogs-upload/31d7ae1e-6af0-40a0-8721-759585b9c331/4e413dc0-8b7c-4604-b7c4-01019abc3814.opus">
'
- conditions:
- condition: state
entity_id: input_select.home_mode
state: Night
sequence:
- service: light.turn_off
entity_id:
- group.living_room_lights
- group.workshop_lights
- light.bedroom_bed
- light.hallway_path
- light.wardrobe
- id: bedroom_bed_button_double_press
alias: 'Bedroom Bed Button: Double press'
trigger:
- trigger: device
domain: mqtt
device_id: 620c20157f0cbf8a0249f3f083a531ff
type: action
subtype: double
action:
- service: input_boolean.turn_on
entity_id: input_boolean.bedroom_airing_cold
- service: script.yandex_station_tts
data:
target: media_player.bedroom_station
text: '<speaker audio="dialogs-upload/31d7ae1e-6af0-40a0-8721-759585b9c331/4e413dc0-8b7c-4604-b7c4-01019abc3814.opus">
'
- id: bedroom_bed_button_hold
alias: 'Bedroom Bed Button: Hold'
trigger:
- trigger: device
domain: mqtt
device_id: 620c20157f0cbf8a0249f3f083a531ff
type: action
subtype: hold
action:
- service: script.yandex_station_tts
data:
target: media_player.kitchen_station
text: '<speaker audio="dialogs-upload/31d7ae1e-6af0-40a0-8721-759585b9c331/4e413dc0-8b7c-4604-b7c4-01019abc3814.opus">
'
- id: bedroom_light_switch_single_right
alias: 'Bedroom Light Switch: Single right'
trigger:
- trigger: device
domain: mqtt
device_id: c109a5cffc3ce01835ed7f55ce3b8cbc
type: action
subtype: single_right
action:
- if:
- condition: state
entity_id: input_select.home_mode
state: Night
then:
- service: light.turn_on
entity_id: light.bedroom_bed
data:
color_name: red
brightness_pct: 100
- service: light.turn_on
entity_id: light.bedroom_moon
data:
rgb_color:
- 255
- 10
- 10
brightness_pct: 100
else:
- if:
- condition: state
entity_id: light.bedroom_bed
state: 'on'
then:
- service: light.turn_off
entity_id: light.bedroom_bed
else:
- service: light.turn_on
entity_id: light.bedroom_bed
data:
rgb_color:
- 10
- 214
- 255
brightness_pct: 100
- id: bedroom_light_switch_double_right
alias: 'Bedroom Light Switch: Double right'
trigger:
- trigger: device
domain: mqtt
device_id: c109a5cffc3ce01835ed7f55ce3b8cbc
type: action
subtype: double_right
action:
- if:
- condition: state
entity_id: light.bedroom_moon
state: 'on'
then:
- service: light.turn_off
entity_id: light.bedroom_moon
else:
- service: light.turn_on
entity_id: light.bedroom_moon
data:
rgb_color:
- 10
- 214
- 255
brightness_pct: 100
- id: workshop_desk_button_turn_on
alias: 'Workshop Desk Button: Turn on'
mode: restart
trigger:
- trigger: device
domain: mqtt
device_id: b9daf61de1fcfea52aa888e18dcd46ee
type: action
subtype: 'on'
action:
- service: input_boolean.toggle
entity_id: input_boolean.workshop_airing_warm
- service: script.turn_on
entity_id: script.yandex_station_tts
data:
variables:
target: media_player.workshop_station
text: '<speaker audio="dialogs-upload/31d7ae1e-6af0-40a0-8721-759585b9c331/4e413dc0-8b7c-4604-b7c4-01019abc3814.opus">
'
- id: workshop_desk_button_turn_off
alias: 'Workshop Desk Button: Turn off'
mode: restart
trigger:
- trigger: device
domain: mqtt
device_id: b9daf61de1fcfea52aa888e18dcd46ee
type: action
subtype: 'off'
action:
- service: input_boolean.toggle
entity_id: input_boolean.workshop_airing_cold
- service: script.turn_on
entity_id: script.yandex_station_tts
data:
variables:
target: media_player.workshop_station
text: '<speaker audio="dialogs-upload/31d7ae1e-6af0-40a0-8721-759585b9c331/4e413dc0-8b7c-4604-b7c4-01019abc3814.opus">
'
- id: workshop_shades_close
alias: 'Workshop Shades: Close'
trigger:
- id: lock_unlocked
platform: state
entity_id: lock.front_door
from: locked
to: unlocked
- platform: state
entity_id: binary_sensor.evening_time
from: 'off'
to: 'on'
for:
minutes: 5
condition:
- condition: state
entity_id: binary_sensor.evening_time
state: 'on'
- condition: or
conditions:
- condition: trigger
id: lock_unlocked
- condition: state
entity_id: binary_sensor.anyone_home
state: 'on'
- condition: state
entity_id: binary_sensor.workshop_window
state: 'off'
- condition: state
entity_id: cover.workshop
attribute: current_position
state: 100
- condition: template
value_template: "{{ (now() - state_attr('automation.workshop_shades_close',\n\
\ 'last_triggered')|default(now() - timedelta(days=1),\
\ true)).total_seconds() > 8 * 60 * 60 }}\n"
action:
- service: cover.set_cover_position
entity_id: cover.workshop
data:
position: 20
- id: doorbell_ringing
alias: 'Doorbell: Ringing'
trigger:
- platform: state
entity_id: binary_sensor.doorbell_ringing
to: 'on'
action:
- service: notify.dextor
data:
message: 🔔 Динг-донг, кто-то звонит в дверь
- id: doorbell_mode_update
alias: 'Doorbell: Mode update'
trigger:
- platform: time_pattern
minutes: /10
- platform: state
entity_id: input_select.home_mode
action:
- choose:
- conditions:
- condition: state
entity_id: input_select.home_mode
state: Night
sequence:
- service: select.select_option
entity_id: select.doorbell_mode
data:
option: Night
default:
- service: select.select_option
entity_id: select.doorbell_mode
data:
option: Day
- id: doorbell_stop_playing
alias: 'Doorbell: Stop playing'
mode: single
max_exceeded: silent
trigger:
- platform: state
entity_id: binary_sensor.front_door
to: 'on'
condition:
- condition: state
entity_id: binary_sensor.doorbell_ringing
state: 'on'
action:
- service: esphome.doorbell_stop
- id: bedroom_humidifier_update
alias: 'Bedroom Humidifier: Update'
mode: queued
max: 4
max_exceeded: silent
trigger:
- platform: time_pattern
minutes: /7
- platform: state
entity_id:
- input_number.home_target_humidity
- input_select.home_mode
- input_boolean.scene_waking_up
- platform: state
entity_id: sensor.ups_status
from: On Battery
to: Online
for:
seconds: 30
condition:
- condition: template
value_template: '{{ states(''humidifier.bedroom_humidifier'') not in [''unavailable'',
''unknown''] }}
'
- condition: state
entity_id:
- input_boolean.climate_control
- input_boolean.bedroom_humidifier_control
state: 'on'
action:
- if:
- condition: state
entity_id: sensor.bedroom_humidifier_target_mode
state: 'off'
then:
- if:
- condition: state
entity_id: humidifier.bedroom_humidifier
state: 'on'
then:
- service: humidifier.turn_off
entity_id: humidifier.bedroom_humidifier
else:
- if:
- condition: state
entity_id: humidifier.bedroom_humidifier
state: 'off'
then:
- service: humidifier.turn_on
entity_id: humidifier.bedroom_humidifier
- wait_template: '{{ is_state(''humidifier.bedroom_humidifier'', ''on'') }}
'
timeout:
seconds: 15
continue_on_timeout: false
- if:
- condition: template
value_template: '{{ state_attr(''humidifier.bedroom_humidifier'', ''mode'')
!= states("sensor.bedroom_humidifier_target_mode") }}
'
then:
- service: humidifier.set_mode
entity_id: humidifier.bedroom_humidifier
data:
mode: '{{ states("sensor.bedroom_humidifier_target_mode") }}'
- if:
- condition: state
entity_id: input_select.home_mode
state: Night
- condition: state
entity_id: switch.bedroom_humidifier_screen
state: 'on'
then:
- delay:
seconds: 3
- service: switch.turn_off
entity_id: switch.bedroom_humidifier_screen
- if:
- or:
- condition: state
entity_id: input_select.home_mode
state:
- Day
- Vacation
- condition: state
entity_id: input_boolean.scene_waking_up
state: 'on'
- condition: state
entity_id: switch.bedroom_humidifier_screen
state: 'off'
then:
- delay:
seconds: 3
- service: switch.turn_on
entity_id: switch.bedroom_humidifier_screen
- if:
- condition: state
entity_id: switch.bedroom_humidifier_filter_drying
state: 'on'
then:
- delay:
seconds: 3
- service: switch.turn_off
entity_id: switch.bedroom_humidifier_filter_drying
- if:
- condition: state
entity_id: switch.bedroom_humidifier_sound
state: 'on'
then:
- delay:
seconds: 3
- service: switch.turn_off
entity_id: switch.bedroom_humidifier_sound
- if:
- condition: template
value_template: '{{ not is_state("switch.bedroom_humidifier_heater", states("binary_sensor.bedroom_humidifier_target_heater"))
}}'
then:
- delay:
seconds: 3
- service: switch.turn_{{ states("binary_sensor.bedroom_humidifier_target_heater")
}}
entity_id: switch.bedroom_humidifier_heater
- if:
- condition: state
entity_id: number.bedroom_humidifier_screen_brightness
state: '1'
then:
- delay:
seconds: 3
- service: number.set_value
entity_id: number.bedroom_humidifier_screen_brightness
data:
value: '0'
- id: living_room_humidifier_update
alias: 'Living Room Humidifier: Update'
mode: queued
max: 4
max_exceeded: silent
trigger:
- platform: time_pattern
minutes: /7
- platform: state
entity_id:
- binary_sensor.anyone_home
- binary_sensor.living_room_occupancy
- input_boolean.scene_movie
- input_boolean.scene_sleepy_mood
- input_boolean.scene_waking_up
- input_number.home_target_humidity
- input_select.home_mode
- platform: state
entity_id: media_player.tv
to:
- 'on'
- 'off'
condition:
- condition: template
value_template: '{{ states(''humidifier.living_room_humidifier'') not in [''unavailable'',
''unknown''] }}
'
- condition: state
entity_id:
- input_boolean.climate_control
- input_boolean.living_room_humidifier_control
state: 'on'
action:
- delay:
seconds: 1
- if:
- condition: state
entity_id: sensor.living_room_humidifier_target_mode
state: 'off'
then:
- if:
- condition: state
entity_id: humidifier.living_room_humidifier
state: 'on'
then:
- service: humidifier.turn_off
entity_id: humidifier.living_room_humidifier
else:
- if:
- condition: state
entity_id: humidifier.living_room_humidifier
state: 'off'
then:
- service: humidifier.turn_on
entity_id: humidifier.living_room_humidifier
- wait_template: '{{ is_state(''humidifier.living_room_humidifier'', ''on'')
}}
'
timeout:
seconds: 15
continue_on_timeout: false
- if:
- condition: template
value_template: '{{ state_attr(''humidifier.living_room_humidifier'', ''mode'')
!= states("sensor.living_room_humidifier_target_mode") }}
'
then:
- service: humidifier.set_mode
entity_id: humidifier.living_room_humidifier
data:
mode: '{{ states("sensor.living_room_humidifier_target_mode") }}'
- delay:
seconds: 1
- if:
- condition: state
entity_id: humidifier.living_room_humidifier
attribute: mode
state: manual
- condition: template
value_template: '{{ states(''number.living_room_humidifier_fan_speed'')|string
!= states("sensor.living_room_humidifier_target_fan_speed")|string }}
'
then:
- service: number.set_value
entity_id: number.living_room_humidifier_fan_speed
data:
value: '{{ states("sensor.living_room_humidifier_target_fan_speed") }}'
- if:
- condition: state
entity_id: humidifier.living_room_humidifier
attribute: mode
state: auto
- condition: template
value_template: '{{ state_attr(''humidifier.living_room_humidifier'', ''humidity'')|string
!= states("sensor.living_room_humidifier_target_humidity") }}
'
then:
- service: humidifier.set_humidity
entity_id: humidifier.living_room_humidifier
data:
humidity: '{{ states("sensor.living_room_humidifier_target_humidity") }}'
- id: living_room_humidifier_water_leak
alias: 'Living Room Humidifier: Water Leak'
trigger:
- platform: state
entity_id:
- binary_sensor.living_room_humidifier_water_leak
- binary_sensor.living_room_humidifier_water_tank_leak
from: 'off'
to: 'on'
- platform: state
entity_id:
- binary_sensor.living_room_humidifier_water_leak
- binary_sensor.living_room_humidifier_water_tank_leak
from: 'off'
to: 'on'
for:
minutes: 5
action:
- if:
- condition: template
value_template: '{{ trigger.entity_id == ''binary_sensor.living_room_humidifier_water_leak''
}}
'
then:
- action: switch.turn_off
entity_id: switch.living_room_humidifier_socket
- service: notify.mobile_app_misaka
data:
message: '🚨 Обнаружена протечка {{ state_attr(trigger.from_state.entity_id,
''alert_text'')|default('''', True) }}
'
data:
push:
sound:
name: sms-received2.caf
critical: 1
volume: 1
continue_on_error: true
- service: script.yandex_station_tts
data:
target: all
type: alert
text: 'Обнаружена протечка {{ state_attr(trigger.from_state.entity_id, ''alert_text'')|default('''',
True) }}. Повторяю. Обнаружена протечка!
'
- service: notify.dextor
data:
message: '🚨 Обнаружена протечка {{ state_attr(trigger.from_state.entity_id,
''alert_text'')|default('''', True) }}
'
continue_on_error: true
- id: living_room_humidifier_water_tank_auto_refill_update
alias: 'Living Room Humidifier Water Tank: Auto Refill Update'
mode: queued
trigger:
- platform: time_pattern
minutes: /7
- platform: state
entity_id:
- input_select.home_mode
- binary_sensor.anyone_home
- input_boolean.scene_waking_up
- input_boolean.living_room_humidifier_control
conditions:
- condition: state
entity_id: switch.living_room_humidifier_water_tank_auto_refill
state:
- 'on'
- 'off'
actions:
- if:
- or:
- condition: state
entity_id: input_boolean.scene_waking_up
state: 'on'
- condition: state
entity_id: input_select.home_mode
state:
- Day
- Night
- condition: state
entity_id:
- binary_sensor.anyone_home
- input_boolean.living_room_humidifier_control
state: 'on'
then:
- if:
- condition: state
entity_id: switch.living_room_humidifier_water_tank_auto_refill
state: 'off'
then:
- action: switch.turn_on
entity_id: switch.living_room_humidifier_water_tank_auto_refill
- if:
- condition: state
entity_id: switch.living_room_humidifier_water_tank_maintenance
state: 'off'
then:
- action: button.press
entity_id: button.living_room_humidifier_water_tank_refill
else:
- action: switch.turn_off
entity_id: switch.living_room_humidifier_water_tank_auto_refill
- id: living_room_humidifier_water_tank_problem_alert
alias: 'Living Room Humidifier Water Tank: Problem alert'
trigger:
- platform: state
entity_id: binary_sensor.living_room_humidifier_water_tank_problem
to: 'on'
actions:
- delay:
seconds: 1
- service: notify.dextor
data:
message: '🌊 Что-то не так с доливом в увлажнитель: {{ states(''sensor.living_room_humidifier_water_tank_state'')
}}
'
- id: workshop_humidifier_update
alias: 'Workshop Humidifier: Update'
mode: queued
max: 4
max_exceeded: silent
trigger:
- platform: time_pattern
minutes: /7
- platform: state
entity_id:
- input_number.home_target_humidity
- input_select.home_mode
condition:
- condition: template
value_template: '{{ states(''humidifier.workshop_humidifier'') not in [''unavailable'',
''unknown''] }}
'
- condition: state
entity_id:
- input_boolean.climate_control
- input_boolean.workshop_humidifier_control
state: 'on'
action:
- if:
- condition: state
entity_id: sensor.workshop_humidifier_target_mode
state: 'off'
then:
- if:
- condition: state
entity_id: humidifier.workshop_humidifier
state: 'on'
then:
- service: humidifier.turn_off
entity_id: humidifier.workshop_humidifier
else:
- if:
- condition: state
entity_id: humidifier.workshop_humidifier
state: 'off'
then:
- service: humidifier.turn_on
entity_id: humidifier.workshop_humidifier
- wait_template: '{{ is_state(''humidifier.workshop_humidifier'', ''on'') }}
'
timeout:
seconds: 15
continue_on_timeout: false
- if:
- condition: template
value_template: '{{ state_attr(''humidifier.workshop_humidifier'', ''mode'')
!= states("sensor.workshop_humidifier_target_mode") }}
'
then:
- service: humidifier.set_mode
entity_id: humidifier.workshop_humidifier
data:
mode: '{{ states("sensor.workshop_humidifier_target_mode") }}'
- id: workshop_humidifier_x_update
alias: 'Workshop Humidifier X: Update'
mode: queued
max: 4
max_exceeded: silent
trigger:
- platform: time_pattern
minutes: /7
- platform: state
entity_id:
- input_number.home_target_humidity
- input_select.home_mode
condition:
- condition: template
value_template: '{{ states(''humidifier.workshop_humidifier_x'') not in [''unavailable'',
''unknown''] }}
'
- condition: state
entity_id:
- input_boolean.climate_control
- input_boolean.workshop_humidifier_control
state: 'on'
action:
- if:
- condition: state
entity_id: sensor.workshop_humidifier_target_mode
state: 'off'
then:
- if:
- condition: state
entity_id: humidifier.workshop_humidifier_x
state: 'on'
then:
- service: humidifier.turn_off
entity_id: humidifier.workshop_humidifier_x
else:
- if:
- condition: state
entity_id: humidifier.workshop_humidifier_x
state: 'off'
then:
- service: humidifier.turn_on
entity_id: humidifier.workshop_humidifier_x
- wait_template: '{{ is_state(''humidifier.workshop_humidifier_x'', ''on'')
}}
'
timeout:
seconds: 15
continue_on_timeout: false
- if:
- condition: template
value_template: '{{ state_attr(''humidifier.workshop_humidifier_x'', ''mode'')
!= states("sensor.workshop_humidifier_target_mode") }}
'
then:
- service: humidifier.set_mode
entity_id: humidifier.workshop_humidifier_x
data:
mode: '{{ states("sensor.workshop_humidifier_target_mode") }}'
- id: bedroom_intake_fan_update
alias: 'Bedroom Intake Fan: Update'
mode: single
max_exceeded: silent
trigger:
- platform: time_pattern
minutes: /5
- platform: state
entity_id:
- binary_sensor.bedroom_occupancy
- input_select.home_mode
- input_select.washing_machine_status
- input_boolean.bedroom_intake_fan_control
- id: room_airing
platform: state
entity_id:
- input_boolean.bedroom_airing_warm
- input_boolean.bedroom_airing_cold
to:
- 'on'
- 'off'
- id: recirculation
platform: state
entity_id: switch.bedroom_intake_fan_recirculation
to:
- 'on'
- 'off'
- platform: state
entity_id: sensor.ups_status
from: On Battery
to: Online
for:
seconds: 30
condition:
- condition: state
entity_id: climate.bedroom_intake_fan
state:
- heat
- fan_only
- 'off'
- condition: state
entity_id:
- input_boolean.climate_control
- input_boolean.bedroom_intake_fan_control
state: 'on'
action:
- if:
- condition: trigger
id: recirculation
then:
- delay:
seconds: 20
else:
- delay:
seconds: 1
- action: script.intake_fan_update
data:
area: bedroom
- id: bedroom_airing_swap_modes
alias: 'Bedroom Airing: Swap modes'
trigger:
- platform: state
entity_id:
- input_boolean.bedroom_airing_warm
- input_boolean.bedroom_airing_cold
to: 'on'
action:
- service: input_boolean.turn_off
data_template:
entity_id: "{%- if trigger.from_state.entity_id == 'input_boolean.bedroom_airing_warm'\
\ -%}\n input_boolean.bedroom_airing_cold\n{%- else -%}\n input_boolean.bedroom_airing_warm\n\
{%- endif -%}\n"
- id: bedroom_airing_auto_turn_off
alias: 'Bedroom Airing: Auto turn off'
trigger:
- platform: state
entity_id:
- input_boolean.bedroom_airing_warm
- input_boolean.bedroom_airing_cold
to: 'on'
for:
minutes: 40
action:
- service: input_boolean.turn_off
data_template:
entity_id: '{{ trigger.from_state.entity_id }}
'
- id: living_room_intake_fan_restore_circulation
alias: 'Living Room Intake Fan: Restore circulation'
trigger:
- platform: state
entity_id: switch.living_room_intake_fan_recirculation
to: 'on'
for:
minutes: 30
action:
- service: switch.turn_off
entity_id: switch.living_room_intake_fan_recirculation
- id: living_room_intake_fan_bad_air
alias: 'Living Room Intake Fan: Bad air'
mode: restart
trigger:
- platform: event
event_type: yandex_intent
event_data:
text: Воняет
- platform: state
entity_id: input_boolean.living_room_airing_bad_air
to: 'on'
action:
- service: input_boolean.turn_off
entity_id: input_boolean.living_room_airing_bad_air
- service: switch.turn_on
entity_id: switch.living_room_intake_fan_recirculation
- service: script.turn_on
entity_id: script.yandex_station_tts
data:
variables:
target: '{{ trigger.event.data.get(''entity_id'', ''last'') if ''event'' in
trigger else ''media_player.living_room_station'' }}
'
text: '{{ [''Бееее, закрываю приток'', ''Опять курево, отвратительно'', ''Закрываю
приток'', ''Выключаю приток'']|random }}
'
- delay:
minutes: 5
- service: switch.turn_off
entity_id: switch.living_room_intake_fan_recirculation
- id: living_room_intake_fan_update
alias: 'Living Room Intake Fan: Update'
mode: single
max_exceeded: silent
trigger:
- platform: time_pattern
minutes: /5
- platform: state
entity_id:
- input_select.home_mode
- input_boolean.scene_sleepy_mood
- input_boolean.living_room_intake_fan_control
- switch.ironing_board_socket
- id: room_airing
platform: state
entity_id:
- input_boolean.living_room_airing_warm
- input_boolean.living_room_airing_cold
to:
- 'on'
- 'off'
- id: recirculation
platform: state
entity_id: switch.living_room_intake_fan_recirculation
to:
- 'on'
- 'off'
- platform: state
entity_id: sensor.ups_status
from: On Battery
to: Online
for:
seconds: 45
condition:
- condition: state
entity_id: climate.living_room_intake_fan
state:
- heat
- fan_only
- 'off'
- condition: state
entity_id:
- input_boolean.climate_control
- input_boolean.living_room_intake_fan_control
state: 'on'
action:
- if:
- condition: trigger
id: recirculation
then:
- delay:
seconds: 20
else:
- delay:
seconds: 1
- action: script.intake_fan_update
data:
area: living_room
- id: living_room_airing_swap_modes
alias: 'Living Room Airing: Swap modes'
trigger:
- platform: state
entity_id:
- input_boolean.living_room_airing_warm
- input_boolean.living_room_airing_cold
to: 'on'
action:
- service: input_boolean.turn_off
data_template:
entity_id: "{%- if trigger.from_state.entity_id == 'input_boolean.living_room_airing_warm'\
\ -%}\n input_boolean.living_room_airing_cold\n{%- else -%}\n input_boolean.living_room_airing_warm\n\
{%- endif -%}\n"
- id: living_room_airing_auto_turn_off
alias: 'Living Room Airing: Auto turn off'
trigger:
- platform: state
entity_id:
- input_boolean.living_room_airing_warm
- input_boolean.living_room_airing_cold
to: 'on'
for:
minutes: 25
action:
- service: input_boolean.turn_off
data_template:
entity_id: '{{ trigger.from_state.entity_id }}
'
- id: workshop_intake_fan_update
alias: 'Workshop Intake Fan: Update'
mode: single
max_exceeded: silent
trigger:
- platform: time_pattern
minutes: /5
- platform: state
entity_id:
- input_select.home_mode
- input_select.washing_machine_status
- input_boolean.scene_sleepy_mood
- input_boolean.workshop_intake_fan_control
- binary_sensor.workshop_occupancy
- id: room_airing
platform: state
entity_id:
- input_boolean.workshop_airing_warm
- input_boolean.workshop_airing_cold
to:
- 'on'
- 'off'
- id: recirculation
platform: state
entity_id: switch.workshop_intake_fan_recirculation
to:
- 'on'
- 'off'
- platform: state
entity_id: sensor.ups_status
from: On Battery
to: Online
for:
seconds: 60
condition:
- condition: state
entity_id: climate.workshop_intake_fan
state:
- heat
- fan_only
- 'off'
- condition: state
entity_id:
- input_boolean.climate_control
- input_boolean.workshop_intake_fan_control
state: 'on'
action:
- if:
- condition: trigger
id: recirculation
then:
- delay:
seconds: 20
else:
- delay:
seconds: 1
- action: script.intake_fan_update
data:
area: workshop
- id: workshop_airing_swap_modes
alias: 'Workshop Airing: Swap modes'
trigger:
- platform: state
entity_id:
- input_boolean.workshop_airing_warm
- input_boolean.workshop_airing_cold
to: 'on'
action:
- service: input_boolean.turn_off
data_template:
entity_id: "{%- if trigger.from_state.entity_id == 'input_boolean.workshop_airing_warm'\
\ -%}\n input_boolean.workshop_airing_cold\n{%- else -%}\n input_boolean.workshop_airing_warm\n\
{%- endif -%}\n"
- id: workshop_airing_auto_turn_off
alias: 'Workshop Airing: Auto turn off'
trigger:
- platform: state
entity_id:
- input_boolean.workshop_airing_warm
- input_boolean.workshop_airing_cold
to: 'on'
for:
minutes: 35
action:
- service: input_boolean.turn_off
data_template:
entity_id: '{{ trigger.from_state.entity_id }}
'
- id: kettle_auto_turn_off
alias: 'Kettle: Auto turn off'
trigger:
- platform: state
entity_id: climate.kettle
to: heat
for:
minutes: 7
action:
- service: climate.turn_off
entity_id: climate.kettle
- id: kettle_boil_done_alert
alias: 'Kettle: Boil done alert'
trigger:
- platform: state
entity_id: climate.kettle
from: auto
to: 'off'
condition:
- condition: state
entity_id: input_select.home_mode
state: Day
- condition: numeric_state
entity_id: climate.kettle
attribute: current_temperature
above: 93
action:
- service: script.yandex_station_tts
data:
target:
- media_player.living_room_station
- media_player.workshop_station
type: attention
text: "{{ states.sensor.alert_greeting.state }} {{ [\n 'Чайник вскипел, приятного\
\ чаяпития',\n 'Время пить чай!',\n 'Пойдём пить чай',\n 'Давай заварим\
\ чай!',\n 'Горячая вода готова, заваривай лапшу',\n ]|random }}\n"
- id: kettle_heat_done_alert
alias: 'Kettle: Heat done alert'
trigger:
- platform: state
entity_id: climate.kettle
from: 'off'
to: heat
condition:
- condition: state
entity_id: input_select.home_mode
state: Day
action:
- wait_template: '{{ state_attr(''climate.kettle'', ''current_temperature'')|int(0)
> (state_attr(''climate.kettle'', ''temperature'')|int(0) - 4) }}
'
timeout:
minutes: 7
continue_on_timeout: false
- condition: state
entity_id: climate.kettle
state: heat
- service: script.yandex_station_tts
data:
target:
- media_player.living_room_station
- media_player.workshop_station
type: attention
text: "{{ states.sensor.alert_greeting.state }} {{ [\n 'Водичка нагрелась,\
\ приятного чаяпития',\n 'Время пить чай!',\n 'Пойдём пить чай',\n \
\ 'Давай заварим чай!'\n ]|random }}\n"
- id: kettle_stuck
alias: Kettle Stuck
trigger:
- trigger: time_pattern
minutes: 3
condition:
- condition: state
entity_id: switch.kettle_power
state: 'off'
- condition: template
value_template: '{{ (now() - states.sensor.kettle_uptime.last_changed).total_seconds()
> 3 * 60 }}
'
action:
- action: button.press
entity_id: button.kettle_restart
- id: bathroom_light_turn_on
alias: 'Bathroom Light: Turn on'
trigger:
- platform: state
entity_id: binary_sensor.bathroom_motion
to: 'on'
condition:
- condition: state
entity_id: input_boolean.light_control
state: 'on'
- condition: state
entity_id: group.bathroom_lights
state: 'off'
action:
- choose:
- conditions:
- condition: state
entity_id: binary_sensor.dim_light
state: 'on'
sequence:
- service: light.turn_on
entity_id: light.bathroom_main
data:
brightness_pct: 17
- conditions:
- condition: state
entity_id: input_select.home_mode
state:
- Day
- Vacation
sequence:
- service: light.turn_on
entity_id: light.bathroom_main
data:
brightness_pct: 100
- id: bathroom_light_turn_on_night_fallback
alias: 'Bathroom Light: Turn on (night fallback)'
trigger:
- platform: state
entity_id:
- binary_sensor.bathroom_motion
- binary_sensor.hallway_motion
to: 'on'
condition:
- condition: state
entity_id: input_boolean.light_control
state: 'on'
- condition: state
entity_id: input_select.home_mode
state: Night
- condition: state
entity_id: input_boolean.scene_waking_up
state: 'off'
- condition: state
entity_id: group.bathroom_path_lights
state: unavailable
action:
- service: light.turn_on
entity_id: light.bathroom_main
data:
brightness_pct: 7
- id: bathroom_light_turn_off
alias: 'Bathroom Light: Turn off'
trigger:
- platform: state
entity_id: binary_sensor.bathroom_any_occupancy
from: 'on'
to: 'off'
for:
minutes: 2
- platform: state
entity_id: binary_sensor.bathroom_any_occupancy
from: 'on'
to: 'off'
for:
hours: 1
condition:
- condition: state
entity_id:
- input_boolean.light_control
- input_boolean.bathroom_light_control
- group.bathroom_lights
state: 'on'
action:
- service: light.turn_off
entity_id: group.bathroom_lights
data:
transition: 6
- id: bathroom_light_control_turn_on
alias: 'Bathroom Light Control: Turn on'
trigger:
- platform: state
entity_id: group.bathroom_lights
to: 'off'
condition:
- condition: state
entity_id: input_boolean.bathroom_light_control
state: 'off'
action:
- service: input_boolean.turn_on
entity_id: input_boolean.bathroom_light_control
- id: bathroom_light_control_turn_off
alias: 'Bathroom Light Control: Turn off'
trigger:
- platform: event
event_type: yandex_intent
event_data:
text: Не выключай свет в ванной
condition:
- condition: state
entity_id: input_boolean.bathroom_light_control
state: 'on'
action:
- service: input_boolean.turn_off
entity_id: input_boolean.bathroom_light_control
- id: bathroom_bathtub_light_turn_on
alias: 'Bathroom Bathtub Light: Turn on'
trigger:
- platform: state
entity_id: binary_sensor.bathroom_bathtub_occupancy
to: 'on'
condition:
- condition: state
entity_id: input_boolean.light_control
state: 'on'
- condition: state
entity_id: input_select.home_mode
state:
- Day
- Vacation
- condition: state
entity_id:
- binary_sensor.dim_light
- light.bathroom_bathtub
state: 'off'
action:
- service: light.turn_on
entity_id: light.bathroom_bathtub
- id: bedroom_light_turn_on
alias: 'Bedroom Light: Turn on'
trigger:
- platform: state
entity_id: binary_sensor.bedroom_motion
to: 'on'
condition:
- condition: state
entity_id: input_boolean.light_control
state: 'on'
- condition: state
entity_id: input_select.home_mode
state: Day
- condition: or
conditions:
- and:
- condition: time
after: '13:00:00'
before: 04:00:00
- condition: numeric_state
entity_id: sensor.illuminance_north_side
below: 20
- condition: state
entity_id: cover.bedroom
state: closed
- condition: state
entity_id:
- input_boolean.scene_sleepy_mood
- binary_sensor.bedroom_bed_occupancy
- group.bedroom_lights
state: 'off'
action:
- service: light.turn_on
entity_id:
- light.bedroom_bed
- light.bedroom_moon
data:
rgb_color:
- 10
- 214
- 255
brightness_pct: 100
- service: light.turn_on
entity_id:
- light.bedroom_cat
- light.bedroom_string
data:
color_temp_kelvin: 2700
brightness_pct: 100
- id: bedroom_bed_light_turn_on_night
alias: 'Bedroom Bed Light: Turn on (night)'
trigger:
- platform: state
entity_id: binary_sensor.bedroom_motion
to: 'on'
condition:
- condition: state
entity_id: input_boolean.light_control
state: 'on'
- condition: state
entity_id: input_select.home_mode
state: Night
- condition: state
entity_id: light.bedroom_bed
state: 'off'
action:
- service: light.turn_on
entity_id: light.bedroom_bed
data:
color_name: red
brightness_pct: 30
- id: bedroom_main_light_turn_off
alias: 'Bedroom Main Light: Turn off'
trigger:
- platform: state
entity_id: binary_sensor.bedroom_any_occupancy
to: 'off'
for:
minutes: 3
condition:
- condition: state
entity_id:
- input_boolean.light_control
- light.bedroom_main
state: 'on'
- not:
- and:
- condition: state
entity_id: input_select.ironing_board_room
state: Bedroom
- condition: state
entity_id: switch.ironing_board_socket
state: 'on'
- condition: state
entity_id: input_boolean.scene_sleepy_mood
state: 'off'
action:
- service: light.turn_off
entity_id: light.bedroom_main
- id: bedroom_bed_light_turn_off
alias: 'Bedroom Bed Light: Turn off'
trigger:
- platform: state
entity_id: light.bedroom_bed
to: 'on'
for:
hours: 1
- platform: state
entity_id: input_select.home_mode
from: Night
- id: motion
platform: state
entity_id: binary_sensor.bedroom_motion
from: 'on'
to: 'off'
for:
minutes: 1
- platform: state
entity_id: binary_sensor.bedroom_bed_full_occupancy
from: 'off'
to: 'on'
for:
seconds: 30
condition:
- condition: state
entity_id:
- input_boolean.light_control
- light.bedroom_bed
state: 'on'
- condition: state
entity_id: input_boolean.scene_sleepy_mood
state: 'off'
action:
- if:
- condition: trigger
id: motion
- condition: state
entity_id: input_select.home_mode
state:
- Day
- Vacation
then:
stop: null
- service: light.turn_off
entity_id: light.bedroom_bed
- id: bedroom_aux_light_turn_off
alias: 'Bedroom Aux Light: Turn off'
trigger:
- platform: state
entity_id: binary_sensor.bedroom_any_occupancy
to: 'off'
for:
seconds: 15
- platform: state
entity_id: light.bedroom_main
from: 'off'
to: 'on'
condition:
- condition: state
entity_id: input_boolean.light_control
state: 'on'
- condition: state
entity_id:
- light.bedroom_moon
- light.bedroom_bed
- light.bedroom_cat
- light.bedroom_string
state: 'on'
match: any
- condition: state
entity_id: input_boolean.scene_sleepy_mood
state: 'off'
action:
- service: light.turn_off
entity_id:
- light.bedroom_moon
- light.bedroom_bed
- light.bedroom_cat
- light.bedroom_string
- id: bedroom_moon_light_charger_turn_on
alias: 'Bedroom Moon Light Charger: Turn on'
trigger:
- platform: time
at: '18:00'
action:
- service: switch.turn_on
entity_id: switch.bedroom_moon_light_charger
- id: bedroom_moon_light_charger_turn_off
alias: 'Bedroom Moon Light Charger: Turn off'
trigger:
- platform: state
entity_id: switch.bedroom_moon_light_charger
to: 'on'
for:
hours: 1
minutes: 30
action:
- service: switch.turn_off
entity_id: switch.bedroom_moon_light_charger
- id: kitchen_light_turn_on_full
alias: 'Kitchen Light: Turn on (full)'
trigger:
- platform: state
entity_id: binary_sensor.kitchen_motion
to: 'on'
condition:
- condition: state
entity_id: input_boolean.light_control
state: 'on'
- condition: state
entity_id:
- light.kitchen_main
- binary_sensor.dim_light
- input_boolean.scene_sleepy_mood
state: 'off'
- condition: state
entity_id: input_select.home_mode
state:
- Day
- Vacation
- or:
- condition: state
entity_id: light.kitchen_mood
state: 'off'
- condition: template
value_template: '{{ state_attr(''light.kitchen_worktop'', ''brightness'')|int(0)
in (0, 50) }}
'
action:
- service: light.turn_on
entity_id: light.kitchen_worktop
data:
brightness: 255
- service: light.turn_on
entity_id: light.kitchen_mood
- id: kitchen_light_turn_on_dimmed
alias: 'Kitchen Light: Turn on (dimmed)'
trigger:
- platform: state
entity_id: binary_sensor.kitchen_motion
to: 'on'
condition:
- condition: state
entity_id:
- input_boolean.light_control
- binary_sensor.dim_light
state: 'on'
- condition: state
entity_id: light.kitchen_main
state: 'off'
- condition: state
entity_id: input_select.home_mode
state:
- Day
- Vacation
- condition: state
entity_id: input_boolean.scene_sleepy_mood
state: 'off'
- or:
- condition: state
entity_id: light.kitchen_mood
state: 'off'
- condition: template
value_template: '{{ state_attr(''light.kitchen_worktop'', ''brightness'')|int(0)
in (0, 100) }}
'
action:
- service: light.turn_on
entity_id: light.kitchen_worktop
data:
brightness: 100
- service: light.turn_on
entity_id: light.kitchen_mood
- id: kitchen_light_dim_worktop
alias: 'Kitchen Light: Dim worktop'
trigger:
- platform: state
entity_id: binary_sensor.kitchen_occupancy
from: 'on'
to: 'off'
for:
minutes: 4
condition:
- condition: state
entity_id: input_boolean.light_control
state: 'on'
- or:
- condition: state
entity_id: light.kitchen_main
state: 'on'
- condition: template
value_template: '{{ state_attr(''light.kitchen_worktop'', ''brightness'')|int(0)
> 250 }}
'
action:
- service: light.turn_on
entity_id: light.kitchen_worktop
data:
brightness: 50
- service: light.turn_off
entity_id: light.kitchen_main
- id: kitchen_light_turn_off
alias: 'Kitchen Light: Turn off'
trigger:
- platform: state
entity_id: binary_sensor.kitchen_occupancy
from: 'on'
to: 'off'
for:
minutes: 10
- platform: state
entity_id: binary_sensor.kitchen_motion
from: 'on'
to: 'off'
for:
hours: 2
condition:
- condition: state
entity_id:
- input_boolean.light_control
- group.kitchen_lights
state: 'on'
- condition: state
entity_id: input_boolean.scene_sleepy_mood
state: 'off'
action:
- service: light.turn_off
entity_id: group.kitchen_lights
- id: living_room_light_turn_on
alias: 'Living Room Light: Turn on'
trigger:
- platform: state
entity_id: binary_sensor.living_room_motion
to: 'on'
condition:
- condition: state
entity_id: input_boolean.light_control
state: 'on'
- condition: state
entity_id: input_select.home_mode
state:
- Day
- Vacation
- condition: state
entity_id: input_boolean.scene_sleepy_mood
state: 'off'
- condition: or
conditions:
- condition: numeric_state
entity_id: sensor.illuminance_south_side
below: 500
- condition: state
entity_id: cover.living_room
state: closed
- condition: state
entity_id: binary_sensor.winter_bright_light
state: 'on'
- condition: state
entity_id:
- group.living_room_lights
- binary_sensor.dim_light
state: 'off'
action:
- service: light.turn_on
entity_id: light.living_room_tv
data:
brightness_pct: 45
- service: light.turn_on
entity_id: light.living_room_backlight
data:
brightness_pct: 23
color_temp_kelvin: 3400
- if:
- condition: state
entity_id: binary_sensor.winter_bright_light
state: 'on'
then:
- action: light.turn_on
entity_id: light.living_room_main
- id: living_room_light_turn_off
alias: 'Living Room Light: Turn off'
trigger:
- platform: state
entity_id: binary_sensor.living_room_occupancy
from: 'on'
to: 'off'
for:
minutes: 20
- platform: state
entity_id: binary_sensor.living_room_motion
from: 'on'
to: 'off'
for:
hours: 2
condition:
- condition: state
entity_id:
- input_boolean.light_control
- group.living_room_lights
state: 'on'
action:
- service: light.turn_off
entity_id: group.living_room_lights
- id: living_room_main_light_turn_on
alias: 'Living Room Main Light: Turn on'
trigger:
- platform: state
entity_id: input_boolean.scene_meal
from: 'on'
to: 'off'
condition:
- condition: state
entity_id:
- input_boolean.light_control
- binary_sensor.winter_bright_light
state: 'on'
- condition: state
entity_id: input_select.home_mode
state:
- Day
- Vacation
- condition: state
entity_id:
- light.living_room_main
- binary_sensor.dim_light
state: 'off'
action:
- action: light.turn_on
entity_id: light.living_room_main
- id: workshop_main_light_state_update
alias: 'Workshop Main Light: State update'
description: Включает правую ленту при включении левой, жене лень нажимать две кнопки
mode: queued
trigger:
- platform: state
entity_id: light.workshop_main_1_1
from:
- 'on'
- 'off'
to:
- 'on'
- 'off'
action:
- delay:
milliseconds: 500
- condition: template
value_template: '{{ not is_state(''light.workshop_main_2_1'', trigger.to_state.state)
}}
'
- if:
- condition: template
value_template: '{{ trigger.to_state.state == ''on'' }}
'
then:
- service: light.turn_on
entity_id:
- light.workshop_main_2_1
- light.workshop_main_2_2
data:
transition: 2
brightness_pct: 100
else:
- service: light.turn_off
entity_id:
- light.workshop_main_2_1
- light.workshop_main_2_2
- id: workshop_main_light_turn_on
alias: 'Workshop Main Light: Turn on'
max_exceeded: silent
trigger:
- platform: state
entity_id: binary_sensor.workshop_door
from: 'off'
to: 'on'
- platform: state
entity_id: binary_sensor.workshop_motion
from: 'off'
to: 'on'
condition:
- condition: state
entity_id: input_boolean.light_control
state: 'on'
- condition: state
entity_id: light.workshop_main
state: 'off'
action:
- if:
- condition: or
conditions:
- condition: state
entity_id: binary_sensor.dim_light
state: 'on'
- condition: state
entity_id: input_select.home_mode
state: Night
then:
- service: light.turn_on
entity_id:
- light.workshop_main_2_1
- light.workshop_main_2_2
data:
brightness_pct: 1
transition: 0
else:
- service: light.turn_on
entity_id: light.workshop_main
data:
brightness_pct: 100
- id: workshop_main_light_turn_off
alias: 'Workshop Main Light: Turn off'
trigger:
- platform: state
entity_id: binary_sensor.workshop_occupancy
from: 'on'
to: 'off'
for:
minutes: 10
- platform: state
entity_id: binary_sensor.workshop_occupancy
from: 'on'
to: 'off'
for:
minutes: 15
condition:
- condition: state
entity_id: input_boolean.light_control
state: 'on'
- condition: state
entity_id: binary_sensor.workshop_motion
state: 'off'
- condition: state
entity_id: light.workshop_main
state: 'on'
action:
- service: light.turn_off
entity_id: light.workshop_main
data:
transition: 10
- id: workshop_main_light_turn_off_door
alias: 'Workshop Main Light: Turn off (door)'
trigger:
- id: door
platform: state
entity_id: binary_sensor.workshop_door
from: 'on'
to: 'off'
condition:
- condition: state
entity_id: input_boolean.light_control
state: 'on'
- condition: state
entity_id: light.workshop_main
state: 'on'
action:
- if:
- condition: numeric_state
entity_id: light.workshop_main
attribute: brightness
below: 40
then:
- service: light.turn_off
entity_id: light.workshop_main
data:
transition: 0
else:
- service: light.turn_off
entity_id: light.workshop_main
data:
transition: 4
- id: workshop_light_control_turn_on
alias: 'Workshop Light Control: Turn on'
trigger:
- platform: state
entity_id: light.workshop_main
to: 'off'
condition:
- condition: state
entity_id: input_boolean.workshop_light_control
state: 'off'
action:
- service: input_boolean.turn_on
entity_id: input_boolean.workshop_light_control
- id: workshop_light_control_turn_off
alias: 'Workshop Light Control: Turn off'
trigger:
- platform: event
event_type: yandex_intent
event_data:
text: Не выключай свет в мастерской
action:
- service: input_boolean.turn_off
entity_id: input_boolean.workshop_light_control
- id: avr_turn_on
alias: 'AVR: Turn on'
mode: restart
trigger:
- trigger: state
entity_id: media_layer.tv
from: 'off'
to: 'on'
for:
seconds: 20
- trigger: state
entity_id: media_layer.tv
from: 'off'
to: 'on'
for:
seconds: 45
condition:
- condition: state
entity_id: switch.avr_power
state: 'off'
action:
- action: switch.turn_on
entity_id: switch.avr_power
- id: avr_turn_off_no_tv
alias: 'AVR: Turn off (no TV)'
mode: restart
trigger:
- platform: state
entity_id: switch.avr_power
to: 'on'
action:
- delay:
minutes: 1
- condition: state
entity_id: media_player.tv
state: 'off'
- condition: state
entity_id: switch.avr_power
state: 'on'
- action: switch.turn_off
entity_id: switch.avr_power
- id: avr_fix_sound
alias: 'AVR: Fix sound'
trigger:
- trigger: event
event_type: yandex_intent
event_data:
text: Почини звук
action:
- if:
- condition: state
entity_id: switch.avr_power
state: 'off'
then:
- action: switch.turn_on
entity_id: switch.avr_power
else:
- action: switch.toggle
entity_id: switch.avr_power
- delay:
seconds: 5
- action: switch.toggle
entity_id: switch.avr_power
- id: bathroom_bathtub_region_enter
alias: 'Bathroom Bath: Region enter'
trigger:
- platform: device
domain: mqtt
device_id: dfc039d7f269372836ab2b62aaf4401b
type: action
subtype: region_1_enter
discovery_id: 0x54ef441000585ebc action_region_1_enter
action:
- service: timer.cancel
entity_id: timer.bathroom_bathtub_region_free
- service: input_boolean.turn_on
entity_id: input_boolean.bathroom_bathtub_occupancy
- id: bathroom_bathtub_region_leave
alias: 'Bathroom Bath: Region leave'
trigger:
- platform: device
domain: mqtt
device_id: dfc039d7f269372836ab2b62aaf4401b
type: action
subtype: region_1_leave
discovery_id: 0x54ef441000585ebc action_region_1_leave
action:
- service: timer.start
entity_id: timer.bathroom_bathtub_region_free
- id: bathroom_bathtub_region_free
alias: 'Bathroom Bath: Region free'
trigger:
- platform: event
event_type: timer.finished
event_data:
entity_id: timer.bathroom_bathtub_region_free
action:
- service: input_boolean.turn_off
entity_id: input_boolean.bathroom_bathtub_occupancy
- id: kitchen_applicances_status_update
alias: Kichen Applicances Status Update
trigger:
- platform: state
entity_id: sensor.kitchen_power_supply_power
condition:
- condition: template
value_template: '{{ trigger.to_state.state|int(0) >= 700 }}
'
action:
- service: timer.start
entity_id: timer.kitchen_appliances_running
- id: appliance_left_on_alert
alias: Appliance Left On Alert
trigger:
- platform: state
entity_id: binary_sensor.kitchen_occupancy
from: 'on'
to: 'off'
for:
minutes: 20
- platform: state
entity_id: binary_sensor.anyone_home
to: 'off'
- platform: state
entity_id: input_boolean.scene_meal
to: 'on'
for:
minutes: 3
condition:
- condition: state
entity_id:
- binary_sensor.stove
- binary_sensor.kitchen_appliances
match: any
state: 'on'
for:
minutes: 5
action:
- service: notify.dextor
data:
message: '⚡️ Похоже кто-то забыл выключить плиту или печку
'
- id: certificate_renew
alias: Certificate renew
trigger:
- platform: time
at: '10:00:00'
action:
- service: hassio.addon_start
data:
addon: core_letsencrypt
- id: humidifiers_maintenance_alert
alias: 'Humidifiers: Maintenance Alert'
trigger:
- platform: time_pattern
minutes: /10
condition:
- condition: state
entity_id: binary_sensor.anyone_home
state: 'on'
- condition: or
conditions:
- and:
- condition: numeric_state
entity_id: sensor.bedroom_humidifier_water_level
below: 25
- condition: state
entity_id: input_boolean.bedroom_humidifier_control
state: 'on'
- and:
- condition: state
entity_id: switch.living_room_humidifier_water_tank_maintenance
state:
- 'off'
- unavailable
- condition: numeric_state
entity_id: sensor.living_room_humidifier_water_level
below: 25
- condition: state
entity_id: input_boolean.living_room_humidifier_control
state: 'on'
- and:
- condition: numeric_state
entity_id: sensor.workshop_humidifier_water_level
below: 25
- condition: state
entity_id: binary_sensor.workshop_humidifier_water_tank
state: 'on'
- condition: state
entity_id: input_boolean.workshop_humidifier_control
state: 'on'
- condition: state
entity_id:
- input_boolean.scene_movie
- input_boolean.scene_meal
state: 'off'
- condition: state
entity_id: input_select.home_mode
state:
- Day
- Vacation
- condition: template
value_template: '{{ (now() - states.input_select.home_mode.last_changed).total_seconds()
> 3600 }}
'
- condition: template
value_template: "{{ (now() - state_attr('automation.humidifiers_maintenance_alert',\n\
\ 'last_triggered')|default(now() - timedelta(days=1),\
\ true)).total_seconds() > 60 * 60 }}\n"
action:
- wait_template: '{{ not is_state(''media_player.atv'', [''playing'', ''pause''])
}}
'
timeout:
minutes: 28
continue_on_timeout: true
- if:
- condition: state
entity_id: binary_sensor.humidifier_cleanup_notice
state: 'on'
then:
- service: script.yandex_station_tts
data:
target: all
type: attention
text: "{{ states.sensor.alert_greeting.state }} {{ [\n 'Я чувствую новую\
\ жизнь! Давай помоем увлажнители',\n 'Пахнет болотом, понимаешь к чем\
\ я клоню?',\n 'Не хотела тебе говорить, но увлажнители надо помыть',\n\
\ 'Сегодня доливом воды не отделаешься, время мыть увлажнители',\n \
\ 'Даже кот не идёт вейпить увлажнитель, там очень пахнет'\n ]|random\n\
}}\n"
else:
- service: script.yandex_station_tts
data:
target: all
type: attention
text: "{{ states.sensor.alert_greeting.state }} {{ [\n 'Добавь водички\
\ в увлажнители',\n 'Увлажнители хотят пить',\n 'У увлажнителей пересохло\
\ в горле, напои их пожалуйста',\n 'Как-то суховато, может воды?',\n\
\ 'Пора размяться и налить в увлажнители воды',\n 'Не любишь сухие\
\ губы? Налей воды в увлажнители!',\n 'Увлажните меня!',\n ]|random\n\
}} {% if not is_state('sensor.humidifier_need_refill', 'unavailable') %}\n\
\ {{ states('sensor.humidifier_need_refill') }}\n{% endif %}\n"
- id: humidifiers_cleanup
alias: 'Humidifiers: Cleanup'
trigger:
- platform: state
entity_id: binary_sensor.workshop_humidifier_water_tank
from: 'on'
to: 'off'
for:
seconds: 30
action:
- service: input_datetime.set_datetime
entity_id: input_datetime.humidifiers_last_cleanup
data:
date: '{{ now().strftime("%Y-%m-%d") }}'
- id: Intake Fan Error
alias: Intake Fan Error
mode: single
max_exceeded: silent
trigger:
- platform: event
event_type: state_changed
condition:
- condition: template
value_template: "{{ trigger.event.data.new_state and\n trigger.event.data.new_state.entity_id.endswith('intake_fan_errors')\
\ and\n trigger.event.data.new_state.state and\n trigger.event.data.new_state.state\
\ not in ['unavailable', 'unknown'] }}\n"
action:
- service: notify.dextor
data:
message: '😨 Ошибки в бризере {{ trigger.event.data.new_state.entity_id }}: <b>{{
trigger.event.data.new_state.state }}</b>
'
- id: intercom_night_ring
alias: 'Intercom: Night ring'
trigger:
- platform: state
entity_id: sensor.intercom_status
to: Incoming call
condition:
- condition: state
entity_id: input_select.home_mode
state: Night
action:
- service: notify.dextor
data:
message: 🐷 Кто-то ломится в дверь когда все спят. Может курьер?
- id: intercom_unexpected_ring
alias: 'Intercom: Unexpected ring'
trigger:
- platform: state
entity_id: sensor.intercom_status
to: Incoming call
condition:
- condition: state
entity_id: input_select.home_mode
state:
- Day
- Vacation
- condition: state
entity_id:
- binary_sensor.anyone_home
- binary_sensor.anyone_near_home
state: 'off'
action:
- service: notify.dextor
data:
message: 🐷 Кто-то ломится в дверь когда никого нет дома
- id: intercom_mode_update
alias: 'Intercom: Mode update'
mode: single
max_exceeded: silent
trigger:
- platform: time_pattern
minutes: /5
- platform: state
entity_id:
- input_select.home_mode
- input_boolean.scene_delivery
- input_boolean.scene_wait_guests
- binary_sensor.anyone_near_home
action:
- choose:
- conditions:
- condition: state
entity_id: input_boolean.scene_delivery
state: 'on'
sequence:
- service: select.select_option
entity_id: select.intercom_mode
data:
option: Delivery
- conditions:
- condition: state
entity_id: input_boolean.scene_wait_guests
state: 'on'
sequence:
- service: select.select_option
entity_id: select.intercom_mode
data:
option: Guests
- conditions:
- condition: or
conditions:
- condition: state
entity_id: input_select.home_mode
state:
- Day
- Vacation
- condition: state
entity_id: binary_sensor.anyone_near_home
state: 'on'
sequence:
- service: select.select_option
entity_id: select.intercom_mode
data:
option: Always accept
- conditions:
- condition: state
entity_id: input_select.home_mode
state: Night
- condition: template
value_template: "{{ (now() - state_attr('automation.ios_intercom_mode_accept',\n\
\ 'last_triggered')|default(now() - timedelta(days=1),\
\ true)).total_seconds() > 300 }}\n"
sequence:
- service: select.select_option
entity_id: select.intercom_mode
data:
option: Always reject
- id: intercom_door_opened
alias: 'Intercom: Door opened'
trigger:
- platform: state
entity_id: sensor.intercom_status
to: Door opened
condition:
- condition: state
entity_id: binary_sensor.anyone_home
state: 'on'
- condition: state
entity_id: input_select.home_mode
state:
- Day
- Vacation
- condition: template
value_template: "{{ (now() - state_attr('automation.intercom_door_opened',\n \
\ 'last_triggered')|default(now() - timedelta(days=1),\
\ true)).total_seconds() > 60 }}\n"
action:
- service: media_player.media_pause
entity_id: group.yandex_stations
- if:
- condition: state
entity_id: media_player.atv
state: playing
then:
- service: media_player.media_pause
entity_id: media_player.atv
- service: scene.create
data:
scene_id: intercom_door_opened
snapshot_entities:
- light.bathroom_main
- light.kitchen_worktop
- light.living_room_backlight_1
- light.living_room_backlight_6
- light.living_room_tv
- light.workshop_main
- repeat:
for_each:
- light.bathroom_main
- light.kitchen_worktop
- light.living_room_backlight_1
- light.living_room_backlight_6
- light.living_room_tv
- light.workshop_main
sequence:
- service: script.turn_on
entity_id: script.flash_light
data:
variables:
entity_id: '{{ repeat.item }}'
rgb_color: "{% if repeat.item == 'light.living_room_backlight' %}\n [0,\
\ 86, 255]\n{% else %}\n []\n{% endif %}\n"
- delay:
seconds: 2
milliseconds: 200
- service: scene.turn_on
entity_id: scene.intercom_door_opened
data:
transition: 0.6
- choose:
- conditions:
- condition: state
entity_id: input_boolean.scene_wait_guests
state: 'on'
sequence:
- service: script.yandex_station_tts
data:
target: all
type: alert
text: "{{ [\n 'Гости уже почти на пороге',\n 'Впустила гостей в подъезд',\n\
\ 'Гости вот-вот зайдут, беги встречать',\n ]|random\n}}\n"
- conditions:
- condition: state
entity_id: input_boolean.scene_delivery
state: 'on'
sequence:
- service: script.yandex_station_tts
data:
target: all
type: alert
text: "{{ [\n 'Курьер проник в подьезд, срочно надевай труселя и накрывай\
\ стол',\n 'Курьер в лифте, наливай напитки!',\n 'Курьер уже здесь,\
\ карауль дверь',\n 'Как же вкусно пахнет! Курьер почти у двери!'\n\
\ ]|random\n}}\n"
- conditions:
- condition: template
value_template: '{{ state_attr(''input_datetime.scene_delivery_scheduled_from'',
''timestamp'') <= as_timestamp(now()) <= state_attr(''input_datetime.scene_delivery_scheduled_to'',
''timestamp'') }}
'
sequence:
- service: script.yandex_station_tts
data:
target: all
type: alert
text: "Открыла дверь курьеру для плановой доставки, готовься встречать {%\
\ if is_state('person.dextor', 'Near Home') %}\n , а может это и Тёмушка\n\
{% endif %}\n"
- conditions:
- condition: state
entity_id: person.dextor
state: Near Home
sequence:
- service: script.yandex_station_tts
data:
target: all
type: alert
text: "{{ [\n 'Кажется Тёмушка поднимается, скорее беги встречать',\n\
\ 'Тёмушка поднимается, он будет рад встретить тебя у двери',\n \
\ 'Вот-вот зайдёт Тёмушка, и это очень здорово!',\n ]|random\n}}\n"
- conditions:
- condition: state
entity_id: person.layma
state: Near Home
sequence:
- service: script.yandex_station_tts
data:
target: all
type: alert
text: Жёнушка на пороге, готовься встречать
default:
- service: script.yandex_station_tts
data:
target: all
type: alert
text: "{{ [\n 'Незванные гости на пороге, готовься!',\n 'Скоро позвонят\
\ в дверь, самое время надеть труселя',\n 'Я кого-то впустила в подъезд,\
\ скоро узнаем кого'\n ]|random\n}}\n"
- alias: 'iOS: Notification / DND announce'
trigger:
- platform: event
event_type: ios.action_fired
event_data:
actionName: 'Анонс: Не могу подойти'
action:
- service: script.yandex_station_tts
data:
target: all
type: attention
text: Слышу тебя, но подойти не могу. Мур-мур.
- id: ios_intercom_mode_accept
alias: 'iOS: Intercom mode - Accept'
trigger:
- platform: event
event_type: ios.action_fired
event_data:
actionName: Открыть домофон
action:
- service: select.select_option
entity_id: select.intercom_mode
data:
option: Always accept
- id: ironing_board_turn_off_occupance_living_room
alias: 'Ironing Board: Turn off (Occupancy / Living Room)'
trigger:
- platform: state
entity_id: binary_sensor.living_room_occupancy
to: 'off'
for:
minutes: 18
condition:
- condition: state
entity_id: switch.ironing_board_socket
state: 'on'
- condition: state
entity_id: input_select.ironing_board_room
state: Living Room
action:
- action: switch.turn_off
entity_id: switch.ironing_board_socket
- id: ironing_board_turn_off_idle_living_room
alias: 'Ironing Board: Turn off (Idle / Living Room)'
trigger:
- platform: state
entity_id: switch.ironing_board_socket
to: 'on'
condition:
- condition: state
entity_id: binary_sensor.living_room_motion
state:
- 'off'
- unavailable
- condition: state
entity_id: input_select.ironing_board_room
state: Living Room
action:
- wait_for_trigger:
- platform: state
entity_id: binary_sensor.living_room_motion
to: 'on'
timeout:
minutes: 10
continue_on_timeout: true
- if:
- condition: state
entity_id: binary_sensor.living_room_motion
state:
- 'off'
- unavailable
then:
- action: switch.turn_off
entity_id: switch.ironing_board_socket
- id: ironing_board_turn_off_occupancy_bedroom
alias: 'Ironing Board: Turn off (Occupancy / Bedroom)'
trigger:
- platform: state
entity_id: binary_sensor.bedroom_any_occupancy
to: 'off'
for:
minutes: 18
condition:
- condition: state
entity_id: switch.ironing_board_socket
state: 'on'
- condition: state
entity_id: input_select.ironing_board_room
state: Bedroom
action:
- action: switch.turn_off
entity_id: switch.ironing_board_socket
- id: ironing_board_turn_off_idle_bedroom
alias: 'Ironing Board: Turn off (Idle / Bedroom)'
trigger:
- platform: state
entity_id: switch.ironing_board_socket
to: 'on'
condition:
- condition: state
entity_id: binary_sensor.bedroom_motion
state:
- 'off'
- unavailable
- condition: state
entity_id: input_select.ironing_board_room
state: Bedroom
action:
- wait_for_trigger:
- platform: state
entity_id: binary_sensor.bedroom_motion
to: 'on'
timeout:
minutes: 10
continue_on_timeout: true
- if:
- condition: state
entity_id: binary_sensor.bedroom_motion
state:
- 'off'
- unavailable
then:
- action: switch.turn_off
entity_id: switch.ironing_board_socket
- id: ironing_board_turn_off_no_one_home
alias: 'Ironing Board: Turn off (no one home)'
trigger:
- platform: state
entity_id: switch.ironing_board_socket
to: 'on'
- platform: time_pattern
minutes: /1
- platform: state
entity_id: binary_sensor.anyone_home
to: 'off'
condition:
- condition: state
entity_id: switch.ironing_board_socket
state: 'on'
- condition: state
entity_id: binary_sensor.anyone_home
state: 'off'
action:
- action: switch.turn_off
entity_id: switch.ironing_board_socket
- id: ironing_board_turn_off_overload
alias: 'Ironing Board: Turn off (overload)'
mode: restart
trigger:
- platform: numeric_state
entity_id: sensor.ironing_board_socket_power
above: 2600
- platform: numeric_state
entity_id: sensor.ironing_board_socket_power
above: 2590
condition:
- condition: state
entity_id: switch.ironing_board_socket
state: 'on'
action:
- action: switch.turn_off
entity_id: switch.ironing_board_socket
- service: script.turn_on
entity_id: script.yandex_station_tts
data:
variables:
target: media_player.{{ states('input_select.ironing_board_room')|lower|replace('
', '_') }}_station
text: Выключи утюг
- id: ironing_board_alarm
alias: 'Ironing Board: Alarm'
trigger:
- platform: state
entity_id: switch.ironing_board_socket
to: 'on'
for:
minutes: 50
action:
- action: notify.dextor
data:
message: 🪠 Гладильная доска долго включена, вряд ли так должно быть
continue_on_error: true
- action: script.yandex_station_tts
data:
target: all
type: alert
text: Гладильная доска долго включена, вряд ли так должно быть
- id: kitchen_worktop_button_turn_on
alias: 'Kitchen Worktop Button: Turn on'
triggers:
- trigger: device
domain: zha
device_id: 7abc62119d4a89a29846de67a65da2f8
type: remote_button_short_press
subtype: turn_on
actions:
- if:
- condition: state
entity_id: light.kitchen_worktop
state: 'off'
then:
- action: light.turn_on
entity_id: light.kitchen_worktop
data:
brightness_pct: 100
else:
- action: light.turn_off
entity_id: light.kitchen_worktop
- id: kitchen_worktop_button_dim_down_short_press_day
alias: 'Kitchen Worktop Button: Dim down short press (Day)'
triggers:
- trigger: device
domain: zha
device_id: 7abc62119d4a89a29846de67a65da2f8
type: remote_button_short_press
subtype: dim_down
conditions:
- condition: state
entity_id: input_select.home_mode
state: Day
actions:
- action: script.turn_on
entity_id: script.kitchen_worktop_right_light_ack_flash
- action: script.yandex_station_tts
data:
target:
- media_player.living_room_station
- media_player.workshop_station
type: attention
pause_atv: true
text: "{{ [\n 'требуется помощь на кухне',\n 'скорее подойди на кухню',\n\
\ 'тебя очень ждут на кухне',\n ]|random\n}}\n"
- id: kitchen_worktop_button_dim_down_short_press_night
alias: 'Kitchen Worktop Button: Dim down short press (Night)'
triggers:
- trigger: device
domain: zha
device_id: 7abc62119d4a89a29846de67a65da2f8
type: remote_button_short_press
subtype: dim_down
conditions:
- condition: state
entity_id: input_select.home_mode
state: Night
actions:
- action: light.turn_on
entity_id: light.kitchen_worktop
data:
brightness_pct: 20
- id: kitchen_worktop_button_dim_up_short_press
alias: 'Kitchen Worktop Button: Dim up short press'
triggers:
- trigger: device
domain: zha
device_id: 7abc62119d4a89a29846de67a65da2f8
type: remote_button_short_press
subtype: dim_up
conditions:
- condition: state
entity_id: input_select.home_mode
state: Day
actions:
- action: script.turn_on
entity_id: script.kitchen_worktop_right_light_ack_flash
- action: script.yandex_station_tts
data:
target:
- media_player.living_room_station
- media_player.workshop_station
type: attention
pause_atv: true
text: "{{ [\n 'еда почти готова, время накрывать стол',\n 'еда на подходе,\
\ скоро будем кушать',\n 'бросай всё и давай поедим!',\n ]|random\n\
}}\n"
- id: kitchen_worktop_button_dim_up_long_press
alias: 'Kitchen Worktop Button: Dim up long press'
triggers:
- trigger: device
domain: zha
device_id: 7abc62119d4a89a29846de67a65da2f8
type: remote_button_long_press
subtype: dim_up
conditions:
- condition: state
entity_id: input_select.home_mode
state: Day
actions:
- action: script.turn_on
entity_id: script.kitchen_worktop_right_light_ack_flash
- event: kitchen_worktop_button_brightness_up_hold
- id: kitchen_worktop_button_left_short_press
alias: 'Kitchen Worktop Button: Left short press'
mode: single
max_exceeded: silent
triggers:
- trigger: device
domain: zha
device_id: 7abc62119d4a89a29846de67a65da2f8
type: remote_button_short_press
subtype: left
conditions:
- condition: state
entity_id: person.dextor
state: home
actions:
- action: input_number.increment
entity_id: input_number.humidifiers_water_consumption
- action: script.kitchen_worktop_right_light_ack_flash
- action: script.kitchen_worktop_right_light_ack_flash
- delay:
seconds: 10
- id: kitchen_worktop_button_left_long_press
alias: 'Kitchen Worktop Button: Left long press'
mode: single
max_exceeded: silent
triggers:
- trigger: device
domain: zha
device_id: 7abc62119d4a89a29846de67a65da2f8
type: remote_button_long_press
subtype: left
actions:
- action: input_select.select_next
entity_id: input_select.dishwasher_status
- id: kitchen_worktop_button_right_short_press
alias: 'Kitchen Worktop Button: Right short press'
triggers:
- trigger: device
domain: zha
device_id: 7abc62119d4a89a29846de67a65da2f8
type: remote_button_short_press
subtype: right
conditions:
- condition: state
entity_id: input_select.home_mode
state: Day
actions:
- if:
- condition: state
entity_id: timer.rice_cooking
state: active
then:
- action: timer.pause
entity_id: timer.rice_cooking
- action: timer.start
entity_id: timer.rice_cooking
- service: script.yandex_station_tts
data:
target: media_player.kitchen_station
text: 'Осталось примерно {{ state_attr(''timer.rice_cooking'', ''remaining'').split('':'')[1]
}} мин. до полной готовности риса
'
else:
- action: timer.start
entity_id:
- timer.rice_cooking
- timer.rice_almost_ready
- action: script.turn_on
entity_id: script.kitchen_worktop_right_light_ack_flash
- id: kitchen_worktop_button_right_long_press
alias: 'Kitchen Worktop Button: Right long press'
triggers:
- trigger: device
domain: zha
device_id: 7abc62119d4a89a29846de67a65da2f8
type: remote_button_long_press
subtype: right
actions:
- action: timer.cancel
entity_id: timer.rice_cooking
- action: script.turn_on
entity_id: script.kitchen_worktop_right_light_ack_flash
- id: leave_kombucha_alone
alias: Leave Kombucha Alone
trigger:
- platform: state
entity_id: binary_sensor.closet_door
from: 'off'
to: 'on'
condition:
- condition: state
entity_id: input_select.home_mode
state: Day
- condition: template
value_template: "{{ (now() - state_attr('automation.leave_kombucha_alone',\n \
\ 'last_triggered')|default(now() - timedelta(days=1),\
\ true)).total_seconds() > 600 }}\n"
action:
- service: script.yandex_station_tts
data:
target: media_player.kitchen_station
type: attention
text: "{{ states.sensor.alert_greeting.state }} {{ [\n 'хватит смотреть на\
\ гриб, с ним всё хорошо',\n 'гриб в полном порядке, цветёт и пахнет',\n\
\ 'будешь часто смотреть, гриб не всплывёт',\n 'с грибом всё стабильно,\
\ сахар ням-ням',\n 'грибы любят покой и темноту, хватит зыркать',\n \
\ 'нееет, опять яркий свет, дай грибу спокойно расти',\n 'нетерпится увидеть\
\ гриб? всему своё время',\n 'гриб спешки не любит, не нужно его постоянно\
\ дёргать',\n ]|random\n}}\n"
- id: light_control_turn_on
alias: 'Light Control: Turn on'
trigger:
- platform: event
event_type: yandex_intent
event_data:
text: Включи управление светом
- platform: state
entity_id: input_select.home_mode
to: Day
condition:
- condition: state
entity_id: input_boolean.light_control
state: 'off'
action:
- service: input_boolean.turn_on
entity_id: input_boolean.light_control
- id: light_control_turn_off
alias: 'Light Control: Turn off'
trigger:
- platform: event
event_type: yandex_intent
event_data:
text: Не выключай свет
action:
- service: input_boolean.turn_off
entity_id: input_boolean.light_control
- id: living_room_dinner_table_button_single_press
alias: 'Living Room Dinner Table Button: Single press'
trigger:
- trigger: device
domain: mqtt
device_id: 9c3b7479025f7d66f4dd23a779acfd86
type: action
subtype: single
condition:
- condition: state
entity_id: media_player.tv
state: 'on'
action:
- service: script.tv_press_button
data:
button: play
- id: living_room_dinner_table_button_double_press
alias: 'Living Room Dinner Table Button: Double press'
trigger:
- trigger: device
domain: mqtt
device_id: 9c3b7479025f7d66f4dd23a779acfd86
type: action
subtype: double
condition:
- condition: state
entity_id: media_player.tv
state: 'on'
action:
- service: script.tv_press_button
data:
button: left
- id: living_room_dinner_table_button_triple_press
alias: 'Living Room Dinner Table Button: Triple press'
trigger:
- trigger: device
domain: mqtt
device_id: 9c3b7479025f7d66f4dd23a779acfd86
type: action
subtype: triple
condition:
- condition: state
entity_id: media_player.tv
state: 'on'
action:
- service: script.tv_press_button
data:
button: enter
- id: living_room_dinner_table_button_hold
alias: 'Living Room Dinner Table Button: Hold'
trigger:
- trigger: device
domain: mqtt
device_id: 9c3b7479025f7d66f4dd23a779acfd86
type: action
subtype: hold
action:
- event: living_room_dinner_table_button_hold
- id: living_room_light_switch_single_right
alias: 'Living Room Light Switch: Single right'
trigger:
- trigger: device
domain: mqtt
device_id: e0a2386c0fbe8ec9b50b6bc773b4d635
type: action
subtype: single_right
action:
- choose:
- conditions:
- condition: state
entity_id: light.living_room_backlight
state: 'on'
- condition: state
entity_id: light.living_room_backlight
attribute: color_mode
state: color_temp
- condition: numeric_state
entity_id: light.living_room_backlight
attribute: color_temp_kelvin
below: 4000
sequence:
- service: light.turn_off
entity_id: light.living_room_backlight
- conditions:
- condition: state
entity_id: light.living_room_backlight
state: 'on'
- condition: state
entity_id: light.living_room_backlight
attribute: color_mode
state: color_temp
- condition: numeric_state
entity_id: light.living_room_backlight
attribute: color_temp_kelvin
above: 4000
sequence:
- service: light.turn_on
entity_id: light.living_room_backlight
data:
brightness_pct: 100
color_temp_kelvin: 2700
default:
- if:
- condition: state
entity_id: input_select.home_mode
state: Night
then:
- service: light.turn_on
entity_id: light.living_room_backlight
data:
brightness_pct: 50
rgb_color:
- 255
- 0
- 0
else:
- service: light.turn_on
entity_id: light.living_room_backlight
data:
brightness_pct: "{% if is_state('binary_sensor.dim_light', 'on') %}\n 40\n\
{% else %}\n 100\n{% endif %}\n"
color_temp_kelvin: 4200
- id: living_room_light_switch_double_right
alias: 'Living Room Light Switch: Double right'
trigger:
- trigger: device
domain: mqtt
device_id: e0a2386c0fbe8ec9b50b6bc773b4d635
type: action
subtype: double_right
action:
- if:
- condition: state
entity_id: light.living_room_tv
state: 'off'
then:
- service: light.turn_on
entity_id: light.living_room_tv
data:
brightness_pct: 100
else:
- service: light.turn_off
entity_id: light.living_room_tv
- id: living_room_heater_button_turn_on
alias: 'Living Room Heater Button: Turn on'
trigger:
- trigger: device
domain: mqtt
device_id: 624d122c903dda63a2c71e9d636f4a0c
type: action
subtype: 'on'
action:
- action: switch.turn_on
entity_id: switch.living_room_heater
- id: living_room_heater_button_turn_off
alias: 'Living Room Heater Button: Turn off'
trigger:
- trigger: device
domain: mqtt
device_id: 624d122c903dda63a2c71e9d636f4a0c
type: action
subtype: 'off'
action:
- action: switch.turn_off
entity_id: switch.living_room_heater
- id: living_room_heater_button_hold_down
alias: 'Living Room Heater Button: Hold down'
triggers:
- trigger: device
domain: mqtt
device_id: 624d122c903dda63a2c71e9d636f4a0c
type: action
subtype: brightness_move_down
actions:
- event: living_room_heater_button_hold_down
- id: living_room_tv_light_turn_on
alias: 'Living Room TV Light: Turn on'
trigger:
- platform: state
entity_id: media_player.tv
to: 'on'
condition:
- condition: state
entity_id: input_select.home_mode
state:
- Day
- Vacation
- condition: state
entity_id: input_boolean.light_control
state: 'on'
- condition: state
entity_id: light.living_room_tv
state: 'off'
action:
- service: light.turn_on
entity_id: light.living_room_tv
data:
brightness_pct: 45
- id: living_room_tv_light_turn_off
alias: 'Living Room TV Light: Turn off'
trigger:
- platform: state
entity_id: media_player.tv
to: 'off'
condition:
- condition: numeric_state
entity_id: sensor.illuminance_south_side
above: 500
- condition: state
entity_id: binary_sensor.winter_bright_light
state: 'off'
- condition: state
entity_id:
- input_boolean.light_control
- light.living_room_tv
state: 'on'
action:
- service: light.turn_off
entity_id: light.living_room_tv
- id: front_door_locked
alias: 'Front Door: Locked'
mode: restart
trigger:
- platform: state
entity_id: lock.front_door
from: unlocked
to: locked
action:
- service: script.turn_on
entity_id: script.porch_lock_light_flash
- wait_for_trigger:
- platform: state
entity_id: binary_sensor.anyone_home
to: 'off'
timeout:
minutes: 10
continue_on_timeout: false
- service: light.turn_off
entity_id: group.home_lights
continue_on_error: true
- service: media_player.turn_off
entity_id:
- media_player.tv
- media_player.bedroom_station
- media_player.living_room_station
- media_player.workshop_station
- media_player.kitchen_station
continue_on_error: true
- id: front_door_unlocked
alias: 'Front Door: Unlocked'
trigger:
- platform: state
entity_id: lock.front_door
from: locked
to: unlocked
action:
- service: timer.start
entity_id: timer.front_door_unlocked
- id: front_door_unlock
alias: 'Front Door: Unlock'
max_exceeded: silent
trigger:
- platform: state
entity_id: sensor.intercom_status
to: Door opened
condition:
- condition: state
entity_id: lock.front_door
state: locked
- condition: state
entity_id: input_boolean.scene_wait_guests
state: 'on'
action:
- service: lock.unlock
entity_id: lock.front_door
- id: porch_door_unlock
alias: 'Porch Door: Unlock'
mode: restart
trigger:
- platform: state
entity_id: sensor.intercom_status
to: Door opened
condition:
- condition: state
entity_id: lock.porch_door
state: locked
- condition: or
conditions:
- condition: state
entity_id: binary_sensor.anyone_near_home
state: 'on'
- condition: state
entity_id: input_boolean.scene_wait_guests
state: 'on'
action:
- service: lock.unlock
entity_id: lock.porch_door
- delay:
minutes: 7
- if:
- condition: state
entity_id: lock.porch_door
state: unlocked
- condition: state
entity_id: binary_sensor.porch_door
state: 'off'
then:
- service: lock.lock
entity_id: lock.porch_door
- id: porch_door_presence_unlock
alias: 'Porch Door: Presence Unlock'
mode: restart
triggers:
- trigger: state
entity_id:
- person.dextor
- person.layma
to: home
conditions:
- condition: state
entity_id: lock.porch_door
state: locked
- condition: state
entity_id: timer.anyone_near_home_recently
state: active
actions:
- action: lock.unlock
entity_id: lock.porch_door
- delay:
minutes: 3
- if:
- condition: state
entity_id: lock.porch_door
state: unlocked
- condition: state
entity_id: binary_sensor.porch_door
state: 'off'
then:
- service: lock.lock
entity_id: lock.porch_door
- id: scene_meal_turn_on
alias: 'Scene Meal: Turn on'
trigger:
- trigger: event
event_type: yandex_intent
event_data:
text: Время ужинать
- trigger: event
event_type: kitchen_worktop_button_brightness_up_hold
- trigger: event
event_type: living_room_dinner_table_button_hold
action:
- service: light.turn_on
entity_id: light.living_room_tv
data:
brightness_pct: 100
- service: light.turn_on
entity_id: light.living_room_backlight
data:
brightness_pct: 100
color_temp_kelvin: 4500
- service: script.yandex_station_tts
data:
target: all
text: "{{ [\n 'Приятного аппетита',\n 'Кушайте много, кушайте вкусно',\n\
\ 'Вкуснятина! Давай скорее кушать',\n ]|random\n}}\n"
- service: input_boolean.turn_on
entity_id: input_boolean.scene_meal
- if:
- condition: state
entity_id: media_player.tv
state: 'off'
then:
- service: media_player.turn_on
entity_id:
- media_player.tv
- media_player.atv
- service: light.turn_off
entity_id:
- light.living_room_main
- group.aux_lights
- group.bedroom_lights
- id: scene_meal_turn_off
alias: 'Scene Meal: Turn off'
trigger:
- platform: state
entity_id: media_player.tv
to: 'off'
- platform: state
entity_id: input_boolean.scene_meal
to: 'on'
for:
minutes: 52
condition:
- condition: state
entity_id: input_boolean.scene_meal
state: 'on'
action:
- service: input_boolean.turn_off
entity_id: input_boolean.scene_meal
- id: rice_cooking_status
alias: 'Rice Cooking: Status'
triggers:
- trigger: event
event_type: yandex_intent
event_data:
text: Что с рисоваркой
actions:
- if:
- condition: state
entity_id: timer.rice_cooking
state: active
then:
- action: timer.pause
entity_id: timer.rice_cooking
- action: timer.start
entity_id: timer.rice_cooking
- service: script.yandex_station_tts
data:
target: '{{ trigger.event.data.get(''entity_id'', ''last'') }}
'
text: "{% if is_state('timer.rice_cooking', 'idle') %}\n Рисоварка не запущена\n\
{% else %}\n Осталось примерно {{ state_attr('timer.rice_cooking', 'remaining').split(':')[1]\
\ }} мин. до полной готовности\n{% endif %}\n"
- id: rice_almost_ready_alert
alias: Rice almost ready alert
triggers:
- trigger: event
event_type: timer.finished
event_data:
entity_id: timer.rice_almost_ready
conditions:
- condition: state
entity_id: binary_sensor.anyone_home
state: 'on'
- condition: state
entity_id: input_select.home_mode
state:
- Day
- Vacation
actions:
- action: script.yandex_station_tts
data:
target: all
type: attention
text: "{{ [\n 'рис почти готов',\n 'рис на подходе, давай накрывать стол',\n\
\ 'пахнет рисом на всю кухню, он почти готов',\n ]|random\n}}\n"
- id: scene_movie_turn_on
alias: 'Scene Movie: Turn on'
trigger:
- platform: event
event_type: yandex_intent
event_data:
text: Посмотрим кино
action:
- if:
- condition: state
entity_id: binary_sensor.living_room_balcony_door
state: 'on'
then:
- service: script.yandex_station_tts
data:
target: '{{ trigger.event.data.get(''entity_id'', ''last'') }}
'
text: Давай, только закрой дверь на балкон
- condition: state
entity_id: binary_sensor.living_room_balcony_door
state: 'off'
- if:
- condition: state
entity_id: binary_sensor.evening_time
state: 'off'
then:
- service: cover.close_cover
entity_id:
- cover.bedroom
- cover.workshop
- service: light.turn_on
entity_id: light.living_room_backlight
data:
brightness_pct: 23
rgb_color:
- 215
- 150
- 255
- service: light.turn_on
entity_id: light.living_room_tv
data:
brightness_pct: 14
- service: cover.close_cover
entity_id: cover.living_room
- if:
- condition: state
entity_id: media_player.tv
state: 'off'
then:
- service: media_player.turn_on
entity_id:
- media_player.tv
- media_player.atv
- service: light.turn_off
entity_id:
- group.bedroom_lights
- group.path_lights
- group.workshop_lights
- light.entrance
- light.hallway
- light.wardrobe
- service: input_boolean.turn_on
entity_id: input_boolean.scene_movie
- service: script.yandex_station_tts
data:
target: '{{ trigger.event.data.get(''entity_id'', ''last'') }}
'
text: Приятного просмотра!
- service: script.yandex_station_command
data:
target: media_player.living_room_station
command: выключи часы
- action: select.select_option
entity_id: select.avr_display_brightness
data:
option: Low
- wait_for_trigger:
- platform: state
entity_id: media_player.atv
to:
- standby
- idle
timeout:
seconds: 5
continue_on_timeout: true
- if:
- condition: state
entity_id: media_player.atv
state:
- standby
- idle
then:
- service: media_player.select_source
target:
entity_id: media_player.atv
data:
source: Plex
- id: scene_movie_turn_off
alias: 'Scene Movie: Turn off'
trigger:
- platform: event
id: yandex_intent
event_type: yandex_intent
event_data:
text: Просмотр окончен
- platform: state
entity_id: media_player.tv
to: 'off'
- platform: state
entity_id: media_player.atv
from:
- playing
- paused
to: standby
- platform: state
entity_id: media_player.atv
attribute: app_id
from: com.plexapp.plex
condition:
- condition: state
entity_id: input_boolean.scene_movie
state: 'on'
action:
- service: input_boolean.turn_off
entity_id: input_boolean.scene_movie
- if:
- condition: state
entity_id: binary_sensor.evening_time
state: 'off'
then:
- service: cover.open_cover
entity_id:
- cover.bedroom
- cover.living_room
- cover.workshop
- if:
- condition: numeric_state
entity_id: sensor.illuminance_south_side
below: 500
then:
- service: light.turn_on
entity_id: light.living_room_tv
data:
brightness_pct: 45
transition: 5
- service: light.turn_on
entity_id: light.living_room_backlight
data:
brightness_pct: 23
color_temp_kelvin: 3400
transition: 5
- service: script.yandex_station_command
data:
target: media_player.living_room_station
command: включи часы
- action: select.select_option
entity_id: select.avr_display_brightness
data:
option: High
- id: scene_movie_playing
alias: 'Scene Movie: Playing'
trigger:
- platform: state
entity_id: media_player.atv
to: playing
condition:
- condition: state
entity_id: input_boolean.scene_movie
state: 'on'
- condition: state
entity_id: light.living_room_tv
state: 'on'
- condition: state
entity_id: light.living_room_tv
attribute: brightness
state: '115'
action:
- service: light.turn_off
entity_id:
- light.living_room_tv
- light.living_room_backlight
data:
transition: 5
- id: scene_movie_pause
alias: 'Scene Movie: Pause'
trigger:
- platform: state
entity_id: media_player.atv
from: playing
to: paused
condition:
- condition: state
entity_id: input_boolean.scene_movie
state: 'on'
- condition: template
value_template: "{{ (now() - state_attr('automation.scene_movie_pause',\n \
\ 'last_triggered')|default(now() - timedelta(days=1), true)).seconds\
\ > 30 }}\n"
action:
- service: light.turn_on
entity_id: light.living_room_backlight
data:
brightness_pct: 30
rgb_color:
- 255
- 68
- 71
- id: scene_movie_resume
alias: 'Scene Movie: Resume'
trigger:
- platform: state
entity_id: media_player.atv
to: playing
condition:
- condition: state
entity_id: input_boolean.scene_movie
state: 'on'
action:
- service: light.turn_off
entity_id: group.home_lights
- id: scene_overnight_guests_turn_off
alias: 'Scene Overnight Guests: Turn off'
trigger:
- platform: state
entity_id: input_boolean.scene_overnight_guests
to: 'on'
for:
hours: 14
condition:
- condition: state
entity_id: input_boolean.scene_overnight_guests
state: 'on'
action:
- service: input_boolean.turn_off
entity_id: input_boolean.scene_overnight_guests
- id: bathroom_path_light_turn_on_night
alias: 'Bathroom Path Light: Turn on (night)'
trigger:
- platform: state
entity_id:
- binary_sensor.bathroom_motion
- binary_sensor.hallway_motion
to: 'on'
condition:
- condition: state
entity_id: input_boolean.light_control
state: 'on'
- condition: state
entity_id: input_select.home_mode
state: Night
- condition: state
entity_id:
- group.bathroom_path_lights
- input_boolean.scene_waking_up
state: 'off'
action:
- service: light.turn_on
entity_id:
- light.bathroom_sink_path
- light.bathroom_toilet_path
data:
rgbw_color:
- 255
- 0
- 0
- 0
brightness_pct: 100
- id: bathroom_path_light_turn_off
alias: 'Bathroom Path Light: Turn off'
trigger:
- id: no_occupancy_1
platform: state
entity_id: binary_sensor.bathroom_occupancy
from: 'on'
to: 'off'
for:
minutes: 1
- id: no_occupancy_10
platform: state
entity_id: binary_sensor.bathroom_occupancy
from: 'on'
to: 'off'
for:
minutes: 10
- id: no_motion
platform: state
entity_id: binary_sensor.bathroom_motion
from: 'on'
to: 'off'
for:
hours: 1
condition:
- condition: state
entity_id: input_boolean.scene_sleepy_mood
state: 'off'
- condition: state
entity_id:
- input_boolean.light_control
- input_boolean.bathroom_light_control
- group.bathroom_path_lights
state: 'on'
- condition: or
conditions:
- condition: trigger
id: no_motion
- condition: state
entity_id: binary_sensor.bathroom_occupancy
state:
- 'on'
- 'off'
action:
- service: light.turn_off
entity_id: group.bathroom_path_lights
- id: hallway_path_light_turn_on_day
alias: 'Hallway Path Light: Turn on (day)'
trigger:
- platform: state
entity_id:
- binary_sensor.hallway_motion
- binary_sensor.entrance_motion
to: 'on'
- platform: state
entity_id:
- light.entrance
- light.hallway
from: 'on'
to: 'off'
condition:
- condition: state
entity_id:
- input_boolean.light_control
- binary_sensor.anyone_home
state: 'on'
- condition: state
entity_id: input_boolean.scene_sleepy_mood
state: 'off'
- condition: state
entity_id: input_select.home_mode
state:
- Day
- Vacation
- condition: or
conditions:
- condition: numeric_state
entity_id: sensor.illuminance_south_side
below: 200
- condition: state
entity_id: cover.living_room
state: closed
- condition: state
entity_id:
- light.hallway_path
- light.entrance
- light.hallway
state: 'off'
action:
- if:
- condition: template
value_template: '{{ states(''light.xmas_hallway_wall'') not in [''unavailable'',
''unknown''] }}
'
then:
- service: light.turn_on
entity_id: light.hallway_path
data:
brightness_pct: 56
rgbw_color:
- 255
- 105
- 0
- 18
else:
- service: light.turn_on
entity_id: light.hallway_path
data:
brightness_pct: 25
rgbw_color:
- 255
- 65
- 0
- 166
- id: hallway_path_light_turn_on_night
alias: 'Hallway Path Light: Turn on (night)'
trigger:
- platform: state
entity_id:
- binary_sensor.hallway_motion
- binary_sensor.bedroom_motion
to: 'on'
condition:
- condition: state
entity_id: input_boolean.light_control
state: 'on'
- condition: state
entity_id: input_select.home_mode
state: Night
- condition: state
entity_id: light.hallway_path
state: 'off'
action:
- service: light.turn_on
entity_id: light.hallway_path
data:
brightness_pct: 3
rgbw_color:
- 255
- 0
- 0
- 0
- id: hallway_path_light_turn_off
alias: 'Hallway Path Light: Turn off'
trigger:
- id: no_motion
platform: state
entity_id:
- binary_sensor.hallway_motion
- binary_sensor.entrance_motion
from: 'on'
to: 'off'
for:
seconds: 30
- platform: state
entity_id:
- light.entrance
- light.hallway
from: 'off'
to: 'on'
- platform: state
entity_id: input_select.home_mode
from: Night
condition:
- condition: state
entity_id: input_boolean.scene_sleepy_mood
state: 'off'
- or:
- not:
- condition: trigger
id: no_motion
- condition: state
entity_id:
- binary_sensor.hallway_motion
- binary_sensor.entrance_motion
state: 'off'
- condition: state
entity_id:
- input_boolean.light_control
- light.hallway_path
state: 'on'
action:
- service: light.turn_off
entity_id: light.hallway_path
- id: kitchen_path_light_turn_on_day
alias: 'Kitchen Path Light: Turn on (day)'
trigger:
- platform: state
entity_id:
- binary_sensor.hallway_motion
- binary_sensor.entrance_motion
to: 'on'
condition:
- condition: state
entity_id: input_boolean.light_control
state: 'on'
- condition: state
entity_id: input_select.home_mode
state:
- Day
- Vacation
- condition: or
conditions:
- condition: numeric_state
entity_id: sensor.illuminance_north_side
below: 150
- condition: state
entity_id: cover.kitchen
state: closed
- condition: state
entity_id:
- group.kitchen_lights
- input_boolean.scene_sleepy_mood
- light.entrance
- light.hallway
- light.kitchen_path
state: 'off'
action:
- service: light.turn_on
entity_id: light.kitchen_path
data:
brightness_pct: 40
rgbw_color:
- 255
- 65
- 0
- 133
- id: kitchen_path_light_turn_on_night
alias: 'Kitchen Path Light: Turn on (night)'
trigger:
- platform: state
entity_id:
- binary_sensor.hallway_motion
- binary_sensor.entrance_motion
- binary_sensor.kitchen_motion
to: 'on'
condition:
- condition: state
entity_id: input_boolean.light_control
state: 'on'
- condition: state
entity_id: input_select.home_mode
state: Night
- condition: state
entity_id: light.kitchen_path
state: 'off'
action:
- service: light.turn_on
entity_id: light.kitchen_path
data:
brightness_pct: 20
rgbw_color:
- 255
- 0
- 0
- 0
- id: kitchen_path_light_turn_off
alias: 'Kitchen Path Light: Turn off'
trigger:
- id: no_motion
platform: state
entity_id:
- binary_sensor.hallway_motion
- binary_sensor.entrance_motion
- binary_sensor.kitchen_occupancy
from: 'on'
to: 'off'
for:
minutes: 2
- platform: state
entity_id: group.kitchen_lights
from: 'off'
to: 'on'
- platform: state
entity_id: input_select.home_mode
from: Night
condition:
- condition: state
entity_id: input_boolean.scene_sleepy_mood
state: 'off'
- or:
- not:
- condition: trigger
id: no_motion
- condition: state
entity_id:
- binary_sensor.hallway_motion
- binary_sensor.entrance_motion
- binary_sensor.kitchen_occupancy
state: 'off'
- condition: state
entity_id:
- input_boolean.light_control
- light.kitchen_path
state: 'on'
action:
- service: light.turn_off
entity_id: light.kitchen_path
- id: Pills taken
alias: Pills taken
mode: single
max_exceeded: silent
trigger:
- trigger: device
domain: mqtt
device_id: 9be5a240d99a0f8b0fc13585cda78fba
type: action
subtype: single
- trigger: device
domain: mqtt
device_id: 9be5a240d99a0f8b0fc13585cda78fba
type: action
subtype: double
action:
- service: input_datetime.set_datetime
entity_id: input_datetime.pills_takes
data:
datetime: '{{ now().strftime("%Y-%m-%d %H:%M:%S") }}'
- service: script.yandex_station_tts
data:
target: media_player.kitchen_station
text: '<speaker audio="alice-sounds-game-boot-1.opus">
'
volume: 0.4
- id: porch_light_turn_on_front_door
alias: 'Porch Light: Turn on (front door)'
trigger:
- platform: state
entity_id: binary_sensor.front_door
to: 'on'
condition:
- condition: state
entity_id: input_boolean.light_control
state: 'on'
- condition: state
entity_id:
- light.porch
- light.porch_path_light
state: 'off'
action:
- if:
- condition: state
entity_id: input_select.home_mode
state: Night
then:
- service: light.turn_on
entity_id: light.porch_path_light
data:
rgbw_color:
- 255
- 0
- 0
- 0
brightness_pct: 45
else:
- service: light.turn_on
entity_id: light.porch
- id: porch_light_turn_on
alias: 'Porch Light: Turn on'
trigger:
- platform: state
entity_id:
- binary_sensor.porch_motion
- binary_sensor.porch_door
to: 'on'
condition:
- condition: state
entity_id: input_boolean.light_control
state: 'on'
- condition: state
entity_id:
- light.porch
- light.porch_path_light
state: 'off'
action:
- service: light.turn_on
entity_id: light.porch
- id: porch_light_turn_off
alias: 'Porch Light: Turn off'
trigger:
- platform: state
entity_id: binary_sensor.porch_motion
to: 'off'
for:
minutes: 10
- platform: state
entity_id: binary_sensor.porch_motion
to: 'off'
for:
minutes: 20
condition:
- condition: state
entity_id: input_boolean.light_control
state: 'on'
- condition: state
entity_id:
- light.porch
- light.porch_path_light
match: any
state: 'on'
action:
- service: light.turn_off
entity_id:
- light.porch
- light.porch_path_light
- id: living_room_heater_turn_off
alias: 'Living Room Heater: Turn off'
trigger:
- platform: state
entity_id: binary_sensor.anyone_home
from: 'on'
to: 'off'
- platform: state
entity_id: input_boolean.scene_sleepy_mood
from: 'off'
to: 'on'
- platform: state
entity_id: input_select.home_mode
from: Day
- platform: numeric_state
entity_id: sensor.living_room_temperature
above: 25.5
- platform: state
entity_id:
- input_boolean.living_room_airing_warm
- input_boolean.living_room_airing_cold
from: 'off'
to: 'on'
- platform: state
entity_id: switch.ironing_board_socket
to: 'on'
- platform: numeric_state
entity_id: sensor.sockets_power_supply_power
above: 3600
condition:
- condition: state
entity_id: switch.living_room_heater
state: 'on'
action:
- service: switch.turn_off
entity_id: switch.living_room_heater
- id: living_room_heater_turn_off_protect
alias: 'Living Room Heater: Turn off (protect)'
trigger:
- platform: state
entity_id: switch.living_room_heater
to: 'on'
condition:
- condition: state
entity_id: switch.ironing_board_socket
state: 'on'
action:
- action: switch.turn_off
entity_id: switch.living_room_heater
- id: living_room_heater_turn_off_idle
alias: 'Living Room Heater: Turn off (idle)'
trigger:
- platform: state
entity_id: switch.living_room_heater
to: 'on'
for:
hours: 6
- platform: state
entity_id: switch.living_room_heater
to: 'on'
for:
hours: 7
condition:
- condition: state
entity_id: switch.living_room_heater
state: 'on'
- condition: numeric_state
entity_id: sensor.living_room_temperature
above: 23
action:
- service: switch.turn_off
entity_id: switch.living_room_heater
- id: power_budget_alert
alias: Power Budget Alert
mode: single
max_exceeded: silent
trigger:
- platform: state
entity_id:
- sensor.cb_power_supply_power
- sensor.sockets_power_supply_power
condition:
- condition: template
value_template: '{{ trigger.to_state.state|int(0) >= 3700 }}
'
- condition: template
value_template: "{{ (now() - state_attr('automation.power_budget_alert',\n \
\ 'last_triggered')|default(now() - timedelta(days=1), true)).total_seconds()\
\ > 600 }}\n"
action:
- service: notify.dextor
data:
message: '⚡️ Превышена мощность по {{ trigger.to_state.entity_id }}: <b>{{ trigger.to_state.state
}}</b> Вт.
'
- id: scooter_charging
alias: 'Scooter: Charging'
max_exceeded: silent
trigger:
- platform: numeric_state
entity_id: sensor.scooter_charger_socket_power
above: 30
for:
seconds: 15
action:
- wait_for_trigger:
- platform: numeric_state
entity_id: sensor.scooter_charger_socket_power
below: 1
for:
minutes: 1
timeout:
hours: 8
continue_on_timeout: true
- service: switch.turn_off
entity_id: switch.scooter_charger_socket
- id: scooter_charging_socket_turn_off
alias: 'Scooter Charging Socket: Turn off'
trigger:
- platform: state
entity_id: switch.scooter_charger_socket
to: 'on'
for:
hours: 10
- platform: state
entity_id: binary_sensor.porch_smoke
to: 'on'
action:
- service: switch.turn_off
entity_id: switch.scooter_charger_socket
- id: all_left_recently_alert
alias: All left recently alert
trigger:
platform: state
entity_id: binary_sensor.anyone_home
from: 'on'
to: 'off'
for: 00:03:00
condition:
- condition: state
entity_id: lock.front_door
state: unlocked
action:
- service: notify.dextor
data:
message: 🔑 Никого нет дома, а дверь не закрыта. Страшно?
- id: motion_alarm_no_one_home
alias: 'Motion Alarm: No one home'
trigger:
- platform: state
entity_id: binary_sensor.motion_anywhere
from: 'off'
to: 'on'
condition:
- condition: state
entity_id:
- binary_sensor.anyone_home
- binary_sensor.anyone_near_home
state: 'off'
- condition: template
value_template: "{{ (now() - state_attr('automation.motion_alarm_no_one_home',\n\
\ 'last_triggered')|default(now() - timedelta(days=1),\
\ true)).total_seconds() > 600 }}\n"
action:
- service: notify.dextor
data:
message: 👮 Движение дома, хотя там никого нет? Нас грабют! Ну или кормят котиков.
- id: front_door_opened_alert
alias: 'Front Door: Opened alert'
trigger:
- platform: state
entity_id: binary_sensor.front_door
from: 'off'
to: 'on'
for:
minutes: 15
- platform: state
entity_id: binary_sensor.front_door
from: 'off'
to: 'on'
for:
minutes: 30
condition:
- condition: state
entity_id: binary_sensor.anyone_home
state: 'on'
- condition: state
entity_id: lock.front_door
state: unlocked
action:
- service: script.yandex_station_tts
data:
target: all
type: alert
text: "{{ states.sensor.alert_greeting.state }} {{ [\n 'Входная дверь не\
\ защелкнута, сходи проверь',\n 'Мы кого-то ждем? Входная дверь не прикрыта',\n\
\ 'Прикрой входную дверь, а то украдут!'\n ]|random\n}}\n"
- id: porch_door_opened_alert
alias: 'Porch Door: Opened alert'
trigger:
- platform: state
entity_id: binary_sensor.porch_door
to: 'on'
for:
hours: 6
- platform: state
entity_id: lock.porch_door
to: unlocked
for:
hours: 6
action:
- service: notify.dextor
data:
message: 🔑 Дверь на крыльцо долго открыта. Это вообще нормально?!
- id: scene_sleepy_mood_turn_on
alias: 'Scene Sleepy Mood: Turn on'
trigger:
- platform: event
event_type: yandex_intent
event_data:
text: Хочется спать
action:
- service: input_boolean.turn_on
entity_id:
- input_boolean.scene_sleepy_mood
- input_boolean.bedroom_airing_cold
- service: media_player.turn_off
entity_id: media_player.tv
- service: light.turn_on
entity_id:
- light.bedroom_bed
- light.bedroom_moon
data:
rgb_color: "{{ [\n [255, 71, 51],\n [202, 255, 10],\n [10, 255, 173],\n \
\ [10, 255, 243],\n [10, 214, 255],\n [229, 233, 255],\n [133, 10, 255],\n\
\ [173, 10, 255],\n [255, 10, 231],\n]|random }}\n"
brightness_pct: 100
- service: light.turn_on
entity_id:
- light.bedroom_cat
- light.bedroom_string
data:
color_temp_kelvin: 2700
brightness_pct: 12
- delay:
milliseconds: 500
- service: light.turn_on
entity_id:
- light.hallway_path
- light.kitchen_path
data:
rgbw_color: '{{ state_attr(''light.bedroom_bed'', ''rgb_color'')|list + [0]
}}
'
brightness_pct: 15
- service: light.turn_on
entity_id:
- light.bathroom_sink_path
- light.bathroom_toilet_path
data:
rgbw_color: '{{ state_attr(''light.bedroom_bed'', ''rgb_color'')|list + [0]
}}
'
brightness_pct: 75
- service: light.turn_on
entity_id: light.living_room_backlight
data:
rgb_color: '{{ state_attr(''light.bedroom_bed'', ''rgb_color'')|list }}
'
brightness_pct: 40
- service: light.turn_on
entity_id: light.bathroom_main
data:
brightness_pct: 10
- service: light.turn_on
entity_id: light.kitchen_worktop
data:
brightness_pct: 25
- if:
- condition: state
entity_id: light.wardrobe
state: 'on'
then:
- service: light.turn_on
entity_id: light.wardrobe
data:
brightness_pct: 20
- if:
- condition: state
entity_id: binary_sensor.porch_motion
state: 'off'
then:
- service: light.turn_off
entity_id: light.porch
- service: light.turn_off
entity_id:
- group.workshop_lights
- light.bathroom_bathtub
- light.bathroom_mirror
- light.bedroom_main
- light.closet
- light.entrance
- light.hallway
- light.kitchen_main
- light.kitchen_mood
- light.living_room_main
- light.living_room_tv
- service: cover.close_cover
entity_id:
- cover.bedroom
- cover.kitchen
- cover.living_room
- cover.workshop
- service: script.yandex_station_tts
data:
target: '{{ trigger.event.data.get(''entity_id'', ''last'') }}
'
text: "{{ ['Хорошая мысль', 'Готовимся к погружению в мир грёз', 'Ммм, подушка\
\ душистая и одеяло пустишое', 'Постелька уже ждет', 'Пойдём в кроватку',\
\ 'Сон - это хорошо']|random }}.\n{% if states('sensor.chores')|length > 0\
\ %}\n Только не забудь {{ states('sensor.chores') }}\n{% endif %}\n"
- if:
- condition: state
entity_id: climate.bedroom_ac
state:
- 'off'
- heat_cool
- cool
- heat
- dry
- condition: numeric_state
entity_id: sensor.outside_temperature
above: 10
- condition: numeric_state
entity_id: sensor.bedroom_temperature
above: 24
then:
- service: climate.set_temperature
entity_id: climate.bedroom_ac
data:
hvac_mode: cool
temperature: 23.5
- if:
- condition: state
entity_id: lock.front_door
state: unlocked
then:
- service: lock.lock
entity_id: lock.front_door
- if:
- condition: state
entity_id: binary_sensor.porch_door
state: 'off'
- condition: state
entity_id: lock.porch_door
state: unlocked
then:
- service: lock.lock
entity_id: lock.porch_door
- id: scene_sleepy_mood_turn_off
alias: 'Scene Sleepy Mood: Turn off'
trigger:
- platform: state
entity_id: light.bedroom_bed
from: 'on'
to: 'off'
- platform: state
entity_id:
- light.bedroom_main
- light.living_room_main
from: 'off'
to: 'on'
condition:
- condition: state
entity_id: input_boolean.scene_sleepy_mood
state: 'on'
action:
- service: input_boolean.turn_off
entity_id: input_boolean.scene_sleepy_mood
- id: smoke_detected
alias: 'Smoke: Detected'
trigger:
- platform: state
entity_id:
- binary_sensor.kitchen_smoke
- binary_sensor.hallway_smoke
- binary_sensor.porch_smoke
from: 'off'
to: 'on'
- platform: state
id: not_a_drill
entity_id:
- binary_sensor.kitchen_smoke
- binary_sensor.hallway_smoke
- binary_sensor.porch_smoke
from: 'off'
to: 'on'
for:
minutes: 1
action:
- service: notify.mobile_app_misaka
data:
message: '🚨 Обнаружено задымление {{ state_attr(trigger.from_state.entity_id,
''alert_text'')|default('''', True) }}
'
data:
push:
sound:
name: sms-received2.caf
critical: 1
volume: 1
continue_on_error: true
- service: notify.dextor
data:
message: '🚨 Обнаружено задымление {{ state_attr(trigger.from_state.entity_id,
''alert_text'')|default('''', True) }}
'
continue_on_error: true
- id: smoke_resolved
alias: 'Smoke: Resolved'
trigger:
- platform: state
entity_id:
- binary_sensor.kitchen_smoke
- binary_sensor.hallway_smoke
- binary_sensor.porch_smoke
from: 'on'
to: 'off'
action:
- service: notify.dextor
data:
message: '🎉 Устранено задымление {{ state_attr(trigger.from_state.entity_id,
''alert_text'')|default('''', True) }}
'
- id: kitchen_status_light_update
alias: 'Kitchen: Status light update'
mode: queued
trigger:
- platform: state
entity_id:
- binary_sensor.anyone_home
- binary_sensor.freezer_door
- binary_sensor.fridge_door
- binary_sensor.time_to_take_pills
- input_select.home_mode
action:
- choose:
- conditions:
- condition: state
entity_id: binary_sensor.fridge_door
state: 'on'
sequence:
- service: light.turn_on
entity_id: light.kitchen_status
data:
brightness_pct: 50
rgbw_color:
- 7
- 44
- 255
- 0
effect: None
transition: 0.5
- conditions:
- condition: state
entity_id: binary_sensor.freezer_door
state: 'on'
sequence:
- service: light.turn_on
entity_id: light.kitchen_status
data:
brightness_pct: 50
rgbw_color:
- 255
- 110
- 0
- 0
effect: None
transition: 0.5
- conditions:
- condition: state
entity_id:
- binary_sensor.time_to_take_pills
- binary_sensor.anyone_home
state: 'on'
- condition: state
entity_id: input_select.home_mode
state: Day
sequence:
- service: light.turn_on
entity_id: light.kitchen_status
data:
brightness_pct: 100
rgbw_color:
- 252
- 0
- 181
- 0
effect: pulse
transition: 2
default:
- service: light.turn_off
entity_id: light.kitchen_status
data:
transition: 0.5
- id: living_room_tv_status_light_update
alias: 'Living Room TV Status Light: Update'
mode: queued
trigger:
- platform: state
entity_id:
- binary_sensor.anyone_home
- binary_sensor.humidifier_cleanup_notice
- input_boolean.scene_movie
- input_select.dryer_status
- input_select.home_mode
- input_select.washing_machine_status
- sensor.living_room_humidifier_water_level
- sensor.living_room_humidifier_water_tank_level
- platform: time_pattern
minutes: /10
- platform: event
event_type: living_room_tv_status_light_ack_flash_done
action:
- if:
- condition: state
entity_id: input_select.home_mode
state: Day
- condition: state
entity_id: binary_sensor.anyone_home
state: 'on'
- condition: state
entity_id: input_boolean.scene_movie
state: 'off'
then:
- choose:
- conditions:
- condition: state
entity_id:
- input_select.washing_machine_status
- input_select.dryer_status
state: Done
match: any
sequence:
- service: light.turn_on
entity_id:
- light.living_room_tv_status_left
- light.living_room_tv_status_right
data:
brightness_pct: 100
rgb_color:
- 0
- 225
- 255
- conditions:
- or:
- condition: state
entity_id: binary_sensor.humidifier_cleanup_notice
state: 'on'
- and:
- condition: state
entity_id: input_boolean.living_room_humidifier_control
state: 'on'
- condition: state
entity_id: humidifier.living_room_humidifier
state:
- 'on'
- 'off'
- or:
- and:
- condition: numeric_state
entity_id: sensor.living_room_humidifier_water_level
below: 35
above: 0
- condition: numeric_state
entity_id: sensor.living_room_humidifier_water_tank_level
below: 15
sequence:
- if:
- condition: state
entity_id: binary_sensor.humidifier_cleanup_notice
state: 'on'
then:
- service: light.turn_on
entity_id: light.living_room_tv_status_left
data:
brightness_pct: 25
rgb_color:
- 255
- 36
- 0
else:
- service: light.turn_on
entity_id: light.living_room_tv_status_left
data:
brightness_pct: 25
rgb_color:
- 255
- 110
- 0
- if:
- condition: state
entity_id: input_boolean.living_room_humidifier_control
state: 'on'
- condition: state
entity_id: humidifier.living_room_humidifier
state:
- 'on'
- 'off'
- or:
- condition: numeric_state
entity_id: sensor.living_room_humidifier_water_level
below: 35
- condition: numeric_state
entity_id: sensor.living_room_humidifier_water_tank_level
below: 15
then:
- service: light.turn_on
entity_id: light.living_room_tv_status_right
data:
brightness_pct: 25
rgb_color:
- 255
- 110
- 0
default:
- if:
- condition: state
entity_id:
- light.living_room_tv_status_left
- light.living_room_tv_status_right
state: 'on'
match: any
then:
- service: light.turn_off
entity_id:
- light.living_room_tv_status_left
- light.living_room_tv_status_right
else:
- if:
- condition: state
entity_id:
- light.living_room_tv_status_left
- light.living_room_tv_status_right
state: 'on'
match: any
then:
- service: light.turn_off
entity_id:
- light.living_room_tv_status_left
- light.living_room_tv_status_right
- id: stove_status_update
alias: Stove Status Update
trigger:
- platform: state
entity_id: sensor.kitchen_stove_power
condition:
- condition: template
value_template: '{{ trigger.to_state.state|int(0) >= 200 }}
'
action:
- service: timer.start
entity_id: timer.stove_running
- id: tuya_reload
alias: Tuya reload
trigger:
- platform: event
event_type: system_log_event
event_data:
level: ERROR
name: tuya_iot
condition:
- condition: template
value_template: '{{ ''error while get mqtt config'' in trigger.event.data.message[0]
}}'
action:
- service: logbook.log
data:
name: Tuya
message: reloaded
- delay:
seconds: 20
- service: homeassistant.reload_config_entry
data:
entry_id: 96e5c6dadc086fb3268126198c95a21d
- id: tv_warming_up
alias: 'TV: Warming up'
trigger:
- trigger: state
entity_id: media_player.tv
from: 'off'
to: 'on'
action:
- action: timer.start
entity_id: timer.tv_warming_up
- id: tv_switch_to_atv
alias: 'TV: Switch to ATV'
trigger:
- trigger: state
entity_id: switch.ps5_power
from: 'on'
to: 'off'
condition:
- condition: state
entity_id: media_player.tv
state: 'on'
- condition: state
entity_id: media_player.tv
attribute: source
state: PS5
action:
- action: media_player.select_source
entity_id: media_player.tv
data:
source: ATV
- delay:
seconds: 2
- action: remote.send_command
entity_id: remote.atv
data:
command: wakeup
- delay:
seconds: 5
- action: remote.send_command
entity_id: remote.atv
data:
command: screensaver
- id: tv_switch_to_ps5
alias: 'TV: Switch to PS5'
max_exceeded: silent
trigger:
- trigger: state
entity_id: media_player.tv
from: 'off'
to: 'on'
for:
seconds: 1
- trigger: state
entity_id: switch.ps5_power
from: 'off'
to: 'on'
for:
seconds: 20
- trigger: event
event_type: call_service
event_data:
domain: switch
service: turn_on
service_data:
entity_id: switch.ps5_power
action:
- if:
- condition: state
entity_id: timer.tv_warming_up
state: active
then:
- wait_for_trigger:
- platform: state
entity_id: timer.tv_warming_up
to: idle
timeout:
seconds: 25
continue_on_timeout: true
- condition: state
entity_id:
- media_player.tv
- switch.ps5_power
state: 'on'
- service: media_player.select_source
entity_id: media_player.living_room_tv_base
data:
source: PS5
- id: tv_set_volume_ps5
alias: 'TV: Set volume (PS5)'
trigger:
- platform: state
entity_id: media_player.tv
attribute: source
to: PS5
for:
seconds: 8
condition:
- condition: template
value_template: '{{ state_attr(''media_player.tv'', ''volume_level'')|float(0)
>= 0.41 }}
'
action:
- if:
- condition: state
entity_id: timer.tv_warming_up
state: active
then:
- wait_for_trigger:
- trigger: state
entity_id: timer.tv_warming_up
to: idle
timeout:
minutes: 1
continue_on_timeout: false
- condition: state
entity_id: switch.avr_power
state: 'on'
- service: media_player.volume_set
entity_id: media_player.tv
data:
volume_level: 0.39
- id: ups_status_alert
alias: 'UPS Status: Alert'
trigger:
- platform: state
entity_id: sensor.ups_status
not_from: unavailable
not_to: unavailable
- platform: state
entity_id: sensor.ups_status
not_from: unavailable
not_to: unavailable
for:
minutes: 5
condition:
- not:
- condition: template
value_template: '{{ ''Online'' in trigger.from_state.state and ''Online'' in
trigger.to_state.state }}
'
action:
- service: notify.dextor
data:
message: '⚡️ Изменён режим работы ИБП: {{ trigger.to_state.state }}
'
- id: home_mode_set_vacation
alias: 'Home Mode: Set Vacation'
trigger:
- platform: event
event_type: yandex_intent
event_data:
text: Включи режим отпуска
action:
- service: input_select.select_option
entity_id: input_select.home_mode
data:
option: Vacation
- service: script.yandex_station_tts
data:
target: '{{ trigger.event.data.get(''entity_id'', ''last'') }}
'
text: Дом переключен в режим отпуск, буду скучать по вам
- id: home_mode_to_vacation
alias: 'Home Mode: To Vacation'
trigger:
platform: state
entity_id: input_select.home_mode
to: Vacation
action:
- service: notify.dextor
data:
message: 🌴 Дом перевёден в режим отпуска
- service: cover.open_cover
entity_id:
- cover.bedroom
- cover.kitchen
- cover.living_room
- id: home_mode_from_vacation
alias: 'Home Mode: From vacation'
trigger:
platform: state
entity_id: input_select.home_mode
from: Vacation
action:
- service: notify.dextor
data:
message: 😟 Дом возвращён из режима отпуска
- id: scene_wait_guests_turn_on
alias: 'Scene Wait Guests: Turn on'
trigger:
- platform: event
event_type: yandex_intent
event_data:
text: Ждём гостей
action:
- service: input_boolean.turn_on
entity_id: input_boolean.scene_wait_guests
- service: script.yandex_station_tts
data:
target: '{{ trigger.event.data.get(''entity_id'', ''last'') }}
'
text: "{{ [\n 'Хорошо, открою им двери когда придут',\n 'Поняла, с нетерпением\
\ ждем',\n 'Отлично, хоть какие-то новые лица'\n ]|random\n}}\n"
- id: scene_wait_guests_turn_on_light
alias: 'Scene Wait Guests: Turn on lights'
trigger:
- platform: state
entity_id: binary_sensor.front_door
from: 'off'
to: 'on'
condition:
- condition: state
entity_id: input_boolean.scene_wait_guests
state: 'on'
- condition: state
entity_id: input_select.home_mode
state:
- Day
- Vacation
- condition: state
entity_id: light.entrance
state: 'off'
action:
- service: light.turn_on
entity_id: light.entrance
- id: scene_wait_guests_turn_off
alias: 'Scene Wait Guests: Turn off'
trigger:
- platform: state
entity_id: binary_sensor.front_door
from: 'off'
to: 'on'
- platform: state
entity_id: input_boolean.scene_wait_guests
to: 'on'
for:
hours: 1
condition:
- condition: state
entity_id: input_boolean.scene_wait_guests
state: 'on'
action:
- service: input_boolean.turn_off
entity_id: input_boolean.scene_wait_guests
- id: scene_waking_up_turned_on
alias: 'Scene Waking up: Turned on'
trigger:
- platform: state
entity_id: input_boolean.scene_waking_up
to: 'on'
action:
- service: light.turn_on
entity_id: light.bathroom_main
data:
brightness_pct: 22
- service: light.turn_off
entity_id: group.bathroom_path_lights
- id: scene_waking_up_turn_off
alias: 'Scene Waking up: Turn off'
trigger:
- platform: state
entity_id: binary_sensor.front_door
to: 'on'
- platform: state
entity_id: input_select.home_mode
from: Night
- platform: state
entity_id: input_boolean.scene_waking_up
to: 'on'
for:
hours: 2
condition:
- condition: state
entity_id: input_boolean.scene_waking_up
state: 'on'
action:
- service: input_boolean.turn_off
entity_id: input_boolean.scene_waking_up
- id: scene_waking_up_turn_off_porch_door
alias: 'Scene Waking up: Turn off (porch door)'
trigger:
- platform: state
entity_id: binary_sensor.front_door
to: 'on'
condition:
- condition: state
entity_id: input_boolean.scene_waking_up
state: 'on'
action:
- wait_for_trigger:
- platform: state
entity_id: binary_sensor.porch_door
to: 'off'
timeout:
minutes: 3
- service: input_boolean.turn_off
entity_id: input_boolean.scene_waking_up
- id: wardrobe_light_turn_on
alias: 'Wardrobe Light: Turn on'
trigger:
- platform: state
entity_id: binary_sensor.wardrobe_door
from: 'off'
to: 'on'
- platform: state
entity_id: binary_sensor.wardrobe_motion
from: 'off'
to: 'on'
condition:
- condition: state
entity_id: input_boolean.light_control
state: 'on'
- condition: state
entity_id: light.wardrobe
state: 'off'
action:
- service: light.turn_on
entity_id: light.wardrobe
data:
brightness_pct: "{%- if is_state('binary_sensor.dim_light', 'on') -%}\n 20\n\
{%- elif is_state('input_select.home_mode', 'Night') -%}\n 5\n{%- else -%}\n\
\ 100\n{%- endif -%}\n"
- id: wardrobe_light_turn_off
alias: 'Wardorbe Light: Turn off'
trigger:
- platform: state
entity_id: binary_sensor.wardrobe_door
to: 'off'
for:
milliseconds: 500
- id: no_motion
platform: state
entity_id: binary_sensor.wardrobe_motion
from: 'on'
to: 'off'
for:
minutes: 5
condition:
- condition: state
entity_id:
- input_boolean.light_control
- input_boolean.wardrobe_light_control
- light.wardrobe
state: 'on'
action:
- if:
- condition: trigger
id: no_motion
then:
- service: light.turn_off
entity_id: light.wardrobe
data:
transition: 10
else:
- service: light.turn_off
entity_id: light.wardrobe
- id: wardrobe_light_control_turn_on
alias: 'Wardrobe Light Control: Turn on'
trigger:
- platform: state
entity_id: light.wardrobe
to: 'off'
condition:
- condition: state
entity_id: input_boolean.wardrobe_light_control
state: 'off'
action:
- service: input_boolean.turn_on
entity_id: input_boolean.wardrobe_light_control
- id: wardrobe_light_control_turn_off
alias: 'Wardrobe Light Control: Turn off'
trigger:
- platform: event
event_type: yandex_intent
event_data:
text: Не выключай свет в гардеробе
action:
- service: input_boolean.turn_off
entity_id: input_boolean.wardrobe_light_control
- id: washing_machine_cycle
alias: 'Washing Machine: Cycle'
max_exceeded: silent
trigger:
platform: numeric_state
entity_id: sensor.washing_machine_power
above: 5
for:
seconds: 15
condition:
- condition: state
entity_id: input_select.washing_machine_status
state: Idle
action:
- service: input_select.select_option
entity_id: input_select.washing_machine_status
data:
option: Running
- wait_for_trigger:
- platform: numeric_state
entity_id: sensor.washing_machine_power
below: 1
for:
minutes: 2
timeout:
hours: 4
continue_on_timeout: true
- condition: state
entity_id: input_select.washing_machine_status
state: Running
- service: input_select.select_option
entity_id: input_select.washing_machine_status
data:
option: Done
- id: washing_machine_door_open
alias: 'Washing Machine: Door open'
trigger:
platform: state
entity_id: binary_sensor.washing_machine_door
from: 'off'
to: 'on'
condition:
- condition: state
entity_id: input_select.washing_machine_status
state:
- Running
- Done
action:
- service: input_select.select_option
entity_id: input_select.washing_machine_status
data:
option: Idle
- id: washing_machine_idle
alias: 'Washing Machine: Idle'
trigger:
platform: state
entity_id: input_select.washing_machine_status
to: Idle
action:
- service: input_number.set_value
entity_id: input_number.washing_machine_done_alert_count
data:
value: 0
- id: washing_machine_done_alert
alias: 'Washing Machine: Done alert'
trigger:
- platform: time_pattern
minutes: /32
- platform: state
entity_id: input_select.washing_machine_status
from: Running
to: Done
condition:
- condition: state
entity_id: binary_sensor.anyone_home
state: 'on'
- condition: state
entity_id: input_select.home_mode
state:
- Day
- Vacation
- condition: state
entity_id: input_select.washing_machine_status
state: Done
- condition: numeric_state
entity_id: input_number.washing_machine_done_alert_count
below: 4
- condition: template
value_template: '{{ (now() - states.input_number.washing_machine_done_alert_count.last_changed).total_seconds()
> 900 }}
'
action:
- wait_template: '{{ not is_state(''media_player.atv'', [''playing'', ''pause''])
}}
'
timeout:
minutes: 28
continue_on_timeout: true
- service: script.yandex_station_tts
data:
target: all
type: attention
text: "{{ states.sensor.alert_greeting.state }} {{ [\n 'Стиральная машина\
\ ждёт тебя, в ней что-то есть.',\n 'Стиральная машина закончила, пора\
\ достать из неё бельё.',\n 'Стиральная машина ждет тебя, у неё для тебя\
\ есть подарок.',\n ]|random\n}} {% if states('input_number.washing_machine_done_alert_count')|int\
\ == 2 %}\n Если я ошиблась - закрой дверцу машины и открой снова.\n{% endif\
\ %} {% if states('input_number.washing_machine_done_alert_count')|int ==\
\ 3 %}\n Это последнее предупреждение! Мокрое белье останется там навсегда!\n\
{% endif %}\n"
- service: input_number.increment
entity_id: input_number.washing_machine_done_alert_count
- id: washing_machine_status
alias: 'Washing Machine: Status'
trigger:
platform: event
event_type: yandex_intent
event_data:
text: Что со стиральной машиной
action:
- service: script.yandex_station_tts
data:
target: '{{ trigger.event.data.get(''entity_id'', ''last'') }}
'
text: "Стиралка {% if is_state('input_select.washing_machine_status', 'Running')\
\ %}\n делает вжух-вжух. Скоро вещи будут чистыми и пахнуть порошочком\n\
{% elif is_state('input_select.washing_machine_status', 'Done') %}\n закончила,\
\ доставай быстрее из неё белье и закидывай новое\n{% elif is_state('input_select.washing_machine_status',\
\ 'Idle') %}\n простаивает без дела. А как там корзина с грязным бельём?\n\
{% endif %}\n"
- id: water_leak_detected
alias: 'Water leak: Detected'
trigger:
- platform: state
entity_id:
- binary_sensor.kitchen_water_leak
- binary_sensor.closet_water_leak
- binary_sensor.bathroom_washing_machine_water_leak
- binary_sensor.bathroom_sink_water_leak
- binary_sensor.bathroom_toilet_water_leak
- binary_sensor.bathroom_hot_water_meter_leak
- binary_sensor.bathroom_cold_water_meter_leak
from: 'off'
to: 'on'
- platform: state
entity_id:
- binary_sensor.kitchen_water_leak
- binary_sensor.closet_water_leak
- binary_sensor.bathroom_washing_machine_water_leak
- binary_sensor.bathroom_sink_water_leak
- binary_sensor.bathroom_toilet_water_leak
- binary_sensor.bathroom_hot_water_meter_leak
- binary_sensor.bathroom_cold_water_meter_leak
from: 'off'
to: 'on'
for:
minutes: 5
action:
- choose:
- conditions:
- condition: template
value_template: '{{ area_name(trigger.entity_id) == ''Kitchen'' }}
'
sequence:
- service: switch.turn_off
entity_id:
- switch.kitchen_hot_water_valve
- switch.kitchen_cold_water_valve
- switch.dishwasher_socket
continue_on_error: true
- conditions:
- condition: template
value_template: '{{ area_name(trigger.entity_id) in (''Bathroom'', ''Closet'')
}}
'
sequence:
- service: switch.turn_off
entity_id:
- switch.bathroom_hot_water_valve
- switch.bathroom_cold_water_valve
- switch.washing_machine_socket
- switch.water_heater_socket
continue_on_error: true
default:
- service: switch.turn_off
entity_id:
- switch.kitchen_hot_water_valve
- switch.kitchen_cold_water_valve
- switch.bathroom_hot_water_valve
- switch.bathroom_cold_water_valve
- switch.dishwasher_socket
- switch.washing_machine_socket
- switch.water_heater_socket
continue_on_error: true
- service: notify.mobile_app_misaka
data:
message: '🚨 Обнаружена протечка {{ state_attr(trigger.from_state.entity_id,
''alert_text'')|default('''', True) }}
'
data:
push:
sound:
name: sms-received2.caf
critical: 1
volume: 1
continue_on_error: true
- service: notify.dextor
data:
message: '🚨 Обнаружена протечка {{ state_attr(trigger.from_state.entity_id,
''alert_text'')|default('''', True) }}
'
continue_on_error: true
- service: script.yandex_station_tts
data:
target: all
type: alert
text: 'Обнаружена протечка {{ state_attr(trigger.from_state.entity_id, ''alert_text'')|default('''',
True) }}. Повторяю. Обнаружена протечка!
'
- delay:
seconds: 25
- service: script.yandex_station_tts
data:
target: all
type: attention
text: 'Если протечки нет, скажи Алиса, включи воду или нажми кнопки на вентилях
вручную.
'
- id: water_leak_resolved
alias: 'Water leak: Resolved'
trigger:
- platform: state
entity_id:
- binary_sensor.kitchen_water_leak
- binary_sensor.closet_water_leak
- binary_sensor.bathroom_washing_machine_water_leak
- binary_sensor.bathroom_sink_water_leak
- binary_sensor.bathroom_toilet_water_leak
- binary_sensor.bathroom_hot_water_meter_leak
- binary_sensor.bathroom_cold_water_meter_leak
from: 'on'
to: 'off'
action:
- service: notify.dextor
data:
message: '🎉 Устранена протечка {{ state_attr(trigger.from_state.entity_id, ''alert_text'')|default('''',
True) }}
'
- id: water_heater_turn_on
alias: 'Water Heater: Turn on'
trigger:
- platform: state
entity_id:
- input_select.dryer_status
- input_select.washing_machine_status
to:
- Idle
- Done
condition:
- condition: state
entity_id:
- input_boolean.hot_water_supply
- switch.water_heater_socket
state: 'off'
- condition: state
entity_id:
- input_select.dryer_status
- input_select.washing_machine_status
state:
- Idle
- Done
action:
- service: switch.turn_on
entity_id: switch.water_heater_socket
- id: water_heater_turn_off
alias: 'Water Heater: Turn off'
trigger:
- platform: state
entity_id: switch.water_heater_socket
to: 'on'
- platform: time_pattern
minutes: /1
condition:
- or:
- condition: state
entity_id:
- switch.water_heater_socket
- input_boolean.hot_water_supply
state: 'on'
- condition: state
entity_id:
- input_select.dryer_status
- input_select.washing_machine_status
state: Running
match: any
- condition: state
entity_id: switch.water_heater_socket
state: 'on'
action:
- service: switch.turn_off
entity_id: switch.water_heater_socket
- id: scene_welcome_home_on
alias: 'Scene Welcome Home: Turn on'
trigger:
- platform: state
entity_id: binary_sensor.entrance_motion
to: 'on'
condition:
- condition: template
value_template: '{% set no_one_home_seconds = (as_timestamp(now()) - state_attr(''input_datetime.anyone_home_last_seen'',
''timestamp''))|int %} {{ no_one_home_seconds > (5 * 60) }}
'
- condition: state
entity_id: input_select.home_mode
state:
- Day
- Vacation
- condition: state
entity_id: timer.front_door_unlocked
state: active
- condition: state
entity_id: timer.scene_welcome_home
state: idle
action:
- service: timer.start
entity_id: timer.scene_welcome_home
- service: timer.cancel
entity_id: timer.front_door_unlocked
- service: light.turn_on
entity_id: light.entrance
- if:
- condition: state
entity_id: input_select.home_mode
state: Vacation
then:
- if:
- condition: state
entity_id: binary_sensor.anyone_home
state: 'off'
then:
- wait_for_trigger:
- platform: state
entity_id: binary_sensor.anyone_home
to: 'on'
timeout:
minutes: 7
continue_on_timeout: false
- service: input_select.select_option
entity_id: input_select.home_mode
data:
option: Day
- service: script.yandex_station_tts
data:
target: media_player.kitchen_station
type: announce
text: "<speaker audio=\"alice-sounds-game-win-1.opus\"> {% set v = [\n 'Отдых\
\ - хорошо, но дома лучше. С возвращением!',\n 'Добро пожаловать домой,\
\ я вас заждалась!',\n] %} {{ v|random }}\n"
else:
- service: script.yandex_station_tts
data:
target: media_player.kitchen_station
type: announce
text: "<speaker audio=\"alice-sounds-game-powerup-1.opus\"> {% set v = [\n\
\ '%s с возвращением!' % (states('sensor.alert_greeting')),\n '%s наконец-то\
\ %s дома' % (states('sensor.alert_greeting'), states('sensor.person_pronoun_nom')),\n\
\ '%s как хорошо, когда %s снова дома' % (states('sensor.alert_greeting'),\
\ states('sensor.person_pronoun_nom')),\n '%s добро пожаловать домой' %\
\ (states('sensor.alert_greeting')),\n] %} {{ v|random }}\n"
- id: workshop_ac_turn_off
alias: 'Workshop AC: Turn off'
trigger:
- platform: state
entity_id: binary_sensor.anyone_home
from: 'on'
to: 'off'
for:
minutes: 40
- platform: state
entity_id: input_boolean.scene_sleepy_mood
from: 'off'
to: 'on'
- platform: state
entity_id: input_select.home_mode
from: Day
- platform: state
entity_id: climate.workshop_ac
to:
- heat_cool
- cool
- heat
- dry
for:
hours: 12
condition:
- condition: state
entity_id: climate.workshop_ac
state:
- heat_cool
- cool
- heat
- dry
action:
- service: climate.turn_off
entity_id: climate.workshop_ac
- id: workshop_ac_turn_off_protect
alias: 'Workshop AC: Turn off (protect)'
trigger:
- platform: time_pattern
seconds: /30
- platform: state
entity_id:
- climate.workshop_ac
- input_select.washing_machine_status
condition:
- condition: or
conditions:
- and:
- condition: state
entity_id: input_select.washing_machine_status
state: Running
- condition: state
entity_id: climate.bedroom_ac
state:
- heat_cool
- cool
- heat
- dry
- condition: numeric_state
entity_id: sensor.outside_temperature
below: -15
- condition: state
entity_id: climate.workshop_ac
state:
- heat_cool
- cool
- heat
- dry
action:
- service: climate.turn_off
entity_id: climate.workshop_ac
- id: xmas_lights_turn_on
alias: 'Xmas Lights: Turn on'
trigger:
- platform: state
entity_id: input_select.home_mode
to: Day
- platform: state
entity_id: timer.scene_welcome_home
to: active
condition:
- condition: state
entity_id:
- input_boolean.light_control
- input_boolean.xmas_lighting
state: 'on'
action:
- service: light.turn_on
entity_id:
- light.xmas_hallway_tree
- light.xmas_front_door
- light.xmas_kitchen
- id: xmas_lights_turn_off
alias: 'Xmas Lights: Turn off'
trigger:
- platform: state
entity_id: binary_sensor.dim_light
to: 'on'
for:
seconds: 3
- id: bedroom_bed_button_single_press
trigger: device
domain: mqtt
device_id: 620c20157f0cbf8a0249f3f083a531ff
type: action
subtype: single
condition:
- condition: state
entity_id:
- input_boolean.light_control
- input_boolean.xmas_lighting
state: 'on'
action:
- service: light.turn_off
entity_id:
- light.elka
- light.xmas_living_room_curtains
- light.xmas_hallway_tree
- light.xmas_hallway_wall
- light.xmas_workshop_door
- light.xmas_front_door
- light.xmas_kitchen
- id: xmas_elka_turn_on
alias: 'Xmas Elka Light: Turn on'
mode: single
max_exceeded: silent
trigger:
- platform: state
entity_id: input_select.home_mode
to: Day
- platform: state
entity_id:
- light.living_room_backlight
- light.living_room_main
- platform: state
entity_id: binary_sensor.evening_time
from: 'off'
to: 'on'
- platform: state
entity_id: timer.scene_welcome_home
to: active
condition:
- condition: state
entity_id:
- input_boolean.light_control
- input_boolean.xmas_lighting
state: 'on'
- condition: state
entity_id: input_select.home_mode
state: Day
- condition: state
entity_id: binary_sensor.dim_light
state: 'off'
- condition: template
value_template: '{{ states(''light.elka'') not in [''unavailable'', ''unknown'']
}}
'
action:
- if:
- or:
- condition: state
entity_id: binary_sensor.evening_time
state: 'off'
- condition: state
entity_id: light.living_room_main
state: 'on'
then:
- service: light.turn_on
entity_id: light.elka
data:
brightness_pct: 100
else:
- service: light.turn_on
entity_id: light.elka
data:
brightness_pct: 23
- id: xmas_hallway_light_turn_on
alias: 'Xmas Hallway Light: Turn on'
trigger:
- platform: state
entity_id:
- light.entrance
- light.hallway
from: 'off'
to: 'on'
condition:
- condition: state
entity_id:
- input_boolean.light_control
- input_boolean.xmas_lighting
state: 'on'
- condition: state
entity_id:
- light.xmas_hallway_wall
- light.xmas_workshop_door
match: any
state: 'off'
action:
- service: light.turn_on
entity_id:
- light.xmas_hallway_wall
- light.xmas_workshop_door
- id: xmas_hallway_wall_light_turn_on
alias: 'Xmas Hallway Wall Light: Turn on'
trigger:
- platform: state
entity_id: light.hallway_path
from: 'off'
to: 'on'
condition:
- condition: state
entity_id:
- input_boolean.light_control
- input_boolean.xmas_lighting
state: 'on'
- condition: state
entity_id: input_select.home_mode
state: Day
- condition: state
entity_id:
- binary_sensor.dim_light
- light.xmas_hallway_wall
state: 'off'
action:
- service: light.turn_on
entity_id: light.xmas_hallway_wall
data:
brightness_pct: 100
- id: xmas_hallway_wall_light_turn_off'
alias: 'Xmas Hallway Wall Light: Turn off'
trigger:
- platform: state
entity_id: light.hallway_path
from: 'on'
to: 'off'
for:
seconds: 10
condition:
- condition: state
entity_id:
- input_boolean.light_control
- input_boolean.xmas_lighting
state: 'on'
- condition: state
entity_id: input_select.home_mode
state: Day
- condition: state
entity_id: light.xmas_hallway_wall
state: 'on'
- condition: state
entity_id:
- light.hallway
- light.entrance
state: 'off'
action:
- service: light.turn_off
entity_id: light.xmas_hallway_wall
- id: xmas_workshop_door_light_turn_on
alias: 'Xmas Workshop Door Light: Turn on'
trigger:
- platform: state
entity_id: light.hallway_path
from: 'off'
to: 'on'
condition:
- condition: state
entity_id:
- input_boolean.light_control
- input_boolean.xmas_lighting
state: 'on'
- condition: state
entity_id: input_select.home_mode
state: Day
- condition: state
entity_id:
- binary_sensor.dim_light
- light.xmas_workshop_door
state: 'off'
action:
- service: light.turn_on
entity_id: light.xmas_workshop_door
- id: xmas_workshop_door_light_turn_off
alias: 'Xmas Workshop Door Light: Turn off'
trigger:
- platform: state
entity_id: light.hallway_path
from: 'on'
to: 'off'
for:
seconds: 10
condition:
- condition: state
entity_id:
- input_boolean.light_control
- input_boolean.xmas_lighting
state: 'on'
- condition: state
entity_id: light.xmas_workshop_door
state: 'on'
- condition: state
entity_id:
- light.hallway
- light.entrance
state: 'off'
action:
- service: light.turn_off
entity_id: light.xmas_workshop_door
- id: xmas_living_room_curtains_light_turn_on
alias: 'Xmas Living Room Curtains Light: Turn on'
mode: single
max_exceeded: silent
trigger:
- platform: state
entity_id:
- light.living_room_backlight
- light.living_room_main
- platform: state
entity_id: cover.living_room
from: open
to: closed
condition:
- condition: state
entity_id:
- input_boolean.light_control
- input_boolean.xmas_lighting
state: 'on'
- condition: state
entity_id: input_select.home_mode
state: Day
- condition: state
entity_id: binary_sensor.dim_light
state: 'off'
- condition: state
entity_id: cover.living_room
state: closed
action:
- delay:
seconds: 2
- condition: state
entity_id: group.living_room_lights
state: 'on'
- if:
- or:
- condition: state
entity_id: light.living_room_main
state: 'on'
- and:
- condition: state
entity_id: light.living_room_backlight
state: 'on'
- condition: numeric_state
entity_id: light.living_room_backlight
attribute: brightness
above: 200
then:
- service: light.turn_on
entity_id: light.xmas_living_room_curtains
data:
brightness_pct: 100
else:
- service: light.turn_on
entity_id: light.xmas_living_room_curtains
data:
brightness_pct: 30
- id: xmas_living_room_curtains_light_turn_off
alias: 'Xmas Living Room Curtains Light: Turn off'
trigger:
- platform: state
entity_id: group.living_room_lights
to: 'off'
- platform: state
entity_id: cover.living_room
to: open
condition:
- condition: state
entity_id:
- input_boolean.light_control
- input_boolean.xmas_lighting
state: 'on'
- condition: state
entity_id: light.xmas_living_room_curtains
state: 'on'
action:
- service: light.turn_off
entity_id: light.xmas_living_room_curtains
- id: yandex_station_busy
alias: 'Yandex Station: Busy'
mode: single
max_exceeded: silent
trigger:
platform: state
entity_id:
- media_player.living_room_station
- media_player.workshop_station
- media_player.bedroom_station
- media_player.kitchen_station
attribute: alice_state
from: LISTENING
to: BUSY
action:
- service: input_text.set_value
entity_id: input_text.yandex_station_last
data:
value: '{{ trigger.entity_id }}'
- id: yandex_station_volume_update
alias: 'Yandex Station: Volume update'
trigger:
- platform: state
entity_id: input_select.home_mode
to:
- Day
- Night
action:
- if:
- condition: template
value_template: '{{ trigger.to_state.state == ''Day'' }}
'
then:
- service: input_number.set_value
entity_id: input_number.yandex_station_alert_volume
data:
value: 0.7
- service: input_number.set_value
entity_id: input_number.yandex_station_attention_volume
data:
value: 0.5
- if:
- condition: template
value_template: '{{ trigger.to_state.state == ''Night'' }}
'
then:
- service: input_number.set_value
entity_id: input_number.yandex_station_alert_volume
data:
value: 0.5
- service: input_number.set_value
entity_id: input_number.yandex_station_attention_volume
data:
value: 0.4
- id: zigbee_device_leave
alias: 'Zigbee: Device leave'
trigger:
platform: mqtt
topic: zigbee2mqtt/bridge/event
payload: device_leave
value_template: '{{ value_json.type }}'
action:
- service: notify.dextor
data:
message: ✂️ Какое-то устройство вывалилось из сети