alias: Lamp Wake Up sequence: - repeat: until: - condition: or conditions: - condition: template value_template: "{{ is_state(target_light, 'off') }}" - condition: template value_template: "{{ state_attr(target_light, 'brightness') >= max_brightness }}" - condition: template value_template: >- {{ state_attr(target_light, 'color_temp_kelvin') >= target_kelvin }} - condition: template value_template: >- {{ (((as_timestamp(now()) - start_time) / individual_step) | round(0, "ceil")) > steps }} sequence: - variables: steps_to_now: |- {{ ((as_timestamp(now()) - start_time) / individual_step) | round(0, "ceil") }} brightness: >- {{ min_brightness + (bright_step * steps_to_now) | round(0, 'ceil') }} kelvin: "{{ start_kelvin + (kelvin_step * steps_to_now) }}" - delay: seconds: "{{ individual_step }}" - if: - condition: template value_template: "{{ is_state(target_light, 'on') }}" then: - data: brightness: "{{ brightness }}" color_temp_kelvin: "{{ kelvin }}" transition: "{{ individual_step - 1 }}" target: entity_id: "{{ target_light }}" action: light.turn_on - if: - condition: and conditions: - condition: template value_template: "{{ light_timeout != 0 }}" - condition: template value_template: "{{ is_state(target_light, 'on') }}" then: - delay: minutes: "{{ light_timeout }}" - data: {} target: entity_id: "{{ target_light }}" action: light.turn_off description: Turn on lamps brighter based on wake time fields: target_kelvin: description: Coldest Kelvin value. This is the end value - most white selector: color_temp: unit: kelvin required: true default: 6500 name: Coldest Kelvin example: 6500 start_kelvin: description: >- This is the start value. If the light is on the current value from the state of the light will be used and this will be ignored. example: 2500 selector: color_temp: unit: kelvin min: 2500 max: 6500 default: 6500 required: true name: Warmest Kelvin max_brightness_pct: description: Maximum brightness in percent to reach by the end of the script example: 80 selector: number: min: 1 max: 100 default: 80 required: true name: Max brightness alarm_length: description: >- This is the start to finish time. Take this into account when setting up the automation this script is called by. example: 10 selector: number: min: 1 max: 60 default: 10 required: true name: Alarm Length steps_per_minute: description: How many steps per minute example: 4 selector: number: min: 1 max: 12 default: 12 name: Steps Per minute required: true target_light: description: A single light or group example: light.master_lamp selector: entity: filter: domain: light name: Target Light required: true light_timeout: description: >- Minutes to delay after Max Brightness has been reached to turn the light back off. Value of 0 disables the timeout example: 5 selector: number: min: 0 max: 60 default: 5 name: Light Timeout required: true variables: steps: "{{ alarm_length * steps_per_minute }}" min_brightness: |- {% if states(target_light) == 'off' %} 3 {% else %} {{ state_attr(target_light, 'brightness') }} {% endif %} max_brightness: "{{ max_brightness_pct * 2.55 }}" kelvin_step: "{{ (target_kelvin - start_kelvin) / steps }}" bright_step: "{{ (max_brightness - min_brightness) / steps }}" start_time: "{{ as_timestamp(now()) }}" individual_step: "{{ 60 / steps_per_minute }}" mode: parallel