diff --git a/config/scripts.yaml b/config/scripts.yaml index f8cac94..6a15d20 100644 --- a/config/scripts.yaml +++ b/config/scripts.yaml @@ -102,6 +102,14 @@ randomize_vacation_lights: entity_id: input_text.current_random_light value: None mode: single + +# I have modified this from the verison on the video. +# Due to a logic issue I went with the homeassistant.toggle +# service so that it wontmatter if an entity is on or off, it will +# simply toggle it to the oppostite state. +# I also added a service call that would execute after the repeat section that +# turn off all the entities, for example when the sun is up, turn off all the lights +# in the vacation group improved_randomize_vacation_lights: alias: improved_randomize vacation lights sequence: @@ -114,45 +122,34 @@ improved_randomize_vacation_lights: - service: notify.mobile_app_jeffrey_ha_app data: message: Running Vacation Lights - - service: homeassistant.turn_on - data: - entity_id: '{{ expand(''group.vacation_lights'') | selectattr(''state'', ''eq'', ''off'') | map(attribute=''entity_id'') | list | random }}' - - delay: - minutes: '{{ range(1,3) | random | int }}' - - service: > - {% set service = ['homeassistant.turn_on', 'homeassistant.turn_off' ] | random %} - {{ service }} + - service: homeassistant.toggle data: entity_id: > - {% if service == 'homeassistant.turn_on' %} - {{ expand('group.vacation_lights') | selectattr('state', 'eq', 'off') | map(attribute='entity_id') | list | random }} - {% else %} - {{ expand('group.vacation_lights') | selectattr('state', 'eq', 'on') | map(attribute='entity_id') | list | random }} - {% endif %} + {{ expand('group.vacation_lights') | map(attribute='entity_id') | list | random }} - delay: minutes: '{{ range(1,3) | random | int }}' + # - service: group.turn_off + # entity_id: group.vacation_lights mode: single + +# Below is a demo script that can be used to test the effect. It uses a set count for repeat, +# and seconds for delay. +# It has also been updated to use the cleaner homeassistant.toggle service so we dont have to +# worry about which entities are on or off. randomize_vacation_lights_demo: - alias: demo - randomize vacation lights + alias: randomize vacation lights - demo sequence: - repeat: count: '8' sequence: - - service: homeassistant.turn_on - data: - entity_id: '{{ expand(''group.vacation_lights'') | selectattr(''state'', ''eq'', ''off'') | map(attribute=''entity_id'') | list | random }}' - - delay: - seconds: '{{ range(2,5) | random | int }}' - - service: > - {% set service = ['homeassistant.turn_on', 'homeassistant.turn_off' ] | random %} - {{ service }} + - service: homeassistant.toggle data: entity_id: > - {% if service == 'homeassistant.turn_on' %} - {{ expand('group.vacation_lights') | selectattr('state', 'eq', 'off') | map(attribute='entity_id') | list | random }} - {% else %} - {{ expand('group.vacation_lights') | selectattr('state', 'eq', 'on') | map(attribute='entity_id') | list | random }} - {% endif %} + {{ expand('group.vacation_lights') | map(attribute='entity_id') | list | random }} + - delay: + seconds: '{{ range(2,5) | random | int }}' + - service: homeassistant.turn_off + entity_id: group.vacation_lights mode: single activate_arches_lamp: alias: Activate Arches Lamp