AutomationDataset/ManuelLR/ManuelLR_automations.yaml

1226 lines
37 KiB
YAML

- alias: AUT-Notify home connect entity finish(Testing)
id: AUT-Notify_Home_Connect_Entity_Finish_Testing
description: 'Testing automation that logs all Home Connect events except those
that already have specific handling. This helps in discovering and debugging new
events.
'
initial_state: 'on'
triggers:
- platform: event
event_type: home_connect_alt_event
id: input_event
condition:
- condition: template
value_template: "{% set skip_events = [\n 'Dishcare.Dishwasher.Event.RinseAidNearlyEmpty',\n\
\ 'BSH.Common.Event.ProgramFinished',\n 'BSH.Common.Status.OperationState'\n\
] %} {{ trigger.event.data.key not in skip_events }}\n"
actions:
- service: notify.manolo
data:
title: An event was triggered from home connect
message: 'Event: `{{ trigger.event }}` Event.Data: `{{ trigger.event.data }}`
'
- alias: AUT-Notify home connect entity finished
id: AUT-Notify_Home_Connect_Entity_Finished
description: Notifies when the dishwasher program has finished
initial_state: 'on'
triggers:
- domain: home_connect_alt
type: program_finished
trigger: device
device_id: secret momahome_dishwasher_device_id
actions:
- service: script.notify_in_home_or_all
data:
title: Dishwasher finished
message: 'Ey, dishwasher just finished.
'
- alias: AUT-Notify dishwasher rinse aid level
id: AUT-Notify_Dishwasher_Rinse_Aid_Level
description: Monitors and notifies about changes in the dishwasher rinse aid level
initial_state: 'on'
triggers:
- platform: event
event_type: home_connect_alt_event
event_data:
key: Dishcare.Dishwasher.Event.RinseAidNearlyEmpty
actions:
- service: script.notify_in_home_or_all
data:
title: Dishwasher Rinse Aid Status
message: '{% if trigger.event.data.value == ''BSH.Common.EnumType.EventPresentState.Present''
%} Warning: Dishwasher rinse aid is nearly empty. Please refill soon. {% elif
trigger.event.data.value == ''BSH.Common.EnumType.EventPresentState.Off''
%} Rinse aid level is now OK. {% else %} Rinse aid status changed to: {{ trigger.event.data.value
}} {% endif %}
'
- alias: AUT-Update presence of man-005 devices
mode: parallel
max: 1000
triggers:
- platform: event
event_type: state_changed
conditions:
- alias: Filter by device
condition: template
value_template: '{{ trigger.event.data.entity_id is match (''binary_sensor.man_005'')
}}
'
actions:
- variables:
triggered_entity_id: '{{ trigger.event.data.entity_id }}'
- service: device_tracker.see
data:
dev_id: '{{ triggered_entity_id | regex_replace(''binary_sensor.'', '''')}}'
host_name: '{{ device_attr(device_id(triggered_entity_id), ''name'') }}.{{ triggered_entity_id
}}'
location_name: "{% if trigger.event.data.new_state.state == 'on' %}\n home\n\
{% elif trigger.event.data.new_state.state == 'off' %}\n not_home\n{% else\
\ %}\n unknown\n{% endif %}\n"
source_type: bluetooth_le
- alias: AUT-New Release
initial_state: 'on'
triggers:
- platform: state
entity_id: binary_sensor.docker_hub_update_available
from: 'off'
to: 'on'
actions:
service: notify.manolo
data:
title: '*New Home Assistant Release*'
message: '[Home Assistant {{ states(''sensor.docker_hub'') }}](https://github.com/home-assistant/core/releases/tag/{{
states(''sensor.docker_hub'') }}) is now available'
- alias: AUT-Backup Home Assistant
triggers:
- platform: time
at: 05:00:00
- platform: homeassistant
event: shutdown
actions:
- alias: Create backup now
service: backup.create
- alias: AUT-Clean old backups Home Assistant
triggers:
- platform: time
at: 05:10:00
actions:
- service: shell_command.delete_old_ha_backups
- alias: AUT-NightstandButtons
id: automation_nightstand_buttons
initial_state: 'on'
trace:
stored_traces: 5
mode: queued
trigger_variables:
monica_nightstand_button_id: d207bfdca66e300274e57e4d3ff883f6
manolo_nightstand_button_id: 66e6c2331edc3c62560fab9b8285ad85
tmp_yaml_defined_aliases:
tmp_trigger_nightstand_monica_button:
platform: device
domain: zha
device_id: d207bfdca66e300274e57e4d3ff883f6
tmp_trigger_nightstand_manolo_button:
platform: device
domain: zha
device_id: 66e6c2331edc3c62560fab9b8285ad85
tmp_trigger_nightstand_pulsation_and_scene__single_press_01:
type: remote_button_short_press
subtype: button_1
variables: &id002
scene_alias: beforeSleep
scene_data:
state: 'on'
brightness: 3
color_temp: 454
tmp_trigger_nightstand_pulsation_and_scene__double_press_01:
type: remote_button_double_press
subtype: button_1
variables: &id003
scene_alias: readOnBed
scene_data:
state: 'on'
brightness: 180
color_temp: 285
tmp_trigger_nightstand_pulsation_and_scene__long_press_01:
type: remote_button_long_press
subtype: button_1
variables: &id004
scene_alias: maxIllumination
scene_data:
state: 'on'
brightness: 255
color_temp: 250
tmp_trigger_nightstand_pulsation_and_scene__single_press_02:
type: remote_button_short_press
subtype: button_2
variables: &id005
scene_alias: singleOff
scene_data:
state: 'off'
tmp_trigger_nightstand_pulsation_and_scene__double_press_02:
type: remote_button_double_press
subtype: button_2
variables: &id001
scene_alias: allOff
scene_data:
state: 'off'
tmp_trigger_nightstand_pulsation_and_scene__long_press_02:
type: remote_button_long_press
subtype: button_2
variables: *id001
triggers:
- platform: device
domain: zha
device_id: d207bfdca66e300274e57e4d3ff883f6
type: remote_button_short_press
subtype: button_1
variables: *id002
- platform: device
domain: zha
device_id: d207bfdca66e300274e57e4d3ff883f6
type: remote_button_double_press
subtype: button_1
variables: *id003
- platform: device
domain: zha
device_id: d207bfdca66e300274e57e4d3ff883f6
type: remote_button_long_press
subtype: button_1
variables: *id004
- platform: device
domain: zha
device_id: d207bfdca66e300274e57e4d3ff883f6
type: remote_button_short_press
subtype: button_2
variables: *id005
- platform: device
domain: zha
device_id: d207bfdca66e300274e57e4d3ff883f6
type: remote_button_double_press
subtype: button_2
variables: *id001
- platform: device
domain: zha
device_id: d207bfdca66e300274e57e4d3ff883f6
type: remote_button_long_press
subtype: button_2
variables: *id001
- platform: device
domain: zha
device_id: 66e6c2331edc3c62560fab9b8285ad85
type: remote_button_short_press
subtype: button_1
variables: *id002
- platform: device
domain: zha
device_id: 66e6c2331edc3c62560fab9b8285ad85
type: remote_button_double_press
subtype: button_1
variables: *id003
- platform: device
domain: zha
device_id: 66e6c2331edc3c62560fab9b8285ad85
type: remote_button_long_press
subtype: button_1
variables: *id004
- platform: device
domain: zha
device_id: 66e6c2331edc3c62560fab9b8285ad85
type: remote_button_short_press
subtype: button_2
variables: *id005
- platform: device
domain: zha
device_id: 66e6c2331edc3c62560fab9b8285ad85
type: remote_button_double_press
subtype: button_2
variables: *id001
- platform: device
domain: zha
device_id: 66e6c2331edc3c62560fab9b8285ad85
type: remote_button_long_press
subtype: button_2
variables: *id001
actions:
- alias: Device(s) to apply the scene
variables:
entity_to_set: "{% set all_lights_on = is_state('light.monica_nightstand_light',\
\ 'on') and is_state('light.manolo_nightstand_light', 'on') %} {% set cross_device_already_on_01\
\ = (trigger.event.data.device_id == monica_nightstand_button_id) and (is_state('light.manolo_nightstand_light',\
\ 'on')) %} {% set cross_device_already_on_02 = (trigger.event.data.device_id\
\ == manolo_nightstand_button_id) and (is_state('light.monica_nightstand_light',\
\ 'on')) %} {% set cross_device_already_on = cross_device_already_on_01 or\
\ cross_device_already_on_02 %} {% set should_apply_to_all = cross_device_already_on\
\ or (scene_alias in ['allOff', 'maxIllumination']) %} {% set force_apply_to_one\
\ = (scene_alias in ['singleOff']) %} {% if (not force_apply_to_one) and (should_apply_to_all)\
\ %}\n light.bedroom_nightstand_lights\n{% elif trigger.event.data.device_id\
\ == monica_nightstand_button_id %}\n light.monica_nightstand_light\n{% elif\
\ trigger.event.data.device_id == manolo_nightstand_button_id %}\n light.manolo_nightstand_light\n\
{% endif %}"
- service: scene.apply
data:
entities:
'{{ entity_to_set }}': '{{ scene_data }}'
- alias: AUT-ManoloWorkMode
initial_state: 'on'
trace:
stored_traces: 5
mode: queued
triggers:
- platform: device
domain: zha
device_id: fc590f181eaddcfcfc6d6984c7ec76c5
type: remote_button_short_press
subtype: turn_on
actions:
- service: switch.turn_on
target:
entity_id:
- switch.man_001
- alias: AUT-ManoloNotWorkingMode
initial_state: 'on'
trace:
stored_traces: 5
mode: queued
triggers:
- platform: device
domain: zha
device_id: fc590f181eaddcfcfc6d6984c7ec76c5
type: remote_button_double_press
subtype: turn_on
actions:
- service: switch.turn_off
target:
entity_id:
- switch.man_001
- alias: PTR-Mark person as just arrived
id: ptr_mark_person_as_just_arrived
mode: queued
triggers:
- platform: state
from: not_home
to: home
entity_id: &id007
- person.monica
- person.manolo
actions:
- service: input_select.select_option
data_template:
entity_id: "{% if trigger.entity_id == 'person.manolo' %}\n input_select.manolo_status_dropdown\n\
{% else %}\n input_select.monica_status_dropdown\n{% endif %}\n"
option: Just Arrived
- alias: PTR-Mark person as home
id: ptr_mark_person_as_home
mode: queued
triggers:
- platform: state
entity_id: &id006
- input_select.manolo_status_dropdown
- input_select.monica_status_dropdown
to: Just Arrived
for:
minutes: 10
- platform: state
entity_id: *id006
from: Just Left
to: Just Arrived
actions:
- service: input_select.select_option
data_template:
entity_id: "{% if trigger.entity_id == 'input_select.manolo_status_dropdown'\
\ %}\n input_select.manolo_status_dropdown\n{% else %}\n input_select.monica_status_dropdown\n\
{% endif %}\n"
option: Home
- alias: PTR-Mark person as just left
id: ptr_mark_person_as_just_left
mode: queued
triggers:
- platform: state
entity_id: *id007
from: home
to: not_home
actions:
- service: input_select.select_option
data_template:
entity_id: "{% if trigger.entity_id == 'person.manolo' %}\n input_select.manolo_status_dropdown\n\
{% else %}\n input_select.monica_status_dropdown\n{% endif %}\n"
option: Just Left
- alias: PTR-Mark person as away
id: ptr_mark_person_as_away
mode: queued
triggers:
- platform: state
entity_id: *id006
to: Just Left
for:
minutes: 10
actions:
- service: input_select.select_option
data_template:
entity_id: "{% if trigger.entity_id == 'input_select.manolo_status_dropdown'\
\ %}\n input_select.manolo_status_dropdown\n{% else %}\n input_select.monica_status_dropdown\n\
{% endif %}\n"
option: Away
- alias: PTR-Mark person as extended away
id: ptr_mark_person_as_extended_away
mode: queued
triggers:
- platform: state
entity_id: *id006
to: Away
for:
hours: 24
actions:
- service: input_select.select_option
data_template:
entity_id: "{% if trigger.entity_id == 'input_select.manolo_status_dropdown'\
\ %}\n input_select.manolo_status_dropdown\n{% else %}\n input_select.monica_status_dropdown\n\
{% endif %}\n"
option: Extended Away
- alias: PTR-Update home occupancy
id: ptr_update_home_occupancy
mode: queued
triggers:
- platform: state
entity_id: *id006
actions:
- service: input_select.select_option
data_template:
entity_id: input_select.home_occupancy_status_dropdown
option: "{%- if states(trigger.entity_id) == states('input_select.home_occupancy_status_dropdown')\
\ -%}\n {{ states(trigger.entity_id) }}\n{%- else -%}\n {# Loop over all\
\ states and get the most restrictive #}\n {%- set status_json = {\n \
\ \"Home\": 0,\n \"Just Arrived\": 1,\n \"Just Left\": 2,\n \
\ \"Away\": 3,\n \"Extended Away\": 4\n } -%}\n {%- set next_home_occupancy\
\ = namespace(value=status_json['Extended Away'],name='Extended Away') -%}\n\
\ {%- for tracker in expand('group.people_status') if status_json[tracker.state]\
\ < next_home_occupancy.value -%}\n {%- set next_home_occupancy.value\
\ = status_json[tracker.state] -%}\n {%- set next_home_occupancy.name\
\ = tracker.state -%}\n {%- endfor -%}\n {{next_home_occupancy.name}}\n\
{%- endif -%}\n"
- alias: AUT-New device found
id: AUT-New_Device_Found
initial_state: 'on'
mode: parallel
triggers:
- platform: event
event_type: device_tracker_new_device
actions:
- service: script.notify_in_home_or_all
data: &id008
title: 'ALERT: New device found !'
message: New device called `{{ trigger.event.data.host_name }}` with MAC `{{
trigger.event.data.mac }}` found
- service: notify.manolo
data: *id008
- alias: AUT-Notify failed login attempt
id: AUT-Notify_Failed_Login_Attempt
initial_state: 'on'
mode: parallel
triggers:
- trigger: persistent_notification
update_type:
- added
conditions:
- condition: template
value_template: '{{ ''Login attempt'' in trigger.notification.title }}'
actions:
service: notify.manolo
data:
title: '*{{ trigger.notification.title }} !*'
message: '{{ trigger.notification.message }}'
- alias: AUT-Notify ip_banned
id: AUT-Notify_IP_Banned
initial_state: 'on'
mode: parallel
triggers:
- trigger: persistent_notification
update_type:
- added
conditions:
- condition: template
value_template: '{{ ''Banning IP'' in trigger.notification.title }}'
actions:
- alias: Set variables
variables:
banned_ip: '{{ trigger.notification.message.split('' '') | last }}'
- service: notify.manolo
data:
title: '*{{ trigger.notification.title }} !*'
message: '{{ trigger.notification.message }}'
data:
inline_keyboard:
- Unban {{ banned_ip }} and restart Home Assistant:/unban_ip {{ banned_ip
}}
- alias: AUT-Unban IP
id: AUT-Unban_IP
mode: restart
initial_state: 'on'
triggers:
- platform: event
id: event_telegram_command
event_type: telegram_command
event_data: &id009
command: /unban_ip
variables:
ip_to_unban: '{{ trigger.event.data[''args''][0] }}'
- platform: event
id: event_telegram_callback
event_type: telegram_callback
event_data: *id009
variables:
ip_to_unban: '{{ trigger.event.data[''data''].split('' '')[1] }}'
actions:
- service: shell_command.unban_ip
data:
ip_to_unban: '{{ ip_to_unban }}'
- if: '{{ trigger.id == ''event_telegram_callback'' }}'
then:
- service: telegram_bot.answer_callback_query
data:
callback_query_id: '{{ trigger.event.data.id }}'
message: Unbanned and restarting HomeAssistant
- service: homeassistant.restart
- alias: AUT-Notify Entrance Door Opened
id: AUT-Notify_Entrance_Door_Opened
initial_state: 'on'
triggers:
- platform: state
entity_id: binary_sensor.entrance_door_sensor_opened
to: 'on'
actions:
- service: notify.manolo
data:
title: '[Debug] *Door Opened*'
message: The entrance door has been opened.
data:
disable_notification: true
- alias: AUT-Notify Entrance Door Opened Extended Away
id: AUT-Notify_Entrance_Door_Opened_Extended_Away
initial_state: 'on'
triggers:
- platform: state
entity_id: binary_sensor.entrance_door_sensor_opened
to: 'on'
conditions:
- condition: state
entity_id: sensor.home_occupancy_status
state:
- Extended Away
- Just Arrived
actions:
- service: script.notify_in_home_or_all
data:
title: 'Alert: Door Opened'
message: The entrance door has been opened while the house is in Extended Away
mode.
- alias: AUT-Notify Entrance Door Opened Too much time
id: AUT-Notify_Entrance_Door_Opened_Too_Much_Time
initial_state: 'on'
triggers:
- platform: state
entity_id: binary_sensor.entrance_door_sensor_opened
to: 'on'
for: 00:03:00
actions:
- service: script.notify_in_home_or_all
data:
title: 'Alert: Door Left Open'
message: The entrance door has been left open for more than 3 minutes.
- alias: AUT-Notify Centinel Mode on Extended Away
id: AUT-Notify_Centinel_Mode_On_Extended_Away
initial_state: 'on'
triggers:
- platform: state
entity_id: sensor.home_occupancy_status
to: Extended Away
actions:
- service: input_boolean.turn_on
target:
entity_id: input_boolean.centinel_mode
- service: script.notify_in_home_or_all
data:
title: Centinel Mode
message: Centinel Mode has been enabled automatically due to Extended Away status.
data:
inline_keyboard:
- Disable Centinel Mode:/disable_centinel_mode
- alias: AUT-Disable Centinel Mode
id: AUT-Disable_Centinel_Mode
mode: restart
initial_state: 'on'
triggers:
- platform: event
event_type: telegram_command
event_data: &id010
command: /disable_centinel_mode
- platform: event
event_type: telegram_callback
event_data: *id010
actions:
- service: input_boolean.turn_off
target:
entity_id: input_boolean.centinel_mode
- service: script.notify_in_home_or_all
data:
title: Centinel Mode
message: Centinel Mode has been disabled.
- condition: template
value_template: '{{ trigger.event.event_type == ''telegram_callback'' }}'
- service: telegram_bot.answer_callback_query
data:
callback_query_id: '{{ trigger.event.data.id }}'
message: Done!
- alias: AUT-Centinel Mode Door Camera Recording
id: AUT-Centinel_Mode_Door_Camera_Recording
initial_state: 'on'
triggers:
- platform: state
entity_id: binary_sensor.entrance_door_sensor_opened
to: 'on'
variables:
trigger_time: '{{ now().strftime(''%Y%m%d_%H%M%S'') }}'
conditions:
- condition: state
entity_id: input_boolean.centinel_mode
state: 'on'
actions:
- parallel:
- service: script.notify_in_home_or_all
data:
title: 'Alert: Door Opened - Starting Video Recording'
message: The entrance door has been opened at {{ trigger_time }} while Centinel
Mode is active. Starting video recordings.
- sequence:
- service: camera.record
target:
entity_id: camera.entrance_camera
data:
duration: 4
lookback: 4
filename: /tmp/homeassistant/camera_recordings/entrance_{{ trigger_time
}}_4s.mp4
- service: script.notify_in_home_or_all
data:
title: Door Recording - 4s
message: First video recording (4s) completed.
data:
video:
- file: /tmp/homeassistant/camera_recordings/entrance_{{ trigger_time
}}_4s.mp4
caption: 'Recording #{{ trigger_time }} (4s)'
- sequence:
- service: camera.record
target:
entity_id: camera.entrance_camera
data:
duration: 5
filename: /tmp/homeassistant/camera_recordings/entrance_{{ trigger_time }}_5s.mp4
- service: script.notify_in_home_or_all
data:
title: Door Recording - 5s
message: Second video recording (5s) completed.
data:
video:
- file: /tmp/homeassistant/camera_recordings/entrance_{{ trigger_time }}_8s.mp4
caption: 'Continuation recording #{{ trigger_time }} (5s)'
- sequence:
- service: camera.record
target:
entity_id: camera.entrance_camera
data:
duration: 25
lookback: 20
filename: /tmp/homeassistant/camera_recordings/entrance_{{ trigger_time }}_25s.mp4
- service: script.notify_in_home_or_all
data:
title: Door Recording - 25s
message: Final video recording (25s) completed.
data:
video:
- file: /tmp/homeassistant/camera_recordings/entrance_{{ trigger_time }}_25s.mp4
caption: 'Continuation recording #{{ trigger_time }} (25s)'
- service: shell_command.delete_old_camera_recordings
- alias: AUT-Centinel Mode Light Control - Sunset
id: AUT-Centinel_Mode_Light_Control_Sunset
initial_state: 'on'
triggers:
- platform: sun
event: sunset
conditions:
- condition: state
entity_id: input_boolean.centinel_mode
state: 'on'
actions:
- delay:
minutes: '{{ range(0, 30) | random }}'
- service: light.turn_on
target:
entity_id: group.centinel_mode_lights
data:
brightness: '{{ range(180, 255) | random }}'
- alias: AUT-Centinel Mode Light Control - Night Off
id: AUT-Centinel_Mode_Light_Control_Night_Off
initial_state: 'on'
triggers:
- platform: time
at: '23:00:00'
conditions:
- condition: state
entity_id: input_boolean.centinel_mode
state: 'on'
actions:
- delay:
minutes: '{{ range(0, 59) | random }}'
- service: light.turn_off
target:
entity_id: group.centinel_mode_lights
- alias: AUT-No energy in house
mode: queued
triggers:
- platform: template
value_template: '{% if ''ONBATT'' in states(''sensor.ups_status'') %}true{% endif
%}'
actions:
- service: remote.send_command
data:
entity_id: remote.sony_bravia_tv
command: PowerOff
- service: script.notify_in_home_or_all
data:
title: 'ALERT: No energy in home !'
message: 'Ey, we detected that the UPS status is `{{ states(''sensor.ups_status'')
}}` and the remaining battery is `{{ states(''sensor.ups_battery'') }}%` so
probably the power has gone out.
With this load (`{{ states(''sensor.ups_load'') }}%`) the expected time of
battery is `{{ states(''sensor.ups_time_left'') }} minutes`.
Any way, I powered off the tv to save energy.
'
- service: notify.manolo
data:
title: Debug UPS
message: 'STATUS: `{{ states(''sensor.ups_status'') }}`
STATFLAG: `{{ states(''sensor.ups_status_flag'') }}`
XOFFBATT: `{{ states(''sensor.ups_transfer_from_battery'') }}`
TONBATT: `{{ states(''sensor.ups_time_on_battery'') }}`
CUMONBATT: `{{ states(''sensor.ups_total_time_on_battery'') }}`
'
- alias: AUT-Energy back in house
mode: queued
triggers:
- platform: template
value_template: '{% if ''ONLINE'' in states(''sensor.ups_status'') %}true{% endif
%}'
actions:
- service: script.notify_in_home_or_all
data:
title: Energy back in home !
message: 'Ey, the UPS status now is `{{ states(''sensor.ups_status'') }}` so
probably the power is back. The current battery is `{{ states(''sensor.ups_battery'')
}}%`.
'
data:
disable_notification: true
- service: notify.manolo
data:
title: Debug UPS
message: 'STATUS: `{{ states(''sensor.ups_status'') }}`
STATFLAG: `{{ states(''sensor.ups_status_flag'') }}`
XOFFBATT: `{{ states(''sensor.ups_transfer_from_battery'') }}`
TONBATT: `{{ states(''sensor.ups_time_on_battery'') }}`
CUMONBATT: `{{ states(''sensor.ups_total_time_on_battery'') }}`
'
- alias: AUT-Turn off man-003
triggers:
- platform: numeric_state
entity_id: sensor.man_003_energy_current
below: 0.3
for:
minutes: 10
conditions:
- condition: state
entity_id: input_boolean.man_003_auto_poweroff
state: 'on'
- condition: or
conditions:
- condition: state
entity_id: switch.man_003_left
state: 'on'
- condition: state
entity_id: switch.man_003_right
state: 'on'
actions:
- service: switch.turn_off
entity_id:
- switch.man_003_left
- switch.man_003_right
- service: input_boolean.turn_off
target:
entity_id: input_boolean.man_003_auto_poweroff
- service: script.notify_in_home_or_all
data:
title: Kitchen power plug turned off
message: 'Ey, I (`AUT-Turn off man-003`) detected low power consumption in the
kitchen power plug so I turned off *both*.\n
Additionally, I disabled auto turn off kitchen power plug
'
data:
inline_keyboard:
- Turn on Left:/turn_on switch.man_003_left, Turn on Right:/turn_on switch.man_003_right
- alias: AUT-Telegram turn on device
mode: restart
initial_state: 'on'
triggers:
- platform: event
event_type: telegram_command
event_data: &id011
command: /turn_on
- platform: event
event_type: telegram_callback
event_data: *id011
actions:
- service: switch.turn_on
data_template:
entity_id: "{% if trigger.event.event_type == 'telegram_command' %}\n {{trigger.event.data[\"\
args\"][0]|default('entity not passed')}}\n{% elif trigger.event.event_type\
\ == 'telegram_callback' %}\n {{trigger.event.data[\"data\"].split(' ')[1]|default('entity\
\ not passed')}}\n{% else %}\n switch.event_not_recognized\n{% endif %}\n"
- condition: template
value_template: '{{ trigger.event.event_type == ''telegram_callback'' }}'
- service: telegram_bot.answer_callback_query
data:
callback_query_id: '{{ trigger.event.data.id }}'
message: Done!
- alias: AUT-Notify Vacuum Error
initial_state: 'on'
triggers:
- platform: state
entity_id: vacuum.valetudo_roborocks5
to: error
- platform: state
entity_id:
- sensor.home_occupancy_status
to: Home
for:
minutes: 2
conditions:
condition: and
conditions:
- condition: state
entity_id: vacuum.valetudo_roborocks5
state: error
actions:
- delay: 00:00:21
- service: script.take_camera_snapshot_and_send_telegram
data:
camera_entity: camera.roborocks5_map
notify_to: script.notify_in_home_or_all
message: '*Something fail in the vacuum...*
Error was: `{{state_attr("sensor.valetudo_roborocks5_error", "severity")}}`
Error was: `{{state_attr("sensor.valetudo_roborocks5_error", "subsystem")}}`
Error was: `{{state_attr("sensor.valetudo_roborocks5_error", "message")}}`
Error was: `{{states("sensor.valetudo_roborocks5_error")}}`
'
- alias: AUT-Vacuum
initial_state: 'on'
triggers:
- platform: time
at: '12:32:00'
- platform: time
at: '11:28:00'
- platform: state
entity_id:
- sensor.home_occupancy_status
to: Away
for: 00:05:00
conditions:
- condition: and
conditions:
- condition: or
conditions:
- condition: and
conditions:
- condition: state
entity_id: binary_sensor.workday_sensor
state: 'on'
- condition: time
after: '10:00:00'
before: '22:30:00'
- condition: and
conditions:
- condition: state
entity_id: binary_sensor.workday_sensor
state: 'off'
- condition: time
after: '11:30:00'
before: '22:30:00'
- condition: template
value_template: '{{ states("vacuum.valetudo_roborocks5") == "docked" }}'
- condition: template
value_template: '{{ states("sensor.home_occupancy_status") != "Extended Away"
}}'
- condition: or
conditions:
- condition: and
conditions:
- condition: template
value_template: '{{ ( as_timestamp(now()) - as_timestamp(states("input_datetime.vacuum_last_full_clean"))
|int(0) ) /60/60 > 23 }}'
- condition: and
conditions:
- condition: template
value_template: '{{ ( as_timestamp(now()) - as_timestamp(states("input_datetime.vacuum_last_full_clean"))
|int(0) ) /60/60 > 13 }}'
- condition: state
entity_id: sensor.home_occupancy_status
state:
- Extended Away
- Away
actions:
- service: timer.start
entity_id: timer.vacuum_start_in
data:
duration: 00:05:00
- service: script.notify_in_home_or_all
data:
title: Vacuum is going to start
message: 'Vacuum is going to start in 5 minutes.
'
data:
inline_keyboard:
- 🚫 Stop it 🚫:/vacuum_stop, ✅ Start now:/vacuum_start
- alias: AUT-Vacuum start
initial_state: 'on'
triggers:
- platform: event
event_type: timer.finished
event_data:
entity_id: timer.vacuum_start_in
- platform: event
event_type: telegram_command
event_data: &id012
command: /vacuum_start
- platform: event
event_type: telegram_callback
event_data: *id012
actions:
- service: vacuum.set_fan_speed
entity_id: vacuum.valetudo_roborocks5
data:
fan_speed: Standard
- service: vacuum.start
entity_id: vacuum.valetudo_roborocks5
- alias: AUT-Vacuum update statistics
mode: queued
initial_state: 'on'
triggers:
- platform: state
entity_id: vacuum.valetudo_roborocks5
to: returning
actions:
- delay: 00:00:10
- condition: template
value_template: '{{ (states(''input_number.vacuum_xiaomi_historic_cleaning_time'')|int)
!= (states(''sensor.valetudo_roborocks5_total_statistics_time'')|int) }}'
- service: input_number.set_value
target:
entity_id: input_number.vacuum_xiaomi_historic_cleaning_time
data:
value: '{{ states(''sensor.valetudo_roborocks5_total_statistics_time'') }}'
- service: input_number.set_value
data_template:
entity_id: input_number.vacuum_xiaomi_dust_clean_left
value: '{{ [(states(''input_number.vacuum_xiaomi_dust_clean_left'')|int) - (states(''sensor.valetudo_roborocks5_current_statistics_area'')|int
// 10000), 0] | max }}
'
- condition: numeric_state
entity_id: sensor.valetudo_roborocks5_current_statistics_area
above: 340000
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.vacuum_last_full_clean
data:
datetime: '{{ now().strftime(''%Y-%m-%d %H:%M:%S'') }}'
- delay: 00:00:21
- service: script.take_camera_snapshot_and_send_telegram
data:
camera_entity: camera.roborocks5_map
notify_to: script.notify_in_home_or_all
data:
disable_notification: true
message: '*Clean finished !*
`{{(states(''sensor.valetudo_roborocks5_current_statistics_area'')|int //
10000)}}` square meters have been cleaned
'
- alias: AUT-Notify Vacuum maintenance
mode: restart
initial_state: 'on'
triggers:
- platform: state
entity_id: vacuum.valetudo_roborocks5
to: returning
- platform: state
entity_id: input_number.vacuum_xiaomi_dust_clean_left
conditions:
- condition: template
value_template: "{%- set minimal_notify = 2 -%} {{ \n (states('input_number.vacuum_xiaomi_dust_clean_left')|int)\
\ < minimal_notify\n}}\n"
actions:
- service: script.notify_in_home_or_all
data:
title: Vacuum need maintenance
message: 'Cepillo principal*:* `{{ (states(''sensor.valetudo_roborocks5_main_brush'')|int)
}} h` _restantes_
Cepillo lateral: `{{ (states(''sensor.valetudo_roborocks5_right_brush'')|int)
}} h` restantes
Filtro: `{{ (states(''sensor.valetudo_roborocks5_main_filter'')|int) }} h`
restantes
Limpieza de sensores: `{{ (states(''sensor.valetudo_roborocks5_sensor_cleaning'')|int)
}} h` restantes
Vaciado del deposito: `{{ (states(''input_number.vacuum_xiaomi_dust_clean_left'')|int)
}} m²` restantes
'
data:
inline_keyboard:
- Vacuum already cleaned:/vacuum_cleaned
- alias: AUT-Telegram reset Vacuum meters
mode: restart
initial_state: 'on'
triggers:
- platform: event
event_type: telegram_command
event_data: &id013
command: /vacuum_cleaned
- platform: event
event_type: telegram_callback
event_data: *id013
actions:
- service: input_number.set_value
data_template:
entity_id: input_number.vacuum_xiaomi_dust_clean_left
value: '{{ state_attr(''input_number.vacuum_xiaomi_dust_clean_left'', ''max'')|int
}}
'
- condition: template
value_template: '{{ trigger.event.event_type == ''telegram_callback'' }}'
- service: telegram_bot.answer_callback_query
data:
callback_query_id: '{{ trigger.event.data.id }}'
message: Done!
- alias: AUT-Telegram stop Vacuum
mode: restart
initial_state: 'on'
triggers:
- platform: event
event_type: telegram_command
event_data: &id014
command: /vacuum_stop
- platform: event
event_type: telegram_callback
event_data: *id014
actions:
- service: timer.cancel
target:
entity_id: timer.vacuum_start_in
- service: vacuum.stop
entity_id: vacuum.valetudo_roborocks5
- delay: 00:00:30
- service: vacuum.return_to_base
entity_id: vacuum.valetudo_roborocks5
- alias: AUT-Notify Washing machine finished
triggers:
- platform: state
entity_id: sensor.washing_machine_status
to: Clean
- platform: state
entity_id:
- sensor.home_occupancy_status
to: Home
for:
minutes: 2
conditions:
condition: and
conditions:
- condition: state
entity_id: sensor.washing_machine_status
state: Clean
actions:
- service: script.notify_in_home_or_all
data:
title: Washing Machine finished
message: Hey, the washing machine has finished and is ready to be emptied
data:
inline_keyboard:
- Already empty:/washing_machine_already_empty
- alias: AUT-Washing machine should power on
initial_state: 'on'
triggers:
- platform: event
event_type: timer.finished
event_data:
entity_id: timer.washing_machine_power_on_in
actions:
- service: timer.cancel
target:
entity_id: timer.washing_machine_power_on_in
- service: input_select.select_option
data:
entity_id: input_select.washing_machine_status
option: 'Off'
- service: switch.turn_on
target:
entity_id:
- switch.man_002
- alias: AUT-Washing machine Running
triggers:
- platform: numeric_state
entity_id: sensor.man_002_current_a
above: 1
conditions:
condition: or
conditions:
- condition: state
entity_id: sensor.washing_machine_status
state:
- 'Off'
- Finishing
- Clean
- Scheduled
actions:
- service: input_select.select_option
data:
entity_id: input_select.washing_machine_status
option: Washing
- alias: AUT-Washing machine Clean
triggers:
- platform: numeric_state
entity_id: sensor.man_002_current_a
below: 0.001
for:
minutes: 8
conditions:
condition: or
conditions:
- condition: state
entity_id: input_select.washing_machine_status
state:
- Washing
- Finishing
actions:
- service: input_select.select_option
data:
entity_id: input_select.washing_machine_status
option: Clean
- alias: AUT-Washing machine Emptying
triggers:
- platform: numeric_state
entity_id: sensor.man_002_current_a
above: 0.001
conditions:
condition: or
conditions:
- condition: state
entity_id: input_select.washing_machine_status
state:
- Clean
actions:
- service: input_select.select_option
data:
entity_id: input_select.washing_machine_status
option: Emptying
- alias: AUT-Washing machine Off
triggers:
- platform: numeric_state
entity_id: sensor.man_002_current_a
below: 0.001
for:
minutes: 15
conditions:
condition: or
conditions:
- condition: state
entity_id: input_select.washing_machine_status
state:
- Emptying
actions:
- service: input_select.select_option
data:
entity_id: input_select.washing_machine_status
option: 'Off'
- alias: AUT-Washing machine Force Off
triggers:
- platform: event
event_type: telegram_command
event_data: &id015
command: /washing_machine_already_empty
- platform: event
event_type: telegram_callback
event_data: *id015
actions:
- service: input_select.select_option
data:
entity_id: input_select.washing_machine_status
option: 'Off'
- alias: AUT-Mark windows preferred status as close
mode: queued
triggers:
- platform: template
value_template: '{{ states(''binary_sensor.environment_001_temperature_rising'')
and states(''binary_sensor.dyson_01_temperature_rising'') }}'
for: 01:30:00
actions:
- service: input_select.select_option
data:
entity_id: input_select.windows_preferred_status
option: Close
- alias: AUT-Mark windows preferred status as open
mode: queued
triggers:
- platform: template
value_template: '{{ states(''binary_sensor.environment_001_temperature_falling'')
and (states(''sensor.ble_environment_001_temperature'') < states(''sensor.dyson_01_temperature''))
}}'
for: 00:10:00
actions:
- service: input_select.select_option
data:
entity_id: input_select.windows_preferred_status
option: Open