edwardtfn / HomeAssistant-Config

Edward Firmo's Home Assistant config files
MIT License
22 stars 7 forks source link

Blink lights: return lights to initial state when blink finished? #12

Open bob454522 opened 1 month ago

bob454522 commented 1 month ago

first of all- Thank you very much for making this public, and taking the time to create it. It's very nice of you to do this, and has helped me learn quite a bit (more) about HA.

It would be great (and useful for many i think), if your Blink Lights automation could return the lights to their initial state. (for example if a light is ON and brightness = 50%, when the blink is completed, the light is still on but at 100% brightness).

I'm going to figure out how to accomplish this myself and will update this (here) with my solution, although it may not be pretty.

thanks

bob454522 commented 1 month ago

with The help of chatGPT and your code / blueprint I was able to get what I want working (but as predicted it's sloppy and not portable). I was trying to use chatGPT to help me create a new blueprint just like yours, but that also integrated this option (return brightness to initial level) , but it wasn't happening.

so if others are interested here is the automation im using (I first created the automation using Edwards blueprint, and then "took ownership" of the automation in HA so that I could then directly edit the .yaml of the automation. (This "taking ownership" of an automation generated by a blueprint seems to be a new feature of the July 2024 HA update )

mode: single
trigger_variables:
  input_pause_entities:
    - input_boolean.disableall_light_automations
  input_pause_entities_selected: |-
    {% if input_pause_entities %}
      true
    {% else %}
      false
    {% endif %}
trigger:
  - platform: state
    entity_id:
      - input_boolean.blink_lights_manual
    to: "off"
    from: "on"
  - platform: state
    entity_id:
      - input_boolean.blink_lights_manual
    to: "on"
    from: "off"
condition:
  - condition: or
    conditions:
      - condition: template
        value_template: "{{ ( input_pause_entities_selected == false ) }}"
      - condition: state
        entity_id:
          - input_boolean.disableall_light_automations
        state: "off"
variables:
  repeat_count: 4
  original_states: >-
    {% set ns = namespace(states=[]) %}
    {% for entity in ['light.office_right_lights_3x', 'light.family_room_den_side', 'light.xbox_room_main_lights'] %}
      {% set ns.states = ns.states + [ { 'entity_id': entity, 'state': states(entity), 'brightness': state_attr(entity, 'brightness') | int if state_attr(entity, 'brightness') else None } ] %}
    {% endfor %}
    {{ ns.states }}
action:
  - repeat:
      count: "{{ repeat_count * 2 }}"
      sequence:
        - service: homeassistant.toggle
          data: {}
          target:
            entity_id:
              - light.office_right_lights_3x
              - light.family_room_den_side
              - light.xbox_room_main_lights
        - delay:
            hours: 0
            minutes: 0
            seconds: 0
            milliseconds: 393
  - service: homeassistant.turn_on
    data_template:
      entity_id: >
        {{ original_states | selectattr('state', 'eq', 'on') | map(attribute='entity_id') | join(', ') }}
  - service: homeassistant.turn_off
    data_template:
      entity_id: >
        {{ original_states | selectattr('state', 'eq', 'off') | map(attribute='entity_id') | join(', ') }}
  - service: light.turn_on
    data_template:
      entity_id: >
        {{ original_states | selectattr('brightness', 'ne', None) | map(attribute='entity_id') | join(', ') }}
      brightness: >
        {{ original_states | selectattr('brightness', 'ne', None) | map(attribute='brightness') | first }}
alias: Blink lights Test
description: Jul 8 2024- testing light blinking