Automation too big

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 :joy:

- 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

Omg that is insane lol foss that actually work . Thanks though I feel a lot better now lol

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

Ok cool thank you for that info much appreciated