MyCool
(mike)
August 20, 2021, 7:39pm
1
Hi there I was wondering if it’s wrong to have big Automations and do they cause issues like lag I’ll post my automation below. I was also wanting to add more to it and was unsure where to add and if there was a cleaner way. Thank you so much for any help and advice so very much appreciated.
- alias: Driveway Linecrossing MP3
trigger:
platform: state
entity_id:
- binary_sensor.driveway_line_crossing
- binary_sensor.driveway_field_detection
to: 'on'
condition:
- condition: not
conditions:
- condition: state
entity_id: weather.home
state: rainy
- condition: template
value_template: '{{ (as_timestamp(now()) - as_timestamp(states.automation.driveway_linecrossing_mp3.attributes.last_triggered | default(0)) | int > 100)}}'
action:
- service: media_player.volume_set
data_template:
entity_id:
- media_player.home_group_2
volume_level: 1
- service: media_player.play_media
data_template:
entity_id: media_player.home_group_2
media_content_type: 'music'
media_content_id: >
{% if is_state("input_select.mp3_driveway_alarm_list", "Yoda-BLR-Hmm-Ha") %}
http://192.168.1.100:8123/local/Yoda-BLR-Hmm-Ha.mp3
{%-elif is_state("input_select.mp3_driveway_alarm_list", "PulpFictionRemix") %}
http://192.168.1.100:8123/local/PulpFictionRemix_1.mp3
{%-elif is_state("input_select.mp3_driveway_alarm_list", "MessageAlert") %}
http://192.168.1.100:8123/local/MessageAlert.mp3
{%-elif is_state("input_select.mp3_driveway_alarm_list", "carlpoppa2") %}
http://192.168.1.100:8123/local/carlpoppa2.mp3
{% else %}
http://192.168.1.100:8123/local/carlpoppa2.mp3
{% endif %}
- service: camera.snapshot
data:
entity_id: camera.driveway
filename: /config/www/images/driveway.jpg
- delay:
seconds: 2
- service: homeassistant.turn_on
entity_id: script.driveway_notify_alarm
Script
driveway_notify_alarm:
alias: Send Pic Driveway
sequence:
- service: notify.all_devices
data:
title: "HEY!!!!!!!!!!!!"
message: "Hey There Is Motion On Driveway"
data:
ttl: 0
priority: high
image: "http://09.asuscomm.com:8123/local/images/driveway.jpg"
actions:
- action: "URI"
title: "View Live Feed"
uri: "http://209.asuscomm.com:8123/lovelace/cctv"
Extra code bellow I wanted to add to this but not sure if I’m going too far and where to put it as I get errors and breaks my above automation
- alias: 'BackShed Alarm Notify test'
trigger:
- platform: state
entity_id:
- binary_sensor.back_cam_line_crossing
- binary_sensor.back_cam_field_detection
to: 'on'
action:
- service: notify.android_tv
data:
message: Driveway Movement
title: Have A Look Outside
data:
file:
url: http://09.asuscomm.com:8123/local/images/driveway.jpg
fontsize: max
position: bottom-left
duration: 10
transparency: 50%
color: red
interrupt: 1
No, your automation can be as big as you want. You won’t get any lag due to the size of your automation. However sometimes it makes sense to break large automations into multiple smaller ones for easier debugging and maintenance.
1 Like
I think your concept of big might be without a point of reference, here is one of mine for comparison:
alias: Livingroom Audio Pico
trigger:
- platform: state
entity_id: sensor.living_room_audio_pico_1
from: '0'
condition: []
action:
- choose:
- conditions:
- condition: template
value_template: '{{ trigger.to_state.state == ''1'' }}'
sequence:
- choose:
- conditions:
- condition: device
device_id: 4ea77aecfa3411ea9e80a77b6991a4c4
domain: media_player
entity_id: media_player.kodi
type: is_idle
sequence:
- service: kodi.call_method
data:
entity_id: media_player.kodi
method: Input.Select
entity_id: media_player.kodi
- conditions:
- condition: or
conditions:
- condition: device
device_id: 4ea77aecfa3411ea9e80a77b6991a4c4
domain: media_player
entity_id: media_player.kodi
type: is_playing
- condition: device
device_id: 4ea77aecfa3411ea9e80a77b6991a4c4
domain: media_player
entity_id: media_player.kodi
type: is_paused
sequence:
- service: media_player.media_play_pause
entity_id: media_player.kodi
default: []
- conditions:
- condition: template
value_template: '{{ trigger.to_state.state == ''2'' }}'
sequence:
- choose:
- conditions:
- condition: device
device_id: 4ea77aecfa3411ea9e80a77b6991a4c4
domain: media_player
entity_id: media_player.kodi
type: is_idle
sequence:
- service: kodi.call_method
data:
entity_id: media_player.kodi
method: Input.Select
entity_id: media_player.kodi
- conditions:
- condition: device
device_id: 4ea77aecfa3411ea9e80a77b6991a4c4
domain: media_player
entity_id: media_player.kodi
type: is_playing
sequence:
- choose:
- conditions:
- condition: state
entity_id: media_player.kodi
state: music
attribute: media_content_type
sequence:
- service: kodi.call_method
data:
entity_id: media_player.kodi
method: Input.Select
entity_id: media_player.kodi
- conditions:
- condition: or
conditions:
- condition: state
entity_id: media_player.kodi
state: tvshow
attribute: media_content_type
- condition: state
entity_id: media_player.kodi
state: movie
attribute: media_content_type
sequence:
- service: kodi.call_method
data:
entity_id: media_player.kodi
method: Input.Info
entity_id: media_player.kodi
default: []
- conditions:
- condition: device
device_id: 4ea77aecfa3411ea9e80a77b6991a4c4
domain: media_player
entity_id: media_player.kodi
type: is_paused
sequence:
- service: media_player.media_stop
data: {}
entity_id: media_player.kodi
default: []
- conditions:
- condition: template
value_template: '{{ trigger.to_state.state == ''4'' }}'
sequence:
- choose:
- conditions:
- condition: device
device_id: 4ea77aecfa3411ea9e80a77b6991a4c4
domain: media_player
entity_id: media_player.kodi
type: is_idle
sequence:
- service: kodi.call_method
data:
entity_id: media_player.kodi
method: Input.Back
entity_id: media_player.kodi
- conditions:
- condition: or
conditions:
- condition: device
device_id: 4ea77aecfa3411ea9e80a77b6991a4c4
domain: media_player
entity_id: media_player.kodi
type: is_playing
- condition: device
device_id: 4ea77aecfa3411ea9e80a77b6991a4c4
domain: media_player
entity_id: media_player.kodi
type: is_paused
sequence:
- service: media_player.media_next_track
data: {}
entity_id: media_player.kodi
default: []
- conditions:
- condition: template
value_template: '{{ trigger.to_state.state == ''8'' }}'
sequence:
- choose:
- conditions:
- condition: device
device_id: 4ea77aecfa3411ea9e80a77b6991a4c4
domain: media_player
entity_id: media_player.kodi
type: is_idle
sequence:
- service: kodi.call_method
data:
entity_id: media_player.kodi
method: Input.Up
entity_id: media_player.kodi
- conditions:
- condition: device
device_id: 4ea77aecfa3411ea9e80a77b6991a4c4
domain: media_player
entity_id: media_player.kodi
type: is_playing
sequence:
- choose:
- conditions:
- condition: state
entity_id: media_player.kodi
state: music
attribute: media_content_type
sequence:
- service: kodi.call_method
data:
entity_id: media_player.kodi
method: Input.Up
entity_id: media_player.kodi
- conditions:
- condition: or
conditions:
- condition: state
entity_id: media_player.kodi
state: tvshow
attribute: media_content_type
- condition: state
entity_id: media_player.kodi
state: movie
attribute: media_content_type
sequence:
- service: kodi.call_method
data:
entity_id: media_player.kodi
method: Input.ExecuteAction
action: stepback
entity_id: media_player.kodi
default: []
- conditions:
- condition: device
device_id: 4ea77aecfa3411ea9e80a77b6991a4c4
domain: media_player
entity_id: media_player.kodi
type: is_paused
sequence:
- choose:
- conditions:
- condition: state
entity_id: media_player.kodi
state: music
attribute: media_content_type
sequence:
- service: kodi.call_method
data:
entity_id: media_player.kodi
method: Input.Up
entity_id: media_player.kodi
- conditions:
- condition: or
conditions:
- condition: state
entity_id: media_player.kodi
state: tvshow
attribute: media_content_type
- condition: state
entity_id: media_player.kodi
state: movie
attribute: media_content_type
sequence:
- service: kodi.call_method
data:
entity_id: media_player.kodi
method: Input.ExecuteAction
action: audionextlanguage
entity_id: media_player.kodi
default: []
default: []
- conditions:
- condition: template
value_template: '{{ trigger.to_state.state == ''16'' }}'
sequence:
- choose:
- conditions:
- condition: device
device_id: 4ea77aecfa3411ea9e80a77b6991a4c4
domain: media_player
entity_id: media_player.kodi
type: is_idle
sequence:
- service: kodi.call_method
data:
entity_id: media_player.kodi
method: Input.Down
entity_id: media_player.kodi
- conditions:
- condition: device
device_id: 4ea77aecfa3411ea9e80a77b6991a4c4
domain: media_player
entity_id: media_player.kodi
type: is_playing
sequence:
- choose:
- conditions:
- condition: state
entity_id: media_player.kodi
state: music
attribute: media_content_type
sequence:
- service: kodi.call_method
data:
entity_id: media_player.kodi
method: Input.Down
entity_id: media_player.kodi
- conditions:
- condition: or
conditions:
- condition: state
entity_id: media_player.kodi
state: tvshow
attribute: media_content_type
- condition: state
entity_id: media_player.kodi
state: movie
attribute: media_content_type
sequence:
- service: kodi.call_method
data:
entity_id: media_player.kodi
method: Input.ExecuteAction
action: stepforward
entity_id: media_player.kodi
default: []
- conditions:
- condition: device
device_id: 4ea77aecfa3411ea9e80a77b6991a4c4
domain: media_player
entity_id: media_player.kodi
type: is_paused
sequence:
- choose:
- conditions:
- condition: state
entity_id: media_player.kodi
state: music
attribute: media_content_type
sequence:
- service: kodi.call_method
data:
entity_id: media_player.kodi
method: Input.Down
entity_id: media_player.kodi
- conditions:
- condition: or
conditions:
- condition: state
entity_id: media_player.kodi
state: tvshow
attribute: media_content_type
- condition: state
entity_id: media_player.kodi
state: movie
attribute: media_content_type
sequence:
- service: kodi.call_method
data:
entity_id: media_player.kodi
method: Input.ExecuteAction
action: nextsubtitle
entity_id: media_player.kodi
default: []
default: []
default: []
mode: queued
max: 10
1 Like
MyCool
(mike)
August 21, 2021, 11:30am
4
Omg that is insane lol foss that actually work . Thanks though I feel a lot better now lol
finity
August 21, 2021, 12:29pm
5
In addition to burningstones answer to answer the original question…
the two automations you posted should be kept separate not because of size but because they are two completely different automations that don’t share any commonalities.
trying to use choose and/or templates to get the right actions will be more complicated than just leaving them separate.
2 Likes
MyCool
(mike)
August 21, 2021, 8:27pm
6
Ok cool thank you for that info much appreciated