2718 lines
83 KiB
YAML
2718 lines
83 KiB
YAML
- alias: 3D Printer - Print Done
|
||
id: 3d_printer_print_done
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: binary_sensor.octoprint_printing
|
||
from: 'on'
|
||
to: 'off'
|
||
actions:
|
||
- action: notify.mobile_app_sm_s901b
|
||
data:
|
||
title: 3D Printer
|
||
message: 🎉 Печать завершена!
|
||
- alias: 3D Printer - Print Progress
|
||
id: 3d_printer_print_progress
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: sensor.octoprint_job_percentage
|
||
conditions:
|
||
- condition: template
|
||
value_template: "{{ (trigger.to_state.state | int(0)) > 0 and\n ((trigger.to_state.state\
|
||
\ | int(0)) != (trigger.from_state.state | int(0))) and\n (trigger.to_state.state\
|
||
\ | int(0)) % 10 == 0 }}\n"
|
||
actions:
|
||
- action: notify.mobile_app_sm_s901b
|
||
data_template:
|
||
title: 3D Printer
|
||
message: 📈 Деталь готова на {{ states('sensor.octoprint_job_percentage') | int(0)
|
||
}}%
|
||
- alias: 3D Printer - Print Paused
|
||
id: 3d_printer_print_paused
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: sensor.octoprint_current_state
|
||
from: Printing
|
||
to:
|
||
- Paused
|
||
- Pausing
|
||
actions:
|
||
- action: notify.mobile_app_sm_s901b
|
||
data:
|
||
title: ⚠️ 3D Printer
|
||
message: Печать приостановлена!
|
||
- alias: 3D Printer - Print Resumed
|
||
id: 3d_printer_print_resumed
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: sensor.octoprint_current_state
|
||
from:
|
||
- Paused
|
||
- Pausing
|
||
to: Printing
|
||
actions:
|
||
- action: notify.mobile_app_sm_s901b
|
||
data:
|
||
title: ⚠️ 3D Printer
|
||
message: Печать возобновлена
|
||
- alias: 3D Printer - Overheated
|
||
id: 3d_printer_overheated
|
||
triggers:
|
||
- trigger: state
|
||
entity_id:
|
||
- sensor.octoprint_actual_bed_temp
|
||
- sensor.octoprint_actual_tool0_temp
|
||
conditions:
|
||
- or:
|
||
- condition: template
|
||
value_template: '{{ states(''sensor.octoprint_actual_bed_temp'') | int(0) >
|
||
100 }}
|
||
|
||
'
|
||
- condition: template
|
||
value_template: '{{ states(''sensor.octoprint_actual_tool0_temp'') | int(0)
|
||
> 250 }}
|
||
|
||
'
|
||
actions:
|
||
- action: notify.mobile_app_sm_s901b
|
||
data:
|
||
title: 🌡️ 3D Printer перегрелся!
|
||
message: '🛏️ Температура стола: {{ states(''sensor.octoprint_actual_bed_temp'')
|
||
}}°C
|
||
|
||
🔥 Температура хотенда: {{ states(''sensor.octoprint_actual_tool0_temp'') }}°C
|
||
|
||
'
|
||
- alias: 3D Printer - Power On
|
||
id: 3d_printer_power_on
|
||
mode: restart
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: input_boolean.3d_printer_and_octo_power
|
||
from: 'off'
|
||
to: 'on'
|
||
conditions:
|
||
- condition: state
|
||
entity_id: switch.3d_printer_socket
|
||
state: 'off'
|
||
actions:
|
||
- action: switch.turn_on
|
||
entity_id: switch.3d_printer_socket
|
||
- alias: 3D Printer - Power Sync
|
||
id: 3d_printer_power_sync
|
||
mode: single
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: switch.3d_printer_socket
|
||
conditions:
|
||
- condition: template
|
||
value_template: '{{ states(''switch.3d_printer_socket'') != states(''input_boolean.3d_printer_and_octo_power'')
|
||
}}
|
||
|
||
'
|
||
- condition: template
|
||
value_template: '{{ is_state_attr(''automation.3d_printer_power_off'', ''current'',
|
||
0) }}
|
||
|
||
'
|
||
actions:
|
||
- if:
|
||
- condition: state
|
||
entity_id: switch.3d_printer_socket
|
||
state: 'on'
|
||
then:
|
||
- action: input_boolean.turn_on
|
||
entity_id: input_boolean.3d_printer_and_octo_power
|
||
else:
|
||
- action: input_boolean.turn_off
|
||
entity_id: input_boolean.3d_printer_and_octo_power
|
||
- alias: 3D Printer - Power Off
|
||
id: 3d_printer_power_off
|
||
mode: restart
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: input_boolean.3d_printer_and_octo_power
|
||
from: 'on'
|
||
to: 'off'
|
||
conditions:
|
||
- condition: state
|
||
entity_id: switch.3d_printer_socket
|
||
state: 'on'
|
||
actions:
|
||
- if:
|
||
- condition: template
|
||
value_template: '{{ states(''sensor.octoprint_current_state'') != ''Operational''
|
||
}}'
|
||
then:
|
||
- action: input_boolean.turn_on
|
||
entity_id: input_boolean.3d_printer_and_octo_power
|
||
- action: notify.mobile_app_sm_s901b
|
||
data:
|
||
title: ⚠️ 3D Printer
|
||
message: 'Невозможно выключить Octoprint сервер в состонии «{{ states(''sensor.octoprint_current_state'')
|
||
}}».
|
||
|
||
Питания НЕ отключено!
|
||
|
||
'
|
||
else:
|
||
- action: script.turn_on
|
||
entity_id: script.octoprint_shutdown
|
||
- wait_template: '{{ states(''sensor.octoprint_current_state'') == ''unavailable''
|
||
}}'
|
||
timeout: 00:03:00
|
||
- if:
|
||
- condition: template
|
||
value_template: '{{ states(''sensor.octoprint_current_state'') != ''unavailable''
|
||
}}'
|
||
then:
|
||
- action: input_boolean.turn_on
|
||
entity_id: input_boolean.3d_printer_and_octo_power
|
||
- action: notify.mobile_app_sm_s901b
|
||
data:
|
||
title: ⚠️ 3D Printer
|
||
message: 'Не удалось выключить Octoprint сервер.
|
||
|
||
Питания НЕ отключено!
|
||
|
||
'
|
||
else:
|
||
- action: switch.turn_off
|
||
entity_id: switch.3d_printer_socket
|
||
- action: input_boolean.turn_off
|
||
entity_id: input_boolean.3d_printer_and_octo_power
|
||
- alias: Notification Air Quality Bad
|
||
id: notification_air_quality_bad
|
||
triggers:
|
||
- trigger: numeric_state
|
||
entity_id: sensor.air_quality_station_iaq
|
||
above: 200
|
||
for: 00:02:00
|
||
conditions:
|
||
- condition: state
|
||
entity_id: input_boolean.home_night_mode
|
||
state: 'off'
|
||
actions:
|
||
- if:
|
||
- condition: template
|
||
value_template: '{{ not is_state(''media_player.yandex_station_midi'', ''playing'')
|
||
}}'
|
||
then:
|
||
- action: media_player.play_media
|
||
entity_id: media_player.yandex_station_midi
|
||
data:
|
||
media_content_type: text
|
||
media_content_id: "Замечено плохое качество воздуха в доме,\n{% if states('binary_sensor.windows')\
|
||
\ == 'off' %}\n советую открыть окно.\n{% else %}\n советую закрыть окно\n\
|
||
\ {% if states('binary_sensor.bedroom_window_contact') == 'on' %}\n \
|
||
\ в спальне\n {% endif %}\n {% if states('binary_sensor.kitchen_window_contact')\
|
||
\ == 'on' %}\n {% if states('binary_sensor.bedroom_window_contact') ==\
|
||
\ 'on' %}\n {% if states('binary_sensor.living_room_window_contact')\
|
||
\ == 'on' %}\n ,\n {% else %}\n и\n {% endif %}\n\
|
||
\ {% endif %}\n на кухне\n {% endif %}\n {% if states('binary_sensor.living_room_window_contact')\
|
||
\ == 'on' %}\n {% if states('binary_sensor.bedroom_window_contact') ==\
|
||
\ 'on' or states('binary_sensor.kitchen_window_contact') == 'on' %}\n \
|
||
\ и\n {% endif %}\n в гостинной.\n {% endif %}\n{% endif %}\n"
|
||
- action: notify.mobile_app_sm_s901b
|
||
data:
|
||
title: 🌬 Качество воздуха
|
||
message: 'Качество воздуха в доме ухудшилось и составляет {{ states(''sensor.air_quality_station_iaq'')
|
||
}}.
|
||
|
||
'
|
||
- action: automation.turn_on
|
||
entity_id:
|
||
- automation.notification_air_quality_restored
|
||
- automation.notification_air_quality_open_window_greeting
|
||
- action: input_datetime.set_datetime
|
||
data:
|
||
entity_id: input_datetime.air_quality_open_window_greeting_timeout
|
||
datetime: '{{ now() + timedelta(minutes=2) }}'
|
||
- action: automation.turn_off
|
||
entity_id: automation.notification_air_quality_bad
|
||
- alias: Notification Air Quality Open Window Greeting
|
||
id: notification_air_quality_open_window_greeting
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: binary_sensor.windows
|
||
from: 'off'
|
||
to: 'on'
|
||
conditions:
|
||
- condition: state
|
||
entity_id: input_boolean.home_night_mode
|
||
state: 'off'
|
||
actions:
|
||
- if:
|
||
- condition: template
|
||
value_template: '{{ as_timestamp(now()) < as_timestamp(states(''input_datetime.air_quality_open_window_greeting_timeout''),
|
||
0) }}'
|
||
- condition: template
|
||
value_template: '{{ not is_state(''media_player.yandex_station_midi'', ''playing'')
|
||
}}'
|
||
then:
|
||
- action: media_player.play_media
|
||
entity_id: media_player.yandex_station_midi
|
||
data:
|
||
media_content_type: text
|
||
media_content_id: Молодец! Рада, что вы заботитесь о своём здоровье.
|
||
- action: automation.turn_off
|
||
entity_id: automation.notification_air_quality_open_window_greeting
|
||
- alias: Notification Air Quality Restored
|
||
id: notification_air_quality_restored
|
||
triggers:
|
||
- trigger: numeric_state
|
||
entity_id: sensor.air_quality_station_iaq
|
||
below: 50
|
||
for: 00:02:00
|
||
conditions:
|
||
- condition: state
|
||
entity_id: input_boolean.home_night_mode
|
||
state: 'off'
|
||
actions:
|
||
- if:
|
||
- condition: template
|
||
value_template: '{{ not is_state(''media_player.yandex_station_midi'', ''playing'')
|
||
}}'
|
||
then:
|
||
- action: media_player.play_media
|
||
entity_id: media_player.yandex_station_midi
|
||
data:
|
||
media_content_type: text
|
||
media_content_id: Качество воздуха в доме вернулось в норму.
|
||
- action: notify.mobile_app_sm_s901b
|
||
data:
|
||
title: 🌬 Качество воздуха
|
||
message: 'Качество воздуха в доме улучшилось и составляет {{ states(''sensor.air_quality_station_iaq'')
|
||
}}.
|
||
|
||
'
|
||
- action: automation.turn_on
|
||
entity_id: automation.notification_air_quality_bad
|
||
- action: automation.turn_off
|
||
entity_id:
|
||
- automation.notification_air_quality_restored
|
||
- automation.notification_air_quality_open_window_greeting
|
||
- alias: Alert to TTS Handler
|
||
id: alert_to_tts_handler
|
||
mode: single
|
||
max_exceeded: silent
|
||
variables:
|
||
alerts_map:
|
||
alert.water_leakage_bathroom:
|
||
- Обнаружена утечка воды в ванной
|
||
- Утечка воды в ванной устранена
|
||
alert.water_leakage_kitchen:
|
||
- Обнаружена утечка воды на кухне
|
||
- Утечка воды на кухне устранена
|
||
alert.carbon_monoxide_detected:
|
||
- Обнаружена высокая концентрация угарного газа на кухне
|
||
- Концентрация угарного газа на кухне вернулась в норму
|
||
alert.natural_gas_detected:
|
||
- Обнаружена утечка газа на кухне
|
||
- Утечка газа на кухне устранена
|
||
triggers:
|
||
- trigger: state
|
||
entity_id:
|
||
- alert.water_leakage_bathroom
|
||
- alert.water_leakage_kitchen
|
||
- alert.carbon_monoxide_detected
|
||
- alert.natural_gas_detected
|
||
actions:
|
||
- if:
|
||
- condition: template
|
||
value_template: '{{ trigger.to_state.state in [''on'', ''idle''] }}'
|
||
then:
|
||
- action: notify.mobile_app_sm_s901b
|
||
data:
|
||
message: TTS
|
||
data:
|
||
priority: high
|
||
channel: alarm_stream_max
|
||
media_stream: alarm_stream_max
|
||
tts_text: "{% if trigger.to_state.state == 'on' %}\n Внимание! {{ alerts_map[trigger.entity_id][0]\
|
||
\ }}!\n{% else %}\n {{ alerts_map[trigger.entity_id][1] }}.\n{% endif\
|
||
\ %}\n"
|
||
- alias: DCC-EX Enable Power on Sunset
|
||
id: dcc_ex_enable_power_on_sunset
|
||
triggers:
|
||
- trigger: numeric_state
|
||
entity_id: sun.sun
|
||
attribute: elevation
|
||
below: 4.0
|
||
- trigger: state
|
||
entity_id: person.sen
|
||
to: home
|
||
conditions:
|
||
- condition: state
|
||
entity_id: person.sen
|
||
state: home
|
||
- condition: numeric_state
|
||
entity_id: sun.sun
|
||
attribute: elevation
|
||
below: 4.0
|
||
- condition: state
|
||
entity_id: input_boolean.home_night_mode
|
||
state: 'off'
|
||
actions:
|
||
- action: switch.turn_on
|
||
target:
|
||
entity_id:
|
||
- switch.ex_commandstation_tracks_power
|
||
- switch.loco_sbb_cargo_re_482_coupling
|
||
- alias: DCC-EX Layout Lights by Motion Sensor
|
||
id: dcc_ex_layout_lights_by_motion_sensor
|
||
description: Control train layout lights based on motion sensor
|
||
mode: restart
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: binary_sensor.kitchen_motion_alarm
|
||
conditions:
|
||
- condition: state
|
||
entity_id: switch.ex_commandstation_tracks_power
|
||
state: 'on'
|
||
- condition: template
|
||
value_template: '{{ trigger.to_state.state in [''on'', ''off''] }}'
|
||
actions:
|
||
- action: switch.turn_{{ "on" if trigger.to_state.state == "on" else "off" }}
|
||
entity_id:
|
||
- switch.dcc_ex_vossloh_cabin_lights
|
||
- switch.loco_sbb_cargo_re_482_inspection_lights
|
||
- alias: Guest Mode Reset
|
||
id: guest_mode_reset
|
||
mode: restart
|
||
triggers:
|
||
- platform: time
|
||
at: input_datetime.guest_mode_disable_time
|
||
- platform: homeassistant
|
||
event: start
|
||
conditions:
|
||
- condition: state
|
||
entity_id: input_boolean.guest_mode
|
||
state: 'on'
|
||
- condition: template
|
||
value_template: '{{ as_timestamp(now()) >= as_timestamp(states(''input_datetime.guest_mode_disable_time''),
|
||
0) }}
|
||
|
||
'
|
||
actions:
|
||
- action: input_boolean.turn_off
|
||
target:
|
||
entity_id: input_boolean.guest_mode
|
||
- variables:
|
||
action_enable_back_on: '{{ ''action_enable_back_on'' ~ context.id }}'
|
||
- action: notify.mobile_app_sm_s901b
|
||
data:
|
||
title: 👤 Гостевой режим
|
||
message: Гостевой режим выключен автоматически в {{ states('sensor.time') }}.
|
||
Включить обратно?
|
||
data:
|
||
actions:
|
||
- action: '{{ action_enable_back_on }}'
|
||
title: ↻ Включить снова
|
||
- wait_for_trigger:
|
||
- trigger: event
|
||
event_type: mobile_app_notification_action
|
||
event_data:
|
||
action: '{{ action_enable_back_on }}'
|
||
- if:
|
||
- condition: template
|
||
value_template: '{{ wait.trigger.event.data.action == action_enable_back_on
|
||
}}'
|
||
then:
|
||
- action: input_boolean.turn_on
|
||
target:
|
||
entity_id: input_boolean.guest_mode
|
||
- action: input_datetime.set_datetime
|
||
data:
|
||
entity_id: input_datetime.guest_mode_disable_time
|
||
datetime: '{{ (now().date() + timedelta(days=1)).strftime(''%Y-%m-%d'') }}
|
||
09:00:00'
|
||
- action: notify.mobile_app_sm_s901b
|
||
data:
|
||
title: 👤 Гостевой режим
|
||
message: Гостевой режим включен снова до 9:00 утра завтрашнего дня
|
||
- alias: Notify Yandex Guest Mode Enabled
|
||
id: notify_yandex_guest_mode_enabled
|
||
trigger:
|
||
- platform: state
|
||
entity_id: input_boolean.guest_mode
|
||
from: 'off'
|
||
to: 'on'
|
||
action:
|
||
- action: media_player.play_media
|
||
entity_id: media_player.yandex_station_midi
|
||
data:
|
||
media_content_id: Гостевой режим активирован до 9:00 утра завтрашнего дня
|
||
media_content_type: text
|
||
- alias: Stop Heating by Window Opened
|
||
id: stop_heating_by_window_opened
|
||
mode: restart
|
||
trigger:
|
||
- platform: state
|
||
entity_id: binary_sensor.windows
|
||
from: 'off'
|
||
to: 'on'
|
||
for: 00:00:10
|
||
condition:
|
||
- condition: state
|
||
entity_id: input_boolean.heating_season
|
||
state: 'on'
|
||
- condition: state
|
||
entity_id: binary_sensor.thermostat_active
|
||
state: 'on'
|
||
action:
|
||
- action: timer.cancel
|
||
entity_id: timer.pause_heating
|
||
- if:
|
||
- condition: state
|
||
entity_id: timer.heating_quarantine
|
||
state: active
|
||
then:
|
||
- action: timer.cancel
|
||
entity_id: timer.heating_quarantine
|
||
- action: input_text.set_value
|
||
data:
|
||
entity_id: input_text.heating_log
|
||
value: Открыто окно → карантин перед включением отопления отменён
|
||
- if:
|
||
- condition: state
|
||
entity_id: timer.short_heating
|
||
state: active
|
||
then:
|
||
- action: timer.cancel
|
||
entity_id: timer.short_heating
|
||
- action: input_text.set_value
|
||
data:
|
||
entity_id: input_text.heating_log
|
||
value: Открыто окно → кратковременное отопление отменено
|
||
- action: media_player.play_media
|
||
entity_id: media_player.yandex_station_midi
|
||
data:
|
||
media_content_id: Подогрев квартиры окончен из-за открытого окна
|
||
media_content_type: text
|
||
- action: script.thermostat_set_eco_mode
|
||
data:
|
||
message: Открыто окно → переход в режим экономии
|
||
- alias: Start Quarantine by Window Closed
|
||
id: start_quarantine_by_window_closed
|
||
mode: restart
|
||
trigger:
|
||
- platform: state
|
||
entity_id: binary_sensor.windows
|
||
from: 'on'
|
||
to: 'off'
|
||
for: 00:00:10
|
||
condition:
|
||
- condition: state
|
||
entity_id: input_boolean.heating_season
|
||
state: 'on'
|
||
action:
|
||
- action: timer.start
|
||
entity_id: timer.heating_quarantine
|
||
- action: input_text.set_value
|
||
data:
|
||
entity_id: input_text.heating_log
|
||
value: Окна закрыты → карантин перед включением отопления начат
|
||
- alias: Restore Heating after Quarantine
|
||
id: restore_heating_after_quarantine
|
||
mode: single
|
||
max_exceeded: silent
|
||
trigger:
|
||
- platform: event
|
||
event_type: timer.finished
|
||
event_data:
|
||
entity_id: timer.heating_quarantine
|
||
condition:
|
||
- condition: state
|
||
entity_id: input_boolean.heating_season
|
||
state: 'on'
|
||
- condition: state
|
||
entity_id: binary_sensor.windows
|
||
state: 'off'
|
||
action:
|
||
- if:
|
||
- condition: state
|
||
entity_id: timer.pause_heating
|
||
state: idle
|
||
- or:
|
||
- condition: state
|
||
entity_id: binary_sensor.people_home
|
||
state: 'on'
|
||
- condition: state
|
||
entity_id: input_boolean.guest_mode
|
||
state: 'on'
|
||
then:
|
||
- action: script.thermostat_stop_heating
|
||
data:
|
||
message: Карантин перед включением отопления окончен → отопление включено
|
||
else:
|
||
- action: input_text.set_value
|
||
data:
|
||
entity_id: input_text.heating_log
|
||
value: Карантин перед включением отопления окончен, но обогрев запрещён →
|
||
отопление не включено
|
||
- alias: Thermostat Freeze Alert at Night
|
||
id: thermostat_freeze_alert_at_night
|
||
mode: single
|
||
max_exceeded: silent
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: binary_sensor.freeze_alert_at_night
|
||
from: 'off'
|
||
to: 'on'
|
||
for: 00:05:00
|
||
- trigger: time_pattern
|
||
hours: /1
|
||
conditions:
|
||
- condition: state
|
||
entity_id: input_boolean.heating_season
|
||
state: 'on'
|
||
- condition: state
|
||
entity_id: binary_sensor.freeze_alert_at_night
|
||
state: 'on'
|
||
- condition: template
|
||
value_template: "{{ is_state('binary_sensor.people_home', 'on') or\n is_state('input_boolean.guest_mode',\
|
||
\ 'on')}}\n"
|
||
actions:
|
||
- action: timer.cancel
|
||
entity_id:
|
||
- timer.heating_quarantine
|
||
- timer.short_heating
|
||
- timer.pause_heating
|
||
- action: script.notify_and_create_persistent_notification
|
||
data:
|
||
title: ⚠️ Предупреждение
|
||
message: Температура упала ниже порога
|
||
- action: input_text.set_value
|
||
data:
|
||
entity_id: input_text.heating_log
|
||
value: Температура упала ниже порога
|
||
- action: notify.mobile_app_sm_s901b
|
||
data:
|
||
title: 💬 Системное уведомление
|
||
message: Термостат был снова включен в {{ states('sensor.time') }}, чтобы вы
|
||
не замёрзли
|
||
- action: script.thermostat_stop_heating
|
||
data:
|
||
message: Температура упала ниже порога ночью → термостат переведён на 22°C
|
||
- alias: Thermostat Preheat Alert
|
||
id: thermostat_preheat_alert
|
||
mode: single
|
||
max_exceeded: silent
|
||
triggers:
|
||
- trigger: numeric_state
|
||
entity_id: climate.family_room
|
||
attribute: current_temperature
|
||
above: 25.0
|
||
for: 00:05:00
|
||
- trigger: time_pattern
|
||
hours: /1
|
||
conditions:
|
||
- condition: state
|
||
entity_id: input_boolean.heating_season
|
||
state: 'on'
|
||
- condition: numeric_state
|
||
entity_id: climate.family_room
|
||
attribute: current_temperature
|
||
above: 25.0
|
||
- condition: template
|
||
value_template: "{{ states('climate.family_room') == 'heat' and\n state_attr('climate.family_room',\
|
||
\ 'temperature') >= 25.0 }}\n"
|
||
actions:
|
||
- action: script.notify_and_create_persistent_notification
|
||
data:
|
||
title: ⚠️ Предупреждение
|
||
message: 'Термостат был переведён в автоматический режим по причине высокой
|
||
температуры в квартире в {{ states(''sensor.time'') }}
|
||
|
||
'
|
||
- action: script.thermostat_stop_heating
|
||
data:
|
||
message: Температура поднялась выше порога → термостат переведён на 22°C
|
||
- alias: Thermostat Heating Duration Alert
|
||
id: thermostat_heating_duration_alert
|
||
mode: single
|
||
max_exceeded: silent
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: binary_sensor.thermostat_heating
|
||
from: 'off'
|
||
to: 'on'
|
||
for: 01:00:00
|
||
conditions:
|
||
- condition: state
|
||
entity_id: input_boolean.heating_season
|
||
state: 'on'
|
||
actions:
|
||
- action: timer.cancel
|
||
entity_id:
|
||
- timer.heating_quarantine
|
||
- timer.short_heating
|
||
- timer.pause_heating
|
||
- action: script.notify_and_create_persistent_notification
|
||
data:
|
||
title: ⚠️ Предупреждение
|
||
message: Термостат работает более часа → отопление отключено на 1 час в {{ states('sensor.time')
|
||
}}
|
||
- action: timer.start
|
||
entity_id: timer.pause_heating
|
||
- action: script.thermostat_stop_heating
|
||
data:
|
||
message: Термостат работает более часа → отопление отключено на 1 час
|
||
- alias: Short Heating Start
|
||
id: short_heating_start
|
||
mode: single
|
||
max_exceeded: silent
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: input_button.thermostat_10_minutes_heating
|
||
actions:
|
||
- if:
|
||
- or:
|
||
- condition: state
|
||
entity_id: binary_sensor.thermostat_heating
|
||
state: 'on'
|
||
- condition: state
|
||
entity_id: timer.short_heating
|
||
state: active
|
||
then:
|
||
- action: media_player.play_media
|
||
entity_id: media_player.yandex_station_midi
|
||
data:
|
||
media_content_id: Квартира уже подогревается
|
||
media_content_type: text
|
||
else:
|
||
- action: timer.cancel
|
||
entity_id:
|
||
- timer.heating_quarantine
|
||
- timer.short_heating
|
||
- timer.pause_heating
|
||
- action: timer.start
|
||
entity_id: timer.short_heating
|
||
- action: media_player.play_media
|
||
entity_id: media_player.yandex_station_midi
|
||
data:
|
||
media_content_id: Включен кратковременный подогрев квартиры
|
||
media_content_type: text
|
||
- action: script.thermostat_start_heating
|
||
data:
|
||
message: Включен кратковременный подогрев квартиры
|
||
- alias: Short Heating End
|
||
id: short_heating_end
|
||
mode: single
|
||
max_exceeded: silent
|
||
triggers:
|
||
- platform: event
|
||
event_type: timer.finished
|
||
event_data:
|
||
entity_id: timer.short_heating
|
||
conditions:
|
||
- condition: state
|
||
entity_id: input_boolean.heating_season
|
||
state: 'on'
|
||
actions:
|
||
- action: media_player.play_media
|
||
entity_id: media_player.yandex_station_midi
|
||
data:
|
||
media_content_id: Кратковременный подогрев квартиры окончен
|
||
media_content_type: text
|
||
- if:
|
||
- condition: state
|
||
entity_id: binary_sensor.etrvs_requesting_heat
|
||
state: 'off'
|
||
- condition: state
|
||
entity_id: binary_sensor.heating_request_bathroom
|
||
state: 'off'
|
||
then:
|
||
- action: script.thermostat_stop_heating
|
||
data:
|
||
message: Кратковременный подогрев квартиры окончен
|
||
- alias: Disable Heating When Noone Home
|
||
id: disable_heating_when_noone_home
|
||
mode: single
|
||
max_exceeded: silent
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: binary_sensor.people_home
|
||
from: 'on'
|
||
to: 'off'
|
||
for: 00:05:00
|
||
conditions:
|
||
- condition: state
|
||
entity_id: input_boolean.heating_season
|
||
state: 'on'
|
||
- condition: state
|
||
entity_id: binary_sensor.thermostat_active
|
||
state: 'on'
|
||
- condition: state
|
||
entity_id: input_boolean.guest_mode
|
||
state: 'off'
|
||
actions:
|
||
- action: timer.cancel
|
||
entity_id:
|
||
- timer.heating_quarantine
|
||
- timer.short_heating
|
||
- timer.pause_heating
|
||
- action: script.thermostat_set_eco_mode
|
||
data:
|
||
message: Никого нет дома → переход в режим экономии
|
||
- alias: Restore Heating When Someone Home
|
||
id: restore_heating_when_someone_home
|
||
mode: single
|
||
max_exceeded: silent
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: binary_sensor.people_home
|
||
from: 'off'
|
||
to: 'on'
|
||
conditions:
|
||
- condition: state
|
||
entity_id: input_boolean.heating_season
|
||
state: 'on'
|
||
- condition: state
|
||
entity_id: binary_sensor.thermostat_active
|
||
state: 'off'
|
||
actions:
|
||
- if:
|
||
- condition: state
|
||
entity_id: binary_sensor.windows
|
||
state: 'on'
|
||
then:
|
||
- action: script.thermostat_set_eco_mode
|
||
data:
|
||
message: Окно открыто при возращении домой → сохранение режима экономии
|
||
else:
|
||
- action: script.thermostat_stop_heating
|
||
data:
|
||
message: Возвращение домой → отопление включено
|
||
- alias: Start Heating by ETRV Request
|
||
id: start_heating_by_etrv_request
|
||
mode: single
|
||
max_exceeded: silent
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: binary_sensor.etrvs_requesting_heat
|
||
from: 'off'
|
||
to: 'on'
|
||
for: 00:01:00
|
||
- trigger: time_pattern
|
||
minutes: /2
|
||
conditions:
|
||
- condition: state
|
||
entity_id: input_boolean.heating_season
|
||
state: 'on'
|
||
- condition: state
|
||
entity_id: binary_sensor.etrvs_requesting_heat
|
||
state: 'on'
|
||
- condition: state
|
||
entity_id: binary_sensor.windows
|
||
state: 'off'
|
||
for: 00:05:00
|
||
- condition: state
|
||
entity_id: timer.heating_quarantine
|
||
state: idle
|
||
- condition: state
|
||
entity_id: timer.pause_heating
|
||
state: idle
|
||
- condition: state
|
||
entity_id: timer.short_heating
|
||
state: idle
|
||
- condition: template
|
||
value_template: "{{ is_state('binary_sensor.people_home', 'on') or\n is_state('input_boolean.guest_mode',\
|
||
\ 'on')}}\n"
|
||
- condition: state
|
||
entity_id: binary_sensor.thermostat_heating
|
||
state: 'off'
|
||
actions:
|
||
- action: script.thermostat_start_heating
|
||
- action: input_boolean.turn_on
|
||
entity_id: input_boolean.heating_allowed
|
||
- alias: Start Heating in Bathroom
|
||
id: start_heating_in_bathroom
|
||
mode: single
|
||
max_exceeded: silent
|
||
trigger:
|
||
- platform: state
|
||
entity_id: binary_sensor.heating_request_bathroom
|
||
from: 'off'
|
||
to: 'on'
|
||
condition:
|
||
- condition: state
|
||
entity_id: input_boolean.heating_season
|
||
state: 'on'
|
||
- condition: state
|
||
entity_id: timer.pause_heating
|
||
state: idle
|
||
- condition: state
|
||
entity_id: timer.short_heating
|
||
state: idle
|
||
- condition: template
|
||
value_template: "{{ is_state('binary_sensor.people_home', 'on') or\n is_state('input_boolean.guest_mode',\
|
||
\ 'on')}}\n"
|
||
- condition: state
|
||
entity_id: binary_sensor.thermostat_heating
|
||
state: 'off'
|
||
action:
|
||
- action: script.thermostat_start_heating
|
||
- alias: Stop Heating by ETRV Request
|
||
id: stop_heating_by_etrv_request
|
||
mode: single
|
||
max_exceeded: silent
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: binary_sensor.etrvs_requesting_heat
|
||
from: 'on'
|
||
to: 'off'
|
||
for: 00:01:00
|
||
- trigger: state
|
||
entity_id: binary_sensor.heating_request_bathroom
|
||
from: 'on'
|
||
to: 'off'
|
||
for: 00:01:00
|
||
- trigger: time_pattern
|
||
minutes: /2
|
||
conditions:
|
||
- condition: state
|
||
entity_id: input_boolean.heating_season
|
||
state: 'on'
|
||
- condition: state
|
||
entity_id: binary_sensor.etrvs_requesting_heat
|
||
state: 'off'
|
||
- condition: state
|
||
entity_id: binary_sensor.heating_request_bathroom
|
||
state: 'off'
|
||
- condition: state
|
||
entity_id: timer.short_heating
|
||
state: idle
|
||
- condition: state
|
||
entity_id: binary_sensor.thermostat_heating
|
||
state: 'on'
|
||
actions:
|
||
- action: script.thermostat_stop_heating
|
||
data:
|
||
message: ETRVs не запрашивают отопление → температура возвращена на 22°C
|
||
- alias: Start Pause Heating Manually
|
||
id: start_pause_heating_manually
|
||
mode: single
|
||
max_exceeded: silent
|
||
trigger:
|
||
- platform: state
|
||
entity_id: input_boolean.heating_allowed
|
||
from: 'on'
|
||
to: 'off'
|
||
condition:
|
||
- condition: state
|
||
entity_id: input_boolean.heating_season
|
||
state: 'on'
|
||
- condition: state
|
||
entity_id: binary_sensor.thermostat_heating
|
||
state: 'on'
|
||
action:
|
||
- if:
|
||
- condition: state
|
||
entity_id: timer.short_heating
|
||
state: active
|
||
then:
|
||
- action: media_player.play_media
|
||
entity_id: media_player.yandex_station_midi
|
||
data:
|
||
media_content_id: Подогрев квартиры окончен раньше вручную
|
||
media_content_type: text
|
||
- action: timer.cancel
|
||
entity_id:
|
||
- timer.heating_quarantine
|
||
- timer.short_heating
|
||
- timer.pause_heating
|
||
- action: timer.start
|
||
entity_id: timer.pause_heating
|
||
- action: script.thermostat_stop_heating
|
||
data:
|
||
message: Отопление заблокировано вручную → температура возвращена на 22°C
|
||
- alias: Cancel Pause Heating Manually
|
||
id: cancel_pause_heating_manually
|
||
mode: single
|
||
max_exceeded: silent
|
||
trigger:
|
||
- platform: state
|
||
entity_id: input_boolean.heating_allowed
|
||
from: 'off'
|
||
to: 'on'
|
||
condition:
|
||
- condition: state
|
||
entity_id: input_boolean.heating_season
|
||
state: 'on'
|
||
- condition: state
|
||
entity_id: timer.pause_heating
|
||
state: active
|
||
action:
|
||
- action: timer.cancel
|
||
entity_id: timer.pause_heating
|
||
- action: media_player.play_media
|
||
entity_id: media_player.yandex_station_midi
|
||
data:
|
||
media_content_id: Блокировка отопления отменена вручную
|
||
media_content_type: text
|
||
- action: input_text.set_value
|
||
data:
|
||
entity_id: input_text.heating_log
|
||
value: Блокировка отопления отменена вручную
|
||
- alias: Log Heating Changes
|
||
id: log_heating_changes
|
||
mode: parallel
|
||
max: 10
|
||
trigger:
|
||
- platform: state
|
||
entity_id:
|
||
- binary_sensor.thermostat_heating
|
||
- binary_sensor.thermostat_active
|
||
- binary_sensor.etrvs_requesting_heat
|
||
- binary_sensor.heating_request_bathroom
|
||
- binary_sensor.freeze_alert_at_night
|
||
- binary_sensor.windows
|
||
- binary_sensor.people_home
|
||
- input_boolean.heating_season
|
||
- input_boolean.guest_mode
|
||
- input_boolean.heating_allowed
|
||
- input_number.thermostat_new_target_temperature
|
||
- timer.heating_quarantine
|
||
- timer.short_heating
|
||
- timer.pause_heating
|
||
actions:
|
||
- condition: template
|
||
value_template: '{{ trigger.from_state is not none and trigger.to_state is not
|
||
none }}'
|
||
- action: input_text.set_value
|
||
data:
|
||
entity_id: input_text.heating_log
|
||
value: '{% set entity_name = states[trigger.entity_id].name | default(trigger.entity_id)
|
||
%} {% set new_state = trigger.to_state.state %} {% set old_state = trigger.from_state.state
|
||
%} Изменено состояние "{{ entity_name }}" с {{ old_state }} на {{ new_state
|
||
}}'
|
||
- alias: Sync Danfoss ETRV Window Contact Kitchen
|
||
id: sync_danfoss_etrv_window_contact_kitchen
|
||
mode: queued
|
||
max: 3
|
||
trigger:
|
||
- platform: state
|
||
entity_id: binary_sensor.kitchen_window_contact
|
||
for: 00:00:10
|
||
- platform: time_pattern
|
||
minutes: /10
|
||
condition:
|
||
- condition: state
|
||
entity_id: input_boolean.heating_season
|
||
state: 'on'
|
||
- condition: template
|
||
value_template: '{{ states(''binary_sensor.kitchen_window_contact'') in [''on'',
|
||
''off''] }}
|
||
|
||
'
|
||
action:
|
||
- action: switch.turn_{{ states('binary_sensor.kitchen_window_contact') }}
|
||
target:
|
||
entity_id: switch.danfoss_etrv0103_kitchen_external_window_sensor
|
||
- alias: Sync Danfoss ETRV Window Contact Bedroom
|
||
id: sync_danfoss_etrv_window_contact_bedroom
|
||
mode: queued
|
||
max: 3
|
||
trigger:
|
||
- platform: state
|
||
entity_id: binary_sensor.bedroom_window_contact
|
||
for: 00:00:10
|
||
- platform: time_pattern
|
||
minutes: /10
|
||
condition:
|
||
- condition: state
|
||
entity_id: input_boolean.heating_season
|
||
state: 'on'
|
||
- condition: template
|
||
value_template: '{{ states(''binary_sensor.bedroom_window_contact'') in [''on'',
|
||
''off''] }}
|
||
|
||
'
|
||
action:
|
||
- action: switch.turn_{{ states('binary_sensor.bedroom_window_contact') }}
|
||
target:
|
||
entity_id: switch.danfoss_etrv0100_bedroom_external_window_sensor
|
||
- alias: Sync Danfoss ETRV Window Contact Living Room
|
||
id: sync_danfoss_etrv_window_contact_living_room
|
||
mode: queued
|
||
max: 3
|
||
trigger:
|
||
- platform: state
|
||
entity_id: binary_sensor.living_room_window_contact
|
||
for: 00:00:10
|
||
- platform: time_pattern
|
||
minutes: /10
|
||
condition:
|
||
- condition: state
|
||
entity_id: input_boolean.heating_season
|
||
state: 'on'
|
||
- condition: template
|
||
value_template: '{{ states(''binary_sensor.living_room_window_contact'') in [''on'',
|
||
''off''] }}
|
||
|
||
'
|
||
action:
|
||
- action: switch.turn_{{ states('binary_sensor.living_room_window_contact') }}
|
||
target:
|
||
entity_id: switch.danfoss_etrv0103_living_room_external_window_sensor
|
||
- alias: Sync ETRVs Heating Available Flag
|
||
id: sync_etrvs_heating_available_flag
|
||
mode: queued
|
||
max: 3
|
||
trigger:
|
||
- platform: state
|
||
entity_id: binary_sensor.thermostat_heating
|
||
for: 00:00:10
|
||
- platform: time_pattern
|
||
minutes: /10
|
||
condition:
|
||
- condition: state
|
||
entity_id: input_boolean.heating_season
|
||
state: 'on'
|
||
- condition: template
|
||
value_template: '{{ states(''binary_sensor.thermostat_heating'') in [''on'', ''off'']
|
||
}}
|
||
|
||
'
|
||
action:
|
||
- action: switch.turn_{{ states('binary_sensor.thermostat_heating') }}
|
||
target:
|
||
entity_id:
|
||
- switch.danfoss_etrv0100_bedroom_heat_available
|
||
- switch.danfoss_etrv0103_kitchen_heat_available
|
||
- switch.danfoss_etrv0103_living_room_heat_available
|
||
- id: hall_lights_and_alice_greeting
|
||
alias: Hall Lights and Alice Greeting
|
||
mode: single
|
||
max_exceeded: silent
|
||
triggers:
|
||
- trigger: state
|
||
id: SEN_CAME_HOME
|
||
entity_id: person.sen
|
||
to: home
|
||
- trigger: state
|
||
id: KRIS_CAME_HOME
|
||
entity_id: person.kris
|
||
to: home
|
||
actions:
|
||
- wait_template: '{{ states(''binary_sensor.hall_door_contact'') == ''on'' }}'
|
||
timeout: 00:15:00
|
||
continue_on_timeout: false
|
||
- if:
|
||
- condition: trigger
|
||
id: SEN_CAME_HOME
|
||
then:
|
||
- action: light.turn_on
|
||
entity_id: light.hall_lights
|
||
- wait_template: '{{ states(''binary_sensor.hall_door_contact'') == ''off'' }}'
|
||
timeout: 00:10:00
|
||
continue_on_timeout: false
|
||
- choose:
|
||
- conditions:
|
||
- condition: trigger
|
||
id: SEN_CAME_HOME
|
||
- condition: template
|
||
value_template: '{{ ( as_timestamp(states.person.kris.last_changed, 0) | int(0)
|
||
) < ( as_timestamp(states.person.sen.last_changed, 0) | int(0) ) }}'
|
||
sequence:
|
||
- delay: 00:00:01
|
||
- action: media_player.play_media
|
||
entity_id: media_player.yandex_station_midi
|
||
data:
|
||
media_content_id: 'Добро пожаловать домой мистер Морган!
|
||
|
||
'
|
||
media_content_type: dialog
|
||
extra:
|
||
volume_level: 0.8
|
||
- choose:
|
||
- conditions:
|
||
- condition: sun
|
||
after: sunset
|
||
before_offset: 00:15:00
|
||
sequence:
|
||
- action: light.turn_on
|
||
entity_id: light.string_lights
|
||
- delay: 00:00:01
|
||
- action: light.turn_on
|
||
entity_id: light.kitchen_ceiling_light
|
||
- conditions:
|
||
- condition: trigger
|
||
id: KRIS_CAME_HOME
|
||
- condition: template
|
||
value_template: '{{ ( as_timestamp(states.person.sen.last_changed, 0) | int(0)
|
||
) < ( as_timestamp(states.person.kris.last_changed, 0) | int(0) ) }}'
|
||
sequence:
|
||
- action: media_player.play_media
|
||
alias: Only welcome
|
||
entity_id: media_player.yandex_station_midi
|
||
data:
|
||
media_content_id: 'Добро пожаловать домой миссис Морган
|
||
|
||
'
|
||
media_content_type: dialog
|
||
extra:
|
||
volume_level: 0.6
|
||
- conditions:
|
||
- condition: state
|
||
entity_id: person.sen
|
||
state: home
|
||
- condition: state
|
||
entity_id: person.kris
|
||
state: home
|
||
sequence:
|
||
- alias: Switch on lights and welcome
|
||
choose:
|
||
- conditions:
|
||
- condition: sun
|
||
after: sunset
|
||
before_offset: 00:15:00
|
||
sequence:
|
||
- action: light.turn_on
|
||
entity_id: light.string_lights
|
||
- action: media_player.play_media
|
||
alias: Welcome everybody
|
||
entity_id: media_player.yandex_station_midi
|
||
data:
|
||
media_content_id: 'Добро пожаловать домой мистер и миссис Морган
|
||
|
||
'
|
||
media_content_type: dialog
|
||
extra:
|
||
volume_level: 0.6
|
||
default:
|
||
- action: script.notify_and_create_persistent_notification
|
||
data:
|
||
title: ⚠️ Предупреждение
|
||
message: Автоматизация приветствия не смогла определить кто пришел домой
|
||
- id: home_all_lights_off
|
||
alias: Home All Lights OFF
|
||
mode: restart
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: binary_sensor.hall_door_contact
|
||
from: 'on'
|
||
to: 'off'
|
||
conditions:
|
||
- condition: state
|
||
entity_id: binary_sensor.people_home
|
||
state: 'on'
|
||
- condition: state
|
||
entity_id: input_boolean.guest_mode
|
||
state: 'off'
|
||
actions:
|
||
- wait_template: '{{ states(''binary_sensor.people_home'') == ''off'' }}'
|
||
timeout: 00:30:00
|
||
continue_on_timeout: false
|
||
- if:
|
||
- condition: state
|
||
entity_id: input_boolean.guest_mode
|
||
state: 'off'
|
||
then:
|
||
- action: script.turn_on
|
||
entity_id: script.turn_off_all_lights
|
||
- action: scene.turn_on
|
||
entity_id: scene.no_people_home
|
||
- variables:
|
||
action_enable_guest_mode: '{{ ''action_enable_guest_mode'' ~ context.id }}'
|
||
- action: notify.mobile_app_sm_s901b
|
||
data:
|
||
title: 👋 До свидания
|
||
message: "{% if is_state('input_boolean.heating_season', 'on') %}\n Термостат\
|
||
\ и свет были отключены\n{% else %}\n Весь свет был отключен\n{% endif\
|
||
\ %}\n"
|
||
data:
|
||
actions:
|
||
- action: '{{ action_enable_guest_mode }}'
|
||
title: 👤 Включить гостевой режим
|
||
- wait_for_trigger:
|
||
- trigger: event
|
||
event_type: mobile_app_notification_action
|
||
event_data:
|
||
action: '{{ action_enable_guest_mode }}'
|
||
- if:
|
||
- condition: template
|
||
value_template: '{{ wait.trigger.event.data.action == action_enable_guest_mode
|
||
}}'
|
||
then:
|
||
- action: script.enable_guest_mode
|
||
- id: hall_lights_by_motion_on
|
||
alias: Hall Lights by Motion ON
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: binary_sensor.hall_door_contact
|
||
to: 'on'
|
||
- trigger: state
|
||
entity_id: binary_sensor.aqara_hall_motion_sensor_occupancy
|
||
to: 'on'
|
||
conditions:
|
||
- condition: state
|
||
entity_id: light.hall_lights
|
||
state: 'off'
|
||
actions:
|
||
- action: light.turn_on
|
||
entity_id: light.hall_lights
|
||
- action: input_boolean.turn_on
|
||
entity_id: input_boolean.flag_hall_lights_triggered_by_motion
|
||
- id: hall_lights_by_motion_off
|
||
alias: Hall Lights by Motion OFF
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: binary_sensor.aqara_hall_motion_sensor_occupancy
|
||
to: 'off'
|
||
conditions:
|
||
- condition: state
|
||
entity_id: input_boolean.flag_hall_lights_triggered_by_motion
|
||
state: 'on'
|
||
actions:
|
||
- action: light.turn_off
|
||
entity_id: light.hall_lights
|
||
- action: input_boolean.turn_off
|
||
entity_id: input_boolean.flag_hall_lights_triggered_by_motion
|
||
- id: kitchen_asus_pc_background_lights_on
|
||
alias: Kitchen Asus PC Background Lights ON
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: switch.asus_pc
|
||
from: 'off'
|
||
to: 'on'
|
||
- trigger: numeric_state
|
||
entity_id: sun.sun
|
||
attribute: elevation
|
||
below: 4.0
|
||
- trigger: state
|
||
entity_id: weather.home_assistant_blue
|
||
conditions:
|
||
- condition: state
|
||
entity_id: person.sen
|
||
state: home
|
||
- condition: state
|
||
entity_id: switch.asus_pc
|
||
state: 'on'
|
||
- or:
|
||
- condition: numeric_state
|
||
entity_id: sun.sun
|
||
attribute: elevation
|
||
below: 4.0
|
||
- condition: template
|
||
value_template: '{{ states(''weather.home_assistant_blue'') not in [''sunny'',
|
||
''partlycloudy''] }}'
|
||
actions:
|
||
- action: light.turn_on
|
||
entity_id: light.gyver_lamp
|
||
data:
|
||
effect: Oгoнь
|
||
brightness: 150
|
||
rgb_color:
|
||
- 255
|
||
- 39
|
||
- 25
|
||
- if:
|
||
- condition: template
|
||
value_template: '{{ states(''person.kris'') == ''home''}}'
|
||
then:
|
||
- action: switch.turn_off
|
||
entity_id: switch.pc_backlight_sync_send
|
||
else:
|
||
- action: light.turn_on
|
||
entity_id:
|
||
- light.shelf_lighting
|
||
- light.pc_backlight
|
||
- action: switch.turn_on
|
||
entity_id: switch.pc_backlight_sync_send
|
||
- id: kitchen_asus_pc_background_lights_off
|
||
alias: Kitchen Asus PC Background Lights OFF
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: switch.asus_pc
|
||
from: 'on'
|
||
to: 'off'
|
||
actions:
|
||
- action: light.turn_off
|
||
entity_id:
|
||
- light.gyver_lamp
|
||
- light.shelf_lighting
|
||
- id: kitchen_clock_disable_by_presence
|
||
alias: Kitchen Clock Disable by Presence
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: binary_sensor.people_home
|
||
to: 'off'
|
||
for: 00:01:00
|
||
condition:
|
||
- condition: state
|
||
entity_id: input_boolean.guest_mode
|
||
state: 'off'
|
||
actions:
|
||
- action: light.turn_off
|
||
entity_id: light.7_seg_clock
|
||
- id: kitchen_clock_reenable
|
||
alias: Kitchen Clock Reenable
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: light.7_seg_clock
|
||
to: 'off'
|
||
for: 00:00:05
|
||
- trigger: state
|
||
entity_id: binary_sensor.kitchen_motion_alarm
|
||
to: 'on'
|
||
- trigger: state
|
||
entity_id: input_boolean.home_night_mode
|
||
to: 'off'
|
||
conditions:
|
||
- condition: state
|
||
entity_id: light.7_seg_clock
|
||
state: 'off'
|
||
- condition: state
|
||
entity_id: binary_sensor.people_home
|
||
state: 'on'
|
||
- condition: time
|
||
after: 05:00:00
|
||
before: '22:00:00'
|
||
actions:
|
||
- action: light.turn_on
|
||
entity_id: light.7_seg_clock
|
||
- id: interactive_cz_map_reenable
|
||
alias: Interactive CZ Map Reenable
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: person.sen
|
||
to: home
|
||
- trigger: state
|
||
entity_id: switch.asus_pc
|
||
to: 'on'
|
||
- trigger: state
|
||
entity_id: input_boolean.home_night_mode
|
||
to: 'off'
|
||
conditions:
|
||
- condition: state
|
||
entity_id: switch.interactive_cz_map_enable
|
||
state: 'off'
|
||
- condition: state
|
||
entity_id: person.sen
|
||
state: home
|
||
- condition: time
|
||
after: 05:00:00
|
||
before: '22:00:00'
|
||
actions:
|
||
- action: switch.turn_on
|
||
entity_id: switch.interactive_cz_map_enable
|
||
- id: wireless_charger_reenable
|
||
alias: Wireless Charger Reenable
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: binary_sensor.people_home
|
||
to: 'on'
|
||
conditions:
|
||
- condition: state
|
||
entity_id: input_boolean.home_night_mode
|
||
state: 'off'
|
||
- condition: state
|
||
entity_id: light.wireless_charger
|
||
state: 'off'
|
||
actions:
|
||
- action: light.turn_on
|
||
entity_id: light.wireless_charger
|
||
- id: parking_lights_on
|
||
alias: Parking Lights ON
|
||
mode: queued
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: input_button.parking_light
|
||
actions:
|
||
- action: script.turn_on
|
||
target:
|
||
entity_id: script.switch_on_parking_light
|
||
- id: parking_light_emergency_on
|
||
alias: Parking Light Emergency On
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: switch.parking_light
|
||
to: 'off'
|
||
for: 3600
|
||
actions:
|
||
- repeat:
|
||
until:
|
||
- condition: state
|
||
entity_id: switch.parking_light
|
||
state: 'on'
|
||
sequence:
|
||
- action: switch.turn_on
|
||
entity_id: switch.parking_light
|
||
- action: notify.mobile_app_sm_s901b
|
||
data:
|
||
title: 💬 Системное уведомление
|
||
message: Реле освещения парковки было отключено более часа. Автоматическое
|
||
включение в {{ states('sensor.time') }}
|
||
- delay: 00:01:00
|
||
- id: kitchen_led_strip_sync_with_spotlights
|
||
alias: Kitchen LED Strip Sync with Spotlights
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: light.kitchen_spotlights
|
||
conditions:
|
||
- condition: template
|
||
value_template: '{{ trigger.to_state.state in [''on'', ''off''] }}'
|
||
actions:
|
||
- action: light.turn_{{ trigger.to_state.state }}
|
||
entity_id: light.kitchen_led_strip
|
||
- id: activate_night_mode
|
||
alias: Activate Night Mode
|
||
mode: single
|
||
max_exceeded: silent
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: input_button.activate_night_mode
|
||
actions:
|
||
- action: script.turn_on
|
||
entity_id: script.activate_night_mode
|
||
- id: busy_wall_switch_1
|
||
alias: Busy Wall Switch 1
|
||
mode: restart
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: binary_sensor.air_quality_station_digital_input_1
|
||
from: 'off'
|
||
to: 'on'
|
||
- trigger: state
|
||
entity_id: binary_sensor.air_quality_station_digital_input_1
|
||
from: 'on'
|
||
to: 'off'
|
||
conditions:
|
||
- condition: state
|
||
entity_id: input_boolean.child_lock
|
||
state: 'off'
|
||
- condition: state
|
||
entity_id: input_boolean.guest_mode
|
||
state: 'off'
|
||
actions:
|
||
- action: light.toggle
|
||
entity_id: light.living_room_ceiling_light
|
||
- id: busy_wall_switch_2
|
||
alias: Busy Wall Switch 2
|
||
mode: restart
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: binary_sensor.air_quality_station_digital_input_2
|
||
from: 'off'
|
||
to: 'on'
|
||
- trigger: state
|
||
entity_id: binary_sensor.air_quality_station_digital_input_2
|
||
from: 'on'
|
||
to: 'off'
|
||
actions:
|
||
- action: light.toggle
|
||
entity_id: light.floor_lamp
|
||
- alias: Silent Mode Handler
|
||
id: silent_mode_handler
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: input_boolean.silent_mode
|
||
actions:
|
||
service_template: "{% if is_state('input_boolean.silent_mode', 'on') %}\n script.set_silent_mode\n\
|
||
{% else %}\n script.reset_silent_mode\n{% endif %}\n"
|
||
- alias: Night Mode Handler
|
||
id: night_mode_handler
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: input_boolean.home_night_mode
|
||
actions:
|
||
service_template: "{% if is_state('input_boolean.home_night_mode', 'on') %}\n\
|
||
\ script.home_night_mode\n{% else %}\n script.home_day_mode\n{% endif %}\n"
|
||
- alias: Home Enable Night Mode at Evening
|
||
id: home_enable_night_mode_at_evening
|
||
mode: single
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: binary_sensor.bedroom_door_contact
|
||
from: 'on'
|
||
to: 'off'
|
||
for: 00:00:30
|
||
- trigger: time
|
||
at: '21:00:00'
|
||
conditions:
|
||
- condition: time
|
||
after: '20:00:00'
|
||
before: 03:00:00
|
||
- condition: state
|
||
entity_id: binary_sensor.people_home
|
||
state: 'on'
|
||
actions:
|
||
- action: input_boolean.turn_on
|
||
entity_id:
|
||
- input_boolean.home_night_mode
|
||
- input_boolean.silent_mode
|
||
- alias: Yandex Volume Increased Handler
|
||
id: yandex_volume_increased_handler
|
||
mode: single
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: media_player.yandex_station_midi
|
||
conditions:
|
||
- condition: time
|
||
after: 06:00:00
|
||
before: '12:00:00'
|
||
- condition: state
|
||
entity_id: input_boolean.silent_mode
|
||
state: 'on'
|
||
- condition: template
|
||
value_template: '{% set from = trigger.from_state.attributes.volume_level | float(0)
|
||
%} {% set to = trigger.to_state.attributes.volume_level | float(0) %} {{ to
|
||
> from }}
|
||
|
||
'
|
||
actions:
|
||
- action: input_boolean.turn_off
|
||
entity_id:
|
||
- input_boolean.home_night_mode
|
||
- input_boolean.silent_mode
|
||
- alias: Good Morning Handler
|
||
id: good_morning_handler
|
||
mode: single
|
||
triggers:
|
||
- trigger: time
|
||
at: 09:00:00
|
||
- trigger: state
|
||
entity_id: cover.bedroom
|
||
to: open
|
||
conditions:
|
||
- condition: state
|
||
entity_id: input_boolean.home_night_mode
|
||
state: 'on'
|
||
- condition: time
|
||
after: 06:00:00
|
||
before: '12:00:00'
|
||
actions:
|
||
- action: input_boolean.turn_off
|
||
entity_id:
|
||
- input_boolean.home_night_mode
|
||
- input_boolean.silent_mode
|
||
- alias: Silent Mode by Bedroom Door Enable
|
||
id: silent_mode_by_bedroom_door_enable
|
||
mode: single
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: binary_sensor.bedroom_door_contact
|
||
to: 'off'
|
||
for: 00:00:30
|
||
actions:
|
||
- action: input_boolean.turn_on
|
||
entity_id: input_boolean.silent_mode
|
||
- alias: Silent Mode by Bedroom Door Disable
|
||
id: silent_mode_by_bedroom_door_disable
|
||
mode: single
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: binary_sensor.bedroom_door_contact
|
||
to: 'on'
|
||
for: 00:00:30
|
||
conditions:
|
||
- condition: state
|
||
entity_id: input_boolean.home_night_mode
|
||
state: 'off'
|
||
- condition: time
|
||
after: 06:00:00
|
||
before: '20:00:00'
|
||
actions:
|
||
- action: input_boolean.turn_off
|
||
entity_id: input_boolean.silent_mode
|
||
- alias: Prevent Accidental Bedroom Lights ON
|
||
id: prevent_accidental_bedroom_lights_on
|
||
triggers:
|
||
- trigger: state
|
||
entity_id:
|
||
- light.bedroom_ceiling_light
|
||
- light.bedroom_nightlight
|
||
to: 'on'
|
||
conditions:
|
||
- condition: state
|
||
entity_id: input_boolean.bedroom_lights_and_cover_safety_switch
|
||
state: 'on'
|
||
- condition: template
|
||
value_template: '{{ trigger.to_state.context.user_id = None }}'
|
||
actions:
|
||
- action: light.turn_off
|
||
data:
|
||
entity_id: '{{ trigger.entity_id }}'
|
||
- alias: Prevent Accidental Bedroom Cover Open
|
||
id: prevent_accidental_bedroom_cover_open
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: cover.bedroom
|
||
to: open
|
||
conditions:
|
||
- condition: state
|
||
entity_id: input_boolean.bedroom_lights_and_cover_safety_switch
|
||
state: 'on'
|
||
- condition: template
|
||
value_template: '{{ trigger.to_state.context.user_id = None }}'
|
||
- condition: template
|
||
value_template: secret TEMPLATE_NOT_A_YANDEX_USER_ID
|
||
actions:
|
||
- action: cover.close_cover
|
||
data:
|
||
entity_id: '{{ trigger.entity_id }}'
|
||
- alias: Prevent Accidental Yandex Volume Increase at Silent Mode
|
||
id: prevent_accidental_yandex_volume_increase_at_silent_mode
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: media_player.yandex_station
|
||
- trigger: state
|
||
entity_id: media_player.yandex_station_midi
|
||
conditions:
|
||
- condition: state
|
||
entity_id: input_boolean.silent_mode
|
||
state: 'on'
|
||
- condition: template
|
||
value_template: '{% set from = trigger.from_state.attributes.volume_level | float(0)
|
||
%} {% set to = trigger.to_state.attributes.volume_level | float(0) %} {{ to
|
||
> from and to > 0.4 }}
|
||
|
||
'
|
||
actions:
|
||
- action: script.set_volume_level_repeatedly
|
||
data:
|
||
media_player: media_player.yandex_station_midi
|
||
volume_level: 0.2
|
||
- action: script.set_volume_level_repeatedly
|
||
data:
|
||
media_player: media_player.yandex_station
|
||
volume_level: 0.4
|
||
- alias: Prevent Accidental Yandex Mini Volume Increase
|
||
id: prevent_accidental_yandex_mini_volume_increase
|
||
mode: restart
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: media_player.yandex_station
|
||
conditions:
|
||
- condition: template
|
||
value_template: '{{ trigger.to_state.context.user_id == None }}'
|
||
- condition: template
|
||
value_template: '{% set from = trigger.from_state.attributes.volume_level | float(0)
|
||
%} {% set to = trigger.to_state.attributes.volume_level | float(0) %} {{ to
|
||
> from and to > 0.6 }}
|
||
|
||
'
|
||
actions:
|
||
- action: script.set_volume_level_repeatedly
|
||
data:
|
||
media_player: media_player.yandex_station
|
||
volume_level: 0.6
|
||
- id: notification_snow
|
||
alias: Notification Snow
|
||
triggers:
|
||
- trigger: numeric_state
|
||
entity_id: sensor.openweathermap_snow
|
||
above: 0
|
||
actions:
|
||
- action: notify.mobile_app_sm_s901b
|
||
data_template:
|
||
title: ❄️ Уведомление о снеге
|
||
message: Должно выпадать {{ states('sensor.openweathermap_snow') }} мм/ч снега!
|
||
- id: notification_door_opened
|
||
alias: Notification Door Opened
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: binary_sensor.hall_door_contact
|
||
to: 'on'
|
||
conditions:
|
||
- condition: template
|
||
value_template: '{{ not states(''person.sen'') == ''home''}}
|
||
|
||
'
|
||
actions:
|
||
- action: notify.mobile_app_sm_s901b
|
||
data:
|
||
title: 💬 Системное уведомление
|
||
message: Входная дверь была открыта в {{ states('sensor.time') }}
|
||
- id: notification_kris_arrived
|
||
alias: Notification Kris Arrived
|
||
triggers:
|
||
- entity_id: person.kris
|
||
to: home
|
||
trigger: state
|
||
conditions:
|
||
- condition: state
|
||
entity_id: input_boolean.home_night_mode
|
||
state: 'off'
|
||
actions:
|
||
- data:
|
||
title: '{{ ''👩🦰'' }} Семейное уведомление'
|
||
message: Кристина пришла домой в {{ states('sensor.time') }}
|
||
action: notify.mobile_app_sm_s901b
|
||
- if:
|
||
- condition: template
|
||
value_template: '{{ is_state(''person.sen'', ''home'') }}'
|
||
then:
|
||
- entity_id: script.notify_via_kitchen_spotlights
|
||
action: script.turn_on
|
||
- if:
|
||
- condition: state
|
||
entity_id: switch.asus_pc
|
||
state: 'on'
|
||
then:
|
||
- target:
|
||
entity_id: select.pc_backlight_preset
|
||
data:
|
||
option: Alarm
|
||
action: select.select_option
|
||
- delay: 00:00:10
|
||
- target:
|
||
entity_id: select.pc_backlight_preset
|
||
data:
|
||
option: Gender
|
||
action: select.select_option
|
||
- id: notification_ads_b_receiver_disconnected
|
||
alias: Notification ADS-B Receiver Disconnected
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: binary_sensor.fr24_feeder_receiver_connected
|
||
from: 'on'
|
||
to: 'off'
|
||
for: 00:05:00
|
||
actions:
|
||
- variables:
|
||
timestamp: '{{ trigger.to_state.last_changed.astimezone(now().tzinfo).strftime(''%H:%M:%S'')
|
||
}}'
|
||
- action: script.notify_and_create_persistent_notification
|
||
data:
|
||
title: ⚠️ Предупреждение
|
||
message: Связь с ADS-B приёмником была потеряна в {{ timestamp }}
|
||
- action: automation.turn_on
|
||
entity_id: automation.notification_ads_b_receiver_connection_restored
|
||
- id: notification_ads_b_receiver_connection_restored
|
||
alias: Notification ADS-B Receiver Connection Restored
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: binary_sensor.fr24_feeder_receiver_connected
|
||
from: 'off'
|
||
to: 'on'
|
||
for: 00:01:00
|
||
actions:
|
||
- variables:
|
||
timestamp: '{{ trigger.to_state.last_changed.astimezone(now().tzinfo).strftime(''%H:%M:%S'')
|
||
}}'
|
||
- action: script.notify_and_create_persistent_notification
|
||
data:
|
||
title: 💬 Системное уведомление
|
||
message: Связь с ADS-B приёмником была восстановлена в {{ timestamp }}
|
||
- action: automation.turn_off
|
||
entity_id: automation.notification_ads_b_receiver_connection_restored
|
||
- id: notification_diesel_price_changed
|
||
alias: Notification Diesel Price Changed
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: sensor.diesel_price_ono
|
||
conditions:
|
||
- condition: template
|
||
value_template: '{{ trigger.from_state.state != trigger.to_state.state }}
|
||
|
||
'
|
||
- condition: template
|
||
value_template: '{{ is_number(trigger.from_state.state) and is_number(trigger.to_state.state)
|
||
}}
|
||
|
||
'
|
||
actions:
|
||
- action: script.notify_and_create_persistent_notification
|
||
data:
|
||
title: 💬 Системное уведомление
|
||
message: 'Цена дизеля {{ ''упала'' if trigger.from_state.state | float(0) >
|
||
trigger.to_state.state | float(0) else ''возрасла'' }} с {{ trigger.from_state.state
|
||
}} до {{ trigger.to_state.state }} Kč/L
|
||
|
||
'
|
||
data:
|
||
actions:
|
||
- action: URI
|
||
title: 📈 Open Chart
|
||
uri: /lovelace/diesel-price
|
||
- id: notification_gasoline_price_changed
|
||
alias: Notification Gasoline Price Changed
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: sensor.gasoline_price_ono
|
||
conditions:
|
||
- condition: template
|
||
value_template: '{{ trigger.from_state.state != trigger.to_state.state }}
|
||
|
||
'
|
||
- condition: template
|
||
value_template: '{{ is_number(trigger.from_state.state) and is_number(trigger.to_state.state)
|
||
}}
|
||
|
||
'
|
||
actions:
|
||
- action: notify.mobile_app_sm_g991b
|
||
data:
|
||
title: 💬 Системное уведомление
|
||
message: 'Цена бензина {{ ''упала'' if trigger.from_state.state | float(0) >
|
||
trigger.to_state.state | float(0) else ''возрасла'' }} с {{ trigger.from_state.state
|
||
}} до {{ trigger.to_state.state }} Kč/L
|
||
|
||
'
|
||
data:
|
||
actions:
|
||
- action: URI
|
||
title: 📈 Open Chart
|
||
uri: /lovelace/gasoline-price
|
||
- id: notification_solar_panel_power_above_threshold
|
||
alias: Notification Solar Panel Power Above Threshold
|
||
triggers:
|
||
- trigger: numeric_state
|
||
entity_id: sensor.solar_panel_power
|
||
above: 40
|
||
for: 00:05:00
|
||
actions:
|
||
- action: notify.mobile_app_sm_s901b
|
||
data:
|
||
title: 🌞 Солнечная панель
|
||
message: 'Мощность выше порога: {{ states(''sensor.solar_panel_power'') }} W'
|
||
- id: notification_washing_finish
|
||
alias: Notification Washing Finish
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: sensor.washing_machine_washer_job_state
|
||
to: finish
|
||
conditions:
|
||
- condition: template
|
||
value_template: '{{ (as_timestamp(now(), 0) - as_timestamp(states.sensor.washing_machine_washer_job_state.last_changed,
|
||
0)) < 14400 }}
|
||
|
||
'
|
||
actions:
|
||
- action: script.yandex_joke_after_washing_clothes
|
||
- id: notification_shopping_list_sen
|
||
alias: Notification Shopping List for Sen
|
||
description: Shopping list reminder when Sen enters the supermarket
|
||
mode: single
|
||
trigger:
|
||
- platform: state
|
||
entity_id: person.sen
|
||
to: JIP
|
||
for: 00:02:00
|
||
condition:
|
||
- condition: numeric_state
|
||
entity_id: todo.shopping_list
|
||
above: 0
|
||
action:
|
||
- action: notify.mobile_app_sm_s901b
|
||
data:
|
||
message: 🛒 Открыть список покупок?
|
||
data:
|
||
clickAction: /todo?entity_id=todo.shopping_list
|
||
url: /todo?entity_id=todo.shopping_list
|
||
- id: notification_shopping_list_kris
|
||
alias: Notification Shopping List for Kris
|
||
description: Shopping list reminder when Kris enters the supermarket
|
||
mode: single
|
||
trigger:
|
||
- platform: state
|
||
entity_id: person.kris
|
||
to: JIP
|
||
for: 00:02:00
|
||
condition:
|
||
- condition: numeric_state
|
||
entity_id: todo.shopping_list
|
||
above: 0
|
||
action:
|
||
- action: notify.mobile_app_sm_g991b
|
||
data:
|
||
message: 🛒 Открыть список покупок?
|
||
data:
|
||
clickAction: /todo?entity_id=todo.shopping_list
|
||
url: /todo?entity_id=todo.shopping_list
|
||
- id: notification_watch_charged
|
||
alias: Notification Watch Charged
|
||
trigger:
|
||
- platform: numeric_state
|
||
entity_id: sensor.galaxy_watch6_classic_r7dh_battery_level
|
||
above: 79
|
||
conditions:
|
||
- condition: state
|
||
entity_id: person.sen
|
||
state: home
|
||
action:
|
||
- action: notify.mobile_app_sm_s901b
|
||
data:
|
||
title: '{{ ''🔋'' }} Часы заряжены'
|
||
message: Твои Galaxy Watch заряжены уже на 80%!
|
||
- if:
|
||
- condition: state
|
||
entity_id: input_boolean.silent_mode
|
||
state: 'off'
|
||
then:
|
||
- action: media_player.play_media
|
||
entity_id: media_player.yandex_station_midi
|
||
data:
|
||
media_content_type: text
|
||
media_content_id: Часы заряжены на 80%
|
||
- alias: Update Plants to Water on Sensor Change
|
||
id: update_plants_to_water_on_sensor_change
|
||
mode: single
|
||
max_exceeded: silent
|
||
triggers:
|
||
- trigger: time_pattern
|
||
minutes: /10
|
||
actions:
|
||
- action: python_script.update_plants_to_water
|
||
- alias: Notify on Plants to Water
|
||
id: notify_on_plants_to_water
|
||
mode: single
|
||
max_exceeded: silent
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: input_text.plants_to_water
|
||
conditions:
|
||
- condition: template
|
||
value_template: '{{ states(''input_text.plants_to_water'') | length > 0 }}'
|
||
- condition: state
|
||
entity_id: schedule.plant_watering_notification
|
||
state: 'on'
|
||
actions:
|
||
- action: script.notify_and_create_persistent_notification
|
||
data:
|
||
title: 🪴 Домашние цветы
|
||
message: 'Нужно полить следующие растения: {{ states(''input_text.plants_to_water'')
|
||
}}'
|
||
- alias: Scooter Charger Enable
|
||
id: scooter_charger_enable
|
||
mode: restart
|
||
max_exceeded: silent
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: input_boolean.scooter_charger
|
||
to: 'on'
|
||
actions:
|
||
- action: switch.turn_on
|
||
entity_id: switch.scooter_charger_socket
|
||
- action: automation.turn_on
|
||
entity_id: automation.scooter_charger_disable_when_idle
|
||
- action: input_number.set_value
|
||
data:
|
||
entity_id: input_number.scooter_charger_energy_start
|
||
value: '{{ states(''sensor.scooter_charger_summation_delivered'') | float(0)
|
||
}}'
|
||
- action: input_datetime.set_datetime
|
||
data:
|
||
entity_id: input_datetime.scooter_charger_energy_start_time
|
||
datetime: '{{ now().strftime(''%Y-%m-%d %H:%M:%S'') }}'
|
||
- alias: Scooter Charger Disable
|
||
id: scooter_charger_disable
|
||
mode: restart
|
||
max_exceeded: silent
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: input_boolean.scooter_charger
|
||
to: 'off'
|
||
actions:
|
||
- action: switch.turn_off
|
||
entity_id: switch.scooter_charger_socket
|
||
- if:
|
||
- condition: template
|
||
value_template: '{{ states(''sensor.scooter_charger_energy_consumed'') | float(0)
|
||
> 0 }}'
|
||
then:
|
||
- action: script.turn_on
|
||
entity_id: script.scooter_charger_energy_consumed_notify
|
||
- action: automation.turn_off
|
||
entity_id: automation.scooter_charger_disable_when_idle
|
||
- alias: Scooter Charger Disable When Idle
|
||
id: scooter_charger_disable_when_idle
|
||
mode: restart
|
||
max_exceeded: silent
|
||
triggers:
|
||
- trigger: numeric_state
|
||
entity_id: sensor.scooter_charger_active_power
|
||
below: 15
|
||
for:
|
||
minutes: 10
|
||
actions:
|
||
- action: switch.turn_off
|
||
entity_id: switch.scooter_charger_socket
|
||
- action: input_boolean.turn_off
|
||
entity_id: input_boolean.scooter_charger
|
||
- if:
|
||
- condition: template
|
||
value_template: '{{ states(''sensor.scooter_charger_energy_consumed'') | float(0)
|
||
> 0 }}'
|
||
then:
|
||
- action: script.turn_on
|
||
entity_id: script.scooter_charger_energy_consumed_notify
|
||
- action: automation.turn_off
|
||
entity_id: automation.scooter_charger_disable_when_idle
|
||
- alias: Tag Near PC was scanned
|
||
id: tag_near_pc_was_scanned
|
||
mode: single
|
||
triggers:
|
||
- trigger: tag
|
||
tag_id: c45d3b71-2ade-45e3-8663-f0028f52b01d
|
||
actions:
|
||
- action: input_boolean.toggle
|
||
target:
|
||
entity_id: input_boolean.show_cameras_in_lovelace
|
||
- action: notify.mobile_app_sm_s901b
|
||
data:
|
||
title: 👁️ Режим камер
|
||
message: "{% if is_state('input_boolean.show_cameras_in_lovelace', 'on') %}\n\
|
||
\ Камеры включены\n{% else %}\n Камеры выключены\n{% endif %}"
|
||
- alias: Reenable Cameras if Hided
|
||
id: reenable_cameras_if_hided
|
||
mode: single
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: input_boolean.show_cameras_in_lovelace
|
||
to: 'off'
|
||
for: 01:00:00
|
||
actions:
|
||
- action: input_boolean.turn_on
|
||
target:
|
||
entity_id: input_boolean.show_cameras_in_lovelace
|
||
- action: notify.mobile_app_sm_s901b
|
||
data:
|
||
title: 👁️ Режим камер
|
||
message: Камеры включены автоматически в {{ states('sensor.time') }}
|
||
- alias: Tag Near Entrance was scanned
|
||
id: tag_near_entrance_was_scanned
|
||
mode: restart
|
||
triggers:
|
||
- trigger: tag
|
||
tag_id: 5954e702-f87d-4955-969c-5231af33ece8
|
||
actions:
|
||
- action: script.enable_guest_mode
|
||
- alias: Living Room TV Lights by Sunset or TV ON
|
||
id: living_room_tv_lights_by_sunset_or_tv_on
|
||
description: Turn on TV lights automatically by sunset or when TV is turned on
|
||
mode: restart
|
||
triggers:
|
||
- trigger: numeric_state
|
||
entity_id: sun.sun
|
||
attribute: elevation
|
||
below: 4.0
|
||
- trigger: state
|
||
entity_id: media_player.samsung_tv
|
||
to: 'on'
|
||
conditions:
|
||
- condition: state
|
||
entity_id: media_player.samsung_tv
|
||
state: 'on'
|
||
- condition: numeric_state
|
||
entity_id: sun.sun
|
||
attribute: elevation
|
||
below: 4.0
|
||
actions:
|
||
- wait_template: "{{ states('switch.asus_pc') == 'off' and\n states('light.kitchen_spotlights')\
|
||
\ == 'off' and\n states('light.kitchen_ceiling_light') == 'off' and\n states('light.bedroom_nightlight')\
|
||
\ == 'off' and\n states('binary_sensor.kitchen_motion_alarm') == 'off' }}\n"
|
||
timeout: 01:00:00
|
||
continue_on_timeout: false
|
||
- if:
|
||
- condition: state
|
||
entity_id: media_player.samsung_tv
|
||
state: 'on'
|
||
then:
|
||
- action: scene.turn_on
|
||
entity_id: scene.movies
|
||
- alias: Living Room Speakers Power On with TV
|
||
id: living_room_speakers_power_on_with_tv
|
||
description: Turn on speakers automatically when TV is turned on
|
||
mode: restart
|
||
trigger:
|
||
- platform: state
|
||
entity_id: media_player.samsung_tv
|
||
to: 'on'
|
||
condition:
|
||
- condition: state
|
||
entity_id: switch.monolith_speakers
|
||
state: 'off'
|
||
action:
|
||
- action: switch.turn_on
|
||
entity_id: switch.monolith_speakers
|
||
- alias: Living Room Speakers Standby OFF
|
||
id: living_room_speakers_standby_off
|
||
description: Turn off speakers when in standby mode for a while and TV is off
|
||
mode: restart
|
||
trigger:
|
||
- platform: state
|
||
entity_id: binary_sensor.monolith_speakers_above_power_threshold
|
||
to: 'off'
|
||
for:
|
||
minutes: 5
|
||
condition:
|
||
- condition: state
|
||
entity_id: switch.monolith_speakers
|
||
state: 'on'
|
||
- condition: state
|
||
entity_id: media_player.samsung_tv
|
||
state: 'off'
|
||
action:
|
||
- action: switch.turn_off
|
||
entity_id: switch.monolith_speakers
|
||
- alias: Living Room Speakers Auto Power Down
|
||
id: living_room_speakers_auto_power_down
|
||
description: Turn off speakers if power consumption remains low after powering on
|
||
mode: restart
|
||
trigger:
|
||
- platform: state
|
||
entity_id: switch.monolith_speakers
|
||
to: 'on'
|
||
action:
|
||
- alias: Check if power consumption exceeds threshold
|
||
wait_for_trigger:
|
||
- platform: state
|
||
entity_id: binary_sensor.monolith_speakers_above_power_threshold
|
||
to: 'on'
|
||
timeout:
|
||
minutes: 5
|
||
- if:
|
||
- '{{ not wait.completed }}'
|
||
- condition: state
|
||
entity_id: media_player.samsung_tv
|
||
state: 'off'
|
||
then:
|
||
- alias: Power off if threshold not exceeded
|
||
action: switch.turn_off
|
||
entity_id: switch.monolith_speakers
|
||
- alias: UPS Lost Grid Power Notification
|
||
id: ups_lost_grid_power_notification
|
||
mode: single
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: sensor.ups_status_data
|
||
to: OB DISCHRG
|
||
actions:
|
||
- action: script.notify_and_create_persistent_notification
|
||
data:
|
||
title: 🚨 Внимание!
|
||
message: 'UPS потерял питание в {{ states(''sensor.time'') }} Рассчётное время
|
||
работы: {{ states(''sensor.ups_battery_runtime'') | int(0) | timestamp_custom(''%M:%S'')
|
||
}} минут
|
||
|
||
'
|
||
- action: automation.turn_on
|
||
entity_id: automation.ups_grid_power_restored_notification
|
||
- alias: UPS Grid Power Restored Notification
|
||
id: ups_grid_power_restored_notification
|
||
mode: single
|
||
triggers:
|
||
- trigger: template
|
||
value_template: '{{ ''OL'' in states(''sensor.ups_status_data'') }}'
|
||
actions:
|
||
- action: script.notify_and_create_persistent_notification
|
||
data:
|
||
title: 🚨 Внимание!
|
||
message: Питание восстановлено в {{ states('sensor.time') }}
|
||
- action: automation.turn_off
|
||
entity_id: automation.ups_grid_power_restored_notification
|
||
- alias: UPS Low Battery Warning Notification
|
||
id: ups_low_battery_warning_notification
|
||
mode: single
|
||
triggers:
|
||
- trigger: numeric_state
|
||
entity_id: sensor.ups_battery_charge
|
||
below: 21
|
||
actions:
|
||
- action: notify.mobile_app_sm_s901b
|
||
data:
|
||
title: 🚨 Внимание!
|
||
message: 'Низкий заряд аккумулятора UPS: {{ states(''sensor.ups_battery_charge'')
|
||
}}%
|
||
|
||
'
|
||
- alias: UPS Shutdown Home Assistant Server
|
||
id: ups_shutdown_home_assistant_server
|
||
mode: single
|
||
triggers:
|
||
- trigger: numeric_state
|
||
entity_id: sensor.ups_battery_charge
|
||
below: 10
|
||
- trigger: numeric_state
|
||
entity_id: sensor.ups_battery_runtime
|
||
below: 300
|
||
- trigger: template
|
||
value_template: '{{ ''OB DISCHRG LB'' in states(''sensor.ups_status_data'') }}'
|
||
actions:
|
||
- action: notify.mobile_app_sm_s901b
|
||
data:
|
||
title: 🚨 Внимание!
|
||
message: 'Критически низкий заряд батареи UPS.
|
||
|
||
Немедленное отключение сервера Home Assistant в {{ states(''sensor.time'')
|
||
}}
|
||
|
||
'
|
||
- delay: 00:00:05
|
||
- action: hassio.host_shutdown
|
||
- alias: UPS Lost Grid Power Light Notification
|
||
id: ups_lost_grid_power_light_notification
|
||
mode: single
|
||
triggers:
|
||
- trigger: template
|
||
value_template: '{{ ''OB'' in states(''sensor.ups_status_data'') }}'
|
||
actions:
|
||
- action: light.turn_on
|
||
data:
|
||
entity_id: light.tradfri_bulb
|
||
brightness: 255
|
||
effect: breathe
|
||
- action: automation.turn_on
|
||
entity_id: automation.ups_grid_power_restored_light_notification
|
||
- alias: UPS Grid Power Restored Light Notification
|
||
id: ups_grid_power_restored_light_notification
|
||
mode: single
|
||
triggers:
|
||
- trigger: template
|
||
value_template: '{{ ''OL'' in states(''sensor.ups_status_data'') }}'
|
||
actions:
|
||
- action: light.turn_on
|
||
data:
|
||
entity_id: light.tradfri_bulb
|
||
brightness: 255
|
||
- wait_template: '{{ not (''OL'' in states(''sensor.ups_status_data'')) }}'
|
||
timeout: 00:00:10
|
||
- if:
|
||
- condition: template
|
||
value_template: '{{ ''OL'' in states(''sensor.ups_status_data'') }}'
|
||
then:
|
||
- action: light.turn_off
|
||
entity_id: light.tradfri_bulb
|
||
- action: automation.turn_off
|
||
entity_id: automation.ups_grid_power_restored_light_notification
|
||
- alias: WC Accupancy Set
|
||
id: wc_accupancy_set
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: binary_sensor.wc_door_contact
|
||
from: 'on'
|
||
to: 'off'
|
||
for:
|
||
seconds: '{{ states(''input_number.wc_consider_occupied_after_seconds'') | default(0)
|
||
| float(0) }}'
|
||
conditions:
|
||
- condition: state
|
||
entity_id: input_boolean.wc_occupied
|
||
state: 'off'
|
||
actions:
|
||
- action: input_boolean.turn_on
|
||
entity_id: input_boolean.wc_occupied
|
||
- alias: WC Accupancy Reset
|
||
id: wc_accupancy_reset
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: binary_sensor.wc_door_contact
|
||
from: 'off'
|
||
to: 'on'
|
||
for:
|
||
seconds: '{{ states(''input_number.wc_consider_unoccupied_after_seconds'') |
|
||
default(0) | float(0) }}'
|
||
conditions:
|
||
- condition: state
|
||
entity_id: input_boolean.wc_occupied
|
||
state: 'on'
|
||
actions:
|
||
- action: input_boolean.turn_off
|
||
entity_id: input_boolean.wc_occupied
|
||
- alias: WC Ventilation Start Timer Manually
|
||
id: wc_ventilation_start_timer_manually
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: fan.wc_and_bathroom
|
||
from: 'off'
|
||
to: 'on'
|
||
conditions:
|
||
- condition: template
|
||
value_template: '{{ ((now() + timedelta(minutes=states(''input_number.wc_ventilate_for_minutes_after_manual_trigger'')
|
||
| default(0) | float(0))).timestamp() > as_timestamp(state_attr(''timer.wc_ventilation'',
|
||
''finishes_at''), 0)) or (states(''timer.wc_ventilation'') in [''idle'', ''paused''])
|
||
}}'
|
||
actions:
|
||
- action: timer.start
|
||
data:
|
||
entity_id: timer.wc_ventilation
|
||
duration:
|
||
minutes: '{{ states(''input_number.wc_ventilate_for_minutes_after_manual_trigger'')
|
||
| default(0) | float(0) }}'
|
||
- action: input_select.select_option
|
||
data:
|
||
entity_id: input_select.wc_ventilation_state
|
||
option: MANUAL_ON
|
||
- action: automation.turn_off
|
||
entity_id: automation.wc_ventilation_stop_humidity_below_threshold
|
||
- alias: WC Ventilation Stop Timer Manually
|
||
id: wc_ventilation_stop_timer_manually
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: fan.wc_and_bathroom
|
||
from: 'on'
|
||
to: 'off'
|
||
conditions:
|
||
- condition: state
|
||
entity_id: timer.wc_ventilation
|
||
state: active
|
||
actions:
|
||
- action: timer.cancel
|
||
entity_id: timer.wc_ventilation
|
||
- action: timer.cancel
|
||
entity_id: timer.wc_wait_for_open_to_ventilate
|
||
- action: input_select.select_option
|
||
data:
|
||
entity_id: input_select.wc_ventilation_state
|
||
option: MANUAL_OFF
|
||
- action: automation.turn_off
|
||
entity_id: automation.wc_ventilation_stop_humidity_below_threshold
|
||
- alias: WC Ventilation Timeout
|
||
id: wc_ventilation_timeout
|
||
triggers:
|
||
- trigger: event
|
||
event_type: timer.finished
|
||
event_data:
|
||
entity_id: timer.wc_ventilation
|
||
actions:
|
||
- action: fan.turn_off
|
||
entity_id: fan.wc_and_bathroom
|
||
- action: timer.cancel
|
||
entity_id: timer.wc_wait_for_open_to_ventilate
|
||
- action: input_select.select_option
|
||
data:
|
||
entity_id: input_select.wc_ventilation_state
|
||
option: TIMEOUT
|
||
- action: automation.turn_off
|
||
entity_id: automation.wc_ventilation_stop_humidity_below_threshold
|
||
- alias: WC Ventilation Start Timeout For Door Open State
|
||
id: wc_ventilation_start_timeout_for_door_open_state
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: input_boolean.wc_occupied
|
||
from: 'off'
|
||
to: 'on'
|
||
for:
|
||
seconds: '{{ states(''input_number.wc_consider_ventilate_when_finished_if_occupied_for_seconds'')
|
||
| default(0) | float(0) }}'
|
||
actions:
|
||
- action: timer.start
|
||
data:
|
||
entity_id: timer.wc_wait_for_open_to_ventilate
|
||
duration:
|
||
minutes: '{{ states(''input_number.wc_wait_for_opening_after_considered_to_ventilate_minutes'')
|
||
| default(0) | float(0) }}'
|
||
- alias: WC Ventilation Start When Unoccupied
|
||
id: wc_ventilation_start_when_unoccupied
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: input_boolean.wc_occupied
|
||
from: 'on'
|
||
to: 'off'
|
||
conditions:
|
||
- condition: state
|
||
entity_id: timer.wc_wait_for_open_to_ventilate
|
||
state: active
|
||
- condition: template
|
||
value_template: '{{ ((now() + timedelta(minutes=states(''input_number.wc_ventilate_for_minutes_when_finished'')
|
||
| default(0) | float(0))).timestamp() > as_timestamp(state_attr(''timer.wc_ventilation'',
|
||
''finishes_at''), 0)) or (states(''timer.wc_ventilation'') in [''idle'', ''paused''])
|
||
}}'
|
||
actions:
|
||
- action: fan.turn_on
|
||
entity_id: fan.wc_and_bathroom
|
||
- action: timer.cancel
|
||
entity_id: timer.wc_wait_for_open_to_ventilate
|
||
- action: timer.start
|
||
data:
|
||
entity_id: timer.wc_ventilation
|
||
duration:
|
||
minutes: '{{ states(''input_number.wc_ventilate_for_minutes_when_finished'')
|
||
| default(0) | float(0) }}'
|
||
- action: input_select.select_option
|
||
data:
|
||
entity_id: input_select.wc_ventilation_state
|
||
option: TOILET_ON
|
||
- alias: WC Ventilation Start Humidity Exceeds Threshold
|
||
id: wc_ventilation_start_humidity_exceeds_threshold
|
||
triggers:
|
||
- trigger: numeric_state
|
||
entity_id: sensor.ble_humidity_atc_bathroom
|
||
above: input_number.wc_ventilation_start_humidity_threshold
|
||
for: 00:02:00
|
||
actions:
|
||
- action: timer.cancel
|
||
entity_id: timer.wc_wait_for_open_to_ventilate
|
||
- action: automation.turn_on
|
||
entity_id: automation.wc_ventilation_stop_humidity_below_threshold
|
||
- action: timer.start
|
||
data:
|
||
entity_id: timer.wc_ventilation
|
||
duration:
|
||
minutes: '{{ states(''input_number.wc_max_ventilation_duration_minutes'')
|
||
| default(0) | float(0) }}'
|
||
- action: fan.turn_on
|
||
entity_id: fan.wc_and_bathroom
|
||
- action: input_select.select_option
|
||
data:
|
||
entity_id: input_select.wc_ventilation_state
|
||
option: HUMIDITY_ON
|
||
- alias: WC Ventilation Stop Humidity Below Threshold
|
||
id: wc_ventilation_stop_humidity_below_threshold
|
||
triggers:
|
||
- trigger: numeric_state
|
||
entity_id: sensor.ble_humidity_atc_bathroom
|
||
below: input_number.wc_ventilation_stop_humidity_threshold
|
||
for: 00:02:00
|
||
actions:
|
||
- action: timer.cancel
|
||
entity_id: timer.wc_ventilation
|
||
- action: fan.turn_off
|
||
entity_id: fan.wc_and_bathroom
|
||
- action: input_select.select_option
|
||
data:
|
||
entity_id: input_select.wc_ventilation_state
|
||
option: HUMIDITY_OFF
|
||
- action: automation.turn_off
|
||
entity_id: automation.wc_ventilation_stop_humidity_below_threshold
|
||
- alias: WC Ventilation Start Timer Emergency
|
||
id: wc_ventilation_start_timer_emergency
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: fan.wc_and_bathroom
|
||
to: 'on'
|
||
for: 00:01:00
|
||
conditions:
|
||
- or:
|
||
- condition: state
|
||
entity_id: timer.wc_ventilation
|
||
state: idle
|
||
- condition: state
|
||
entity_id: timer.wc_ventilation
|
||
state: paused
|
||
actions:
|
||
- action: timer.start
|
||
data:
|
||
entity_id: timer.wc_ventilation
|
||
duration:
|
||
minutes: '{{ states(''input_number.wc_max_ventilation_duration_minutes'')
|
||
| default(0) | float(0) }}'
|
||
- action: input_select.select_option
|
||
data:
|
||
entity_id: input_select.wc_ventilation_state
|
||
option: EMERGENCY
|
||
- id: sync_shopping_list
|
||
alias: Sync Shopping List
|
||
mode: single
|
||
triggers:
|
||
- trigger: state
|
||
entity_id: binary_sensor.people_home
|
||
to: 'off'
|
||
for: 00:05:00
|
||
actions:
|
||
- action: input_number.set_value
|
||
target:
|
||
entity_id: input_number.volume_yandex_station
|
||
data:
|
||
value: '{{ state_attr(''media_player.yandex_station_midi'', ''volume_level'')}}'
|
||
- repeat:
|
||
while:
|
||
- condition: template
|
||
value_template: '{{ not is_state_attr(''media_player.yandex_station_midi'',
|
||
''volume_level'', 0.01) }}'
|
||
- condition: template
|
||
value_template: '{{ repeat.index <= 3 }}'
|
||
sequence:
|
||
- action: media_player.volume_set
|
||
data:
|
||
entity_id: media_player.yandex_station_midi
|
||
volume_level: 0.01
|
||
- delay: 0.5
|
||
- action: script.turn_on
|
||
entity_id: script.update_shopping_list
|
||
- delay: 1
|
||
- action: media_player.play_media
|
||
entity_id: media_player.yandex_station_midi
|
||
data:
|
||
media_content_id: stop
|
||
media_content_type: command
|
||
- delay: 1
|
||
- repeat:
|
||
while:
|
||
- condition: template
|
||
value_template: '{{ not is_state_attr(''media_player.yandex_station_midi'',
|
||
''volume_level'', states(''input_number.volume_yandex_station'')) }}'
|
||
- condition: template
|
||
value_template: '{{ repeat.index <= 3 }}'
|
||
sequence:
|
||
- action: media_player.volume_set
|
||
data:
|
||
entity_id: media_player.yandex_station_midi
|
||
volume_level: '{{ states(''input_number.volume_yandex_station'')}}'
|
||
- delay: 1
|
||
- alias: Aqara Switch 1 Handler
|
||
id: aqara_switch_1_handler
|
||
mode: restart
|
||
max_exceeded: silent
|
||
triggers:
|
||
- trigger: event
|
||
event_type: zha_event
|
||
event_data:
|
||
device_id: 6559eaaf60c9624465f762290ff9e825
|
||
actions:
|
||
- variables:
|
||
command: '{{ trigger.event.data.command }}'
|
||
- choose:
|
||
- conditions:
|
||
- '{{ command == ''single'' }}'
|
||
sequence:
|
||
- if:
|
||
- condition: state
|
||
entity_id: input_boolean.child_lock
|
||
state: 'off'
|
||
then:
|
||
- action: script.activate_night_mode
|
||
- conditions:
|
||
- '{{ command == ''double'' }}'
|
||
sequence:
|
||
- if:
|
||
- condition: state
|
||
entity_id: input_boolean.home_night_mode
|
||
state: 'off'
|
||
- condition: state
|
||
entity_id: light.bedroom_nightlight
|
||
state: 'off'
|
||
then:
|
||
- action: light.turn_on
|
||
entity_id: light.bedroom_nightlight
|
||
data:
|
||
brightness: 255
|
||
else:
|
||
- action: light.turn_off
|
||
entity_id: light.bedroom_nightlight
|
||
- conditions:
|
||
- '{{ command == ''hold'' }}'
|
||
sequence:
|
||
- action: input_boolean.turn_off
|
||
entity_id: input_boolean.bedroom_lights_and_cover_safety_switch
|
||
- action: cover.open_cover
|
||
entity_id: cover.bedroom
|
||
- if:
|
||
- condition: state
|
||
entity_id: input_boolean.child_lock
|
||
state: 'off'
|
||
then:
|
||
- action: input_boolean.turn_off
|
||
entity_id:
|
||
- input_boolean.home_night_mode
|
||
- input_boolean.silent_mode
|
||
default: []
|
||
- alias: Aqara Cube 1 Handler
|
||
id: aqara_cube_1_handler
|
||
mode: restart
|
||
max_exceeded: silent
|
||
triggers:
|
||
- trigger: event
|
||
event_type: zha_event
|
||
event_data:
|
||
device_id: 48fad66663fc601ed1a63ac01e804fab
|
||
actions:
|
||
- if:
|
||
- condition: state
|
||
entity_id: input_boolean.cube_1_control
|
||
state: 'on'
|
||
then:
|
||
- variables:
|
||
command: '{{ trigger.event.data.command }}'
|
||
flip_degrees: '{{ trigger.event.data.args.flip_degrees if trigger.event.data.args.flip_degrees
|
||
is defined else 0 }}'
|
||
relative_degrees: '{{ trigger.event.data.args.relative_degrees if trigger.event.data.args.relative_degrees
|
||
is defined else 0 }}'
|
||
- choose:
|
||
- conditions:
|
||
- '{{ flip_degrees == 90 }}'
|
||
sequence:
|
||
- action: light.toggle
|
||
entity_id: light.string_lights
|
||
- conditions:
|
||
- '{{ flip_degrees == 180 }}'
|
||
sequence:
|
||
- action: light.toggle
|
||
entity_id: light.floor_lamp
|
||
- conditions:
|
||
- '{{ command == ''shake'' }}'
|
||
sequence:
|
||
- action: script.turn_on
|
||
entity_id: script.turn_off_all_lights
|
||
- conditions:
|
||
- '{{ command == ''tap'' }}'
|
||
sequence:
|
||
- action: scene.turn_on
|
||
entity_id: scene.movies
|
||
- conditions:
|
||
- '{{ command == ''slide'' }}'
|
||
sequence:
|
||
- action: light.turn_on
|
||
entity_id:
|
||
- light.gyver_lamp
|
||
- light.pc_backlight
|
||
- conditions:
|
||
- '{{ command == ''rotate_left'' or command == ''rotate_right'' }}'
|
||
sequence:
|
||
- action: light.turn_on
|
||
entity_id: light.floor_lamp
|
||
data_template:
|
||
brightness: "{% set suggested = state_attr('light.floor_lamp', 'brightness')\
|
||
\ | int(0) + \n relative_degrees | int(0) + 1 %}\n{% if suggested >\
|
||
\ 0 %} {{ suggested }} {% else %} 1 {% endif %}\n"
|
||
- alias: Tradfri Switch 1 Handler
|
||
id: tradfri_switch_1_handler
|
||
mode: restart
|
||
max_exceeded: silent
|
||
triggers:
|
||
- trigger: event
|
||
event_type: zha_event
|
||
event_data:
|
||
device_id: a64c98fa9b0c36e96ebe42160fcf78b5
|
||
actions:
|
||
- variables:
|
||
command: '{{ trigger.event.data.command }}'
|
||
- choose:
|
||
- conditions:
|
||
- '{{ command == ''on'' }}'
|
||
sequence:
|
||
- action: input_boolean.turn_on
|
||
entity_id: input_boolean.scooter_charger
|
||
- conditions:
|
||
- '{{ command == ''off'' }}'
|
||
sequence:
|
||
- action: input_boolean.turn_off
|
||
entity_id: input_boolean.scooter_charger
|
||
- alias: Rodret Dimmer 1 Handler
|
||
id: rodret_dimmer_1_handler
|
||
use_blueprint:
|
||
path: damru/ikea-rodret_E2201_ZHA-Z2M_control-anything.yaml
|
||
input:
|
||
remote_device: 51724530dc1fcac3561d2fcb39f40048
|
||
on_press_action:
|
||
- action: light.turn_on
|
||
entity_id:
|
||
- light.mi_desk_lamp
|
||
- light.tv_lights
|
||
- action: switch.turn_on
|
||
entity_id: switch.monolith_speakers
|
||
off_press_action:
|
||
- action: light.turn_off
|
||
entity_id:
|
||
- light.mi_desk_lamp
|
||
- light.tv_lights
|
||
- action: switch.turn_off
|
||
entity_id: switch.monolith_speakers
|
||
on_hold_action:
|
||
- action: light.turn_on
|
||
entity_id: light.mi_desk_lamp
|
||
data:
|
||
brightness_step_pct: 4
|
||
off_hold_action:
|
||
- action: light.turn_on
|
||
entity_id: light.mi_desk_lamp
|
||
data:
|
||
brightness_step_pct: -4
|
||
helper_hold_delay: 200
|
||
helper_max_loops: 20
|