AutomationDataset/Enzokot/Enzokot_automations.yaml

5737 lines
211 KiB
YAML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

- alias: turn_on_alarm
id: turn_on_alarm
initial_state: true
triggers:
- trigger: state
entity_id: input_boolean.alarm_gateway_button
to: 'on'
actions:
- action: scene.create
data:
scene_id: before_alarm_on
snapshot_entities:
- light.gateway_light_04cf8cabd77b
- parallel:
- action: script.turn_on
target:
entity_id: script.alarm_gateway_light
- action: script.turn_on
target:
entity_id: script.alarm_gateway_sound
- action: script.turn_on
target:
entity_id: script.alarm_tts_yandex_stations
- action: timer.start
target:
entity_id: timer.alarm_gateway_sound
data:
duration: 1800
- alias: turn_off_alarm
id: turn_off_alarm
initial_state: true
triggers:
- trigger: state
entity_id: input_boolean.alarm_gateway_button
to: 'off'
actions:
- parallel:
- action: script.turn_off
target:
entity_id: script.alarm_gateway_light
- action: script.turn_off
target:
entity_id: script.alarm_gateway_sound
- action: script.turn_off
target:
entity_id: script.alarm_tts_yandex_stations
- action: light.turn_off
target:
entity_id: light.gateway_light_04cf8cabd77b
- action: xiaomi_aqara.stop_ringtone
data:
gw_mac: secret gateway1_mac
- action: timer.cancel
target:
entity_id: timer.alarm_gateway_sound
- choose:
- conditions:
- '{{ states.group.dynamic_group_gateway_alarm_last_state_disarmed is not
none }}'
sequence:
- variables:
entities: '{{ expand(''group.dynamic_group_gateway_alarm_last_state_disarmed'')
| map(attribute = ''entity_id'') | list | join('', '') }}'
- action: alarm_control_panel.alarm_arm_away
target:
entity_id: '{{ entities }}'
- action: alarm_control_panel.alarm_disarm
target:
entity_id: '{{ entities }}'
- action: group.remove
data:
object_id: dynamic_group_gateway_alarm_last_state_disarmed
- choose:
- conditions:
- '{{ states.group.dynamic_group_gateway_alarm_last_state_armed_away is not
none }}'
sequence:
- variables:
entities: '{{ expand(''group.dynamic_group_gateway_alarm_last_state_armed_away'')
| map(attribute = ''entity_id'') | list | join('', '') }}'
- action: alarm_control_panel.alarm_disarm
target:
entity_id: '{{ entities }}'
- action: alarm_control_panel.alarm_arm_away
target:
entity_id: '{{ entities }}'
- action: group.remove
data:
object_id: dynamic_group_gateway_alarm_last_state_armed_away
- action: scene.turn_on
target:
entity_id: scene.before_alarm_on
- alias: alarm_gateway_stop_ringtone_timer
id: alarm_gateway_stop_ringtone_timer
initial_state: true
triggers:
- trigger: event
event_type: timer.finished
event_data:
entity_id: timer.alarm_gateway_sound
conditions:
- condition: state
entity_id: input_boolean.alarm_gateway_button
state: 'on'
actions:
- parallel:
- action: script.turn_off
target:
entity_id: script.alarm_gateway_sound
- action: script.turn_off
target:
entity_id: script.alarm_tts_yandex_stations
- action: xiaomi_aqara.stop_ringtone
data:
gw_mac: secret gateway1_mac
- alias: smoke detector alarm to gateway
id: smoke detector alarm to gateway
initial_state: true
triggers:
- trigger: state
entity_id:
- binary_sensor.0x158d0003943639_smoke
- binary_sensor.0x158d00039a8358_smoke
- binary_sensor.0x158d00039d9398_smoke
- binary_sensor.0x158d00045ca483_smoke
- binary_sensor.0x00158d00045cd551_smoke
to: 'on'
conditions:
- condition: state
entity_id: input_boolean.alarm_gateway_button
state: 'off'
actions:
- action: input_boolean.turn_on
target:
entity_id: input_boolean.alarm_gateway_button
- alias: smoke detector stop alarm to gateway
id: smoke detector stop alarm to gateway
initial_state: true
triggers:
- trigger: state
entity_id:
- binary_sensor.0x158d0003943639_smoke
- binary_sensor.0x158d00039a8358_smoke
- binary_sensor.0x158d00039d9398_smoke
- binary_sensor.0x158d00045ca483_smoke
- binary_sensor.0x00158d00045cd551_smoke
from: 'on'
to: 'off'
conditions:
- condition: state
entity_id: binary_sensor.0x158d0003943639_smoke
state: 'off'
- condition: state
entity_id: binary_sensor.0x158d00039a8358_smoke
state: 'off'
- condition: state
entity_id: binary_sensor.0x158d00039d9398_smoke
state: 'off'
- condition: state
entity_id: binary_sensor.0x158d00045ca483_smoke
state: 'off'
- condition: state
entity_id: binary_sensor.0x00158d00045cd551_smoke
state: 'off'
- condition: state
entity_id: input_boolean.alarm_gateway_button
state: 'on'
actions:
- action: input_boolean.turn_off
target:
entity_id: input_boolean.alarm_gateway_button
- alias: door and motion alarm to gateway
id: door and motion alarm to gateway
max_exceeded: silent
initial_state: true
triggers:
- trigger: state
entity_id:
- binary_sensor.0x158d00054b8d72_motion
- binary_sensor.0x158d000566bde7_motion
- binary_sensor.0x158d0003953ee9_motion
- binary_sensor.0x158d000359304c_contact
- binary_sensor.window_childrens_room_group
- binary_sensor.window_bed_room_group
- binary_sensor.window_kitchen_group
- binary_sensor.window_living_room_group
to: 'on'
- trigger: state
entity_id:
- sensor.0x158d00054b8d72_illuminance
- sensor.0x158d000566bde7_illuminance
conditions:
- condition: state
entity_id: alarm_control_panel.signalka_shliuza_alarm
state: armed_away
- condition: state
entity_id: input_boolean.alarm_gateway_button
state: 'off'
actions:
- action: input_boolean.turn_on
target:
entity_id: input_boolean.alarm_gateway_button
- alias: turn_off_alarm_disarmed_control_panel
id: turn_off_alarm_disarmed_control_panel
initial_state: true
triggers:
- trigger: state
entity_id: alarm_control_panel.signalka_shliuza_alarm
to: disarmed
- trigger: state
entity_id: sensor.0x158d0003a360b6_action
to: hold
conditions:
- condition: state
entity_id: input_boolean.alarm_gateway_button
state: 'on'
actions:
- action: input_boolean.turn_off
target:
entity_id: input_boolean.alarm_gateway_button
- alias: wireless switch many tap alarm to gateway
id: wireless switch many tap alarm to gateway
initial_state: true
triggers:
- trigger: state
entity_id: sensor.0x158d0003a360b6_action
to: many
conditions:
- condition: state
entity_id: input_boolean.alarm_gateway_button
state: 'off'
actions:
- variables:
sm_g973f_rezhim_ne_bespokoit: '{{ states(''sensor.sm_g973f_do_not_disturb_sensor'')
}}'
- choose:
- conditions: '{{ sm_g973f_rezhim_ne_bespokoit = ''off'' }}'
sequence:
- action: notify.mobile_app_sm_g973f
data:
message: command_dnd
data:
command: 'off'
- wait_for_trigger:
- trigger: state
entity_id: sensor.sm_g973f_do_not_disturb_sensor
timeout:
seconds: 5
- variables:
sm_g973f_rezhim_zvonka: '{{ states(''sensor.sm_g973f_ringer_mode'') }}'
- choose:
- conditions: '{{ sm_g973f_rezhim_zvonka = ''normal'' }}'
sequence:
- action: notify.notify
data:
message: command_ringer_mode
data:
command: normal
- parallel:
- action: input_boolean.turn_on
target:
entity_id: input_boolean.alarm_gateway_button
- action: telegram_bot.send_message
data:
title: '{{ ''\U0001f6a8'' }} *Сигнализация*'
message: Нажатие тревожной кнопки в *детской*
target: secret telegram_all_chat_id
- action: notify.notify
data:
title: '{{ ''🚨'' }} Сигнализация'
message: Нажатие тревожной кнопки в детской
data:
ttl: 0
priority: high
channel: alarm_stream
actions:
- action: stop_alarm
title: Выключить сирену
- action: notify.huawei_lte
data:
message: 🚨 Нажатие тревожной кнопки в детской
target: secret sms_phone_all
data:
url: http://192.168.8.1/
- choose:
- conditions: '{{ sm_g973f_rezhim_zvonka = ''normal'' }}'
sequence:
- action: notify.mobile_app_sm_g973f
data:
message: command_ringer_mode
data:
command: '{{ sm_g973f_rezhim_zvonka }}'
- choose:
- conditions: '{{ sm_g973f_rezhim_ne_bespokoit = ''off'' }}'
sequence:
- action: notify.mobile_app_sm_g973f
data:
message: command_dnd
data:
command: '{{ sm_g973f_rezhim_ne_bespokoit }}'
- alias: mobile app telegram notification action turn off alarm
id: mobile app telegram notification action turn off alarm
initial_state: true
triggers:
- trigger: event
event_type: mobile_app_notification_action
event_data:
action: stop_alarm
- trigger: event
id: telegram_callback_stop_alarm
event_type: telegram_callback
event_data:
data: /stop_alarm
actions:
- choose:
- conditions: '{{ is_state(''input_boolean.alarm_gateway_button'', ''on'') }}'
sequence:
- action: input_boolean.turn_off
target:
entity_id: input_boolean.alarm_gateway_button
- choose:
- conditions: '{{ trigger.id == ''telegram_callback_stop_alarm'' }}'
sequence:
- action: telegram_bot.delete_message
data:
chat_id: '{{ trigger.event.data.chat_id }}'
message_id: '{{ trigger.event.data.message.message_id }}'
- action: telegram_bot.answer_callback_query
data:
callback_query_id: '{{ trigger.event.data.id }}'
message: Выключили сигнализацию
- alias: main gateway arm dissarm to others gw
id: main gateway arm dissarm to others gw
initial_state: true
triggers:
- trigger: state
id: armed
entity_id: alarm_control_panel.signalka_shliuza_alarm
to: armed_away
- trigger: state
entity_id: alarm_control_panel.signalka_shliuza_alarm
to: disarmed
actions:
- action: '{{ iif(trigger.id == ''armed'', ''alarm_control_panel.alarm_arm_away'',
''alarm_control_panel.alarm_disarm'') }}'
target:
entity_id:
- alarm_control_panel.54ef44315770_alarm
- alarm_control_panel.54ef44cb80fd_alarm
- alarm_control_panel.54ef443127b2_alarm
- alias: smoke detector alarm to turn off all
id: smoke detector alarm to turn off all
initial_state: true
triggers:
- trigger: state
entity_id:
- binary_sensor.0x158d0003943639_smoke
- binary_sensor.0x158d00039a8358_smoke
- binary_sensor.0x158d00039d9398_smoke
- binary_sensor.0x158d00045ca483_smoke
- binary_sensor.0x00158d00045cd551_smoke
to: 'on'
actions:
- action: homeassistant.turn_off
target:
entity_id: '{{ expand(''group.entity_ids_for_turn_off_by_smoke_detector'') |
map(attribute = ''entity_id'') | join('', '') }}'
- alias: main gateway arm dissarm from nfc tag hallway
id: main gateway arm dissarm from nfc tag hallway
initial_state: true
triggers:
- trigger: tag
tag_id:
- 73aef2e2-722b-418d-b20a-24e84eda330e
device_id:
- f4de6186902849d0845c4e2552d3531d
conditions:
- '{{ state_attr(this.entity_id, ''current'') | int(0) == 0 }}'
actions:
- choose:
- conditions:
- '{{ is_state(''alarm_control_panel.signalka_shliuza_alarm'', ''disarmed'')
}}'
sequence:
- wait_for_trigger:
- trigger: tag
tag_id:
- 73aef2e2-722b-418d-b20a-24e84eda330e
timeout: 15
- if:
- '{{ wait.trigger = None }}'
then:
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
message: '{{ ''🔇 Отменено включение сигнализации'' }}'
else:
- action: alarm_control_panel.alarm_arm_away
target:
entity_id: alarm_control_panel.signalka_shliuza_alarm
default:
- action: alarm_control_panel.alarm_disarm
target:
entity_id: alarm_control_panel.signalka_shliuza_alarm
- alias: gateway alarm to turn on to all gateways
id: gateway alarm to turn on to all gateways
max_exceeded: silent
initial_state: true
triggers:
- trigger: state
entity_id:
- alarm_control_panel.54ef44315770_alarm
- alarm_control_panel.54ef44cb80fd_alarm
- alarm_control_panel.54ef443127b2_alarm
to: triggered
- trigger: state
entity_id: input_boolean.alarm_gateway_button
to: 'on'
conditions:
- '{{ now() - state_attr(this.entity_id, ''last_triggered'') > timedelta(seconds
= 5) }}'
actions:
- variables:
entities: '{{ states.alarm_control_panel | selectattr(''state'', ''in'', [''armed_away'',
''disarmed'']) | rejectattr(''entity_id'', ''eq'', ''alarm_control_panel.signalka_shliuza_alarm'')
| map(attribute = ''entity_id'') | list | to_json }}'
- parallel:
- choose:
- conditions:
- '{{ entities | from_json | count > 0 }}'
sequence:
- action: alarm_control_panel.alarm_trigger
target:
entity_id: '{{ entities | from_json | join('', '') }}'
- choose:
- conditions:
- condition: state
entity_id: input_boolean.alarm_gateway_button
state: 'off'
sequence:
- action: input_boolean.turn_on
target:
entity_id: input_boolean.alarm_gateway_button
- alias: input number target humidity cb1 changed
id: input number target humidity cb1 changed
initial_state: true
mode: queued
max: 25
triggers:
- trigger: state
entity_id: input_number.zhimi_humidifier_cb1_target_humidity
actions:
- action: humidifier.set_humidity
target:
entity_id: humidifier.zhimi_humidifier_cb1
data:
humidity: '{{ states("input_number.zhimi_humidifier_cb1_target_humidity") |
int(0) }}'
- alias: sensor target humidity cb1 changed state
id: sensor target humidity cb1 changed state
initial_state: true
mode: single
max_exceeded: silent
trigger_variables:
not_has_state: '{{ [''unknown'', ''unavailable'', ''none'', none, null] }}'
triggers:
- trigger: state
entity_id: sensor.zhimi_humidifier_cb1_target_humidity
conditions:
- condition: template
value_template: "{{ trigger.to_state.state is defined and\n trigger.to_state.state\
\ not in not_has_state and \n trigger.to_state.state != trigger.from_state.state\n\
}}\n"
actions:
- action: input_number.set_value
target:
entity_id: input_number.zhimi_humidifier_cb1_target_humidity
data:
value: "{% if trigger.to_state.state | int(0) != 0 -%}\n {{ trigger.to_state.state\
\ | int(0) }}\n{%- else -%}\n 40\n{%- endif %}"
- alias: input number target humidity ca4 changed
id: input number target humidity ca4 changed
initial_state: true
mode: queued
max: 25
triggers:
- trigger: state
entity_id: input_number.zhimi_humidifier_ca4_target_humidity
actions:
- action: humidifier.set_humidity
target:
entity_id: humidifier.zhimi_humidifier_ca4
data:
humidity: '{{ states("input_number.zhimi_humidifier_ca4_target_humidity") |
int(0) }}'
- alias: sensor target humidity ca4 changed state
id: sensor target humidity ca4 changed state
initial_state: true
mode: single
max_exceeded: silent
trigger_variables:
not_has_state: '{{ [''unknown'', ''unavailable'', ''none'', none, null] }}'
triggers:
- trigger: state
entity_id: sensor.zhimi_humidifier_ca4_target_humidity
conditions:
- condition: template
value_template: "{{ trigger.to_state.state is defined and\n trigger.to_state.state\
\ not in not_has_state and \n trigger.to_state.state != trigger.from_state.state\n\
}}\n"
actions:
- action: input_number.set_value
target:
entity_id: input_number.zhimi_humidifier_ca4_target_humidity
data:
value: "{% if trigger.to_state.state | int(0) != 0 -%}\n {{ trigger.to_state.state\
\ | int(0) }}\n{%- else -%}\n 40\n{%- endif %}"
- alias: air humidifier day and night speed
id: air humidifier day and night speed
mode: queued
max: 25
triggers:
- trigger: time
at: '22:00:00'
- trigger: time
at: 08:00:00
actions:
- parallel:
- choose:
- conditions:
- condition: state
entity_id: humidifier.zhimi_humidifier_cb1
state: 'on'
sequence:
- action: humidifier.set_mode
target:
entity_id: humidifier.zhimi_humidifier_cb1
data:
speed: "{% if '08:00:00' <= as_timestamp(trigger.now, 0) | timestamp_custom('%H:%M:%S',\
\ true, 0) < '22:00:00' %}\n Auto\n{% else %} \n Silent \n{% endif\
\ %}"
- choose:
- conditions:
- condition: state
entity_id: humidifier.zhimi_humidifier_ca4
state: 'on'
sequence:
- action: humidifier.set_mode
target:
entity_id: humidifier.zhimi_humidifier_ca4
data:
speed: "{% if '08:00:00' <= as_timestamp(trigger.now, 0) | timestamp_custom('%H:%M:%S',\
\ true, 0) < '22:00:00' %}\n Auto\n{% else %} \n Low \n{% endif\
\ %}"
- alias: turn on off climate devices childrens room window open close
id: turn on off climate devices childrens room window open close
mode: single
max_exceeded: silent
trigger_variables:
not_has_state: '{{ [''unknown'', ''unavailable''] }}'
triggers:
- trigger: state
entity_id: binary_sensor.window_childrens_room_group
from: 'off'
to: 'on'
for: 00:05:00
- trigger: state
entity_id: binary_sensor.window_childrens_room_group
from: 'on'
to: 'off'
for: 00:01:15
conditions: "{{ \n trigger.to_state.state == 'on' or \n is_state('input_boolean.auto_triggered_fan_window_childrens_room',\
\ 'on') or \n is_state('input_boolean.auto_triggered_valve_window_childrens_room',\
\ 'on')\n}}\n"
actions:
- parallel:
- sequence:
- if:
- '{{ states(''humidifier.zhimi_humidifier_ca4'') in not_has_state }}'
then:
- wait_for_trigger:
- trigger: state
entity_id: humidifier.zhimi_humidifier_ca4
from:
- unknown
- unavailable
timeout: 75
- choose:
- conditions:
- condition: template
value_template: "{{ \n trigger.to_state.state == 'on' and is_state('humidifier.zhimi_humidifier_ca4',\
\ 'on') \n or trigger.to_state.state == 'off' and is_state('humidifier.zhimi_humidifier_ca4',\
\ 'off')\n and is_state('input_boolean.auto_triggered_fan_window_childrens_room',\
\ 'on')\n}}\n"
sequence:
- action: "{% if trigger.to_state.state == 'on' -%}\n humidifier.turn_off\n\
{%- else -%}\n humidifier.turn_on\n{%- endif %}\n"
target:
entity_id: humidifier.zhimi_humidifier_ca4
- action: input_boolean.toggle
target:
entity_id: input_boolean.auto_triggered_fan_window_childrens_room
- conditions:
- condition: template
value_template: "{{ \n trigger.to_state.state == 'off'\n and is_state('input_boolean.auto_triggered_fan_window_childrens_room',\
\ 'on')\n}}\n"
sequence:
- action: input_boolean.turn_off
target:
entity_id: input_boolean.auto_triggered_fan_window_childrens_room
- choose:
- conditions:
- condition: template
value_template: "{{ \n trigger.to_state.state == 'on' and is_state('climate.0x5c0272fffec89454',\
\ 'auto') \n or trigger.to_state.state == 'off' and is_state('climate.0x5c0272fffec89454',\
\ 'off') \n and is_state('input_boolean.auto_triggered_valve_window_childrens_room',\
\ 'on')\n}}\n"
sequence:
- action: climate.set_hvac_mode
target:
entity_id: climate.0x5c0272fffec89454
data:
hvac_mode: "{% if trigger.to_state.state == 'on' -%}\n off\n{%- else\
\ -%}\n auto\n{%- endif %}\n"
- action: "{% if trigger.to_state.state == 'off' -%}\n input_boolean.turn_off\n\
{%- else -%}\n input_boolean.turn_on\n{%- endif %}\n"
target:
entity_id: input_boolean.auto_triggered_valve_window_childrens_room
- action: climate.set_preset_mode
target:
entity_id: climate.0x5c0272fffec89454
data:
preset_mode: manual
- conditions:
- condition: template
value_template: "{{ \n trigger.to_state.state == 'off' and is_state('climate.0x5c0272fffec89454',\
\ 'auto') \n and is_state('input_boolean.auto_triggered_valve_window_childrens_room',\
\ 'on')\n}}\n"
sequence:
- action: input_boolean.turn_off
target:
entity_id: input_boolean.auto_triggered_valve_window_childrens_room
- alias: turn on off climate devices bed room window open close
id: turn on off climate devices bed room window open close
mode: single
max_exceeded: silent
trigger_variables:
not_has_state: '{{ [''unknown'', ''unavailable''] }}'
triggers:
- trigger: state
entity_id: binary_sensor.window_bed_room_group
from: 'off'
to: 'on'
for: 00:05:00
- trigger: state
entity_id: binary_sensor.window_bed_room_group
from: 'on'
to: 'off'
for: 00:01:15
conditions: "{{ \n trigger.to_state.state == 'on' or \n is_state('input_boolean.auto_triggered_fan_window_bed_room',\
\ 'on') or \n is_state('input_boolean.auto_triggered_valve_window_bed_room',\
\ 'on')\n}}\n"
actions:
- parallel:
- sequence:
- if:
- '{{ states(''humidifier.zhimi_humidifier_cb1'') in not_has_state }}'
then:
- wait_for_trigger:
- trigger: state
entity_id: humidifier.zhimi_humidifier_cb1
from:
- unknown
- unavailable
timeout: 75
- choose:
- conditions:
- condition: template
value_template: "{{ \n trigger.to_state.state == 'on' and is_state('humidifier.zhimi_humidifier_cb1',\
\ 'on') \n or trigger.to_state.state == 'off' and is_state('humidifier.zhimi_humidifier_cb1',\
\ 'off')\n and is_state('input_boolean.auto_triggered_fan_window_bed_room',\
\ 'on')\n}}\n"
sequence:
- action: "{% if trigger.to_state.state == 'on' -%}\n humidifier.turn_off\n\
{%- else -%}\n humidifier.turn_on\n{%- endif %}\n"
target:
entity_id: humidifier.zhimi_humidifier_cb1
- action: "{% if trigger.to_state.state == 'off' -%}\n input_boolean.turn_off\n\
{%- else -%}\n input_boolean.turn_on\n{%- endif %}\n"
target:
entity_id: input_boolean.auto_triggered_fan_window_bed_room
- conditions:
- condition: template
value_template: "{{ \n trigger.to_state.state == 'off'\n and is_state('input_boolean.auto_triggered_fan_window_bed_room',\
\ 'on')\n}}\n"
sequence:
- action: input_boolean.turn_off
target:
entity_id: input_boolean.auto_triggered_fan_window_bed_room
- choose:
- conditions:
- condition: template
value_template: "{{ \n trigger.to_state.state == 'on' and is_state('climate.0x60a423fffe968719',\
\ 'auto') \n or trigger.to_state.state == 'off' and is_state('climate.0x60a423fffe968719',\
\ 'off') \n and is_state('input_boolean.auto_triggered_valve_window_bed_room',\
\ 'on')\n}}\n"
sequence:
- action: climate.set_hvac_mode
target:
entity_id: climate.0x60a423fffe968719
data:
hvac_mode: "{% if trigger.to_state.state == 'on' -%}\n off\n{%- else\
\ -%}\n auto\n{%- endif %}\n"
- action: "{% if trigger.to_state.state == 'off' -%}\n input_boolean.turn_off\n\
{%- else -%}\n input_boolean.turn_on\n{%- endif %}\n"
target:
entity_id: input_boolean.auto_triggered_valve_window_bed_room
- action: climate.set_preset_mode
target:
entity_id: climate.0x60a423fffe968719
data:
preset_mode: manual
- conditions:
- condition: template
value_template: "{{ \n trigger.to_state.state == 'off' and is_state('climate.0x60a423fffe968719',\
\ 'auto') \n and is_state('input_boolean.auto_triggered_valve_window_bed_room',\
\ 'on')\n}}\n"
sequence:
- action: input_boolean.turn_off
target:
entity_id: input_boolean.auto_triggered_valve_window_bed_room
- alias: turn on off climate devices kitchen window open close
id: turn on off climate devices kitchen window open close
mode: single
max_exceeded: silent
triggers:
- trigger: state
entity_id: binary_sensor.window_kitchen_group
from: 'off'
to: 'on'
for: 00:05:00
- trigger: state
entity_id: binary_sensor.window_kitchen_group
from: 'on'
to: 'off'
for: 00:01:15
conditions: "{{ \n trigger.to_state.state == 'on' or \n is_state('input_boolean.auto_triggered_valve_window_kitchen',\
\ 'on') or\n is_state('input_boolean.auto_triggered_heating_floor_window_kitchen',\
\ 'on')\n}}\n"
actions:
- parallel:
- choose:
- conditions:
- condition: template
value_template: "{{ \n trigger.to_state.state == 'on' and is_state('climate.0x5c0272fffe8de819',\
\ 'auto') \n or trigger.to_state.state == 'off' and is_state('climate.0x5c0272fffe8de819',\
\ 'off') \n and is_state('input_boolean.auto_triggered_valve_window_kitchen',\
\ 'on')\n}}\n"
sequence:
- action: climate.set_hvac_mode
target:
entity_id: climate.0x5c0272fffe8de819
data:
hvac_mode: "{% if trigger.to_state.state == 'on' -%}\n off\n{%- else\
\ -%}\n auto\n{%- endif %}\n"
- action: "{% if trigger.to_state.state == 'off' -%}\n input_boolean.turn_off\n\
{%- else -%}\n input_boolean.turn_on\n{%- endif %}\n"
target:
entity_id: input_boolean.auto_triggered_valve_window_kitchen
- action: climate.set_preset_mode
target:
entity_id: climate.0x5c0272fffe8de819
data:
preset_mode: manual
- conditions:
- condition: template
value_template: "{{ \n trigger.to_state.state == 'off' and is_state('climate.0x5c0272fffe8de819',\
\ 'auto') \n and is_state('input_boolean.auto_triggered_valve_window_kitchen',\
\ 'on')\n}}\n"
sequence:
- action: input_boolean.turn_off
target:
entity_id: input_boolean.auto_triggered_valve_window_kitchen
- choose:
- conditions:
- condition: template
value_template: "{{ \n trigger.to_state.state == 'on' and is_state('climate.devireg_k',\
\ 'heat') \n or trigger.to_state.state == 'off' and is_state('climate.devireg_k',\
\ 'off') \n and is_state('input_boolean.auto_triggered_heating_floor_window_kitchen',\
\ 'on')\n}}\n"
sequence:
- action: climate.set_hvac_mode
target:
entity_id: climate.devireg_k
data:
hvac_mode: '{{ iif(trigger.to_state.state == ''on'', ''off'', ''heat'')
}}'
- action: '{{ iif(trigger.to_state.state == ''off'', ''input_boolean.turn_off''
, ''input_boolean.turn_on'') }}'
target:
entity_id: input_boolean.auto_triggered_heating_floor_window_kitchen
- conditions:
- condition: template
value_template: "{{ \n trigger.to_state.state == 'off' and is_state('climate.devireg_k',\
\ 'on') \n and is_state('input_boolean.auto_triggered_heating_floor_window_kitchen',\
\ 'on')\n}}\n"
sequence:
- action: input_boolean.turn_off
target:
entity_id: input_boolean.auto_triggered_heating_floor_window_kitchen
- alias: turn on off climate devices living room window open close
id: turn on off climate devices living room window open close
mode: single
max_exceeded: silent
triggers:
- trigger: state
entity_id: binary_sensor.window_living_room_group
from: 'off'
to: 'on'
for: 00:05:00
- trigger: state
entity_id: binary_sensor.window_living_room_group
from: 'on'
to: 'off'
for: 00:01:15
conditions: "{{ \n trigger.to_state.state == 'on' or\n is_state('input_boolean.auto_triggered_ac_window_living_room',\
\ 'on') or \n is_state('input_boolean.auto_triggered_valve_window_living_room',\
\ 'on')\n}}\n"
actions:
- choose:
- conditions:
- condition: template
value_template: "{{ \n trigger.to_state.state == 'on' and states('climate.avatto_living_room_ac')\
\ == 'cool'\n or trigger.to_state.state == 'off' and is_state('climate.avatto_living_room_ac',\
\ 'off')\n and is_state('input_boolean.auto_triggered_ac_window_living_room',\
\ 'on')\n}}\n"
sequence:
- action: climate.set_hvac_mode
target:
entity_id: climate.avatto_living_room_ac
data:
hvac_mode: "{% if trigger.to_state.state == 'on' -%}\n off\n{%- else -%}\n\
\ cool\n{%- endif %}\n"
- action: "{% if trigger.to_state.state == 'off' -%}\n input_boolean.turn_off\n\
{%- else -%}\n input_boolean.turn_on\n{%- endif %}\n"
target:
entity_id: input_boolean.auto_triggered_ac_window_living_room
- conditions:
- condition: template
value_template: "{{ \n trigger.to_state.state == 'off' and is_state('climate.avatto_living_room_ac',\
\ 'cool')\n and is_state('input_boolean.auto_triggered_ac_window_living_room',\
\ 'on')\n}}\n"
sequence:
- action: input_boolean.turn_off
target:
entity_id: input_boolean.auto_triggered_ac_window_living_room
- choose:
- conditions:
- condition: template
value_template: "{{ \n trigger.to_state.state == 'on' and is_state('climate.0x5c0272fffec9db22',\
\ 'auto') \n or trigger.to_state.state == 'off' and is_state('climate.0x5c0272fffec9db22',\
\ 'off') \n and is_state('input_boolean.auto_triggered_valve_window_living_room',\
\ 'on')\n}}\n"
sequence:
- action: climate.set_hvac_mode
target:
entity_id: climate.0x5c0272fffec9db22
data:
hvac_mode: "{% if trigger.to_state.state == 'on' -%}\n off\n{%- else -%}\n\
\ auto\n{%- endif %}\n"
- action: "{% if trigger.to_state.state == 'off' -%}\n input_boolean.turn_off\n\
{%- else -%}\n input_boolean.turn_on\n{%- endif %}\n"
target:
entity_id: input_boolean.auto_triggered_valve_window_living_room
- action: climate.set_preset_mode
target:
entity_id: climate.0x5c0272fffec9db22
data:
preset_mode: manual
- conditions:
- condition: template
value_template: "{{ \n trigger.to_state.state == 'off' and is_state('climate.0x5c0272fffec9db22',\
\ 'auto') \n and is_state('input_boolean.auto_triggered_valve_window_living_room',\
\ 'on')\n}}\n"
sequence:
- action: input_boolean.turn_off
target:
entity_id: input_boolean.auto_triggered_valve_window_living_room
- alias: restart socket 2 for bedroom air humidifier unavailable
id: restart socket 2 for bedroom air humidifier unavailable
initial_state: true
mode: single
max_exceeded: silent
triggers:
- trigger: state
entity_id: humidifier.zhimi_humidifier_cb1
to: null
- trigger: homeassistant
event: start
conditions:
- condition: state
entity_id: input_boolean.instances_stoping
state: 'off'
- '{{ not has_value(''humidifier.zhimi_humidifier_cb1'') }}'
- condition: state
entity_id: switch.0x60a423fffef8d41a
state: 'on'
actions:
- wait_template: '{{ has_value(''humidifier.zhimi_humidifier_cb1'') }}'
timeout: 00:05:00
- choose:
- conditions: '{{ wait.completed == false and is_state(''binary_sensor.local_network_availability'',
''on'') }}'
sequence:
- action: switch.turn_off
target:
entity_id: switch.0x60a423fffef8d41a
- delay:
seconds: 5
- action: switch.turn_on
target:
entity_id: switch.0x60a423fffef8d41a
- alias: notification public ip compare debug
id: notification public ip compare debug
trigger_variables:
not_has_state: '{{ [''unknown'', ''unavailable'', ''none'', None, null, '''']
}}'
triggers:
- trigger: state
entity_id: sensor.myip_keenetic
conditions: "{{ trigger.from_state.state not in not_has_state and\n trigger.to_state.state\
\ not in not_has_state and\n trigger.from_state.state = trigger.to_state.state\
\ and\n trigger.to_state.state = states('sensor.myip')\n}}\n"
actions:
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
title: '{{ ''\U0001f4f6'' }} *Трекинг устройств*'
message: Внешний IP-адрес keendns `{{ trigger.to_state.state }}` не равен физическому
`{{ states('sensor.myip') }}`
- alias: turn_on_doorbell
id: turn_on_doorbell
initial_state: true
mode: single
max_exceeded: silent
triggers:
- trigger: state
entity_id: sensor.0x158d00045a78af_action
conditions:
- condition: state
entity_id: timer.doorbell_timer_restart_automation
state: idle
- condition: state
entity_id: input_boolean.alarm_gateway_button
state: 'off'
- condition: state
entity_id: alarm_control_panel.signalka_shliuza_alarm
state: disarmed
- condition: template
value_template: '{{ trigger.to_state.state not in [''release'', ''unavailable'',
''unknown'', '''', ''None''] }}
'
actions:
- action: timer.start
target:
entity_id: timer.doorbell_timer_restart_automation
- parallel:
- sequence:
- variables:
string_now_time: '{{ now().strftime(''%Y%m%d-%H%M%S'') }}'
- action: camera.snapshot
target:
entity_id: camera.hallway_1_fluent
data:
filename: /share/DS_Obmen/Doorbeel_Snapshots/snapshot_hallway_1_{{ string_now_time
}}.jpg
- action: telegram_bot.send_photo
data:
file: /share/DS_Obmen/Doorbeel_Snapshots/snapshot_hallway_1_{{ string_now_time
}}.jpg
caption: '{{ ''🔔'' }} *Кто-то звонит в дверь*'
target: secret telegram_all_chat_id
- action: telegram_bot.send_video
data:
url: http://localhost:1984/api/stream.mp4?src=hallway_1_sub&mp4=flac&duration=5&filename=record.mp4
caption: '{{ ''🔔'' }} *Кто-то звонит в дверь*'
target: secret telegram_enzokot_chat_id
- sequence:
- condition:
- condition: time
after: '8:00:00'
before: '21:30:00'
- action: xiaomi_aqara.stop_ringtone
data:
gw_mac: secret gateway1_mac
- action: xiaomi_aqara.play_ringtone
data:
gw_mac: secret gateway1_mac
ringtone_id: 10001
ringtone_vol: 45
- sequence:
- condition:
- condition: state
entity_id: automation.light_gateway_toggle
attribute: current
state: 0
- action: scene.create
data:
scene_id: before_doorbell_light
snapshot_entities:
- light.gateway_light_04cf8cabd77b
- repeat:
while:
- condition: template
value_template: '{{ repeat.index <= 3 }}'
sequence:
- action: light.turn_on
target:
entity_id: light.gateway_light_04cf8cabd77b
data:
rgb_color:
- 255
- 128
- 0
brightness: 128
- delay:
milliseconds: 150
- action: light.turn_off
target:
entity_id: light.gateway_light_04cf8cabd77b
- delay:
milliseconds: 50
- action: light.turn_on
target:
entity_id: light.gateway_light_04cf8cabd77b
data:
rgb_color:
- 255
- 128
- 0
brightness: 128
- delay:
milliseconds: 150
- action: light.turn_off
target:
entity_id: light.gateway_light_04cf8cabd77b
- action: scene.turn_on
target:
entity_id: scene.before_doorbell_light
- sequence:
- condition:
- condition: time
after: '8:00:00'
before: '21:30:00'
- parallel:
- action: script.alice_custom_tts_volume
data:
entity: media_player.yandex_station_ff98f029b620413b35e5e278
text: Кто то звонит в дверь
vol_level: '0.65'
- action: script.alice_custom_tts_volume
data:
entity: media_player.yandex_station_m00ka4300h99tr
text: Кто то звонит в дверь
vol_level: '0.45'
- alias: dynamic group sensor battery
id: dynamic group sensor battery
initial_state: true
mode: restart
triggers:
- trigger: event
event_type: entity_registry_updated
- trigger: homeassistant
event: start
actions:
- action: group.set
data:
name: dynamic group sensor battery
object_id: dynamic_group_sensor_battery
icon: mdi:battery-unknown
entities: "{%- set datanames = namespace(entity_name=[]) -%} {%- \n for state\
\ in states.sensor \n if is_state_attr(state.entity_id, 'device_class',\
\ 'battery') and\n (state.entity_id.endswith(\"_battery\") or state.entity_id.endswith(\"\
_battery_level\"))\n%}\n {% set datanames.entity_name = datanames.entity_name\
\ + [state.entity_id] -%}\n{%- endfor %} {%- \n for state in states.binary_sensor\
\ \n if is_state_attr(state.entity_id, 'device_class', 'battery') and\n\
\ state.entity_id.endswith(\"_low_battery\")\n%}\n {% set datanames.entity_name\
\ = datanames.entity_name + [state.entity_id] -%}\n{%- endfor %} {{ datanames.entity_name\
\ | list | join(', ')}}"
- alias: dynamic group sensor linkquality
id: dynamic group sensor linkquality
initial_state: true
mode: restart
triggers:
- trigger: event
event_type: entity_registry_updated
- trigger: homeassistant
event: start
conditions:
- '{{ states.sensor | map(attribute=''entity_id'') | list | regex_findall(find=''(_linkquality|_zigbee)'',
ignorecase=True) | length > 0 }}'
actions:
- action: group.set
data:
name: dynamic group sensor linkquality
object_id: dynamic_group_sensor_linkquality
icon: mdi:signal
entities: "{%- \n for state in states.sensor \n if state.entity_id.endswith(\"\
_linkquality\") or state.entity_id.endswith(\"_zigbee\")\n%}\n {{ state.entity_id\
\ }}{%- if not loop.last -%}, {%- endif -%}\n{%- endfor %}"
- alias: dynamic group sensor last seen
id: dynamic group sensor last seen
initial_state: true
mode: restart
triggers:
- trigger: event
event_type: entity_registry_updated
- trigger: homeassistant
event: start
conditions:
- '{{ states.sensor | map(attribute=''entity_id'') | list | regex_findall(find=''(_last_seen|_zigbee)'',
ignorecase=True) | length > 0 }}'
actions:
- action: group.set
data:
name: dynamic group sensor last seen
object_id: dynamic_group_sensor_last_seen
icon: mdi:clock
entities: "{%- \n for state in states.sensor \n if state.entity_id.endswith(\"\
_last_seen\") or state.entity_id.endswith(\"_zigbee\")\n%}\n {{ state.entity_id\
\ }}{%- if not loop.last -%}, {%- endif -%}\n{%- endfor %}"
- alias: dynamic group gateway alarm last state
id: dynamic group gateway alarm last state
initial_state: true
mode: queued
triggers:
- trigger: state
entity_id:
- alarm_control_panel.54ef44315770_alarm
- alarm_control_panel.54ef44cb80fd_alarm
- alarm_control_panel.54ef443127b2_alarm
to: triggered
- trigger: state
entity_id: input_boolean.alarm_gateway_button
to: 'on'
conditions:
- condition: or
conditions:
- '{{ states.alarm_control_panel | selectattr(''state'', ''in'', [''armed_away'',
''disarmed'']) | rejectattr(''entity_id'', ''eq'', ''alarm_control_panel.signalka_shliuza_alarm'')
| list | count > 0 }}'
- '{{ trigger.from_state.state in [''armed_away'', ''disarmed''] }}'
actions:
- parallel:
- choose:
- conditions:
- "{{ trigger.from_state.state == 'armed_away'\n or states.alarm_control_panel\
\ \n| selectattr('state', 'eq', 'armed_away') | rejectattr('entity_id',\
\ 'eq', 'alarm_control_panel.signalka_shliuza_alarm') | list | count >\
\ 0 }}"
sequence:
- action: group.set
data:
name: dynamic group gateway alarm last state armed away
object_id: dynamic_group_gateway_alarm_last_state_armed_away
icon: mdi:shield-lock
entities: "{% set data = namespace(entities=[]) %} {% set data.entities\
\ = data.entities + \n states.alarm_control_panel \n | selectattr('state',\
\ 'eq', 'armed_away') \n | rejectattr('entity_id', 'eq', 'alarm_control_panel.signalka_shliuza_alarm')\
\ \n | map(attribute = 'entity_id') | list\n%} {% if trigger.from_state.state\
\ == 'armed_away' %}\n {% set data.entities = data.entities + [trigger.entity_id]\
\ %}\n{% endif %} {% if states.group.dynamic_group_gateway_alarm_last_state_armed_away\
\ is not none %}\n {% set data.entities = data.entities + expand('group.dynamic_group_gateway_alarm_last_state_armed_away')\
\ | map(attribute = 'entity_id') | list %}\n{% endif %} {{ data.entities\
\ | unique | join(', ') }}"
- choose:
- conditions:
- "{{ trigger.from_state.state == 'disarmed'\n or states.alarm_control_panel\
\ \n| selectattr('state', 'eq', 'disarmed') | rejectattr('entity_id', 'eq',\
\ 'alarm_control_panel.signalka_shliuza_alarm') | list | count > 0 }}"
sequence:
- action: group.set
data:
name: dynamic group gateway alarm last state disarmed
object_id: dynamic_group_gateway_alarm_last_state_disarmed
icon: mdi:shield-lock
entities: "{% set data = namespace(entities=[]) %} {% set data.entities\
\ = data.entities + \n states.alarm_control_panel \n | selectattr('state',\
\ 'eq', 'disarmed') \n | rejectattr('entity_id', 'eq', 'alarm_control_panel.signalka_shliuza_alarm')\
\ \n | map(attribute = 'entity_id') | list\n%} {% if trigger.from_state.state\
\ == 'disarmed' %}\n {% set data.entities = data.entities + [trigger.entity_id]\
\ %}\n{% endif %} {% if states.group.dynamic_group_gateway_alarm_last_state_disarmed\
\ is not none %}\n {% set data.entities = data.entities + expand('group.dynamic_group_gateway_alarm_last_state_disarmed')\
\ | map(attribute = 'entity_id') | list %}\n{% endif %} {{ data.entities\
\ | unique | join(', ') }}"
- alias: install update html5 push notifications
id: install update html5 push notifications
initial_state: true
mode: parallel
triggers:
- trigger: event
event_type: html5_notification.clicked
event_data:
action: install_update
conditions:
- '{{ trigger.event.data[''tag''] | length > 0 }}'
actions:
- variables:
entity: '{{- trigger.event.data[''tag''] | replace(''update_available_notify_'',
''update.'') -}}'
- if:
- '{{ is_state(entity, ''on'') and is_state_attr(entity, ''in_progress'', false)
}}'
then:
- action: update.install
target:
entity_id: '{{- entity -}}'
data:
backup: '{{ ''{:0=64b}''.format(state_attr(entity, ''supported_features''))[-4]
== ''1'' }}'
- alias: open shades kitchen on outside light sensor
id: open shades kitchen on outside light sensor
mode: restart
trigger_variables:
not_has_state: '{{ [''unknown'', ''unavailable'', ''none'', ''''] }}'
triggers:
- trigger: numeric_state
entity_id: sensor.0x54ef4410000ebba0_illuminance
above: 250
for:
minutes: 10
- trigger: numeric_state
id: sun
entity_id: sun.sun
attribute: elevation
above: 4
conditions:
- condition: template
value_template: "{{ \n trigger.id == 'sun' or\n trigger.from_state.state not\
\ in not_has_state and \n trigger.from_state.state != trigger.to_state.state\n\
}}"
- '{{ is_state_attr(''sun.sun'', ''rising'', true) }}'
- '{{ expand(''cover.cover_group_kitchen'') | selectattr(''state'', ''eq'', ''open'')
| map(attribute=''entity_id'') | list | length == 0 }}'
actions:
- action: script.auto_cover_open_close_kitchen
data:
servicename: cover.open_cover
groupname: cover.cover_group_kitchen
statename: open
- alias: close shades kitchen on outside light sensor
id: close shades kitchen on outside light sensor
mode: restart
trigger_variables:
not_has_state: '{{ [''unknown'', ''unavailable'', ''none'', ''''] }}'
triggers:
- trigger: numeric_state
entity_id: sensor.0x54ef4410000ebba0_illuminance
below: 150
for:
minutes: 10
conditions:
- condition: template
value_template: "{{ \n trigger.from_state.state not in not_has_state and \n \
\ trigger.from_state.state != trigger.to_state.state\n}}"
- '{{ state_attr(''sun.sun'', ''elevation'') | float(0.0) <= iif(states(''weather.kotletochka_home'')
in [''rainy'', ''pouring'', ''cloudy'', ''lightning'', ''lightning-rainy'', ''partlycloudy''],
15, 7, 7) }}'
- '{{ is_state_attr(''sun.sun'', ''rising'', false) }}'
- '{{ expand(''cover.cover_group_kitchen'') | selectattr(''state'', ''eq'', ''closed'')
| map(attribute=''entity_id'') | list | length == 0 }}'
actions:
- action: script.auto_cover_open_close_kitchen
data:
servicename: cover.close_cover
groupname: cover.cover_group_kitchen
statename: closed
- alias: close shades kitchen on sun and min outside lux
id: close shades kitchen on sun and min outside lux
mode: restart
triggers:
- trigger: numeric_state
entity_id: sun.sun
attribute: elevation
below: 2
conditions:
- '{{ states(''sensor.0x54ef4410000ebba0_illuminance'') | int(0) <= 250 }}'
- '{{ is_state_attr(''sun.sun'', ''rising'', false) }}'
- '{{ expand(''cover.cover_group_kitchen'') | selectattr(''state'', ''eq'', ''closed'')
| map(attribute=''entity_id'') | list | length == 0 }}'
actions:
- action: script.auto_cover_open_close_kitchen
data:
servicename: cover.close_cover
groupname: cover.cover_group_kitchen
statename: closed
- alias: open shades living room on outside light sensor
id: open shades living room on outside light sensor
mode: restart
trigger_variables:
not_has_state: '{{ [''unknown'', ''unavailable'', ''none'', ''''] }}'
triggers:
- trigger: numeric_state
entity_id: sensor.0x54ef4410000ebba0_illuminance
above: 250
for:
minutes: 10
- trigger: numeric_state
id: sun
entity_id: sun.sun
attribute: elevation
above: 4
conditions:
- condition: template
value_template: "{{ \n trigger.id == 'sun' or\n trigger.from_state.state not\
\ in not_has_state and \n trigger.from_state.state != trigger.to_state.state\n\
}}"
- '{{ is_state_attr(''sun.sun'', ''rising'', true) }}'
- '{{ expand(''cover.cover_group_living_room'') | selectattr(''state'', ''eq'',
''open'') | map(attribute=''entity_id'') | list | length == 0 }}'
actions:
- action: script.auto_cover_open_close_living_room
data:
servicename: cover.open_cover
groupname: cover.cover_group_living_room
statename: open
- alias: close shades living room on outside light sensor
id: close shades living room on outside light sensor
mode: restart
trigger_variables:
not_has_state: '{{ [''unknown'', ''unavailable'', ''none'', ''''] }}'
triggers:
- trigger: numeric_state
entity_id: sensor.0x54ef4410000ebba0_illuminance
below: 150
for:
minutes: 10
conditions:
- condition: template
value_template: "{{ \n trigger.from_state.state not in not_has_state and \n \
\ trigger.from_state.state != trigger.to_state.state\n}}"
- '{{ state_attr(''sun.sun'', ''elevation'') | float(0.0) <= iif(states(''weather.kotletochka_home'')
in [''rainy'', ''pouring'', ''cloudy'', ''lightning'', ''lightning-rainy'', ''partlycloudy''],
15, 7, 7) }}'
- '{{ is_state_attr(''sun.sun'', ''rising'', false) }}'
- '{{ expand(''cover.cover_group_living_room'') | selectattr(''state'', ''eq'',
''closed'') | map(attribute=''entity_id'') | list | length == 0 }}'
actions:
- action: script.auto_cover_open_close_living_room
data:
servicename: cover.close_cover
groupname: cover.cover_group_living_room
statename: closed
- alias: close shades living room on sun and min outside lux
id: close shades living room on sun and min outside lux
mode: restart
triggers:
- trigger: numeric_state
entity_id: sun.sun
attribute: elevation
below: 2
conditions:
- '{{ states(''sensor.0x54ef4410000ebba0_illuminance'') | int(0) <= 250 }}'
- '{{ is_state_attr(''sun.sun'', ''rising'', false) }}'
- '{{ expand(''cover.cover_group_living_room'') | selectattr(''state'', ''eq'',
''closed'') | map(attribute=''entity_id'') | list | length == 0 }}'
actions:
- action: script.auto_cover_open_close_living_room
data:
servicename: cover.close_cover
groupname: cover.cover_group_living_room
statename: closed
- alias: reply pong to ping
id: reply pong to ping
initial_state: true
mode: single
max_exceeded: silent
triggers:
- trigger: event
event_type: telegram_command
event_data:
command: /ping
actions:
- parallel:
- action: notify.notify
data:
title: Check notification's
message: pong
- action: telegram_bot.delete_message
data:
chat_id: '{{ trigger.event.data.chat_id }}'
message_id: '{{ trigger.event.data.id }}'
- action: telegram_bot.send_message
data:
target: '{{ trigger.event.data.chat_id }}'
message: pong
- action: notify.huawei_lte
data:
message: pong
target: secret sms_phone_enzokot
data:
url: http://192.168.8.1/
- action: notify.html5
data:
title: Check notification's
message: pong
- action: notify.email_enzokot_ha
data:
title: Check notification's
message: pong
- alias: keyboard tuc tuc gateway
id: keyboard tuc tuc gateway
initial_state: true
mode: single
max_exceeded: silent
triggers:
- trigger: event
event_type: telegram_command
event_data:
command: /tuctuc
actions:
- parallel:
- action: telegram_bot.delete_message
data:
chat_id: '{{ trigger.event.data.chat_id }}'
message_id: '{{ trigger.event.data.id }}'
- action: telegram_bot.send_message
data:
target: '{{ trigger.event.data.chat_id }}'
message: '{{ ''\U0001f4e2'' }} С уровнем громкости:'
inline_keyboard:
- Тихо:/minlevelsound
- Средне:/avrlevelsound, Громко:/maxlevelsound
- alias: keyboard alarm home
id: keyboard alarm home
initial_state: true
mode: single
max_exceeded: silent
triggers:
- trigger: event
event_type: telegram_command
event_data:
command: /home_alarm
actions:
- action: telegram_bot.delete_message
data:
chat_id: '{{ trigger.event.data.chat_id }}'
message_id: '{{ trigger.event.data.id }}'
- action: telegram_bot.send_message
data:
target: '{{ trigger.event.data.chat_id }}'
message: "{% if is_state('alarm_control_panel.signalka_shliuza_alarm', 'armed_away')\
\ -%}\n {{ '\\U0001f509' }} Сигнализация *включена*\n{%- else -%}\n \
\ {{ '\\U0001f507' }} Сигнализация *выключена*\n{%- endif %}"
inline_keyboard: "{% if is_state('alarm_control_panel.signalka_shliuza_alarm',\
\ 'armed_away') -%}\n Выключить:/alarm_home_disarm\n{%- else -%}\n Включить:/alarm_home_arm\n\
{%- endif %}"
- alias: do alarm change state
id: do alarm change state
initial_state: true
mode: single
max_exceeded: silent
triggers:
- trigger: event
event_type: telegram_callback
event_data:
data: /alarm_home_disarm
- trigger: event
event_type: telegram_callback
event_data:
data: /alarm_home_arm
actions:
- action: telegram_bot.delete_message
data:
chat_id: '{{ trigger.event.data.chat_id }}'
message_id: '{{ trigger.event.data.message.message_id }}'
- action: "{% if trigger.event.data.command == '/alarm_home_disarm' -%}\n alarm_control_panel.alarm_disarm\n\
{%- else -%}\n alarm_control_panel.alarm_arm_away\n{%- endif %}"
target:
entity_id: alarm_control_panel.signalka_shliuza_alarm
- action: telegram_bot.answer_callback_query
data:
callback_query_id: '{{ trigger.event.data.id }}'
message: "{% if trigger.event.data.command == '/alarm_home_disarm' -%}\n Выключили\
\ сигнализацию\n{%- else -%}\n Включили сигнализацию\n{%- endif %}"
- alias: do tuc tuc gateway
id: do tuc tuc gateway
initial_state: true
mode: single
max_exceeded: silent
triggers:
- trigger: event
event_type: telegram_callback
event_data:
data: /minlevelsound
- trigger: event
event_type: telegram_callback
event_data:
data: /avrlevelsound
- trigger: event
event_type: telegram_callback
event_data:
data: /maxlevelsound
actions:
- parallel:
- action: telegram_bot.delete_message
data:
chat_id: '{{ trigger.event.data.chat_id }}'
message_id: '{{ trigger.event.data.message.message_id }}'
- action: xiaomi_aqara.play_ringtone
data:
gw_mac: secret gateway1_mac
ringtone_id: 11
ringtone_vol: "{%- if trigger.event.data.data == \"/maxlevelsound\" -%}\n\
\ 50\n{%- elif trigger.event.data.data == \"/avrlevelsound\" -%}\n 25\n\
{%- else -%}\n 3\n{%- endif -%}"
- action: telegram_bot.answer_callback_query
data:
callback_query_id: '{{ trigger.event.data.id }}'
message: Постучали шлюзом
- alias: del keyboard sync yeelight ceiling to switch
id: del keyboard sync yeelight ceiling to switch
initial_state: true
mode: single
max_exceeded: silent
triggers:
- trigger: event
event_type: telegram_callback
event_data:
data: /changelight
- trigger: event
event_type: telegram_callback
event_data:
data: /nochangelight
- trigger: event
event_type: telegram_callback
event_data:
data: /ignoringchangelight
actions:
- action: telegram_bot.delete_message
data:
chat_id: '{{ trigger.event.data.chat_id }}'
message_id: '{{ trigger.event.data.message.message_id }}'
- alias: no key sync yeelight ceiling to switch
id: no key sync yeelight ceiling to switch
initial_state: true
mode: single
max_exceeded: silent
triggers:
- trigger: event
event_type: telegram_callback
event_data:
data: /nochangelight
actions:
- action: automation.turn_on
target:
entity_id: automation.sync_yeelight_ceiling_cr_to_switch
- action: telegram_bot.answer_callback_query
data:
callback_query_id: '{{ trigger.event.data.id }}'
message: Проверим состояние позже
- alias: ignor key sync yeelight ceiling to switch
id: ignor key sync yeelight ceiling to switch
mode: single
max_exceeded: silent
initial_state: true
triggers:
- trigger: event
event_type: telegram_callback
event_data:
data: /ignoringchangelight
actions:
- action: telegram_bot.answer_callback_query
data:
callback_query_id: '{{ trigger.event.data.id }}'
message: Отключили проверку
- alias: change keyboard sync yeelight ceiling to switch
id: change keyboard sync yeelight ceiling to switch
mode: single
max_exceeded: silent
initial_state: true
triggers:
- trigger: event
event_type: telegram_callback
event_data:
data: /changelight
conditions:
- condition: or
conditions:
- condition: and
conditions:
- condition: state
entity_id: binary_sensor.0x158d0003f37a0f_contact
state: 'on'
- condition: state
entity_id: light.yeelight_ceiling_cr
state: 'off'
- condition: and
conditions:
- condition: state
entity_id: binary_sensor.0x158d0003f37a0f_contact
state: 'off'
- condition: state
entity_id: light.yeelight_ceiling_cr
state: 'on'
actions:
- parallel:
- action: light.toggle
target:
entity_id: light.yeelight_ceiling_cr
- action: automation.turn_on
target:
entity_id: automation.sync_yeelight_ceiling_cr_to_switch
- action: telegram_bot.answer_callback_query
data:
callback_query_id: '{{ trigger.event.data.id }}'
message: Изменили состояние
- alias: vacuum chita answer key find vacuum
id: vacuum chita answer key find vacuum
mode: single
max_exceeded: silent
initial_state: true
triggers:
- trigger: event
event_type: telegram_callback
event_data:
data: /findvacuum
actions:
- action: vacuum.locate
target:
entity_id: vacuum.xiaomi_vacuum_cleaner
- action: telegram_bot.delete_message
data:
chat_id: '{{ trigger.event.data.chat_id }}'
message_id: '{{ trigger.event.data.message.message_id }}'
- action: telegram_bot.answer_callback_query
data:
callback_query_id: '{{ trigger.event.data.id }}'
message: Включили поиск Степы
- alias: keyboard vacuum start cleaning
id: keyboard vacuum start cleaning
mode: single
max_exceeded: silent
initial_state: true
triggers:
- trigger: event
event_type: telegram_command
event_data:
command: /vacuum
actions:
- action: telegram_bot.delete_message
data:
chat_id: '{{ trigger.event.data.chat_id }}'
message_id: '{{ trigger.event.data.id }}'
- action: telegram_bot.send_message
data:
target: '{{ trigger.event.data.chat_id }}'
message: '{{ ''\U0000231b'' }} Отправить убирать:'
inline_keyboard:
- Сейчас:/vacuumnow, Через 10 мин.:/vacuum10, Через 20 мин.:/vacuum20
- Отменить уборку:/vacuumcancel, Выслать карту:/sendmap
- alias: vacuum start cleaning
id: vacuum start cleaning
initial_state: true
mode: single
max_exceeded: silent
triggers:
- trigger: event
event_type: telegram_callback
event_data:
data: /vacuumnow
actions:
- action: vacuum.start
target:
entity_id: vacuum.xiaomi_vacuum_cleaner
- action: telegram_bot.delete_message
data:
chat_id: '{{ trigger.event.data.chat_id }}'
message_id: '{{ trigger.event.data.message.message_id }}'
- action: telegram_bot.answer_callback_query
data:
callback_query_id: '{{ trigger.event.data.id }}'
message: Пылесос отправили на уборку
- alias: vacuum later start cleaning
id: vacuum later start cleaning
initial_state: true
mode: single
max_exceeded: silent
triggers:
- trigger: event
event_type: telegram_callback
event_data:
data: /vacuum10
- trigger: event
event_type: telegram_callback
event_data:
data: /vacuum20
actions:
- action: telegram_bot.delete_message
data:
chat_id: '{{ trigger.event.data.chat_id }}'
message_id: '{{ trigger.event.data.message.message_id }}'
- action: timer.start
target:
entity_id: timer.vacumm_ten_minutes
data:
duration: '{{ iif(trigger.event.data.data == ''/vacuum10'', 600, 1200, 1200)
}}'
- action: telegram_bot.answer_callback_query
data:
callback_query_id: '{{ trigger.event.data.id }}'
message: '{{ ''Будет отправлен на уборку через '' + iif(trigger.event.data.data
== ''/vacuum10'', ''10 мин.'', ''20 мин.'', ''20 мин.'') }}'
- action: input_text.set_value
target:
entity_id: input_text.var_chat_id_vacuum_later_start
data:
value: '{{ trigger.event.data.chat_id }}'
- alias: vacuum cancel cleaning
id: vacuum cancel cleaning
initial_state: true
mode: single
max_exceeded: silent
triggers:
- trigger: event
event_type: telegram_callback
event_data:
data: /vacuumcancel
actions:
- action: telegram_bot.delete_message
data:
chat_id: '{{ trigger.event.data.chat_id }}'
message_id: '{{ trigger.event.data.message.message_id }}'
- action: timer.cancel
target:
entity_id: timer.vacumm_ten_minutes
- action: vacuum.pause
target:
entity_id: vacuum.xiaomi_vacuum_cleaner
- delay:
seconds: 3
- action: vacuum.return_to_base
target:
entity_id: vacuum.xiaomi_vacuum_cleaner
- action: telegram_bot.answer_callback_query
data:
callback_query_id: '{{ trigger.event.data.id }}'
message: Отменили таймеры, отправили на базу
- action: input_text.set_value
target:
entity_id: input_text.var_chat_id_vacuum_later_start
data:
value: secret telegram_chita_chat_id
- alias: vacuum send map
id: vacuum send map
initial_state: true
mode: single
max_exceeded: silent
triggers:
- trigger: event
event_type: telegram_callback
event_data:
data: /sendmap
actions:
- action: telegram_bot.delete_message
data:
chat_id: '{{ trigger.event.data.chat_id }}'
message_id: '{{ trigger.event.data.message.message_id }}'
- action: telegram_bot.send_photo
data:
target: '{{ trigger.event.data.chat_id }}'
url: '{{- ''http://homeassistant.local.hass.io:8123'' + state_attr(''camera.roborock_vacuum_map'',
''entity_picture'') -}}'
caption: '{{ ''\U0001F5FA'' }} *Степа* {{- ''\n'' -}} Текущая карта уборки'
- alias: send climate summary
id: send climate summary
initial_state: true
mode: single
max_exceeded: silent
triggers:
- trigger: event
event_type: telegram_command
event_data:
command: /climate_summary
actions:
- action: telegram_bot.delete_message
data:
chat_id: '{{ trigger.event.data.chat_id }}'
message_id: '{{ trigger.event.data.id }}'
- action: telegram_bot.send_message
data:
target: '{{ trigger.event.data.chat_id }}'
title: '{{ ''🌡'' }} *Климатические сенсоры*'
message: "{% set temp_array = expand('group.temperature_summary_group_to_bot')\
\ | selectattr('state', 'defined') | selectattr('state', 'ne', None) %} {%-\
\ for state in temp_array -%}\n {%- if loop.first -%}_Данные температуры_:\
\ {{-'\\n'-}}{%- endif -%} {{- state.name -}}: *{{ states(state.entity_id,\
\ rounded=True) -}}*°C {%- if not loop.last -%}{{-'\\n'-}} {%- endif -%} \n\
{%- endfor %}"
- alias: install update telegram bot
id: install update telegram bot
initial_state: true
mode: parallel
triggers:
- trigger: event
event_type: telegram_callback
event_data:
command: /installupdate
conditions:
- '{{ trigger.event.data[''args''] | count > 0 }}'
actions:
- variables:
entity: '{{- trigger.event.data[''args''][0] -}}'
friendlyname: '{{- state_attr(trigger.event.data[''args''][0], ''friendly_name'')
| replace('' Update'', '''') -}}'
- choose:
- conditions: '{{ is_state(entity, ''on'') and is_state_attr(entity, ''in_progress'',
false) }}'
sequence:
- action: telegram_bot.answer_callback_query
data:
callback_query_id: '{{ trigger.event.data.id }}'
message: Обновление на версию {{ state_attr(entity, 'latest_version') }}
{{ friendlyname }} запущено.
- action: update.install
target:
entity_id: '{{- entity -}}'
data:
backup: '{{ ''{:0=64b}''.format(state_attr(entity, ''supported_features''))[-4]
== ''1'' }}'
default:
- action: telegram_bot.answer_callback_query
data:
callback_query_id: '{{ trigger.event.data.id }}'
message: Обновление {{ friendlyname }} уже установлено.
- alias: change mute on off alice activation sounds
id: change mute on off alice activation sounds
initial_state: true
max_exceeded: silent
triggers:
- trigger: homeassistant
event: start
- trigger: time
at:
- '8:00:00'
- '22:00:00'
actions:
- variables:
time_to_on: '{% set time_now = now() %} {{ today_at(''8:00'') <= time_now <
today_at(''21:59:59'') }}
'
- action: media_player.play_media
target:
entity_id: media_player.yandex_station_ff98f029b620413b35e5e278
data:
media_content_id: '{{- ''без лишних слов: '' + iif(time_to_on, ''нет'', ''да'')
-}}'
media_content_type: settings
- delay: 2
- action: media_player.play_media
target:
entity_id: media_player.yandex_station_ff98f029b620413b35e5e278
data:
media_content_id: '{{- ''звук активации: '' + iif(time_to_on, ''да'', ''нет'')
-}}'
media_content_type: settings
- alias: change name activation for voice assistant
id: change name activation for voice assistant
initial_state: true
max_exceeded: silent
triggers:
- trigger: event
event_type: yandex_speaker
event_data:
instance: text_action
value: Ничего не делай?-=
- trigger: event
event_type: yandex_speaker
event_data:
instance: text_action
value: 'Ничего не делай?-:'
actions:
- action: media_player.play_media
target:
entity_id: media_player.yandex_station_ff98f029b620413b35e5e278
data:
media_content_id: 'имя: {{ ''алиса'' if ''?-:'' in trigger.event.data.value
else ''яндекс'' }}'
media_content_type: settings
- alias: clean one room by comand from voice assistant
id: clean one room by comand from voice assistant
initial_state: true
max_exceeded: silent
triggers:
- trigger: event
event_type: yandex_speaker
event_data:
instance: phrase_action
value: уборка спальни
- trigger: event
event_type: yandex_speaker
event_data:
instance: phrase_action
value: уборка детской
- trigger: event
event_type: yandex_speaker
event_data:
instance: phrase_action
value: уборка гостиной
- trigger: event
event_type: yandex_speaker
event_data:
instance: phrase_action
value: уборка ванной
- trigger: event
event_type: yandex_speaker
event_data:
instance: phrase_action
value: уборка гардероба
- trigger: event
event_type: yandex_speaker
event_data:
instance: phrase_action
value: уборка туалета
- trigger: event
event_type: yandex_speaker
event_data:
instance: phrase_action
value: уборка коридора
- trigger: event
event_type: yandex_speaker
event_data:
instance: phrase_action
value: уборка кухни
actions:
- action: vacuum.send_command
target:
entity_id: vacuum.xiaomi_vacuum_cleaner
data:
command: app_segment_clean
params: "{{ trigger.event.data.value | replace('уборка ', '') \n | replace('детской',\
\ '16') \n | replace('спальни', '1') \n | replace('гостиной', '17')\
\ \n | replace('кухни', '2') \n | replace('ванной', '18') \n | replace('гардероба',\
\ '19') \n | replace('туалета', '20') \n | replace('коридора', '21')\
\ \n | int(0)\n}}\n"
- alias: outdoor climate by comand from voice assistant
id: outdoor climate by comand from voice assistant
initial_state: true
max_exceeded: silent
triggers:
- trigger: event
event_type: yandex_speaker
event_data:
instance: text_action
value: Ничего не делай-
actions:
- action: media_player.play_media
target:
entity_id: '{{ trigger.event.data.entity_id }}'
data:
media_content_type: text
media_content_id: 'Температура {{ states(''sensor.0x00158d000542ceaf_temperature'')
| round(0, ''ceil'', 0) | format(morph=''градус'', as_text=false) }} цельсия. Давление
{{ states(''sensor.158d000542ceaf_pressure'') | round(0, ''ceil'', 0) | format(morph=''миллиметр'',
as_text=false) }} ртутного столба Влажность {{ states(''sensor.0x00158d000542ceaf_humidity'')
| round(0, ''ceil'', 0) | format(morph=''процент'', as_text=false) }}
'
- alias: vacuum send map from alice command
id: vacuum send map from alice command
initial_state: true
max_exceeded: silent
triggers:
- trigger: event
event_type: yandex_speaker
event_data:
instance: text_action
value: Ничего не делай?-
actions:
- action: telegram_bot.send_photo
data:
target: secret telegram_all_chat_id
url: '{{- ''http://homeassistant.local.hass.io:8123'' + state_attr(''camera.roborock_vacuum_map'',
''entity_picture'') -}}'
caption: '{{ ''\U0001F5FA'' }} *Степа* {{- ''\n'' -}} Текущая карта уборки'
- alias: dishwasher remaining programme running time
id: dishwasher remaining programme running time
initial_state: true
max_exceeded: silent
triggers:
- trigger: event
event_type: yandex_speaker
event_data:
instance: text_action
value: Ничего не делай?
actions:
- action: media_player.play_media
target:
entity_id: '{{ trigger.event.data.entity_id }}'
data:
media_content_type: text
media_content_id: "{% if is_state('sensor.014020518886002182_bsh_common_status_operationstate',\
\ 'BSH.Common.EnumType.OperationState.Run') %}\n {% set time_delta = as_timestamp(states('sensor.014020518886002182_bsh_common_option_remainingprogramtime'),\
\ 0) - as_timestamp(now(), 0) | int(0) %}\n {% set minutes = (( time_delta\
\ % 3600) / 60) | int(0) %}\n {% set hours = ((time_delta % 86400) / 3600)\
\ | int(0) %}\n До окончания: {{- ' ' -}}\n {% if time_delta < 1 -%}\n\
\ меньше минуты\n {% else -%}\n {% if hours > 0 %}\n \
\ {{- hours | format(morph='час') -}}\n {% endif %}\n {%- if\
\ minutes > 0 -%}\n {% if hours > 0 %}\n {{- ' ' -}}\n \
\ {% endif %}\n {{- minutes | format(morph='минута') }}\n \
\ {% endif %}\n {% endif %}\n{%- else %}\n Сейчас программа не запущена\n\
{% endif %}\n"
- alias: yeelight ceiling cr off
id: yeelight ceiling cr off
initial_state: true
mode: single
max_exceeded: silent
triggers:
- trigger: state
entity_id: binary_sensor.0x158d0003f37a0f_contact
from: 'on'
to: 'off'
actions:
- action: light.turn_off
target:
entity_id:
- light.yeelight_ceiling_cr
- light.yeelight_ceiling_cr_ambilight
- light.yeelight_ceiling_cr_nightlight
- alias: yeelight ceiling cr on
id: yeelight ceiling cr on
initial_state: true
mode: single
max_exceeded: silent
triggers:
- trigger: state
entity_id: binary_sensor.0x158d0003f37a0f_contact
from: 'off'
to: 'on'
actions:
- action: light.turn_on
target:
entity_id: light.yeelight_ceiling_cr
data:
color_temp_kelvin: 3571
brightness: 255
- alias: yeelight ceiling cr on ambilight night mode
id: yeelight ceiling cr on ambilight night mode
initial_state: true
mode: single
max_exceeded: silent
triggers:
- trigger: state
entity_id: sensor.0x158d0003a360b6_action
to: single
conditions:
- condition: state
entity_id: light.yeelight_ceiling_cr
state: 'off'
actions:
- action: light.turn_on
target:
entity_id: light.yeelight_ceiling_cr_ambilight
data:
brightness: 1
rgb_color:
- 0
- 0
- 255
- alias: yeelight ceiling cr off ambilight night mode
id: yeelight ceiling cr off ambilight night mode
initial_state: true
mode: single
max_exceeded: silent
triggers:
- trigger: state
entity_id: sensor.0x158d0003a360b6_action
to: single
conditions:
- condition: state
entity_id: light.yeelight_ceiling_cr_ambilight
state: 'on'
- condition: state
entity_id: light.yeelight_ceiling_cr
state: 'off'
actions:
- action: light.turn_off
target:
entity_id: light.yeelight_ceiling_cr_ambilight
- alias: sync yeelight ceiling cr to switch
id: sync yeelight ceiling cr to switch
initial_state: true
triggers:
- trigger: time_pattern
minutes: /3
conditions:
- '{{ (state_attr(''automation.yeelight_ceiling_on'', ''current'') | int(0)) ==
0 }}'
- '{{ (state_attr(''automation.yeelight_ceiling_off'', ''current'') | int(0)) ==
0 }}'
- condition: or
conditions:
- condition: and
conditions:
- condition: state
entity_id: binary_sensor.0x158d0003f37a0f_contact
state: 'on'
- condition: state
entity_id: light.yeelight_ceiling_cr
state: 'off'
- condition: state
entity_id: light.yeelight_ceiling_cr_ambilight
state: 'off'
- condition: state
entity_id: light.yeelight_ceiling_cr_nightlight
state: 'off'
- condition: and
conditions:
- condition: state
entity_id: binary_sensor.0x158d0003f37a0f_contact
state: 'off'
- condition: state
entity_id: light.yeelight_ceiling_cr
state: 'on'
actions:
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
message: ⚠️ Обнаружено отклонение светильника и выключателя, исправить?
inline_keyboard:
- Да:/changelight, Нет:/nochangelight, Игнорировать:/ignoringchangelight
- action: automation.turn_off
target:
entity_id: '{{ this.entity_id }}'
- alias: light gateway toggle
id: light gateway toggle
initial_state: true
mode: single
max_exceeded: silent
triggers:
- trigger: state
entity_id: binary_sensor.0x158d000359304c_contact
from: 'off'
to: 'on'
conditions:
- condition: state
entity_id: automation.turn_on_doorbell
attribute: current
state: 0
- condition: state
entity_id: input_boolean.alarm_gateway_button
state: 'off'
actions:
- action: scene.create
data:
scene_id: before_light_door_open
snapshot_entities:
- light.gateway_light_04cf8cabd77b
- action: light.turn_on
target:
entity_id: light.gateway_light_04cf8cabd77b
data:
rgb_color:
- 255
- 0
- 0
brightness: 255
- delay:
milliseconds: 150
- action: light.turn_off
target:
entity_id: light.gateway_light_04cf8cabd77b
- delay:
milliseconds: 50
- action: light.turn_on
target:
entity_id: light.gateway_light_04cf8cabd77b
data:
rgb_color:
- 255
- 0
- 0
brightness: 255
- delay:
milliseconds: 150
- action: light.turn_off
target:
entity_id: light.gateway_light_04cf8cabd77b
- action: scene.turn_on
target:
entity_id: scene.before_light_door_open
- alias: light gateway go to work on
id: light gateway go to work on
triggers:
- trigger: time
at: 07:00:00
conditions:
- condition: state
entity_id: input_boolean.alarm_gateway_button
state: 'off'
- condition: time
weekday:
- mon
- tue
- wed
- thu
- fri
actions:
- action: scene.create
data:
scene_id: before_on_go_to_work
snapshot_entities:
- light.gateway_light_04cf8cabd77b
- action: light.turn_on
target:
entity_id: light.gateway_light_04cf8cabd77b
data:
rgb_color:
- 230
- 255
- 0
brightness: 5
- alias: light gateway go to work off
id: light gateway go to work off
triggers:
- trigger: time
at: 07:20:00
conditions:
- condition: state
entity_id: input_boolean.alarm_gateway_button
state: 'off'
- condition: time
weekday:
- mon
- tue
- wed
- thu
- fri
actions:
- action: light.turn_off
target:
entity_id: light.gateway_light_04cf8cabd77b
- action: scene.turn_on
target:
entity_id: scene.before_on_go_to_work
- alias: restart integration relay yeelight ceiling unavailable
id: restart integration relay yeelight ceiling unavailable
initial_state: true
mode: single
max_exceeded: silent
triggers:
- trigger: state
entity_id: light.yeelight_ceiling_cr
to: null
- trigger: homeassistant
event: start
conditions:
- condition: state
entity_id: input_boolean.instances_stoping
state: 'off'
- '{{ as_timestamp(now()) - as_timestamp(state_attr(this.entity_id, ''last_triggered''))
> 60 }}'
- '{{ not has_value(''light.yeelight_ceiling_cr'') }}'
- '{{ has_value(''switch.0x54ef441000096cbc'') }}'
actions:
- wait_template: '{{ has_value(''light.yeelight_ceiling_cr'') or is_state(''input_boolean.instances_stoping'',
''on'') }}'
timeout: 00:02:00
- choose:
- conditions: '{{ not wait.completed and is_state(''binary_sensor.local_network_availability'',
''on'') }}'
sequence:
- action: switch.turn_off
target:
entity_id: switch.0x54ef441000096cbc
- delay:
seconds: 5
- action: switch.turn_on
target:
entity_id: switch.0x54ef441000096cbc
- delay:
seconds: 30
- action: homeassistant.reload_config_entry
data:
entry_id: '{{ config_entry_id(''light.yeelight_ceiling_cr'') }}'
- alias: turn on lg webos tv bedroom
id: turn on lg webos tv bedroom
initial_state: true
triggers:
- trigger: webostv.turn_on
entity_id: media_player.lg_smart_tv
conditions:
- '{{ states(''media_player.lg_smart_tv'') in [''off'', ''unknown'', ''unavailable'']
}}'
actions:
- action: remote.send_command
target:
entity_id: remote.broadlink_ir_rm4_mini
data:
command: b64:JgBYAAABI5URFBEUEjgRFBEUERQRFREUETgSOBEUETkROBE5ETgSOBEUERQRFBI4ERQRFBEUEhQROBI4ETgRFRA5ETkROBI4EQAFJwABJkwRAAxeAAElSxIADQU=
- alias: turn on samsung tv kitchen
id: turn on samsung tv kitchen
initial_state: true
triggers:
- trigger: samsungtv.turn_on
entity_id: media_player.tv_kotletochka_tv_sam
conditions:
- '{{ states(''media_player.tv_kotletochka_tv_sam'') in [''off'', ''unknown'', ''unavailable'']
}}'
actions:
- action: esphome.perenio_petra01_kitchen_send_samsung_command
data:
data: '0xE0E040BF'
- alias: mqtt_sensors_discovery
id: mqtt_sensors_discovery
initial_state: true
triggers:
- trigger: homeassistant
event: start
- trigger: event
event_type: automation_reloaded
actions:
- parallel:
- action: mqtt.publish
data:
topic: homeassistant/sensor/mqtt_broker_uptime/config
retain: true
payload: "{ \n \"name\":\"MQTT Broker Uptime\", \n \"state_topic\":\"$SYS/broker/uptime\"\
, \n \"icon\":\"mdi:timer-outline\", \n \"unit_of_measurement\":\"s\"\
, \n \"entity_category\":\"diagnostic\", \n \"unique_id\":\"mqtt_broker_uptime\"\
,\n \"value_template\":\"{{ '{{' }} value | regex_replace('[^\\\\d]','')\
\ | trim {{ '}}' }}\", \n \"json_attributes_topic\":\"$SYS/broker/version\"\
, \n \"json_attributes_template\":\"{\\\"version\\\":\\\"{{ '{{' }} (value\
\ | regex_replace('[\\\\s\\\\S]+?\\\\s(\\\\d)','\\\\\\\\1')) | trim {{ '}}'\
\ }}\\\"}\", \n \"device\":{\"identifiers\":[\"mosquito_broker\"],\"manufacturer\"\
:\"Eclipse\",\"model\":\"Mosquitto\",\"name\":\"Eclipse Mosquitto\",\"sw_version\"\
:\"{{ state_attr('sensor.mqtt_broker_uptime','version') }}\",\"configuration_url\"\
:\"https://mosquitto.org/\"} \n}"
- action: mqtt.publish
data:
topic: homeassistant/switch/permit_join_switch_z2m/config
retain: true
payload: "{ \n \"name\":\"permit_join_switch_z2m\", \n \"state_topic\":\"\
zigbee2mqtt/bridge/info\",\n \"command_topic\":\"zigbee2mqtt/bridge/request/permit_join\"\
,\n \"payload_on\":\"{\\\"time\\\":254}\",\n \"payload_off\":\"{\\\"time\\\
\":0}\",\n \"state_off\":\"false\",\n \"state_on\":\"true\",\n \"icon\"\
:\"mdi:cellphone-wireless\",\n \"unique_id\":\"permit_join_switch_z2m\"\
,\n \"value_template\":\"{{ '{{' }} value_json.permit_join | lower {{ '}}'\
\ }}\",\n \"device\":{\"identifiers\":[\"z2m_info\"],\"manufacturer\":\"\
Enzokot\",\"model\":\"Local polling\",\"name\":\"Zigbee2MQTT add-on\"}\n\
}"
- action: mqtt.publish
data:
topic: homeassistant/sensor/permit_join_end_z2m/config
retain: true
payload: "{ \n \"name\":\"permit join end z2m\", \n \"state_topic\":\"zigbee2mqtt/bridge/info\"\
,\n \"value_template\":\"{{ '{{' }} iif(value_json.permit_join, value_json.permit_join_end,\
\ 0) {{ '}}' }}\",\n \"unique_id\":\"permit_join_end_z2m\",\n \"device\"\
:{\"identifiers\":[\"z2m_info\"],\"manufacturer\":\"Enzokot\",\"model\"\
:\"Local polling\",\"name\":\"Zigbee2MQTT add-on\"}\n}"
- action: mqtt.publish
data:
topic: homeassistant/sensor/router_devices_z2m/config
retain: true
payload: "{ \n \"name\":\"router devices z2m\", \n \"state_topic\":\"zigbee2mqtt/bridge/devices\"\
,\n \"value_template\":\"{{ '{{' }} value_json | to_json | from_json |\
\ selectattr('type', 'defined') | selectattr('type', 'in', ['Coordinator',\
\ 'Router']) | map(attribute='friendly_name') | list | count {{ '}}' }}\"\
,\n \"json_attributes_topic\":\"zigbee2mqtt/bridge/devices\",\n \"json_attributes_template\"\
:\"{{ '{{ {' }}'routers':value_json | to_json | from_json | selectattr('type',\
\ 'defined') | selectattr('type', 'in', ['Coordinator', 'Router']) | map(attribute='friendly_name')\
\ | list{{ '}' }} | tojson {{ '}}' }}\",\n \"icon\":\"mdi:router-wireless\"\
,\n \"unique_id\":\"router_devices_z2m\",\n \"device\":{\"identifiers\"\
:[\"z2m_info\"],\"manufacturer\":\"Enzokot\",\"model\":\"Local polling\"\
,\"name\":\"Zigbee2MQTT add-on\"}\n}"
- action: mqtt.publish
data:
topic: homeassistant/sensor/permit_join_current_device_z2m/config
retain: true
payload: "{ \n \"name\":\"permit join current device z2m\", \n \"state_topic\"\
:\"zigbee2mqtt/bridge/response/permit_join\",\n \"value_template\":\"{{\
\ '{{' }} value_json.data.device if value_json.data is defined and value_json.data.device\
\ is defined else None {{ '}}' }}\",\n \"icon\":\"mdi:router\",\n \"unique_id\"\
:\"permit_join_current_device_z2m\",\n \"device\":{\"identifiers\":[\"\
z2m_info\"],\"manufacturer\":\"Enzokot\",\"model\":\"Local polling\",\"\
name\":\"Zigbee2MQTT add-on\"}\n}"
- action: mqtt.publish
data:
topic: homeassistant/sensor/check_keenetic_link_down/config
retain: true
payload: "{ \n \"name\":\"check keenetic link down\", \n \"state_topic\"\
:\"host_data/network_diagnostics/check_keenetic_link_down\",\n \"value_template\"\
:\"{{ '{{' }} as_datetime(value_json.status, 0) | as_local() if value_json.status\
\ is defined and as_datetime(value_json.status, 0) != 0 else None {{ '}}'\
\ }}\",\n \"icon\":\"mdi:calendar-clock\", \n \"device_class\":\"timestamp\"\
,\n \"unique_id\":\"check_keenetic_link_down\",\n \"device\":{\"identifiers\"\
:[\"network_info\"],\"manufacturer\":\"Enzokot\",\"model\":\"Local polling\"\
,\"name\":\"Network info\"}\n}"
- action: mqtt.publish
data:
topic: homeassistant/sensor/sostoianie_mosta/config
retain: true
payload: "{ \n \"name\":\"Состояние моста\", \n \"state_topic\":\"zigbee2mqtt/bridge/state\"\
,\n \"value_template\":\"{{ '{{' }} value_json.state {{ '}}' }}\",\n \"\
icon\":\"mdi:calendar-clock\", \n \"unique_id\":\"sostoianie_mosta\",\n\
\ \"device\":{\"identifiers\":[\"z2m_info\"],\"manufacturer\":\"Enzokot\"\
,\"model\":\"Local polling\",\"name\":\"Zigbee2MQTT add-on\"}\n}"
- action: mqtt.publish
data:
topic: homeassistant/sensor/zigbee2mqtt_coordinator_version/config
retain: true
payload: "{ \n \"name\":\"Zigbee2mqtt Coordinator Version\", \n \"state_topic\"\
:\"zigbee2mqtt/bridge/info\",\n \"value_template\":\"{{ '{{' }} value_json.coordinator['ieee_address']\
\ {{ '}}' }}\",\n \"json_attributes_topic\":\"zigbee2mqtt/bridge/info\"\
,\n \"json_attributes_template\":\"{{ '{{ {' }}'revision':value_json.coordinator['meta'].revision,\
\ 'type':value_json.coordinator['type']{{ '}' }} | tojson {{ '}}' }}\",\n\
\ \"icon\":\"mdi:chip\",\n \"unique_id\":\"zigbee2mqtt_coordinator_version\"\
,\n \"device\":{\"identifiers\":[\"z2m_info\"],\"manufacturer\":\"Enzokot\"\
,\"model\":\"Local polling\",\"name\":\"Zigbee2MQTT add-on\"}\n}"
- action: mqtt.publish
data:
topic: homeassistant/sensor/0x5c0272fffec89454/local_temperature/config
retain: true
payload: "{ \n \"avty\":[{\"topic\":\"zigbee2mqtt/bridge/state\",\"value_template\"\
:\"{{ '{{' }} value_json.state {{ '}}' }}\"},{\"topic\":\"zigbee2mqtt/Childrens\
\ room valve with thermostat/availability\",\"value_template\":\"{{ '{{'\
\ }} value_json.state {{ '}}' }}\"}],\n \"avty_mode\":\"all\",\n \"name\"\
:\"0x5c0272fffec89454_local_temperature\",\n \"state_topic\":\"zigbee2mqtt/Childrens\
\ room valve with thermostat\",\n \"value_template\":\"{{ '{{' }} value_json.local_temperature\
\ {{ '}}' }}\",\n \"unit_of_measurement\":\"°C\",\n \"unique_id\":\"0x5c0272fffec89454_local_temperature\"\
,\n \"device\":{\"identifiers\":[\"zigbee2mqtt_0x5c0272fffec89454\"],\"\
manufacturer\":\"TuYa\",\"model\":\"Radiator valve with thermostat (TS0601_thermostat)\"\
,\"name\":\"Childrens room valve with thermostat\"} \n}"
- action: mqtt.publish
data:
topic: homeassistant/sensor/0x5c0272fffec89454/local_temperature_calibration/config
retain: true
payload: "{ \n \"avty\":[{\"topic\":\"zigbee2mqtt/bridge/state\",\"value_template\"\
:\"{{ '{{' }} value_json.state {{ '}}' }}\"},{\"topic\":\"zigbee2mqtt/Childrens\
\ room valve with thermostat/availability\",\"value_template\":\"{{ '{{'\
\ }} value_json.state {{ '}}' }}\"}],\n \"avty_mode\":\"all\",\n \"name\"\
:\"0x5c0272fffec89454_local_temperature_calibration\",\n \"state_topic\"\
:\"zigbee2mqtt/Childrens room valve with thermostat\",\n \"value_template\"\
:\"{{ '{{' }} value_json.local_temperature_calibration {{ '}}' }}\",\n \
\ \"unit_of_measurement\":\"°C\",\n \"unique_id\":\"0x5c0272fffec89454_local_temperature_calibration\"\
,\n \"device\":{\"identifiers\":[\"zigbee2mqtt_0x5c0272fffec89454\"],\"\
manufacturer\":\"TuYa\",\"model\":\"Radiator valve with thermostat (TS0601_thermostat)\"\
,\"name\":\"Childrens room valve with thermostat\"} \n}"
- action: mqtt.publish
data:
topic: homeassistant/sensor/0x60a423fffe968719/local_temperature/config
retain: true
payload: "{ \n \"avty\":[{\"topic\":\"zigbee2mqtt/bridge/state\",\"value_template\"\
:\"{{ '{{' }} value_json.state {{ '}}' }}\"},{\"topic\":\"zigbee2mqtt/Bedroom\
\ valve with thermostat/availability\",\"value_template\":\"{{ '{{' }} value_json.state\
\ {{ '}}' }}\"}],\n \"avty_mode\":\"all\",\n \"name\":\"0x60a423fffe968719_local_temperature\"\
,\n \"state_topic\":\"zigbee2mqtt/Bedroom valve with thermostat\",\n \"\
value_template\":\"{{ '{{' }} value_json.local_temperature {{ '}}' }}\"\
,\n \"unit_of_measurement\":\"°C\",\n \"unique_id\":\"0x60a423fffe968719_local_temperature\"\
,\n \"device\":{\"identifiers\":[\"zigbee2mqtt_0x60a423fffe968719\"],\"\
manufacturer\":\"TuYa\",\"model\":\"Radiator valve with thermostat (TS0601_thermostat)\"\
,\"name\":\"Bedroom valve with thermostat\"} \n}"
- action: mqtt.publish
data:
topic: homeassistant/sensor/0x60a423fffe968719/local_temperature_calibration/config
retain: true
payload: "{ \n \"avty\":[{\"topic\":\"zigbee2mqtt/bridge/state\",\"value_template\"\
:\"{{ '{{' }} value_json.state {{ '}}' }}\"},{\"topic\":\"zigbee2mqtt/Bedroom\
\ valve with thermostat/availability\",\"value_template\":\"{{ '{{' }} value_json.state\
\ {{ '}}' }}\"}],\n \"avty_mode\":\"all\",\n \"name\":\"0x60a423fffe968719_local_temperature_calibration\"\
,\n \"state_topic\":\"zigbee2mqtt/Bedroom valve with thermostat\",\n \"\
value_template\":\"{{ '{{' }} value_json.local_temperature_calibration {{\
\ '}}' }}\",\n \"unit_of_measurement\":\"°C\",\n \"unique_id\":\"0x60a423fffe968719_local_temperature_calibration\"\
,\n \"device\":{\"identifiers\":[\"zigbee2mqtt_0x60a423fffe968719\"],\"\
manufacturer\":\"TuYa\",\"model\":\"Radiator valve with thermostat (TS0601_thermostat)\"\
,\"name\":\"Bedroom valve with thermostat\"} \n}"
- action: mqtt.publish
data:
topic: homeassistant/sensor/0x5c0272fffec9db22/local_temperature/config
retain: true
payload: "{ \n \"avty\":[{\"topic\":\"zigbee2mqtt/bridge/state\",\"value_template\"\
:\"{{ '{{' }} value_json.state {{ '}}' }}\"},{\"topic\":\"zigbee2mqtt/Living\
\ room valve with thermostat/availability\",\"value_template\":\"{{ '{{'\
\ }} value_json.state {{ '}}' }}\"}],\n \"avty_mode\":\"all\",\n \"name\"\
:\"0x5c0272fffec9db22_local_temperature\",\n \"state_topic\":\"zigbee2mqtt/Living\
\ room valve with thermostat\",\n \"value_template\":\"{{ '{{' }} value_json.local_temperature\
\ {{ '}}' }}\",\n \"unit_of_measurement\":\"°C\",\n \"unique_id\":\"0x5c0272fffec9db22_local_temperature\"\
,\n \"device\":{\"identifiers\":[\"zigbee2mqtt_0x5c0272fffec9db22\"],\"\
manufacturer\":\"TuYa\",\"model\":\"Radiator valve with thermostat (TS0601_thermostat)\"\
,\"name\":\"Living room valve with thermostat\"} \n}"
- action: mqtt.publish
data:
topic: homeassistant/sensor/0x5c0272fffec9db22/local_temperature_calibration/config
retain: true
payload: "{ \n \"avty\":[{\"topic\":\"zigbee2mqtt/bridge/state\",\"value_template\"\
:\"{{ '{{' }} value_json.state {{ '}}' }}\"},{\"topic\":\"zigbee2mqtt/Living\
\ room valve with thermostat/availability\",\"value_template\":\"{{ '{{'\
\ }} value_json.state {{ '}}' }}\"}],\n \"avty_mode\":\"all\",\n \"name\"\
:\"0x5c0272fffec9db22_local_temperature_calibration\",\n \"state_topic\"\
:\"zigbee2mqtt/Living room valve with thermostat\",\n \"value_template\"\
:\"{{ '{{' }} value_json.local_temperature_calibration {{ '}}' }}\",\n \
\ \"unit_of_measurement\":\"°C\",\n \"unique_id\":\"0x5c0272fffec9db22_local_temperature_calibration\"\
,\n \"device\":{\"identifiers\":[\"zigbee2mqtt_0x5c0272fffec9db22\"],\"\
manufacturer\":\"TuYa\",\"model\":\"Radiator valve with thermostat (TS0601_thermostat)\"\
,\"name\":\"Living room valve with thermostat\"} \n}"
- action: mqtt.publish
data:
topic: homeassistant/sensor/0x5c0272fffe8de819/local_temperature/config
retain: true
payload: "{ \n \"avty\":[{\"topic\":\"zigbee2mqtt/bridge/state\",\"value_template\"\
:\"{{ '{{' }} value_json.state {{ '}}' }}\"},{\"topic\":\"zigbee2mqtt/Kitchen\
\ valve with thermostat/availability\",\"value_template\":\"{{ '{{' }} value_json.state\
\ {{ '}}' }}\"}],\n \"avty_mode\":\"all\",\n \"name\":\"0x5c0272fffe8de819_local_temperature\"\
,\n \"state_topic\":\"zigbee2mqtt/Kitchen valve with thermostat\",\n \"\
value_template\":\"{{ '{{' }} value_json.local_temperature {{ '}}' }}\"\
,\n \"unit_of_measurement\":\"°C\",\n \"unique_id\":\"0x5c0272fffe8de819_local_temperature\"\
,\n \"device\":{\"identifiers\":[\"zigbee2mqtt_0x5c0272fffe8de819\"],\"\
manufacturer\":\"TuYa\",\"model\":\"Radiator valve with thermostat (TS0601_thermostat)\"\
,\"name\":\"Kitchen valve with thermostat\"} \n}"
- action: mqtt.publish
data:
topic: homeassistant/sensor/0x5c0272fffe8de819/local_temperature_calibration/config
retain: true
payload: "{ \n \"avty\":[{\"topic\":\"zigbee2mqtt/bridge/state\",\"value_template\"\
:\"{{ '{{' }} value_json.state {{ '}}' }}\"},{\"topic\":\"zigbee2mqtt/Kitchen\
\ valve with thermostat/availability\",\"value_template\":\"{{ '{{' }} value_json.state\
\ {{ '}}' }}\"}],\n \"avty_mode\":\"all\",\n \"name\":\"0x5c0272fffe8de819_local_temperature_calibration\"\
, \n \"state_topic\":\"zigbee2mqtt/Kitchen valve with thermostat\",\n \
\ \"value_template\":\"{{ '{{' }} value_json.local_temperature_calibration\
\ {{ '}}' }}\",\n \"unit_of_measurement\":\"°C\",\n \"unique_id\":\"0x5c0272fffe8de819_local_temperature_calibration\"\
,\n \"device\":{\"identifiers\":[\"zigbee2mqtt_0x5c0272fffe8de819\"],\"\
manufacturer\":\"TuYa\",\"model\":\"Radiator valve with thermostat (TS0601_thermostat)\"\
,\"name\":\"Kitchen valve with thermostat\"} \n}"
- action: mqtt.publish
data:
topic: homeassistant/sensor/login_ssh_kotletochka_dell_srv/config
retain: true
payload: "{ \n \"name\":\"login ssh kotletochka dell srv\", \n \"state_topic\"\
:\"host_data/login_ssh/kotletochka_dell_srv\",\n \"value_template\":\"\
{{ '{{' }} value_json.date {{ '}}' }}\",\n \"json_attributes_topic\":\"\
host_data/login_ssh/kotletochka_dell_srv\",\n \"json_attributes_template\"\
:\"{{ '{{ {' }}'user':value_json.user, 'ruser':value_json.ruser, 'address':value_json.address,\
\ 'service':value_json.service, 'tty':value_json.tty{{ '}' }} | tojson {{\
\ '}}' }}\",\n \"force_update\":\"true\",\n \"device_class\":\"timestamp\"\
,\n \"icon\":\"mdi:ssh\", \n \"unique_id\":\"login_ssh_kotletochka_dell_srv\"\
,\n \"device\":{\"identifiers\":[\"login_ssh\"],\"manufacturer\":\"Enzokot\"\
,\"model\":\"Local push\",\"name\":\"Login's ssh info\"}\n}"
- action: mqtt.publish
data:
topic: homeassistant/binary_sensor/dmesg_ext4_warning/config
retain: true
payload: "{ \n \"name\":\"Kernel_EXT4_warning\", \n \"state_topic\":\"host_data/dmesg_ext4_warning\"\
,\n \"icon\":\"mdi:harddisk\",\n \"device_class\":\"problem\",\n \"unique_id\"\
:\"dmesg_ext4_warning\",\n \"device\":{\"identifiers\":[\"host_kernel_info\"\
],\"manufacturer\":\"Enzokot\",\"model\":\"Local polling\",\"name\":\"Host\
\ kernel info\"}\n}"
- action: mqtt.publish
data:
topic: homeassistant/sensor/pve_processor_temperature/config
retain: true
payload: "{ \n \"name\":\"pve processor temperature\", \n \"state_topic\"\
:\"host_data/host_sensors/cpu_temp\",\n \"icon\":\"mdi:thermometer\", \n\
\ \"unit_of_measurement\":\"°C\",\n \"device_class\":\"temperature\",\n\
\ \"unique_id\":\"pve_processor_temperature\",\n \"device\":{\"identifiers\"\
:[\"pve_sensors\"],\"manufacturer\":\"Enzokot\",\"model\":\"Local polling\"\
,\"name\":\"PVE Sensors\"}\n}"
- alias: notification front door open long time
id: notification front door open long time
initial_state: true
triggers:
trigger: state
entity_id: binary_sensor.0x158d000359304c_contact
from: 'off'
to: 'on'
for:
minutes: 2
actions:
- parallel:
- action: notify.telegram_enzokot_to_bot
data:
title: ⚠️ *Датчик открытия/закрытия*
message: 'Входная дверь: открыта более 2 минут'
- choose:
- conditions:
- condition: state
entity_id: media_player.lg_smart_tv
state: 'on'
sequence:
- action: notify.kotletochka_tv
data:
message: 'Входная дверь: открыта более 2 минут'
- alias: notification lobby door open long time
id: notification lobby door open long time
initial_state: true
triggers:
- trigger: state
id: door_open
entity_id: binary_sensor.lobby_door_open_long_time
from: 'off'
to: 'on'
- trigger: state
id: door_close
entity_id: binary_sensor.lobby_door_open_long_time
from: 'on'
to: 'off'
actions:
- action: telegram_bot.send_message
data:
target: secret telegram_all_chat_id
disable_notification: true
title: '{% if trigger.id == ''door_open'' -%} {{ ''\U0001F513'' }} {%- else
-%} {{ ''\U0001f510'' }} {%- endif %} *Датчик открытия/закрытия*'
message: 'Тамбурная дверь: {% if trigger.id == ''door_open'' -%} открыта более
5 минут {%- else -%} закрыта {% endif -%}'
- alias: notification sound front door open long time
id: notification sound front door open long time
initial_state: true
triggers:
- trigger: state
entity_id: binary_sensor.0x158d000359304c_contact
from: 'off'
to: 'on'
for:
minutes: 2
conditions:
- condition: state
entity_id: input_boolean.alarm_gateway_button
state: 'off'
- condition: state
entity_id: alarm_control_panel.signalka_shliuza_alarm
state: disarmed
- condition: or
conditions:
- condition: time
after: '9:00:00'
before: '13:30:00'
- condition: time
after: '16:30:00'
before: '21:00:00'
actions:
- action: timer.start
entity_id: timer.front_door_ringtone
- parallel:
- action: script.turn_on
data:
entity_id: script.alice_custom_tts_volume
variables:
entity: media_player.yandex_station_ff98f029b620413b35e5e278
text: Внимание Входная дверь открыта
vol_level: '0.65'
- action: xiaomi_aqara.play_ringtone
data:
gw_mac: secret gateway1_mac
ringtone_id: 10004
ringtone_vol: 15
- alias: notification sound front door open long time repeat
id: notification sound front door open long time repeat
initial_state: true
triggers:
- trigger: event
event_type: timer.finished
event_data:
entity_id: timer.front_door_ringtone
conditions:
- condition: state
entity_id: binary_sensor.0x158d000359304c_contact
state: 'on'
actions:
- action: timer.start
entity_id: timer.front_door_ringtone
- parallel:
- action: script.alice_custom_tts_volume
data:
entity: media_player.yandex_station_ff98f029b620413b35e5e278
text: Внимание Входная дверь открыта
vol_level: '0.65'
- action: xiaomi_aqara.play_ringtone
data:
gw_mac: secret gateway1_mac
ringtone_id: 10004
ringtone_vol: 15
- alias: notification sound front door open long time cancel
id: notification sound front door open long time cancel
initial_state: true
triggers:
- trigger: time
at: '13:30:00'
- trigger: time
at: '21:00:00'
- trigger: state
id: binary_sensor_trigger
entity_id: binary_sensor.0x158d000359304c_contact
from: 'on'
to: 'off'
conditions:
condition: state
entity_id: timer.front_door_ringtone
state: active
actions:
- action: timer.cancel
entity_id: timer.front_door_ringtone
- choose:
- conditions: '{{ trigger.id == ''binary_sensor_trigger'' }}'
sequence:
- action: xiaomi_aqara.stop_ringtone
data:
gw_mac: secret gateway1_mac
- alias: notification front door open close
id: notification front door open close
mode: queued
initial_state: true
triggers:
- trigger: state
entity_id: binary_sensor.0x158d000359304c_contact
from:
- 'off'
- 'on'
to:
- 'on'
- 'off'
actions:
- variables:
text_for_message: '{{ iif(trigger.to_state.state == ''on'', ''открыта'', ''закрыта'')
}}'
- parallel:
- action: telegram_bot.send_message
data:
title: '{{ iif(trigger.to_state.state == ''on'', ''🚪'', ''🔐'') }} *Датчик
открытия/закрытия*'
message: 'Входная дверь: {{ text_for_message }}'
disable_notification: true
target: secret telegram_enzokot_chat_id
- choose:
- conditions:
- condition: state
entity_id: media_player.lg_smart_tv
state: 'on'
sequence:
- action: notify.kotletochka_tv
data:
message: 'Входная дверь: {{ text_for_message }}'
- alias: notification front door open armed
id: notification front door open armed
initial_state: true
triggers:
- trigger: state
entity_id: binary_sensor.0x158d000359304c_contact
to: 'on'
conditions:
- condition: state
entity_id: alarm_control_panel.signalka_shliuza_alarm
state: armed_away
actions:
- variables:
sm_g973f_rezhim_ne_bespokoit: '{{ states(''sensor.sm_g973f_do_not_disturb_sensor'')
}}'
- choose:
- conditions: '{{ sm_g973f_rezhim_ne_bespokoit = ''off'' }}'
sequence:
- action: notify.mobile_app_sm_g973f
data:
message: command_dnd
data:
command: 'off'
- wait_for_trigger:
- trigger: state
entity_id: sensor.sm_g973f_do_not_disturb_sensor
timeout:
seconds: 5
- variables:
sm_g973f_rezhim_zvonka: '{{ states(''sensor.sm_g973f_ringer_mode'') }}'
- choose:
- conditions: '{{ sm_g973f_rezhim_zvonka = ''normal'' }}'
sequence:
- action: notify.notify
data:
message: command_ringer_mode
data:
command: normal
- parallel:
- action: telegram_bot.send_message
data:
title: '{{ ''\U0001f6a8'' }} *Сигнализация*'
message: Обнаружено вскрытие {{ trigger.to_state.attributes.friendly_name
}} при включенной сигнализации
target: secret telegram_all_chat_id
inline_keyboard:
- Выключить сирену:/stop_alarm
- action: notify.notify
data:
title: '{{ ''🚨'' }} Сигнализация'
message: Обнаружено вскрытие {{ trigger.to_state.attributes.friendly_name
}} при включенной сигнализации
data:
ttl: 0
priority: high
channel: alarm_stream
actions:
- action: stop_alarm
title: Выключить сирену
- action: notify.huawei_lte
data:
message: 🚨 Обнаружено вскрытие {{ trigger.to_state.attributes.friendly_name
}} при включенной сигнализации
target: secret sms_phone_all
data:
url: http://192.168.8.1/
- choose:
- conditions: '{{ sm_g973f_rezhim_zvonka = ''normal'' }}'
sequence:
- action: notify.mobile_app_sm_g973f
data:
message: command_ringer_mode
data:
command: '{{ sm_g973f_rezhim_zvonka }}'
- choose:
- conditions: '{{ sm_g973f_rezhim_ne_bespokoit = ''off'' }}'
sequence:
- action: notify.mobile_app_sm_g973f
data:
message: command_dnd
data:
command: '{{ sm_g973f_rezhim_ne_bespokoit }}'
- alias: notification motion detected armed
id: notification motion detected armed
initial_state: true
mode: queued
triggers:
- trigger: state
entity_id:
- binary_sensor.0x158d00054b8d72_motion
- binary_sensor.0x158d000566bde7_motion
- binary_sensor.0x158d0003953ee9_motion
to: 'on'
conditions:
- condition: state
entity_id: alarm_control_panel.signalka_shliuza_alarm
state: armed_away
actions:
- variables:
sm_g973f_rezhim_ne_bespokoit: '{{ states(''sensor.sm_g973f_do_not_disturb_sensor'')
}}'
- choose:
- conditions: '{{ sm_g973f_rezhim_ne_bespokoit = ''off'' }}'
sequence:
- action: notify.mobile_app_sm_g973f
data:
message: command_dnd
data:
command: 'off'
- wait_for_trigger:
- trigger: state
entity_id: sensor.sm_g973f_do_not_disturb_sensor
timeout:
seconds: 5
- variables:
sm_g973f_rezhim_zvonka: '{{ states(''sensor.sm_g973f_ringer_mode'') }}'
- choose:
- conditions: '{{ sm_g973f_rezhim_zvonka = ''normal'' }}'
sequence:
- action: notify.notify
data:
message: command_ringer_mode
data:
command: normal
- parallel:
- action: telegram_bot.send_message
data:
title: '{{ ''\U0001f6a8'' }} *Сигнализация*'
message: Обнаружено движение _{{ trigger.to_state.attributes.friendly_name
}}_ при включенной сигнализации
target: secret telegram_all_chat_id
inline_keyboard:
- Выключить сирену:/stop_alarm
- action: notify.notify
data:
title: '{{ ''🚨'' }} Сигнализация'
message: Обнаружено движение {{ trigger.to_state.attributes.friendly_name
}} при включенной сигнализации
data:
ttl: 0
priority: high
channel: alarm_stream
actions:
- action: stop_alarm
title: Выключить сирену
- action: notify.huawei_lte
data:
message: 🚨 Обнаружено движение {{ trigger.to_state.attributes.friendly_name
}} при включенной сигнализации
target: secret sms_phone_all
data:
url: http://192.168.8.1/
- choose:
- conditions: '{{ sm_g973f_rezhim_zvonka = ''normal'' }}'
sequence:
- action: notify.mobile_app_sm_g973f
data:
message: command_ringer_mode
data:
command: '{{ sm_g973f_rezhim_zvonka }}'
- choose:
- conditions: '{{ sm_g973f_rezhim_ne_bespokoit = ''off'' }}'
sequence:
- action: notify.mobile_app_sm_g973f
data:
message: command_dnd
data:
command: '{{ sm_g973f_rezhim_ne_bespokoit }}'
- alias: notification open window armed
id: notification open window armed
initial_state: true
mode: queued
triggers:
- trigger: state
entity_id:
- binary_sensor.window_bed_room_group
- binary_sensor.window_childrens_room_group
- binary_sensor.window_living_room_group
- binary_sensor.window_kitchen_group
to: 'on'
conditions:
- condition: state
entity_id: alarm_control_panel.signalka_shliuza_alarm
state: armed_away
actions:
- variables:
sm_g973f_rezhim_ne_bespokoit: '{{ states(''sensor.sm_g973f_do_not_disturb_sensor'')
}}'
- choose:
- conditions: '{{ sm_g973f_rezhim_ne_bespokoit = ''off'' }}'
sequence:
- action: notify.mobile_app_sm_g973f
data:
message: command_dnd
data:
command: 'off'
- wait_for_trigger:
- trigger: state
entity_id: sensor.sm_g973f_do_not_disturb_sensor
timeout:
seconds: 5
- variables:
sm_g973f_rezhim_zvonka: '{{ states(''sensor.sm_g973f_ringer_mode'') }}'
- choose:
- conditions: '{{ sm_g973f_rezhim_zvonka = ''normal'' }}'
sequence:
- action: notify.notify
data:
message: command_ringer_mode
data:
command: normal
- parallel:
- action: telegram_bot.send_message
data:
title: '{{ ''\U0001f6a8'' }} *Сигнализация*'
message: Обнаружено вскрытие окна _{{ trigger.to_state.attributes.friendly_name
}}_ при включенной сигнализации
inline_keyboard:
- Выключить сирену:/stop_alarm
target: secret telegram_all_chat_id
- action: notify.notify
data:
title: '{{ ''🚨'' }} Сигнализация'
message: Обнаружено вскрытие окна {{ trigger.to_state.attributes.friendly_name
}} при включенной сигнализации
data:
ttl: 0
priority: high
channel: alarm_stream
actions:
- action: stop_alarm
title: Выключить сирену
- action: notify.huawei_lte
data:
message: 🚨 Обнаружено вскрытие окна {{ trigger.to_state.attributes.friendly_name
}} при включенной сигнализации
target: secret sms_phone_all
data:
url: http://192.168.8.1/
- choose:
- conditions: '{{ sm_g973f_rezhim_zvonka = ''normal'' }}'
sequence:
- action: notify.mobile_app_sm_g973f
data:
message: command_ringer_mode
data:
command: '{{ sm_g973f_rezhim_zvonka }}'
- choose:
- conditions: '{{ sm_g973f_rezhim_ne_bespokoit = ''off'' }}'
sequence:
- action: notify.mobile_app_sm_g973f
data:
message: command_dnd
data:
command: '{{ sm_g973f_rezhim_ne_bespokoit }}'
- alias: notification gateway alarm triggered normal mode
id: notification gateway alarm triggered normal mode
mode: queued
initial_state: true
triggers:
- trigger: state
entity_id:
- alarm_control_panel.54ef44315770_alarm
- alarm_control_panel.54ef44cb80fd_alarm
- alarm_control_panel.54ef443127b2_alarm
to: triggered
conditions:
- condition: state
entity_id: input_boolean.alarm_gateway_button
state: 'off'
- condition: state
entity_id: alarm_control_panel.signalka_shliuza_alarm
state: disarmed
actions:
- variables:
sm_g973f_rezhim_ne_bespokoit: '{{ states(''sensor.sm_g973f_do_not_disturb_sensor'')
}}'
- choose:
- conditions: '{{ sm_g973f_rezhim_ne_bespokoit = ''off'' }}'
sequence:
- action: notify.mobile_app_sm_g973f
data:
message: command_dnd
data:
command: 'off'
- wait_for_trigger:
- trigger: state
entity_id: sensor.sm_g973f_do_not_disturb_sensor
timeout:
seconds: 5
- variables:
sm_g973f_rezhim_zvonka: '{{ states(''sensor.sm_g973f_ringer_mode'') }}'
- choose:
- conditions: '{{ sm_g973f_rezhim_zvonka = ''normal'' }}'
sequence:
- action: notify.notify
data:
message: command_ringer_mode
data:
command: normal
- parallel:
- action: telegram_bot.send_message
data:
title: '{{ ''\U0001f6a8'' }} *Сигнализация*'
message: Обнаружено срабатывание шлюза _{{ trigger.to_state.attributes.friendly_name
}}_
inline_keyboard:
- Выключить сирену:/stop_alarm
target: secret telegram_all_chat_id
- action: notify.notify
data:
title: '{{ ''🚨'' }} Сигнализация'
message: Обнаружено срабатывание шлюза {{ trigger.to_state.attributes.friendly_name
}}
data:
ttl: 0
priority: high
channel: alarm_stream
actions:
- action: stop_alarm
title: Выключить сирену
- action: notify.huawei_lte
data:
message: 🚨 Обнаружено срабатывание шлюза {{ trigger.to_state.attributes.friendly_name
}}
target: secret sms_phone_all
data:
url: http://192.168.8.1/
- choose:
- conditions: '{{ sm_g973f_rezhim_zvonka = ''normal'' }}'
sequence:
- action: notify.mobile_app_sm_g973f
data:
message: command_ringer_mode
data:
command: '{{ sm_g973f_rezhim_zvonka }}'
- choose:
- conditions: '{{ sm_g973f_rezhim_ne_bespokoit = ''off'' }}'
sequence:
- action: notify.mobile_app_sm_g973f
data:
message: command_dnd
data:
command: '{{ sm_g973f_rezhim_ne_bespokoit }}'
- alias: vacuum cleaner error to all
id: vacuum cleaner error to all
initial_state: true
triggers:
- trigger: state
entity_id: vacuum.xiaomi_vacuum_cleaner
attribute: status
to:
- Error
- In Error
- Charging Error
actions:
- parallel:
- action: telegram_bot.send_photo
data:
target: secret telegram_all_chat_id
url: '{{- ''http://homeassistant.local.hass.io:8123'' + state_attr(''camera.roborock_vacuum_map'',
''entity_picture'') -}}'
caption: ⚠️ *Степа* {{- '\n' -}} Похоже я застрял или какая то другая ошибка
inline_keyboard:
- Найти меня (громко):/findvacuum
- choose:
- conditions:
- condition: state
entity_id: media_player.lg_smart_tv
state: 'on'
sequence:
- action: notify.kotletochka_tv
data:
message: 'Степа: мне нужна помощь'
- alias: vacuum cleaner after cleaning chita
id: vacuum cleaner after cleaning chita
initial_state: true
triggers:
- trigger: state
entity_id: vacuum.xiaomi_vacuum_cleaner
from: returning
to: docked
conditions:
condition: template
value_template: '{{ (states(''sensor.xiaomi_vacuum_cleaner_total_clean_area'')
| int(0) ) > (states(''input_number.total_cleaned_area_saved'') | int(0) ) +
30 }}'
actions:
- variables:
current_clean_area: '{{ states(''sensor.xiaomi_vacuum_cleaner_current_clean_area'')
| round(0, ''ceil'', 0) | string + state_attr(''sensor.xiaomi_vacuum_cleaner_current_clean_area'',
''unit_of_measurement'') }}'
current_clean_duration: "{% set uptime = states('sensor.xiaomi_vacuum_cleaner_current_clean_duration')\
\ | int(0) %} {% set minutes = (( uptime % 3600) / 60) | int(0) %} {% set\
\ hours = ((uptime % 86400) / 3600) | int(0) %} {% set days = (uptime / 86400)\
\ | int(0) %}\n {% if uptime < 1 %}\n Меньше минуты\n {%- else %}\n \
\ {% if days > 0 %}\n {{ days -}} д.\n {%- endif %}\n {%- if\
\ hours > 0 %}\n {%- if days > 0 %}\n {{- ' ' -}}\n {% endif\
\ -%}\n {{ hours -}} ч.\n {%- endif %}\n {%- if minutes > 0 %}\n\
\ {%- if days > 0 or hours > 0 %}\n {{- ' ' -}}\n {% endif\
\ -%}\n {{ minutes -}} м.\n {%- endif -%}\n {% endif %}"
- parallel:
- action: telegram_bot.send_photo
data:
target: secret telegram_chita_chat_id
url: '{{- ''http://homeassistant.local.hass.io:8123'' + state_attr(''camera.roborock_vacuum_map'',
''entity_picture'') -}}'
caption: '{{ ''\U0001f4af'' }} *Степа* {{- ''\n'' -}} Вернулся на базу (длительность:
{{- current_clean_duration -}}, площадь: {{- current_clean_area -}}), нужно
снять бак с водой и заглянуть в контейнер пылесборника'
- action: input_number.set_value
data:
entity_id: input_number.total_cleaned_area_saved
value: '{{ (states(''sensor.xiaomi_vacuum_cleaner_total_clean_area'') | int(0)
) }}'
- choose:
- conditions:
- condition: state
entity_id: media_player.lg_smart_tv
state: 'on'
sequence:
- action: notify.kotletochka_tv
data:
message: 'Степа: вернулся на базу'
- alias: smoke detector alarm
id: smoke detector alarm
initial_state: true
triggers:
- trigger: state
entity_id:
- binary_sensor.0x158d0003943639_smoke
- binary_sensor.0x158d00039a8358_smoke
- binary_sensor.0x158d00039d9398_smoke
- binary_sensor.0x158d00045ca483_smoke
- binary_sensor.0x00158d00045cd551_smoke
to: 'on'
actions:
- variables:
sm_g973f_rezhim_ne_bespokoit: '{{ states(''sensor.sm_g973f_do_not_disturb_sensor'')
}}'
- choose:
- conditions: '{{ sm_g973f_rezhim_ne_bespokoit = ''off'' }}'
sequence:
- action: notify.mobile_app_sm_g973f
data:
message: command_dnd
data:
command: 'off'
- wait_for_trigger:
- trigger: state
entity_id: sensor.sm_g973f_do_not_disturb_sensor
timeout:
seconds: 5
- variables:
sm_g973f_rezhim_zvonka: '{{ states(''sensor.sm_g973f_ringer_mode'') }}'
areas_list: '{{ states.binary_sensor | selectattr(''entity_id'', ''match'',
''.*_smoke'') | selectattr(''state'', ''eq'', ''on'') | map(attribute=''entity_id'')
| map(''area_name'') | reject(''none'') | unique | join(''
'') }}'
- choose:
- conditions: '{{ sm_g973f_rezhim_zvonka = ''normal'' }}'
sequence:
- action: notify.notify
data:
message: command_ringer_mode
data:
command: normal
- parallel:
- action: telegram_bot.send_message
data:
target: secret telegram_all_chat_id
title: '{{ ''\U0001F525'' }} *Датчик дыма*'
message: 'Сработали датчики:
{{- ''\n'' -}}
_{{- areas_list -}}_'
inline_keyboard:
- Выключить сирену:/stop_alarm
- action: notify.notify
data:
data:
ttl: 0
priority: high
channel: alarm_stream
actions:
- action: stop_alarm
title: Выключить сирену
title: '{{ ''🔥'' }} Датчик дыма'
message: 'Сработали датчики:
{{- ''\n'' -}}
{{- areas_list -}}'
- action: notify.huawei_lte
data:
message: '{{ ''\U0001F525'' }} Сработали датчики дыма:
{{- ''\n'' -}}
{{- areas_list -}}'
target: secret sms_phone_all
data:
url: http://192.168.8.1/
- choose:
- conditions: '{{ sm_g973f_rezhim_zvonka = ''normal'' }}'
sequence:
- action: notify.mobile_app_sm_g973f
data:
message: command_ringer_mode
data:
command: '{{ sm_g973f_rezhim_zvonka }}'
- choose:
- conditions: '{{ sm_g973f_rezhim_ne_bespokoit = ''off'' }}'
sequence:
- action: notify.mobile_app_sm_g973f
data:
message: command_dnd
data:
command: '{{ sm_g973f_rezhim_ne_bespokoit }}'
- alias: notification cert expired
id: notification cert expired
initial_state: true
triggers:
- trigger: state
entity_id: binary_sensor.cert_expired_keenetic_domain
from: 'off'
to: 'on'
- trigger: state
entity_id: binary_sensor.cert_expired_asuscomm_domain_klg
from: 'off'
to: 'on'
actions:
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
title: ⚠️ *Сертификат SSL*
message: '{%- set entity_name = trigger.entity_id | replace(''binary_'', '''')
| replace(''_expired_'', ''_expiry_'') -%} Срок действия сертификата для _{{
trigger.to_state.name -}}_: *{{- states(entity_name) -}}* {{ state_attr(entity_name,
''unit_of_measurement'') }}'
- alias: update available or installed notification
initial_state: true
mode: queued
trigger_variables:
not_has_state: '{{ [''unknown'', ''unavailable'', ''none'', None, null, '''']
}}'
triggers:
- trigger: event
event_type: state_changed
conditions:
- '{{ trigger.event.data.entity_id.startswith(''update.'') }}'
- '{{ trigger.event.data.old_state is not none and trigger.event.data.new_state
is not none }}'
- '{{ trigger.event.data.new_state.attributes.latest_version is defined and trigger.event.data.new_state.attributes.installed_version
is defined }}'
- '{{ trigger.event.data.old_state.attributes.latest_version is defined and trigger.event.data.old_state.attributes.installed_version
is defined }}'
- or:
- condition: template
value_template: "{{ \n trigger.event.data.new_state.state == 'on' and\n ((is_state_attr(trigger.event.data.entity_id,\
\ 'device_class', 'firmware')\n and version(trigger.event.data.new_state.attributes.latest_version)\
\ = version(trigger.event.data.old_state.attributes.latest_version))\n or\
\ version(trigger.event.data.new_state.attributes.latest_version) > version(trigger.event.data.old_state.attributes.latest_version))\
\ and\n trigger.event.data.new_state.attributes.latest_version not in not_has_state\
\ and\n trigger.event.data.new_state.attributes.latest_version is not none\n\
}}\n"
- condition: template
value_template: "{{ \n trigger.event.data.old_state.state == 'on' and trigger.event.data.new_state.state\
\ == 'off' and\n ((is_state_attr(trigger.event.data.entity_id, 'device_class',\
\ 'firmware')\n and version(trigger.event.data.new_state.attributes.installed_version)\
\ = version(trigger.event.data.old_state.attributes.installed_version))\n\
\ or version(trigger.event.data.new_state.attributes.installed_version) >\
\ version(trigger.event.data.old_state.attributes.installed_version)) and\n\
\ trigger.event.data.new_state.attributes.installed_version not in not_has_state\
\ and\n trigger.event.data.new_state.attributes.installed_version is not\
\ none\n}}\n"
actions:
- variables:
release_url: "{% if trigger.event.data.entity_id == 'update.home_assistant_core_update'\
\ -%}\n {%- if state_attr(trigger.event.data.entity_id, 'latest_version').split('.')[2]\
\ | int(0) == 0 -%}\n {{- state_attr(trigger.event.data.entity_id, 'release_url')\
\ -}}\n {%- else -%}\n https://github.com/home-assistant/core/releases/tag/{{-\
\ trigger.event.data.new_state.attributes.latest_version -}}\n {%- endif\
\ -%}\n{%- elif state_attr(trigger.event.data.entity_id, 'release_url') is\
\ not none -%}\n {{- state_attr(trigger.event.data.entity_id, 'release_url')\
\ -}}\n{%- elif device_attr(trigger.event.data.entity_id, 'configuration_url')\
\ is match('homeassistant://', ignorecase=True) -%}\n {{- device_attr(trigger.event.data.entity_id,\
\ 'configuration_url') | replace('homeassistant:/', states('sensor.instance_external_url_config'))\
\ -}}\n{%- else -%}\n {{- states('sensor.instance_external_url_config') -}}/config/dashboard\n\
{%- endif %}"
latest_version: '{{ trigger.event.data.new_state.attributes.latest_version }}'
installed_version: '{{ state_attr(trigger.event.data.entity_id, ''installed_version'')
}}'
friendlyname: '{{- trigger.event.data.new_state.name | replace('' Update'',
'''') -}}'
- choose:
- conditions: '{{ trigger.event.data.new_state.attributes.installed_version =
trigger.event.data.old_state.attributes.installed_version }}
'
sequence:
- variables:
old_installed_version: '{{ trigger.event.data.old_state.attributes.installed_version
}}'
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
title: '{{ ''🎊'' }} *Системное обновление*'
message: 'Обновлен {{ friendlyname }} с {{ old_installed_version }} на [{{
latest_version }}]({{- release_url }}) версию.
'
disable_web_page_preview: true
default:
- parallel:
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
title: '{{ ''🎉'' }} *Системное обновление*'
message: 'Доступна [{{ latest_version }}]({{- release_url }}) версия {{
friendlyname }} для установки, текущая *{{ installed_version }}*.
'
disable_web_page_preview: true
inline_keyboard: '{{ iif(state_attr(trigger.event.data.entity_id, ''supported_features'')
| int(0) > 0, [''Установить:/installupdate '' + trigger.event.data.entity_id],
[]) }}'
- sequence:
- condition: '{{ not is_state_attr(trigger.event.data.entity_id, ''device_class'',
''firmware'') }}'
- action: notify.html5
data:
title: '{{ ''🎉'' }} *Системное обновление*'
message: Доступна {{ latest_version }} версия {{ friendlyname }} для установки,
текущая {{ installed_version }}
target: n550jk
data:
url: '{{- release_url }}'
actions: '{{ iif(state_attr(trigger.event.data.entity_id, ''supported_features'')
| int(0) > 0, [{''action'':''install_update'', ''title'':''Обновить''}],
[]) }}'
tag: 'update_available_notify_ {{- trigger.event.data.entity_id | replace(''update.'',
'''') }}
'
- alias: notification low battery zigbee
id: notification low battery zigbee
initial_state: true
triggers:
- trigger: time
at: '20:00:00'
conditions: "{%- set entities = expand('group.dynamic_group_sensor_battery') -%}\
\ {%- set datanames = namespace(entity_name=[]) -%} {% for x in entities -%}\n\
\ {% set entity_this_z2m = states.sensor[x.entity_id | replace('sensor.', '')\
\ | replace('_battery', '_last_seen')] is not none -%}\n {% set entity_this_gw3\
\ = states.sensor[x.entity_id | replace('sensor.', '') | replace('_battery', '_zigbee')]\
\ is not none -%}\n {% if (not x.entity_id.endswith(\"_low_battery\") and x.state\
\ | int(101) <= iif(entity_this_z2m or entity_this_gw3, 55, 20)) or (x.entity_id.endswith(\"\
_low_battery\") and x.state | string == 'on') -%}\n {% set datanames.entity_name\
\ = datanames.entity_name + ['_' + x.name + '_'] -%}\n {% endif %}\n{%- endfor\
\ %} {{ datanames.entity_name | list | count > 0 }}\n"
actions:
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
title: '{{ ''\U0001f50b'' -}} *Низкий заряд*'
message: "Для устройств: {{- '\\n' -}} {%- set entities = expand('group.dynamic_group_sensor_battery')\
\ -%} {%- set datanames = namespace(entity_name=[]) -%} {% for x in entities\
\ -%}\n {% set entity_this_z2m = states.sensor[x.entity_id | replace('sensor.',\
\ '') | replace('_battery', '_last_seen')] is not none -%}\n {% set entity_this_gw3\
\ = states.sensor[x.entity_id | replace('sensor.', '') | replace('_battery',\
\ '_zigbee')] is not none -%}\n {% if (not x.entity_id.endswith(\"_low_battery\"\
) and x.state | int(101) <= iif(entity_this_z2m or entity_this_gw3, 55, 20))\
\ -%}\n {% set datanames.entity_name = datanames.entity_name + ['_' + x.name\
\ + '_' + ': *' + x.state + '*%'] -%}\n {% endif -%}\n {% if (x.entity_id.endswith(\"\
_low_battery\") and x.state | string == 'on') -%}\n {% set datanames.entity_name\
\ = datanames.entity_name + ['_' + x.name + '_'] -%}\n {% endif %}\n{%- endfor\
\ %} {{- datanames.entity_name | list | join(', \\n') }}"
- alias: notification safety sockets on restart
id: notification safety sockets on restart
initial_state: true
triggers:
- trigger: homeassistant
event: start
conditions:
- condition: state
entity_id: switch.0x842e14fffe5047f5
state: 'on'
actions:
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
title: '{{ ''\U0001f50c'' }} *Управляемые розетки*'
message: После перезапуска НА осталась включена розетка обогревателя.
- alias: notification safety sockets off
id: notification safety sockets off
initial_state: true
triggers:
- trigger: numeric_state
entity_id:
- sensor.0x842e14fffe5047f5_power
- sensor.0x842e14fffe13a854_power
- sensor.0x588e81fffeff5c4f_power
- sensor.0x842e14fffe36661f_power
- sensor.shelly_plug_s_1_power
- sensor.0x60a423fffef8d41a_power
- sensor.shelly_plug_s_2_power
- sensor.shelly_plug_s_nvr_power
- sensor.shelly_plug_s_keenetic_hw_power
- sensor.shelly_plug_s_htr_shelly_heated_tr_power
above: 3000
actions:
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
title: ⚠️ *Управляемые розетки*
message: 'Сработала защита по превышению потребления для розетки: {{ ''\n''
}} _{{ device_attr(trigger.entity_id, ''name'') }}_'
- alias: notification public ip changed
id: notification public ip changed
initial_state: true
mode: queued
triggers:
- trigger: state
entity_id: sensor.myip
actions:
- parallel:
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
title: '{{ ''\U0001f4f6'' }} *Трекинг устройств*'
message: "{%- if trigger.from_state.state in ['unavailable', 'unknown', '']\
\ -%}\n Внешний IP-адрес определен `{{ trigger.to_state.state }}`\n{%-\
\ else -%}\n Внешний IP-адрес изменен с `{{ trigger.from_state.state\
\ }}` на `{{ trigger.to_state.state }}`\n{%- endif -%}"
- action: notify.notify
data:
title: '{{ ''\U0001f4f6'' }} Трекинг устройств'
message: "{%- if trigger.from_state.state in ['unavailable', 'unknown', '']\
\ -%}\n Внешний IP-адрес определен {{ trigger.to_state.state }}\n{%-\
\ else -%}\n Внешний IP-адрес изменен с {{ trigger.from_state.state }}\
\ на {{ trigger.to_state.state }}\n{%- endif -%}"
- choose:
- conditions:
- condition: state
entity_id: media_player.lg_smart_tv
state: 'on'
sequence:
- action: notify.kotletochka_tv
data:
message: 'Интернет: возможно переключились на LTE'
- alias: notification low level water
id: notification low level water
initial_state: true
triggers:
- trigger: state
entity_id: binary_sensor.zhimi_humidifier_cb1_low_water_level
from: 'off'
to: 'on'
- trigger: state
entity_id: binary_sensor.zhimi_humidifier_ca4_low_water_level
from: 'off'
to: 'on'
conditions:
- '{{ states(trigger.entity_id | replace(''binary_sensor.'', ''sensor.'') | replace(''_low'',
'''')) | int(0) > 0 }}'
actions:
- parallel:
- action: telegram_bot.send_message
data:
target: secret telegram_all_chat_id
title: '{{ ''\U0001F6B0'' }} *Увлажнители*'
message: 'Пора залить воду в увлажнитель: _{{- trigger.to_state.name -}}_'
- choose:
- conditions:
- condition: state
entity_id: media_player.lg_smart_tv
state: 'on'
sequence:
- action: notify.kotletochka_tv
data:
message: 'Нет воды: {{- trigger.to_state.name -}}'
- alias: notification vacuum maintenance
id: notification vacuum maintenance
initial_state: true
mode: queued
triggers:
- trigger: state
entity_id:
- binary_sensor.vacuum_cleaner_main_brush_maintenance
- binary_sensor.vacuum_cleaner_side_brush_maintenance
- binary_sensor.vacuum_cleaner_filter_maintenance
- binary_sensor.vacuum_cleaner_sensor_dirty_maintenance
from: 'off'
to: 'on'
actions:
- action: telegram_bot.send_message
data:
target: secret telegram_all_chat_id
title: '{{ ''\U0001F527'' }} *Степа*'
message: 'Необходимо провести обслуживание: _{{- trigger.to_state.name -}}_'
- alias: notifications control voltage
id: notifications control voltage
initial_state: true
mode: queued
triggers:
- trigger: numeric_state
entity_id: sensor.shelly_em_voltage
above: 250
- trigger: numeric_state
entity_id: sensor.shelly_em_voltage
below: 180
- trigger: numeric_state
entity_id: sensor.shelly_em_voltage
above: 179.9
below: 250.1
conditions:
- condition: template
value_template: "{{ trigger.from_state.state not in ['unavailable', 'unknown',\
\ ''] and\n (\n trigger.above == None or trigger.below == None or\n \
\ (trigger.from_state.state | float(0.0) >= trigger.below\n or trigger.from_state.state\
\ | float(0.0) <= trigger.above)\n )\n and trigger.from_state.state |\
\ float(-1.0) >= 0\n and trigger.to_state.state | float(-1.0) >= 0\n}}"
actions:
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
title: '{% if trigger.above = None and trigger.below = None %} {{ ''\U00002705''
}} {% else %} ⚠️ {% endif -%} *Контроль напряжения*'
message: "{% if trigger.above = None and trigger.below == None and trigger.to_state.state\
\ | float(0.0) >= trigger.above | float(0.0) %}\n Обнаружено *повышенное*\
\ напряжение сети {{ trigger.to_state.state }}В\n{% elif trigger.above ==\
\ None and trigger.below = None and trigger.to_state.state | float(0.0) <=\
\ trigger.below | float(0.0) %}\n Обнаружено *пониженное* напряжение сети\
\ {{ trigger.to_state.state }}В\n{% else %}\n В сети *нормальное* напряжение\
\ {{ trigger.to_state.state }}В\n{% endif %}"
- alias: notifications backup instance info
id: notifications backup instance info
mode: queued
trigger_variables:
not_has_state: '{{ [''unknown'', ''unavailable'', ''none'', None, null, '''']
}}'
triggers:
- trigger: state
entity_id: sensor.last_google_backup_train
conditions:
- condition: template
value_template: "{{\n trigger.from_state.state is defined and\n trigger.to_state.state\
\ is defined and\n trigger.from_state.state not in not_has_state\n and trigger.to_state.state\
\ not in not_has_state\n and state_attr('sensor.backup_state', 'backups')\
\ | count > 0\n}}"
actions:
- action: homeassistant.update_entity
entity_id: sensor.disk_use_percent
- wait_for_trigger:
- trigger: state
entity_id: sensor.disk_use_percent
timeout:
seconds: 10
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
title: '{{ ''\U0001F4BD'' }} *Резервное копирование*'
message: Создана резервная копия с именем `{{ state_attr('sensor.backup_state',
'backups')[-1].name }}`, системный диск заполнен на *{{ states('sensor.disk_use_percent')
-}}*%, свободно на Google диске *{{ state_attr('sensor.backup_state', 'free_space_in_google_drive')
| replace(' ', '') }}*
- alias: notifications failed login or block IP
id: notifications failed login or block IP
mode: parallel
initial_state: true
triggers:
- trigger: persistent_notification
id: http-login
update_type:
- added
- updated
notification_id: http-login
- trigger: persistent_notification
id: ip-ban
update_type:
- added
- updated
notification_id: ip-ban
actions:
- parallel:
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
title: "{%- if trigger.id == 'http-login' %}\n {{- '\\U0001F6AB' -}}\n\
{% else %}\n {{- '\\U000026D4' -}}\n{% endif %} *Вход в систему*"
message: "{% set ipadress = trigger.notification.message | replace('\\n',\
\ ' ') | regex_replace('.*\\((?=\\d+\\.\\d+\\.\\d+\\.\\d+)') | regex_replace('\\\
).*')\n | replace('Too many login attempts from ', '') %}\n\n{% if trigger.id\
\ == 'http-login' -%}\n Неудачная попытка входа в систему с адреса [{{\
\ ipadress }}](https://whatismyipaddress.com/ip/{{- ipadress }})\n{%- else\
\ -%}\n Заблокирован IP адрес [{{ ipadress }}](https://whatismyipaddress.com/ip/{{-\
\ ipadress }}), 5 попыток входа\n{%- endif %}, [логи]({{- states('sensor.instance_external_url_config')\
\ -}}/config/logs)\n"
disable_web_page_preview: true
- action: persistent_notification.dismiss
data:
notification_id: '{{ trigger.id }}'
- alias: notification start or stop home assistant
id: notification start or stop home assistant
mode: parallel
initial_state: true
triggers:
- trigger: homeassistant
id: homeassistant_start
event: start
- trigger: homeassistant
event: shutdown
actions:
- variables:
long_start_integrations_name: "{% if states.sensor.start_time.attributes is\
\ defined and states.sensor.start_time.attributes.setup_time is defined %}\n\
\ {% set separator = joiner(', ') %}\n {% set attrs = states.sensor.start_time.attributes.setup_time\
\ %}\n {% for attr in attrs if attrs[attr] | float(0.0) >= 9 %}\n {{-\
\ separator() + attr | replace('_', '-') -}}\n {% endfor %}\n{% else %}\n\
\ {{ '' }}\n{% endif %}"
- if:
- condition: trigger
id: homeassistant_start
then:
- action: homeassistant.update_entity
data:
entity_id:
- sensor.errors_in_system_log_command_line
- sensor.warnings_in_system_log_command_line
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
disable_notification: true
disable_web_page_preview: true
title: "{%- if trigger.id == 'homeassistant_start' %}\n {{- '\\U00002705'\
\ -}}\n{% else %}\n {{- '\\U000026d4' -}}\n{% endif %} *Трекинг устройств*\n"
message: "{% if trigger.id == 'homeassistant_start' -%}\n Home Assistant\
\ запущен за {{ states('sensor.start_time') }}сек. (версия Core: [{{ state_attr('update.home_assistant_core_update',\
\ 'installed_version') }}](https://github.com/home-assistant/core/releases/tag/{{-\
\ state_attr('update.home_assistant_core_update', 'installed_version') }}))\
\ {{- '\\n' -}}\n Ошибок: *{{ states('sensor.errors_in_system_log_command_line')\
\ }}*, предупреждений: *{{ states('sensor.warnings_in_system_log_command_line')\
\ }}* {{- '\\n' -}}\n {{ iif(long_start_integrations_name = '', 'Интеграции\
\ (>9c.): _' + long_start_integrations_name + '_', '') }}\n{% else -%}\n \
\ Home Assistant *остановлен*, время работы: {{ states('sensor.online_custom')\
\ }}\n{% endif -%}\n"
- alias: notifications errors in automations or scripts
id: notifications errors in automations or scripts
mode: queued
triggers:
- trigger: event
event_type: system_log_event
event_data:
level: ERROR
conditions:
- condition: state
entity_id: binary_sensor.local_network_availability
state: 'on'
- '{{ (trigger.event.data.name | string) is not search(this.entity_id | string,
ignorecase=True) }}'
- condition: template
value_template: "{{ \n trigger.event.data.message | regex_search('Error while\
\ executing automation') or\n trigger.event.data.message | regex_search('Error\
\ executing script')\n}}"
- condition: template
value_template: "{{ \n trigger.event.data.message | length < 4000\n}}"
actions:
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
parse_mode: html
disable_web_page_preview: true
title: '{{ ''⛔'' }} <b>Ошибка выполнения скрипта</b>'
message: '{{ trigger.event.data.message | string | e -}} <a href="{{- states(''sensor.instance_external_url_config'')
-}}/config/logs"> Check logs.</a>
'
- alias: notifications objects in unavailable status
initial_state: true
mode: queued
max: 70
trigger_variables:
not_has_state: '{{ [''unknown'', ''unavailable''] }}'
triggers:
- trigger: event
event_type: state_changed
conditions:
- condition: state
entity_id: input_boolean.instances_stoping
state: 'off'
- '{{ trigger.event.data.new_state.state in not_has_state }}'
- '{{ trigger.event.data.entity_id in expand(''group.important_devices_unavailable'')
| map(attribute=''entity_id'') | list }}'
- '{{ trigger.event.data.new_state.state = trigger.event.data.old_state.state }}'
actions:
- choose:
- conditions: '{{ is_state(''input_boolean.instances_stoping'', ''off'') }}'
sequence:
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
disable_notification: true
parse_mode: html
title: ⚠️ <b>Трекинг устройств</b>
message: '<i>{{ state_attr(trigger.event.data.entity_id, ''friendly_name'')
}}</i> сменил статус на <b>{{ trigger.event.data.new_state.state }}</b>
'
- alias: notifications on off water heater
id: notifications on off water heater
mode: parallel
initial_state: true
trigger_variables:
not_has_state: '{{ [''unknown'', ''unavailable'', ''none'', None, null, '''']
}}'
triggers:
- trigger: state
entity_id: sensor.0x842e14fffe13a854_power
conditions:
- condition: state
entity_id: input_boolean.water_heater_season
state: 'on'
- condition: template
value_template: "{{ trigger.from_state.state not in not_has_state and\n trigger.to_state.state\
\ not in not_has_state and\n trigger.to_state.state = trigger.from_state.state\n\
}}\n"
- condition: template
value_template: "{{ \n (trigger.to_state.state | int(0) >= 850 and trigger.from_state.state\
\ | int(0) <= 30)\n or\n (trigger.to_state.state | int(0) < 30 and trigger.from_state.state\
\ | int(0) > 850)\n}}\n"
actions:
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
disable_notification: true
title: '{{ iif(trigger.to_state.state | int(0) >= 30, '''', ''\U00002705'')
}} *Водонагреватель*'
message: '{{ iif(trigger.to_state.state | int(0) >= 30, ''*Включен*'', ''*Отключен*'')
}} нагрев воды'
- alias: notifications stale google drive backup
id: notifications stale google drive backup
max_exceeded: silent
initial_state: true
triggers:
- trigger: state
entity_id: binary_sensor.backups_stale
from: 'off'
to: 'on'
actions:
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
disable_web_page_preview: true
title: '{{ ''⛔'' }} *Резервное копирование БД*'
message: 'Проблема с бекапом Google Drive, [логи]({{- states(''sensor.instance_external_url_config'')
-}}/hassio/addon/cebe7a76_hassio_google_drive_backup/logs)
'
- alias: notifications entry discovery integration
id: notifications entry discovery integrations
mode: queued
initial_state: true
triggers:
- trigger: event
event_type: config_entry_discovered
actions:
- parallel:
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
disable_notification: true
title: '{{ ''📟'' }} *Устройства*'
message: 'Найдено новое устройство в сети, [просмотреть]({{- states(''sensor.instance_external_url_config'')
-}}/config/integrations)
'
- alias: notifications entry discovery
id: notifications entry discovery
mode: queued
max: 99
max_exceeded: silent
initial_state: true
triggers:
- trigger: event
event_type: entity_registry_updated
- trigger: event
id: device_registry
event_type: device_registry_updated
conditions:
- condition: state
entity_id: input_boolean.instances_stoping
state: 'off'
actions:
- variables:
name_for_send: "{% if trigger.id == 'device_registry' -%}\n {% if device_attr(trigger.event.data.device_id,\
\ 'name_by_user') = none -%}\n {{- device_attr(trigger.event.data.device_id,\
\ 'name_by_user') -}}\n {%- else -%}\n {% set temp_name = device_attr(trigger.event.data.device_id,\
\ 'name') %}\n {{- iif(temp_name = none, temp_name, trigger.event.data.device_id,\
\ trigger.event.data.device_id) -}}\n {%- endif -%}\n{%- else -%}\n ''\n\
{%- endif %}"
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
disable_notification: true
parse_mode: html
title: '{{ ''📟'' }} <b>Устройства</b>'
message: "{% if trigger.id == 'device_registry' %}\n <b>{{ trigger.event.data.action\
\ | capitalize }}</b>: {{ name_for_send }}\n{% else %}\n <b>{{ trigger.event.data.action\
\ | capitalize }}</b>: {{ trigger.event.data.old_entity_id + '->' if trigger.event.data.old_entity_id\
\ is defined }}{{ trigger.event.data.entity_id if trigger.event.data.entity_id\
\ is defined else 'NA' }}\n{% endif %}"
- alias: notifications automation already running
id: notifications automation already running
initial_state: true
mode: queued
triggers:
- trigger: event
event_type: system_log_event
event_data:
level: WARNING
conditions:
- condition: template
value_template: '{{ "Already running" in (trigger.event.data.message | string)
}}'
actions:
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
disable_notification: true
parse_mode: html
title: ⚠️ <b>Выполнение автоматизаций</b>
message: 'Повторный запуск автоматизации: {{ trigger.event.data.message | string
| e }}'
- alias: system log critical error notify
id: system log critical error notify
initial_state: true
mode: queued
triggers:
- trigger: event
event_type: system_log_event
event_data:
level: FATAL
- trigger: event
event_type: system_log_event
event_data:
level: CRITICAL
actions:
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
parse_mode: html
disable_web_page_preview: true
title: '{{ ''⛔'' }} <b>Ошибки системного журнала</b>'
message: '{{ trigger.event.data.message | string | e -}} <a href="{{- states(''sensor.instance_external_url_config'')
-}}/config/logs"> Check logs.</a>
'
- alias: notifications sms unread or full storage
id: notifications sms unread or full storage
initial_state: true
max_exceeded: silent
trigger_variables:
not_has_state: '{{ [''unknown'', ''unavailable'', ''none'', None, null, '''']
}}'
triggers:
- trigger: state
entity_id: sensor.huawei_e3372h_320_sms_unread
- trigger: state
id: full_storage
entity_id: binary_sensor.huawei_e3372h_320_sms_storage_full
from: 'off'
to: 'on'
conditions:
- condition: template
value_template: "{{ trigger.id == 'full_storage' or\n trigger.to_state.state\
\ not in not_has_state and\n trigger.to_state.state | int(0) > trigger.from_state.state\
\ | int(0)\n}}\n"
actions:
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
disable_notification: true
title: '{% if trigger.id == ''full_storage'' -%} {{ ''\U0001F4EE'' }} {%- else
-%} {{ ''\U00002709'' }} {%- endif %} *SMS через модем*
'
message: 'Обнаружено {% if trigger.id == ''full_storage'' -%} заполнение памяти
{%- else -%} *{{ trigger.to_state.state }}* {{ trigger.to_state.state | int(0)
| format(morph=''непрочитанное'', as_text=false) | replace(trigger.to_state.state
+ '' '', '''') }} {%- endif %} sms на {{ device_attr(trigger.entity_id, ''name'')
}}
'
- alias: notifications link down keenetic
id: notifications link down keenetic
initial_state: true
max_exceeded: silent
triggers:
- trigger: state
entity_id: binary_sensor.check_keenetic_link_down
to: 'off'
- trigger: state
entity_id: binary_sensor.check_keenetic_link_down
to: 'on'
- trigger: homeassistant
event: start
- trigger: event
event_type: event_template_reloaded
conditions:
- condition: numeric_state
entity_id: counter.counter_keenetic_link_down
above: 0
actions:
- parallel:
- action: notify.huawei_lte
data:
message: '{{ ''\U0000203C'' }} {{ states(''sensor.check_keenetic_link_down'')
| as_timestamp | timestamp_custom(''%Y-%m-%d %H:%M'') }} Keenetic link is
down'
target: secret sms_phone_enzokot
data:
url: http://192.168.8.1/
- action: counter.reset
entity_id: counter.counter_keenetic_link_down
- alias: notifications new rss posts
id: notifications new rss posts
mode: queued
triggers:
- trigger: event
event_type: feedreader
conditions:
- condition: state
entity_id: input_boolean.instances_stoping
state: 'off'
actions:
- variables:
all_chat_id: secret telegram_all_chat_id
enzokot_chat_id: secret telegram_enzokot_chat_id
stormy_notification: '{{ trigger.event.data.feed_url is search(''shtormovye-i-ekstrennye-preduprezhdeniya'',
ignorecase=True) }}'
- action: telegram_bot.send_message
data:
target: "{% if stormy_notification %}\n {{ all_chat_id }}\n{% else %}\n \
\ {{ enzokot_chat_id }}\n{% endif %}\n"
disable_notification: '{{ not stormy_notification }}'
disable_web_page_preview: true
parse_mode: html
title: '{{ ''📰'' }} <b>RSS новости</b>'
message: '<a href="{{- trigger.event.data.link -}}">{{- trigger.event.data.title
| e }} ({{ trigger.event.data.link | regex_findall(find=''^(?:\w+://)?([^/?#]+)'',
ignorecase=True) | join }})</a>
'
- alias: notifications warnings or errors in syslog
id: notifications warnings or errors in syslog
initial_state: true
max_exceeded: silent
triggers:
- trigger: time_pattern
hours: /1
minutes: 30
- trigger: numeric_state
entity_id: counter.system_log_warning_counter
above: 10
- trigger: numeric_state
entity_id: counter.system_log_error_counter
above: 5
conditions:
- '{{ states(''counter.system_log_error_counter'') | int(0) > 0 or states(''counter.system_log_warning_counter'')
| int(0) > 0 }}'
- condition: time
after: '8:30:00'
before: '23:00:00'
actions:
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
disable_notification: true
title: '{{ ''📖'' }} *Данные системного журнала*'
message: "{% if states('counter.system_log_error_counter') | int(0) > 0 -%}\n\
\ Ошибок в логе: *{{ states('counter.system_log_error_counter') }}*\n{%\
\ endif -%}\n{% if states('counter.system_log_warning_counter') | int(0) >\
\ 0 -%}\n Предупреждений в логе: *{{ states('counter.system_log_warning_counter')\
\ }}*\n{% endif -%}\n[Просмотр логов]({{- states('sensor.instance_external_url_config')\
\ -}}/config/logs)"
- alias: telegram is offline for instance notification
id: telegram is offline for instance notification
initial_state: true
triggers:
- trigger: state
entity_id:
- sensor.telegram_status
from: online
to: offline
for: 00:01:20
actions:
- choose:
- conditions:
- condition: time
after: '8:00:00'
before: '23:00:00'
sequence:
- action: notify.huawei_lte
data:
message: '{{ ''\U0000203C'' }} Telegram API недоступно'
target: secret sms_phone_enzokot
data:
url: http://192.168.8.1/
default:
- action: notify.email_enzokot_ha
data:
title: ⚠️ Трекинг устройств
message: Telegram API недоступно
- alias: yandex station to or from local mode notification
id: yandex station to or from local mode notification
mode: queued
initial_state: true
triggers:
- trigger: state
id: non_local
entity_id:
- binary_sensor.yandex_station_ff98f029b620413b35e5e278_assumed_state
- binary_sensor.yandex_station_lr0000000000000252130000de5d13d0_assumed_state
- binary_sensor.yandex_station_m00ka4300h99tr_assumed_state
from: 'off'
to: 'on'
- trigger: state
entity_id:
- binary_sensor.yandex_station_ff98f029b620413b35e5e278_assumed_state
- binary_sensor.yandex_station_lr0000000000000252130000de5d13d0_assumed_state
- binary_sensor.yandex_station_m00ka4300h99tr_assumed_state
from: 'on'
to: 'off'
actions:
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
disable_notification: true
parse_mode: html
title: '{% if trigger.id == ''non_local'' %} ⚠️ {% else %} {{ ''\U00002705''
}} {% endif -%} <b>Трекинг устройств</b>
'
message: 'Станция <b>{{- trigger.to_state.name | e -}}</b> {% if trigger.id
== ''non_local'' -%} отключила локальный режим управления {%- else -%} перешла
в локальный режим управления {%- endif %}
'
- alias: hot pipe low or up temperature notification
id: hot pipe low or up temperature notification
mode: queued
initial_state: true
triggers:
- trigger: numeric_state
id: below
entity_id:
- sensor.0x00158d0006c5f21e_temperature
- sensor.0x158d0006b860cf_temperature
- sensor.0x00158d0008386b56_temperature
below: 40
for:
minutes: 5
- trigger: numeric_state
entity_id:
- sensor.0x00158d0006c5f21e_temperature
- sensor.0x158d0006b860cf_temperature
- sensor.0x00158d0008386b56_temperature
above: 40
for:
minutes: 5
actions:
- parallel:
- action: telegram_bot.send_message
data:
target: secret telegram_all_chat_id
title: '{{ iif(trigger.id == ''below'', ''\U0001F6B1'' , ''\U0001F6B0'') }}
*Горячее водоснабжение*'
message: '{{ iif(trigger.id == ''below'', ''Остывает'' , ''Нагревается'')
}} горячая труба *{{ area_name(trigger.entity_id) }}*.'
- choose:
- conditions: '{{ trigger.id == ''below'' and trigger.entity_id == ''sensor.0x00158d0006c5f21e_temperature''
}}'
sequence:
- action: notify.huawei_lte
data:
message: '{{ ''\U0000203C'' }} Остывает горячая труба {{ area_name(trigger.entity_id)
}}.'
target: secret sms_phone_enzokot
data:
url: http://192.168.8.1/
- alias: system down uptime kuma notifications
id: system down uptime kuma notifications
mode: queued
triggers:
- trigger: webhook
webhook_id: secret webhook_id_system_down_uptime_kuma
local_only: true
allowed_methods:
- POST
conditions:
- '{{ trigger.json.monitor is not none }}'
actions:
- variables:
status_from: '{{ iif(trigger.json.heartbeat is not none and trigger.json.heartbeat.status
| int(0) == 1, ''online'', ''offline'', ''offline'') }}'
- parallel:
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
parse_mode: html
title: '{{ iif(status_from == ''online'', ''\U00002705'', ''\U000026d4'',
''\U000026d4'') }} <b>Трекинг устройств</b>'
message: '{{ trigger.json.monitor.name }} <b>{{ iif(status_from == ''online'',
''в'', ''не в'', ''не в'') }}</b> сети'
- choose:
- conditions: '{{ ''tsymbal'' in trigger.json.monitor.name | lower and is_state(''binary_sensor.internet_availability_ping'',
''on'') }}'
sequence:
- action: notify.huawei_lte
data:
message: '{{ iif(status_from == ''online'', ''\U00002705'', ''\U000026d4'',
''\U000026d4'') }} Link from Enzokot is {{ iif(status_from == ''online'',
''up'', ''down'', ''down'') }}'
target: secret sms_phone_to4ko
data:
url: http://192.168.8.1/
- alias: gw2 alarm turn on off notification
id: gw2 alarm turn on off notification
initial_state: true
triggers:
- trigger: state
entity_id: alarm_control_panel.signalka_shliuza_alarm
not_from:
- unknown
- unavailable
- ''
to:
- armed_away
- disarmed
actions:
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
message: '{{ iif(is_state(''alarm_control_panel.signalka_shliuza_alarm'', ''disarmed''),
''🔇 Сигнализация *выключена*'', ''🔉 Сигнализация *включена*'') }}'
- alias: repairs issue registry
id: repairs issue registry
mode: queued
triggers:
- trigger: state
entity_id: sensor.repairs_state
not_from:
- unknown
- unavailable
- trigger: homeassistant
id: homeassistant_start
event: start
conditions:
- '{{ trigger.id == ''homeassistant_start'' and states(''sensor.repairs_state'')
| int(0) > 0 or trigger.id = ''homeassistant_start'' and trigger.from_state.state
| int(0) < trigger.to_state.state | int(0) }}'
actions:
- if:
- '{{ trigger.id == ''homeassistant_start'' }}'
then:
- delay: 2
- condition: '{{ trigger.id == ''homeassistant_start'' and states(''sensor.repairs_state'')
| int(0) > 0 or trigger.id = ''homeassistant_start'' and trigger.from_state.state
| int(0) < trigger.to_state.state | int(0) }}'
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
parse_mode: html
title: '{{ ''\U0001F41B'' }} <b>Устранение проблем</b>'
message: "{%- set issues = state_attr('sensor.repairs_state', 'issues') -%}\
\ {%- set datanames = namespace(issue=[]) -%} {% for issue in issues %}\n\
\ {% set datanames.issue = datanames.issue + ['Домен: <b>' + issue.domain\
\ + ', </b>описание: <b>' + issue.issue_id + '</b>'] -%}\n{% endfor %} Обнаружены\
\ проблемы ({{- states('sensor.repairs_state') -}}шт):{{'\\n'-}} {{ datanames.issue\
\ | join(', \\n') }}"
- alias: login ssh from servers
id: login ssh from servers
mode: queued
triggers:
- trigger: state
entity_id: sensor.login_ssh_kotletochka_dell_srv
not_from:
- unknown
- unavailable
not_to:
- unknown
- unavailable
actions:
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
parse_mode: html
title: '{{ ''\U00002328'' }} <b>Вход по SSH</b>'
message: '{{- state_attr(''sensor.login_ssh_kotletochka_dell_srv'', ''friendly_name'')
-}}: <b>{{- as_timestamp(trigger.to_state.state) | timestamp_custom(''%d.%m.%Y
%H:%M:%S'') -}}</b> Пользователь: <b>{{- trigger.to_state.attributes.user
-}}</b>, адрес: <b>{{- trigger.to_state.attributes.address -}}</b>, tty: <b>{{-
trigger.to_state.attributes.tty -}}</b>'
- alias: xiaomi mi scale new weight
id: xiaomi mi scale new weight
mode: queued
triggers:
- trigger: state
entity_id: sensor.esp_xiaomi_mi_scale_weight
not_from:
- unknown
- unavailable
not_to:
- unknown
- unavailable
actions:
- variables:
first_name_father: secret first_name_father
first_name_mother: secret first_name_mother
first_name_daughter: secret first_name_daughter
- action: telegram_bot.send_message
data:
target: secret telegram_all_chat_id
disable_notification: true
title: '{{ ''⚖'' }} *Взвешивание*'
message: '*{%- if trigger.to_state.state | float(0.0) >= 90 %} {{- first_name_father
-}} {% elif trigger.to_state.state | float(0.0) >= 40 %} {{- first_name_mother
-}} {% else %} {{- first_name_daughter -}} {% endif -%}* весит `{{- trigger.to_state.state
-}}` {{ trigger.to_state.attributes.unit_of_measurement -}}'
- alias: host kernel ext4 warning
id: host kernel ext4 warning
max_exceeded: silent
triggers:
- trigger: state
entity_id: binary_sensor.kernel_ext4_warning
from: 'off'
to: 'on'
- trigger: time
at: '10:30:00'
conditions:
- condition: state
entity_id: binary_sensor.kernel_ext4_warning
state: 'on'
actions:
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
disable_notification: true
title: ⚠️ *Host Kernel log*
message: '{{ state_attr(''binary_sensor.kernel_ext4_warning'', ''friendly_name'')
}}'
- alias: notification wet entrance floor
id: notification wet entrance floor
initial_state: true
max_exceeded: silent
triggers:
- trigger: state
entity_id: binary_sensor.0x00158d000913dbf1_contact
from: 'off'
to: 'on'
for:
seconds: 5
conditions:
- condition: time
after: 06:00:00
before: '16:00:00'
weekday:
- mon
- '{{ now() - state_attr(this.entity_id, ''last_triggered'') > timedelta(hours =
1) }}'
actions:
- parallel:
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
title: '{{ ''🧹'' }} *Влажная уборка*'
message: Обнаружена уборка в общем коридоре
- action: notify.huawei_lte
data:
message: Обнаружена уборка в общем коридоре
target: secret sms_phone_users56_59
data:
url: http://192.168.8.1/
- alias: notification water leak near nvr
id: notification water leak near nvr
initial_state: true
mode: queued
triggers:
- trigger: state
entity_id:
- binary_sensor.0x00158d0009ea0949_water_leak
- binary_sensor.0x00158d0009ea1c0e_water_leak
to: 'on'
for:
seconds: 10
actions:
- parallel:
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
title: '{{ ''💧'' }} *Датчики протечки*'
message: 'Обнаружена протечка возле NVR/Камер: *{{ state_attr(trigger.entity_id,
''friendly_name'') }}*'
- action: notify.huawei_lte
data:
message: 'Обнаружена протечка возле NVR/Камер: {{ state_attr(trigger.entity_id,
''friendly_name'') }}'
target: secret sms_phone_users59_60
data:
url: http://192.168.8.1/
- sequence:
- variables:
sm_g973f_rezhim_ne_bespokoit: '{{ states(''sensor.sm_g973f_do_not_disturb_sensor'')
}}'
- choose:
- conditions: '{{ sm_g973f_rezhim_ne_bespokoit = ''off'' }}'
sequence:
- action: notify.mobile_app_sm_g973f
data:
message: command_dnd
data:
command: 'off'
- wait_for_trigger:
- trigger: state
entity_id: sensor.sm_g973f_do_not_disturb_sensor
timeout:
seconds: 5
- variables:
sm_g973f_rezhim_zvonka: '{{ states(''sensor.sm_g973f_ringer_mode'') }}'
- choose:
- conditions: '{{ sm_g973f_rezhim_zvonka = ''normal'' }}'
sequence:
- action: notify.notify
data:
message: command_ringer_mode
data:
command: normal
- action: notify.notify
data:
title: '{{ ''💧'' }} Датчики протечки'
message: 'Обнаружена протечка возле NVR: {{ state_attr(trigger.entity_id,
''friendly_name'') }}'
data:
ttl: 0
priority: high
channel: alarm_stream
- choose:
- conditions: '{{ sm_g973f_rezhim_zvonka = ''normal'' }}'
sequence:
- action: notify.mobile_app_sm_g973f
data:
message: command_ringer_mode
data:
command: '{{ sm_g973f_rezhim_zvonka }}'
- choose:
- conditions: '{{ sm_g973f_rezhim_ne_bespokoit = ''off'' }}'
sequence:
- action: notify.mobile_app_sm_g973f
data:
message: command_dnd
data:
command: '{{ sm_g973f_rezhim_ne_bespokoit }}'
- alias: notification open door nvr box
id: notification open door nvr box
initial_state: true
mode: queued
triggers:
- trigger: state
entity_id: binary_sensor.0x00158d00093e4111_contact
from: 'off'
to: 'on'
for:
seconds: 5
actions:
- parallel:
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
title: '{{ ''🔑'' }} *Датчик открытия/закрытия*'
message: Обнаружено *открытие* дверцы шкафа с NVR
- action: notify.huawei_lte
data:
message: Обнаружено открытие дверцы шкафа с NVR
target: secret sms_phone_enzokot
data:
url: http://192.168.8.1/
- sequence:
- variables:
sm_g973f_rezhim_ne_bespokoit: '{{ states(''sensor.sm_g973f_do_not_disturb_sensor'')
}}'
- choose:
- conditions: '{{ sm_g973f_rezhim_ne_bespokoit = ''off'' }}'
sequence:
- action: notify.mobile_app_sm_g973f
data:
message: command_dnd
data:
command: 'off'
- wait_for_trigger:
- trigger: state
entity_id: sensor.sm_g973f_do_not_disturb_sensor
timeout:
seconds: 5
- variables:
sm_g973f_rezhim_zvonka: '{{ states(''sensor.sm_g973f_ringer_mode'') }}'
- choose:
- conditions: '{{ sm_g973f_rezhim_zvonka = ''normal'' }}'
sequence:
- action: notify.notify
data:
message: command_ringer_mode
data:
command: normal
- action: notify.notify
data:
title: '{{ ''🔑'' }} Датчик открытия/закрытия'
message: Обнаружено открытие дверцы шкафа с NVR
data:
ttl: 0
priority: high
channel: alarm_stream
- choose:
- conditions: '{{ sm_g973f_rezhim_zvonka = ''normal'' }}'
sequence:
- action: notify.mobile_app_sm_g973f
data:
message: command_ringer_mode
data:
command: '{{ sm_g973f_rezhim_zvonka }}'
- choose:
- conditions: '{{ sm_g973f_rezhim_ne_bespokoit = ''off'' }}'
sequence:
- action: notify.mobile_app_sm_g973f
data:
message: command_dnd
data:
command: '{{ sm_g973f_rezhim_ne_bespokoit }}'
- alias: notification overheating 1pm fan nvr box
id: notification overheating 1pm fan nvr box
initial_state: true
mode: queued
triggers:
- trigger: state
id: overheating
entity_id: binary_sensor.shelly_1pm_fan_nvr_box_overheating
from: 'off'
to: 'on'
for:
seconds: 5
- trigger: numeric_state
entity_id: sensor.shelly_1pm_fan_nvr_box_temperature
above: 35
for:
seconds: 5
actions:
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
title: '{{ ''🌡'' }} *Реле кулера шкафа NVR*'
message: "{{ \n iif(trigger.id == 'overheating', \n 'Обнаружен *перегрев*\
\ реле кулера шкафа NVR (*T=' + states('sensor.shelly_1pm_fan_nvr_box_device_temperature',\
\ true, true) + '*)', \n 'Обнаружена высокая (*' + trigger.to_state.state\
\ + '*) температура в шкафу NVR')\n}}"
- alias: notification nvr in unavailable status
id: notification nvr in unavailable status
initial_state: true
mode: queued
triggers:
- trigger: state
entity_id: button.kotletochka_nvr_hw_restart
to: null
for:
seconds: 10
conditions:
- condition: state
entity_id: input_boolean.instances_stoping
state: 'off'
- condition: numeric_state
entity_id: sensor.shelly_plug_s_nvr_power
below: 15
actions:
- parallel:
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
title: '{{ ''📼'' }} *Состояние NVR*'
message: Обнаружено *отключение* NVR
- action: notify.huawei_lte
data:
message: Обнаружено отключение NVR
target: secret sms_phone_enzokot
data:
url: http://192.168.8.1/
- sequence:
- variables:
sm_g973f_rezhim_ne_bespokoit: '{{ states(''sensor.sm_g973f_do_not_disturb_sensor'')
}}'
- choose:
- conditions: '{{ sm_g973f_rezhim_ne_bespokoit = ''off'' }}'
sequence:
- action: notify.mobile_app_sm_g973f
data:
message: command_dnd
data:
command: 'off'
- wait_for_trigger:
- trigger: state
entity_id: sensor.sm_g973f_do_not_disturb_sensor
timeout:
seconds: 5
- variables:
sm_g973f_rezhim_zvonka: '{{ states(''sensor.sm_g973f_ringer_mode'') }}'
- choose:
- conditions: '{{ sm_g973f_rezhim_zvonka = ''normal'' }}'
sequence:
- action: notify.notify
data:
message: command_ringer_mode
data:
command: normal
- action: notify.notify
data:
title: '{{ ''📼'' }} Состояние NVR'
message: Обнаружено отключение NVR
data:
ttl: 0
priority: high
channel: alarm_stream
- choose:
- conditions: '{{ sm_g973f_rezhim_zvonka = ''normal'' }}'
sequence:
- action: notify.mobile_app_sm_g973f
data:
message: command_ringer_mode
data:
command: '{{ sm_g973f_rezhim_zvonka }}'
- choose:
- conditions: '{{ sm_g973f_rezhim_ne_bespokoit = ''off'' }}'
sequence:
- action: notify.mobile_app_sm_g973f
data:
message: command_dnd
data:
command: '{{ sm_g973f_rezhim_ne_bespokoit }}'
- alias: notification full battery level sm g973f
id: notification full battery level sm g973f
initial_state: true
max_exceeded: silent
triggers:
- trigger: numeric_state
entity_id: sensor.sm_g973f_battery_level
above: 99
conditions:
- condition: state
entity_id: binary_sensor.sm_g973f_is_charging
state: 'on'
actions:
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
title: '{{ ''🔋'' }} *Состояние телефона*'
message: Телефон полностью заряжен
- alias: notification tapo c100 cr or hw disconnected
id: notification tapo c100 cr or hw disconnected
initial_state: true
mode: parallel
triggers:
- trigger: webhook
id: cr
webhook_id: secret webhook_id_cctv_cr_off
local_only: true
allowed_methods:
- PUT
- trigger: webhook
webhook_id: secret webhook_id_cctv_hw_off
local_only: true
allowed_methods:
- PUT
actions:
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
title: ⚠️ *Трекинг устройств*
message: Камера в *{{- iif(trigger.id == 'cr', 'детской', 'коридоре') -}}* отключена
- alias: notification forward message from download station to telegram
id: notification forward message from download station to telegram
initial_state: true
mode: parallel
triggers:
- trigger: event
event_type: imap_content
event_data:
initial: true
actions:
- parallel:
- action: imap.seen
data:
entry: '{{ trigger.event.data[''entry_id''] }}'
uid: '{{ trigger.event.data[''uid''] }}'
- sequence:
- action: imap.fetch
data:
entry: '{{ trigger.event.data[''entry_id''] }}'
uid: '{{ trigger.event.data[''uid''] }}'
response_variable: message_text
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
title: '{{ ''📂'' }} *Download station*'
message: '{{ message_text[''text''] }}'
disable_web_page_preview: true
- alias: turn off nvr from water leak
id: turn off nvr from water leak
initial_state: true
triggers:
- trigger: state
entity_id:
- binary_sensor.0x00158d0009ea0949_water_leak
- binary_sensor.0x00158d0009ea1c0e_water_leak
to: 'on'
for:
seconds: 7
actions:
- parallel:
- action: switch.turn_off
target:
entity_id: switch.shelly_plug_s_nvr
- if:
- '{{ trigger.entity_id == ''binary_sensor.0x00158d0009ea0949_water_leak'' }}'
- condition: state
entity_id: switch.shelly_1pm_fan_nvr_box
state: 'on'
then:
- action: switch.turn_off
target:
entity_id: switch.shelly_1pm_fan_nvr_box
- alias: turn on fan nvr box every hour or above temperature
id: turn on fan nvr box every hour or above temperature
initial_state: true
mode: queued
triggers:
- trigger: time_pattern
hours: /1
minutes: 0
id: time_trigger
- trigger: numeric_state
entity_id:
- sensor.shelly_1pm_fan_nvr_box_temperature
above: 34.5
conditions:
- condition: state
entity_id:
- switch.shelly_1pm_fan_nvr_box
- binary_sensor.0x00158d00093e4111_contact
state: 'off'
- '{{ is_state(''binary_sensor.0x00158d0009ea1c0e_water_leak'', ''off'') or not
has_value(''binary_sensor.0x00158d0009ea1c0e_water_leak'') }}'
- '{{ is_state(''binary_sensor.0x00158d0009ea0949_water_leak'', ''off'') or not
has_value(''binary_sensor.0x00158d0009ea0949_water_leak'') }}'
- "{% set time_now = now() %} {{ \n (today_at('9:00') <= time_now < today_at('21:00:00')\
\ or states('sensor.shelly_1pm_fan_nvr_box_temperature') | float(0.0) > 34.5)\n\
\ or trigger.id != 'time_trigger' and (time_now >= today_at('21:00:00') or\
\ time_now < today_at('9:00:00')) \n}}\n"
actions:
- action: switch.turn_on
target:
entity_id: switch.shelly_1pm_fan_nvr_box
- alias: turn off fan nvr box when door is open
id: turn off fan nvr box when door is open
initial_state: true
mode: queued
triggers:
- trigger: state
entity_id: binary_sensor.0x00158d00093e4111_contact
from: 'off'
to: 'on'
for:
seconds: 3
conditions:
- condition: state
entity_id: switch.shelly_1pm_fan_nvr_box
state: 'on'
actions:
- action: switch.turn_off
target:
entity_id: switch.shelly_1pm_fan_nvr_box
- alias: night on off water heater
id: night off water heater
initial_state: true
triggers:
- trigger: time
at: '22:30:00'
- trigger: time
at: 06:15:00
conditions:
- condition: state
entity_id: input_boolean.water_heater_season
state: 'on'
actions:
- action: "{% if trigger.now.hour == 22 %}\n switch.turn_off\n{% else %}\n \
\ switch.turn_on\n{% endif %}\n"
target:
entity_id: switch.0x842e14fffe13a854
- alias: night mode on heater
id: night mode on heater
initial_state: true
triggers:
- trigger: time
at: '22:00:00'
conditions:
- condition: state
entity_id: input_boolean.heater_night_mode
state: 'on'
actions:
- action: switch.turn_on
target:
entity_id: switch.0x842e14fffe5047f5
- action: timer.start
target:
entity_id: timer.turn_off_heater_night_mode
- alias: night mode off heater
id: night mode off heater
initial_state: true
triggers:
- trigger: time
at: 07:00:00
conditions:
- condition: state
entity_id: input_boolean.heater_night_mode
state: 'on'
actions:
- action: timer.cancel
target:
entity_id: timer.turn_on_heater_night_mode
- action: timer.cancel
target:
entity_id: timer.turn_off_heater_night_mode
- action: switch.turn_off
target:
entity_id: switch.0x842e14fffe5047f5
- alias: night mode timer heater off
id: night mode timer heater off
initial_state: true
triggers:
- trigger: event
event_type: timer.finished
event_data:
entity_id: timer.turn_off_heater_night_mode
conditions:
- condition: state
entity_id: input_boolean.heater_night_mode
state: 'on'
- condition: time
after: '22:00:00'
before: 07:00:00
actions:
- action: switch.turn_off
target:
entity_id: switch.0x842e14fffe5047f5
- action: timer.start
target:
entity_id: timer.turn_on_heater_night_mode
- alias: night mode timer heater on
id: night mode timer heater on
initial_state: true
triggers:
- trigger: event
event_type: timer.finished
event_data:
entity_id: timer.turn_on_heater_night_mode
conditions:
- condition: state
entity_id: input_boolean.heater_night_mode
state: 'on'
- condition: time
after: '22:00:00'
before: 07:00:00
actions:
- action: switch.turn_on
target:
entity_id: switch.0x842e14fffe5047f5
- action: timer.start
target:
entity_id: timer.turn_off_heater_night_mode
- alias: on off night mode heater at action time
id: on off night mode heater at action time
initial_state: true
triggers:
- trigger: state
entity_id: input_boolean.heater_night_mode
conditions:
- condition: time
after: '22:00:00'
before: 07:00:00
actions:
- choose:
- conditions:
- condition: state
entity_id: input_boolean.heater_night_mode
state: 'off'
sequence:
- action: automation.trigger
target:
entity_id: automation.night_mode_off_heater
- conditions:
- condition: state
entity_id: input_boolean.heater_night_mode
state: 'on'
sequence:
- action: automation.trigger
target:
entity_id: automation.night_mode_on_heater
- alias: safety power socets off
id: safety power socets off
initial_state: true
triggers:
- trigger: numeric_state
entity_id:
- sensor.0x842e14fffe5047f5_power
- sensor.0x842e14fffe13a854_power
- sensor.0x842e14fffe36661f_power
- sensor.0x588e81fffeff5c4f_power
- sensor.shelly_plug_s_1_power
- sensor.0x60a423fffef8d41a_power
- sensor.shelly_plug_s_2_power
- sensor.shelly_plug_s_nvr_power
- sensor.shelly_1pm_fan_nvr_box_power
- sensor.shelly_plug_s_keenetic_hw_power
- sensor.shelly_plug_s_htr_shelly_heated_tr_power
above: 3000
actions:
- action: switch.turn_off
target:
entity_id: '{{ trigger.entity_id | replace(''sensor'', ''switch'') | replace(''_power'',
'''') }}'
- alias: restart night mode heater after reboot
id: restart night mode heater after reboot
initial_state: true
triggers:
- trigger: homeassistant
event: start
conditions:
- condition: state
entity_id: input_boolean.heater_night_mode
state: 'on'
- condition: time
after: '22:00:00'
before: 07:00:00
actions:
- choose:
- conditions:
- condition: state
entity_id: switch.0x842e14fffe5047f5
state: 'off'
sequence:
- action: automation.trigger
target:
entity_id: automation.night_mode_timer_heater_on
- conditions:
- condition: state
entity_id: switch.0x842e14fffe5047f5
state: 'on'
sequence:
- action: automation.trigger
target:
entity_id: automation.night_mode_timer_heater_off
- alias: restart z2m or instance for energy
id: restart z2m or instance for energy
initial_state: true
mode: parallel
max: 100
trigger_variables:
not_has_state: '{{ [''unknown'', ''unavailable'', ''none''] }}'
entity_dict: "{{\n {\"sensor.0x842e14fffe5047f5_energy\": \"input_number.total_heater_socket_saved\"\
,\n \"sensor.0x842e14fffe13a854_energy\": \"input_number.total_water_heater_socket_saved\"\
,\n \"sensor.0x842e14fffe36661f_energy\": \"input_number.total_kitchen_socket1_saved\"\
,\n \"sensor.0x588e81fffeff5c4f_energy\": \"input_number.total_bedroom_socket1_saved\"\
,\n \"sensor.0x60a423fffef8d41a_energy\": \"input_number.total_bedroom_socket2_saved\"\
,\n \"sensor.0x54ef441000096cbc_energy\": \"input_number.total_yeelight_ceiling_relay_saved\"\
,\n \"sensor.shelly_em_energy\": \"input_number.total_shelly_em_saved\"\
,\n \"sensor.shelly_plug_s_1_energy\": \"input_number.total_server_ac_saved\"\
,\n \"sensor.shelly_plug_s_2_energy\": \"input_number.total_shelly_plug_s_2_saved\"\
,\n \"sensor.0x54ef441000691265_energy\": \"input_number.total_kitchen_light_switch_working_area_saved\"\
,\n \"sensor.shelly_1pm_fan_nvr_box_energy\": \"input_number.total_shelly_1pm_fan_nvr_box_saved\"\
,\n \"sensor.shelly_plug_s_keenetic_hw_energy\": \"input_number.total_shelly_plug_s_keenetic_hw_saved\"\
,\n \"sensor.shelly_plug_s_nvr_energy\": \"input_number.total_shelly_plug_s_nvr_saved\"\
,\n \"sensor.shelly_plug_s_htr_shelly_heated_tr_energy\": \"input_number.total_shelly_plug_s_htr_saved\"\
}\n}}"
triggers:
- trigger: state
entity_id:
- sensor.0x842e14fffe5047f5_energy
- sensor.0x842e14fffe13a854_energy
- sensor.0x842e14fffe36661f_energy
- sensor.0x588e81fffeff5c4f_energy
- sensor.0x60a423fffef8d41a_energy
- sensor.0x54ef441000096cbc_energy
- sensor.shelly_em_energy
- sensor.shelly_plug_s_1_energy
- sensor.shelly_plug_s_2_energy
- sensor.0x54ef441000691265_energy
- sensor.shelly_plug_s_nvr_energy
- sensor.shelly_1pm_fan_nvr_box_energy
- sensor.shelly_plug_s_keenetic_hw_energy
- sensor.shelly_plug_s_htr_shelly_heated_tr_energy
conditions:
- condition: template
value_template: "{{ trigger.to_state.state not in not_has_state and\n trigger.from_state.state\
\ not in not_has_state and\n trigger.to_state.state != trigger.from_state.state\n\
}}"
actions:
- variables:
entity_id: '{{ entity_dict[trigger.entity_id] }}'
- action: input_number.set_value
target:
entity_id: '{{ entity_id }}'
data:
value: '{{ trigger.to_state.state }}'
- alias: on move turn on garland childrens room
id: on move turn on garland childrens room
triggers:
- trigger: state
entity_id: binary_sensor.0x158d00054b8d72_motion
from: 'off'
to: 'on'
conditions:
- condition: or
conditions:
- condition: time
after: 08:30:00
before: '12:30:00'
- condition: time
after: '16:30:00'
before: '21:00:00'
actions:
- choose:
- conditions:
- condition: state
entity_id: switch.0x842e14fffe5047f5
state: 'off'
sequence:
- action: switch.turn_on
target:
entity_id: switch.0x842e14fffe5047f5
- action: timer.start
target:
entity_id: timer.turn_off_garland_childrens_room
data:
duration: 300
- alias: on timer turn off garland childrens room
id: on timer turn off garland childrens room
initial_state: true
triggers:
- trigger: event
event_type: timer.finished
event_data:
entity_id: timer.turn_off_garland_childrens_room
conditions:
- condition: state
entity_id: switch.0x842e14fffe5047f5
state: 'on'
actions:
- action: switch.turn_off
target:
entity_id: switch.0x842e14fffe5047f5
- alias: DB purge everyday
id: DB purge everyday
initial_state: true
triggers:
- trigger: time
at: 01:00:00
actions:
- action: recorder.purge
data:
keep_days: 30
repack: true
- alias: speedtest_integration_restart
id: speedtest_integration_restart
trigger_variables:
not_has_state: '{{ [''unknown'', ''unavailable'', ''none''] }}'
triggers:
- trigger: time_pattern
minutes: /45
conditions:
- condition: state
entity_id: input_boolean.instances_stoping
state: 'off'
- condition: state
entity_id: binary_sensor.local_network_availability
state: 'on'
- condition: template
value_template: "{{ states('sensor.speedtest_ping') in not_has_state and\n states('sensor.speedtest_download')\
\ in not_has_state and\n states('sensor.speedtest_upload') in not_has_state\n\
}}\n"
actions:
- action: homeassistant.reload_config_entry
data:
entry_id: '{{ config_entry_id(''sensor.speedtest_ping'') }}'
- alias: speedtest_integration_restart_on_event
id: speedtest_integration_restart_on_event
mode: single
max_exceeded: silent
trigger_variables:
not_has_state: '{{ [''unknown'', ''unavailable'', ''none''] }}'
triggers:
- trigger: event
event_type: state_changed
event_data:
entity_id: sensor.speedtest_ping
- trigger: event
event_type: state_changed
event_data:
entity_id: sensor.speedtest_download
- trigger: event
event_type: state_changed
event_data:
entity_id: sensor.speedtest_upload
conditions:
- condition: state
entity_id: input_boolean.instances_stoping
state: 'off'
- '{{ as_timestamp(now()) - as_timestamp(state_attr(this.entity_id, ''last_triggered''))
> 60 }}'
- condition: state
entity_id: binary_sensor.local_network_availability
state: 'on'
- condition: template
value_template: "{{ trigger.event.data.new_state.state = trigger.event.data.old_state.state\
\ \n and trigger.event.data.new_state.state in not_has_state\n}}"
actions:
- choose:
- conditions:
- condition: state
entity_id: input_boolean.instances_stoping
state: 'off'
sequence:
- delay:
seconds: 30
- action: homeassistant.reload_config_entry
data:
entry_id: '{{ config_entry_id(''sensor.speedtest_ping'') }}'
- alias: system_event_instances_starting_stoping_set
id: system_event_instances_starting_stoping_set
initial_state: true
triggers:
- trigger: homeassistant
event: start
id: homeassistant_start
- trigger: homeassistant
event: shutdown
actions:
- parallel:
- action: "{% if trigger.id == 'homeassistant_start' -%}\n input_boolean.turn_off\n\
{% else -%}\n input_boolean.turn_on\n{% endif %}\n"
target:
entity_id: input_boolean.instances_stoping
- action: "{% if trigger.id == 'homeassistant_start' -%}\n automation.turn_on\n\
{% else -%}\n automation.turn_off\n{% endif %}\n"
target:
entity_id: automation.notifications_objects_in_unavailable_status
- alias: counter increment link down keenetic
id: counter increment link down keenetic
initial_state: true
mode: single
max_exceeded: silent
trigger_variables:
not_has_state: '{{ [''unknown'', ''unavailable'', ''none'', None, null, '''',
''null''] }}'
triggers:
- trigger: state
entity_id: sensor.check_keenetic_link_down
conditions:
- condition: template
value_template: "{{ \n trigger.to_state.state not in not_has_state and trigger.from_state.state\
\ = '' and\n trigger.to_state.state = trigger.from_state.state\n}}\n"
actions:
- action: counter.increment
target:
entity_id: counter.counter_keenetic_link_down
- alias: system log home assistant warning and error counter
id: system log home assistant warning and error counter
initial_state: true
mode: queued
max: 100
max_exceeded: silent
trigger_variables:
this_name: '{{ this.attributes.friendly_name | string }}'
triggers:
- trigger: event
event_type: system_log_event
event_data:
level: ERROR
- trigger: event
event_type: system_log_event
event_data:
level: WARNING
conditions:
- condition: template
value_template: '{{ not this_name in (trigger.event.data.message | string) }}'
actions:
- action: counter.increment
target:
entity_id: '{{ ''counter.system_log_'' + trigger.event.data.level | lower +
''_counter'' }}'
- alias: system log clear warning and error reset counter
id: system log clear warning and error reset counter
initial_state: true
mode: queued
max_exceeded: silent
triggers:
- trigger: event
event_type: call_service
event_data:
domain: system_log
service: clear
actions:
- action: counter.reset
target:
entity_id:
- counter.system_log_error_counter
- counter.system_log_warning_counter
- alias: restart e3372h 320 modem unavailable
id: restart e3372h 320 modem unavailable
initial_state: true
mode: single
max_exceeded: silent
triggers:
- trigger: state
entity_id: sensor.huawei_e3372h_320_sinr
to: null
- trigger: homeassistant
event: start
conditions:
- condition: state
entity_id: input_boolean.instances_stoping
state: 'off'
- '{{ not has_value(''sensor.huawei_e3372h_320_sinr'') }}'
actions:
- wait_template: '{{ has_value(''sensor.huawei_e3372h_320_sinr'') or is_state(''input_boolean.instances_stoping'',
''on'') }}'
timeout: 00:05:00
- choose:
- conditions: '{{ not wait.completed and is_state(''binary_sensor.local_network_availability'',
''on'') }}'
sequence:
- action: button.press
target:
entity_id: button.e3372h_320_restart
- alias: update input text telegram bot api token
id: update input text telegram bot api token
initial_state: true
mode: queued
max_exceeded: silent
triggers:
- trigger: event
event_type: event_telegram_reloaded
actions:
- action: input_text.set_value
target:
entity_id: input_text.var_telegram_bot_api_token
data:
value: secret telegram_api
- alias: cert_expiry_timestamp_asuscomm_unavailable
id: cert_expiry_timestamp_asuscomm_unavailable
mode: single
max_exceeded: silent
triggers:
- trigger: state
entity_id: sensor.cert_expiry_timestamp_asuscomm
to: null
- trigger: homeassistant
event: start
conditions:
- condition: state
entity_id: input_boolean.instances_stoping
state: 'off'
- '{{ as_timestamp(now()) - as_timestamp(state_attr(this.entity_id, ''last_triggered''))
> 60 }}'
- '{{ not has_value(''sensor.cert_expiry_timestamp_asuscomm'') }}'
actions:
- wait_template: '{{ has_value(''sensor.cert_expiry_timestamp_asuscomm'') or is_state(''input_boolean.instances_stoping'',
''on'') }}'
timeout: 00:01:00
- choose:
- conditions: '{{ not wait.completed and is_state(''binary_sensor.local_network_availability'',
''on'') }}'
sequence:
- action: homeassistant.reload_config_entry
data:
entry_id: '{{ config_entry_id(''sensor.cert_expiry_timestamp_asuscomm'')
}}'
- alias: repairs issue registry sensor update
id: repairs issue registry sensor update
mode: restart
triggers:
- trigger: event
event_type: repairs_issue_registry_updated
event_data:
action: create
- trigger: homeassistant
event: start
actions:
- action: homeassistant.update_entity
data:
entity_id: sensor.repairs_state
- alias: entity_update_every_2_minutes
id: entity_update_every_2_minutes
max_exceeded: silent
triggers:
- trigger: time_pattern
minutes: /2
- trigger: homeassistant
event: start
actions:
- action: homeassistant.update_entity
data:
entity_id:
- binary_sensor.internet_availability_nic_ping
- binary_sensor.internet_availability_yandex_ping
- alias: vacuum later start cleaning action
id: vacuum later start cleaning action"
initial_state: true
triggers:
- trigger: event
event_type: timer.finished
event_data:
entity_id: timer.vacumm_ten_minutes
conditions:
- condition: state
entity_id: vacuum.xiaomi_vacuum_cleaner
state: docked
actions:
- parallel:
- action: vacuum.start
target:
entity_id: vacuum.xiaomi_vacuum_cleaner
- action: telegram_bot.send_message
data:
target: '{{ states(''input_text.var_chat_id_vacuum_later_start'') }}'
title: '{{ ''\U0001f680'' }} *Степа*'
message: Начал полную уборку
- action: input_text.set_value
target:
entity_id: input_text.var_chat_id_vacuum_later_start
data:
value: secret telegram_chita_chat_id
- alias: vacuum later start cleaning not docked
id: vacuum later start cleaning not docked
initial_state: true
triggers:
- trigger: event
event_type: timer.finished
event_data:
entity_id: timer.vacumm_ten_minutes
conditions:
- condition: not
conditions:
- condition: state
entity_id: vacuum.xiaomi_vacuum_cleaner
state: docked
actions:
- parallel:
- action: telegram_bot.send_message
data:
target: '{{ states(''input_text.var_chat_id_vacuum_later_start'') }}'
title: ⚠️ *Степа*
message: Не смог начать полную уборку, потому что нахожусь не на базе
- action: input_text.set_value
target:
entity_id: input_text.var_chat_id_vacuum_later_start
data:
value: secret telegram_chita_chat_id
- alias: vacuum start stop camera map when docked cleaning
id: vacuum start stop camera map when docked cleaning
initial_state: true
mode: queued
triggers:
- trigger: state
entity_id: vacuum.xiaomi_vacuum_cleaner
- trigger: homeassistant
event: start
- trigger: event
event_type: event_xiaomi_cloud_map_extractor_reloaded
conditions:
- condition: template
value_template: "{{ \n trigger.platform = 'state'\n or trigger.to_state.state\
\ = trigger.from_state.state\n}}\n"
actions:
- if:
- '{{ states(''vacuum.xiaomi_vacuum_cleaner'') in [''docked'', ''unknown'', ''unavailable'',
''none'', None, null, ''''] }}'
then:
- delay:
seconds: 45
- action: homeassistant.update_entity
data:
entity_id: camera.roborock_vacuum_map
- action: camera.turn_off
target:
entity_id: camera.roborock_vacuum_map
else:
- action: camera.turn_on
target:
entity_id: camera.roborock_vacuum_map
- alias: zigbee_device_joined_notification
id: zigbee_device_joined_notification
mode: queued
triggers:
- trigger: mqtt
topic: zigbee2mqtt/bridge/event
conditions:
condition: template
value_template: '{{trigger.payload_json.type == "device_interview" and trigger.payload_json.data.status
== "successful" and trigger.payload_json.data.supported}}'
actions:
- action: telegram_bot.send_message
data:
title: '{{ ''\U0001f41d'' }} <b>Добавление устройств Zigbee</b>'
message: 'Добавлено новое устройство: {{- ''\n'' -}} Имя: {{trigger.payload_json.data.friendly_name
| e}}, {{- ''\n'' -}} Поставщик: {{trigger.payload_json.data.definition.vendor
| e}}, {{- ''\n'' -}} Модель: {{trigger.payload_json.data.definition.model
| e}} {{- ''\n'' -}} Описание: {{trigger.payload_json.data.definition.description
| e}}'
disable_notification: true
parse_mode: html
target: secret telegram_enzokot_chat_id
- alias: zigbee2mqtt_devices_last_seen
id: zigbee2mqtt_devices_last_seen
triggers:
- trigger: time_pattern
hours: /1
conditions:
- condition: template
value_template: '{%- set time_limit = as_timestamp(now(), 0) - 3*60*60 -%} {%-
set list_sensors = expand(''group.dynamic_group_sensor_last_seen'') | selectattr(''state'',
''ne'', None) | selectattr(''state'', ''ne'', ''None'') | selectattr(''state'',
''ne'', ''unknown'') -%} {%- set datanames = namespace(last_seen=[]) -%} {%-
for state in list_sensors -%} {%- if state.entity_id.endswith(''_last_seen'')
-%} {%- set time_ms = 1000 -%} {%- set state_ms = state.state -%} {%- else
-%} {%- set time_ms = 1 -%} {%- set state_ms = as_timestamp(state.state , 0)
-%} {%- endif -%} {%- if (state_ms | int(time_limit * time_ms, 0)) < (time_limit
* time_ms) or not has_value(state.entity_id) -%} {%- set datanames.last_seen
= datanames.last_seen + [state] -%} {%- endif -%} {%- endfor -%} {{ datanames.last_seen
| length > 0 }}
'
actions:
- action: telegram_bot.send_message
data:
title: '{%- set time_limit = as_timestamp(now(), 0) - 3*60*60 -%} {%- set list_sensors
= expand(''group.dynamic_group_sensor_last_seen'') | selectattr(''state'',
''ne'', None) | selectattr(''state'', ''ne'', ''None'') | selectattr(''state'',
''ne'', ''unknown'') -%} {%- set datanames = namespace(last_seen=[]) -%} {%-
for state in list_sensors -%} {%- if state.entity_id.endswith(''_last_seen'')
-%} {%- set time_ms = 1000 -%} {%- set state_ms = state.state -%} {%- else
-%} {%- set time_ms = 1 -%} {%- set state_ms = as_timestamp(state.state,
0) -%} {%- endif -%} {%- if (state_ms | int(time_limit * time_ms)) < (time_limit
* time_ms) or not has_value(state.entity_id) -%} {%- set datanames.last_seen
= datanames.last_seen + [state] -%} {%- endif -%} {%- endfor -%}
{%- set missing_count = datanames.last_seen | length -%} {%- if missing_count
> 0 %} ⚠️ {%- else %} {{ ''\U00002705'' }} {%- endif %} *Контроль устройств
Zigbee*'
disable_notification: true
target: secret telegram_enzokot_chat_id
message: "{%- set time_limit = as_timestamp(now(), 0) - 3*60*60 -%} {%- set\
\ list_sensors = expand('group.dynamic_group_sensor_last_seen') | selectattr('state',\
\ 'ne', None) | selectattr('state', 'ne', 'None') | selectattr('state', 'ne',\
\ 'unknown') -%} {%- set datanames = namespace(device_name=[]) -%} {%- for\
\ state in list_sensors -%} {%- if state.entity_id.endswith('_last_seen')\
\ -%} {%- set time_ms = 1000 -%} {%- set state_ms = state.state -%} {%- else\
\ -%} {%- set time_ms = 1 -%} {%- set state_ms = as_timestamp(state.state,\
\ 0) -%} {%- endif -%} {%- if (state_ms | int(time_limit * time_ms)) < (time_limit\
\ * time_ms) or not has_value(state.entity_id) -%} {% if device_attr(state.entity_id,\
\ 'name_by_user') = none %}\n {%- set datanames.device_name = datanames.device_name\
\ + [device_attr(state.entity_id, 'name_by_user')] -%}\n{% else %}\n {%-\
\ set datanames.device_name = datanames.device_name + [device_attr(state.entity_id,\
\ 'name')] -%}\n{% endif %} {%- endif -%} {%- endfor -%}\n{%- set missing\
\ = datanames.device_name | list -%} {% set missing_count = missing | count\
\ %}\n{% if missing_count > 0 %}Более 3 часов не было данных от: {{ missing\
\ | join(', ') }} {% else %}Все устройства доступны.{% endif %}\n"
- alias: zigbee2mqtt_devices_link_check
id: zigbee2mqtt_devices_link_check
triggers:
- trigger: time_pattern
hours: /1
conditions:
- condition: template
value_template: "{%- set list_sensors = expand('group.dynamic_group_sensor_linkquality')\
\ | selectattr('state', 'ne', None) | selectattr('state', 'ne', 'None') -%}\
\ {%- set datanames = namespace(low_linkquality=[]) -%} {%- for state in list_sensors\
\ -%} {%- if (state.entity_id.endswith('_linkquality') and (state.state | int(15))\
\ < 15) or \n (state.entity_id.endswith('_zigbee') and (state_attr(state.entity_id\
\ ,'linkquality') | int(15)) < 15)-%}\n{%- set datanames.low_linkquality = datanames.low_linkquality\
\ + [state] -%} {%- endif -%} {%- endfor -%} {{ datanames.low_linkquality |\
\ length > 0 }}\n"
actions:
- action: script.zigbee2mqtt_linkuality_check
- alias: auto_local_temperature_calibration_thermostats
id: auto_local_temperature_calibration_thermostats
triggers:
- trigger: time_pattern
minutes: /3
actions:
- parallel:
- action: script.auto_local_temperature_calibration_thermostats
data:
namevalve: Bedroom valve with thermostat
objectvalve: climate.0x60a423fffe968719
objectvalvewindow: switch.0x60a423fffe968719_window_detection
objectsensortemperature: sensor.esp_xiaomi_bed_room_temperature
- action: script.auto_local_temperature_calibration_thermostats
data:
namevalve: Living room valve with thermostat
objectvalve: climate.0x5c0272fffec9db22
objectvalvewindow: switch.0x5c0272fffec9db22_window_detection
objectsensortemperature: sensor.esp_xiaomi_living_room_temperature
- action: script.auto_local_temperature_calibration_thermostats
data:
namevalve: Childrens room valve with thermostat
objectvalve: climate.0x5c0272fffec89454
objectvalvewindow: switch.0x5c0272fffec89454_window_detection
objectsensortemperature: sensor.esp_xiaomi_childrens_room_temperature
- action: script.auto_local_temperature_calibration_thermostats
data:
namevalve: Kitchen valve with thermostat
objectvalve: climate.0x5c0272fffe8de819
objectvalvewindow: switch.0x5c0272fffe8de819_window_detection
objectsensortemperature: sensor.esp_xiaomi_kitchen_temperature
- alias: auto_boost_mode_thermostats_at_sleeping_time
id: auto_boost_mode_thermostats_at_sleeping_time
triggers:
- trigger: time
at:
- 02:30:00
- 05:30:00
actions:
- parallel:
- choose:
- conditions:
- condition: state
entity_id: input_boolean.thermostat_bedroom_night_mode
state: 'on'
sequence:
- action: climate.set_preset_mode
target:
entity_id: climate.0x60a423fffe968719
data:
preset_mode: boost
- choose:
- conditions:
- condition: state
entity_id: input_boolean.thermostat_childrensroom_night_mode
state: 'on'
sequence:
- action: climate.set_preset_mode
target:
entity_id: climate.0x5c0272fffec89454
data:
preset_mode: boost
- alias: switching_thermostat_night_mode
id: switching_thermostat_night_mode
initial_state: 'true'
triggers:
- trigger: state
entity_id:
- input_boolean.thermostat_bedroom_night_mode
- input_boolean.thermostat_childrensroom_night_mode
- automation.auto_boost_mode_thermostats_at_sleeping_time
conditions:
- condition: template
value_template: "{{ \n (is_state('input_boolean.thermostat_bedroom_night_mode',\
\ 'off') and is_state('input_boolean.thermostat_childrensroom_night_mode', 'off')\
\ \n and is_state('automation.auto_boost_mode_thermostats_at_sleeping_time',\
\ 'on'))\n or\n ((is_state('input_boolean.thermostat_bedroom_night_mode',\
\ 'on') or is_state('input_boolean.thermostat_childrensroom_night_mode', 'on'))\
\ \n and is_state('automation.auto_boost_mode_thermostats_at_sleeping_time',\
\ 'off'))\n}}\n"
actions:
- choose:
- conditions:
- condition: template
value_template: '{{ trigger.platform == ''state'' and trigger.to_state.domain
== ''input_boolean'' }}'
sequence:
- action: "{% if is_state('input_boolean.thermostat_bedroom_night_mode', 'off')\
\ and is_state('input_boolean.thermostat_childrensroom_night_mode', 'off')\
\ %}\n automation.turn_off\n{% else %}\n automation.turn_on\n{% endif\
\ %}\n"
target:
entity_id: automation.auto_boost_mode_thermostats_at_sleeping_time
- conditions:
- condition: template
value_template: '{{ trigger.platform == ''state'' and trigger.to_state.domain
== ''automation'' }}'
sequence:
- action: "{% if is_state('automation.auto_boost_mode_thermostats_at_sleeping_time',\
\ 'off') %}\n input_boolean.turn_off\n{% else %}\n input_boolean.turn_on\n\
{% endif %}\n"
target:
entity_id:
- input_boolean.thermostat_bedroom_night_mode
- input_boolean.thermostat_childrensroom_night_mode
- alias: auto_scrolling_thermostats_at_month
id: auto_scrolling_thermostats_at_month
triggers:
- trigger: time
at: '10:00:00'
conditions:
- '{{ now().timestamp() | timestamp_custom(''%d'') | int(0) in [1, 15] }}'
- condition: state
entity_id:
- climate.0x5c0272fffec89454
- climate.0x60a423fffe968719
- climate.0x5c0272fffec9db22
- climate.0x5c0272fffe8de819
state: heat
actions:
- action: climate.set_hvac_mode
target:
entity_id:
- climate.0x5c0272fffec89454
- climate.0x60a423fffe968719
- climate.0x5c0272fffec9db22
- climate.0x5c0272fffe8de819
data:
hvac_mode: 'off'
- delay: 00:02:00
- action: climate.set_hvac_mode
target:
entity_id:
- climate.0x5c0272fffec89454
- climate.0x60a423fffe968719
- climate.0x5c0272fffec9db22
- climate.0x5c0272fffe8de819
data:
hvac_mode: heat
- delay: 00:01:00
- action: telegram_bot.send_message
data:
target: secret telegram_enzokot_chat_id
disable_notification: true
title: '{{ ''🔧'' }} *Обслуживание устройств*'
message: Выполнено обслуживание TRV, необходимо проверить состояние и физическое
положение штоков.
- alias: set_options_for_selected_router_for_permit_join_z2m
id: set_options_for_selected_router_for_permit_join_z2m
mode: queued
triggers:
- trigger: state
entity_id: sensor.router_devices_z2m
not_from: null
- trigger: homeassistant
event: start
- trigger: event
event_type: automation_reloaded
- trigger: event
id: input_select_reload
event_type: call_service
event_data:
domain: input_select
service: reload
actions:
- if:
- condition: trigger
id: input_select_reload
then:
- wait_for_trigger:
- trigger: state
entity_id: input_select.selected_router_for_permit_join_z2m
to: null
timeout:
seconds: 2
- variables:
new_options: "{% set select_options = iif(states('sensor.router_devices_z2m')\
\ | int(0) > 0, state_attr('sensor.router_devices_z2m', 'routers'), ['Не выбрано'])\
\ %} {% set data = namespace(entities=[]) %} {% for i in select_options -%}\n\
\ {% if loop.first %}\n {% set data.entities = data.entities + ['Не\
\ выбрано'] %}\n {% endif %}\n {% set data.entities = data.entities\
\ + [i] %}\n{% endfor %} {{ data.entities | unique | list }}\n"
old_options_with_new: "{% set data = namespace(entities=[]) %} {% for i in new_options\
\ -%}\n {% set data.entities = data.entities + [i] %}\n {% if loop.last\
\ %}\n {% set data.entities = data.entities + [states('input_select.selected_router_for_permit_join_z2m')]\
\ %}\n {% endif %}\n{% endfor %} {{ data.entities | unique | list }}\n"
- action: input_select.set_options
target:
entity_id: input_select.selected_router_for_permit_join_z2m
data:
options: '{{ old_options_with_new }}'
- action: input_select.select_option
target:
entity_id: input_select.selected_router_for_permit_join_z2m
data:
option: '{{ new_options | first }}'
- action: input_select.set_options
target:
entity_id: input_select.selected_router_for_permit_join_z2m
data:
options: '{{ new_options }}'
- action: input_select.select_first
target:
entity_id: input_select.selected_router_for_permit_join_z2m
- alias: start_selected_router_permit_join_z2m
id: start_selected_router_permit_join_z2m
mode: restart
triggers:
- trigger: event
event_type: call_service
event_data:
domain: input_select
service: select_option
service_data:
entity_id: input_select.selected_router_for_permit_join_z2m
conditions:
- '{{ states.person | selectattr(''attributes.user_id'', ''eq'', trigger.event.context.user_id)
| list | count > 0 }}'
actions:
- action: mqtt.publish
data:
topic: zigbee2mqtt/bridge/request/permit_join
payload: '{{ ''{'' ~ iif(trigger.event.data.service_data.option == ''Не выбрано'',
''"time":0'', ''"time":254, "device":"'' ~ trigger.event.data.service_data.option)
~ ''"}'' }}
'
- alias: set_option_for_selected_router_from_info_topic_z2m
id: set_option_for_selected_router_from_info_topic_z2m
mode: restart
triggers:
- trigger: state
entity_id: switch.permit_join_switch_z2m
id: switch_permit_join
to: 'off'
- trigger: state
entity_id: sensor.zigbee2mqtt_add_on_permit_join_current_device_z2m
id: sensor_current_device
actions:
- variables:
permit_join_current_device: '{{ states(''sensor.zigbee2mqtt_add_on_permit_join_current_device_z2m'')
if is_state(''switch.permit_join_switch_z2m'', ''on'') and has_value(''sensor.zigbee2mqtt_add_on_permit_join_current_device_z2m'')
else ''Не выбрано'' }}'
- parallel:
- if:
- condition: trigger
id: switch_permit_join
- '{{ not is_state(''input_select.select_option'', ''Не выбрано'') }}'
then:
- action: input_select.select_option
target:
entity_id: input_select.selected_router_for_permit_join_z2m
data:
option: Не выбрано
- if:
- condition: trigger
id: sensor_current_device
- '{{ not is_state(''input_select.selected_router_for_permit_join_z2m'', permit_join_current_device)
}}'
then:
- action: input_select.select_option
target:
entity_id: input_select.selected_router_for_permit_join_z2m
data:
option: '{{ permit_join_current_device }}'
- alias: start_timer_permit_join_timeout_z2m
id: start_timer_permit_join_timeout_z2m
initial_state: true
mode: restart
triggers:
- trigger: state
entity_id: sensor.zigbee2mqtt_add_on_permit_join_end_z2m
- trigger: homeassistant
event: start
- trigger: event
event_type: automation_reloaded
actions:
- variables:
time_remaining: '{{ ((states(''sensor.zigbee2mqtt_add_on_permit_join_end_z2m'')
| int(0)) / 1000 - (as_timestamp(utcnow(), 0) | int(0))) | int(0) }}'
- if:
- '{{ time_remaining > 0 }}'
then:
- action: timer.start
target:
entity_id: timer.permit_join_timeout_z2m
data:
duration: '{{ time_remaining }}'
else:
- action: timer.cancel
target:
entity_id: timer.permit_join_timeout_z2m