So I wanted to automate that my lights will slowly turn on at a specified time. My code to turn the brightness of the lights slowly on is:
alias: increasing_brightness_full
sequence:
service: light.turn_on
repeat:
while:
condition: numeric_state
below: 255
data_template:
entity_id: light.kuchenlampe
transition: '1'
brightness: >
{% set n = states.light.kuchenlampe.attributes.brightness + 25 %} {% if
n > 255 %}
255
{% else %}
{{ n }}
{% endif %}
delay: 2
mode: single
If I try to save it it gives me the error message:
Message malformed: extra keys not allowed @ data[‘sequence’][0][‘service’]
Anyone knows how to solve this?
fedot
2
That doesn’t look quite right.
- Your while loop is just testing the condition endlessly without doing anything.
- You’re calling
light.turn_on
without passing any data to it.
- You can use
brightness_step_pct
in your service call so no if
required: service docs
- You should use
states('light.kuchenlampe')
instead of states.light.kuchenlampe
to avoid errors
Have a look at the example for a while loop.
Also, you might want to use an “until” loop instead. docs
This might get you there, although I haven’t tested it:
alias: increasing_brightness_full
sequence:
- alias: Turn up the brightness until it hits 255
repeat:
sequence:
- service: light.turn_on
data:
entity_id: light.kuchenlampe
transition: 1
brightness_step_pct: 25
- delay: 2
until:
- condition: state
entity_id: light.kuchenlampe
attribute: brightness
state: 255
mode: single
If your light supports transition:
you can just call that with a higher value and completely remove the automation
Thx for the response.
Somehow I managed to get my code working. I’ll try yours too.