@NYC wrote:
I’m working on an automation that will change the brightness and temperature of lights during the day. I looked at other pre-built options (e.g., Flux and Circadian), but I wanted to see if I could build my own. When the Deconz daylight changes (slightly modified by the time), I want lights to change temp and brightness, but only if they’re already on. There are a few conditions, but the most relevant one for this automation is that a light must be on. I control my lights using Hue groups to smooth out lights coming on together, so I want to filter out the individual bulbs.
The problem is in the data template for entity ID in the action section. I have two selectattr() filters that should filter lights that are both on and Hue groups. When I include only one of these, it passes. But when I have both, it fails. I’ve been banging my head against the wall on this for 24 hours. After digging through posts from @petro and @pnbruckner, and reading the Jinja documentation on filters, I don’t see a reason why this fails.
What’s annoying is that when I test the template in dev tools, it produces the correct list of entity ids.
Here’s the code that’s causing an error:
- alias: 'Lights - Adjust if On' description: 'If lights are on, adjust the brightness based on time' hide_entity: true trigger: - platform: event event_type: state_changed entity_id: sensor.daylight condition: condition: and conditions: - condition: state entity_id: 'group.people' state: 'on' - condition: state entity_id: 'input_boolean.good_night' state: 'off' - condition: template value_template: "{{is_state('group.all_lights','on')}}" action: - service: light.turn_on data_template: entity_id: > {{ states.light | selectattr('attributes.is_hue_group') | selectattr('state','eq','on') | map(attribute='entity_id') | join(',') }} brightness: > {% set time=(states('sensor.time').split(':')[0] |int * 60) + (states('sensor.time').split(':')[1] |int) %} {%- if is_state('sensor.daylight', 'night_end') -%} 30 {%- elif is_state('sensor.daylight', 'nautical_dawn') -%} 30 {%- elif is_state('sensor.daylight', 'dawn') -%} 143 {%- elif is_state('sensor.daylight', 'sunrise_start') -%} 254 {%- elif is_state('sensor.daylight', 'sunrise_end') -%} 254 {%- elif is_state('sensor.daylight', 'golden_hour_1') -%} 254 {%- elif is_state('sensor.daylight', 'solar_noon') -%} 254 {%- elif is_state('sensor.daylight', 'golden_hour_2') -%} 254 {%- elif is_state('sensor.daylight', 'sunset_start') -%} 254 {%- elif is_state('sensor.daylight', 'sunset_end') -%} 254 {%- elif is_state('sensor.daylight', 'dusk') -%} 254 {%- elif is_state('sensor.daylight', 'nautical_dusk') -%} 254 {%- elif is_state('sensor.daylight', 'night_start') and time >= 0 and time < 480 -%} 143 {%- elif is_state('sensor.daylight', 'night_start') and time >= 480 and time < 600 -%} 254 {%- elif is_state('sensor.daylight', 'night_start') and time >= 600 and time < 1110 -%} 254 {%- elif is_state('sensor.daylight', 'night_start') and time >= 1110 and time < 1350 -%} 254 {%- elif is_state('sensor.daylight', 'night_start') and time >= 1350 and time < 1440 -%} 143 {%- elif is_state('sensor.daylight', 'night_start') -%} 254 {%- elif is_state('sensor.daylight', 'nadir') -%} 143 {%- else -%} 254 {%- endif -%} color_temp: > {% set time=(states('sensor.time').split(':')[0] |int * 60) + (states('sensor.time').split(':')[1] |int) %} {%- if is_state('sensor.daylight', 'night_end') -%} 500 {%- elif is_state('sensor.daylight', 'nautical_dawn') -%} 500 {%- elif is_state('sensor.daylight', 'dawn') -%} 466 {%- elif is_state('sensor.daylight', 'sunrise_start') -%} 154 {%- elif is_state('sensor.daylight', 'sunrise_end') -%} 154 {%- elif is_state('sensor.daylight', 'golden_hour_1') -%} 154 {%- elif is_state('sensor.daylight', 'solar_noon') -%} 181 {%- elif is_state('sensor.daylight', 'golden_hour_2') -%} 181 {%- elif is_state('sensor.daylight', 'sunset_start') -%} 370 {%- elif is_state('sensor.daylight', 'sunset_end') -%} 370 {%- elif is_state('sensor.daylight', 'dusk') -%} 370 {%- elif is_state('sensor.daylight', 'nautical_dusk') -%} 370 {%- elif is_state('sensor.daylight', 'night_start') and time >= 0 and time < 480 -%} 500 {%- elif is_state('sensor.daylight', 'night_start') and time >= 480 and time < 600 -%} 154 {%- elif is_state('sensor.daylight', 'night_start') and time >= 600 and time < 1110 -%} 181 {%- elif is_state('sensor.daylight', 'night_start') and time >= 1110 and time < 1350 -%} 370 {%- elif is_state('sensor.daylight', 'night_start') and time >= 1350 and time < 1440 -%} 466 {%- elif is_state('sensor.daylight', 'nadir') -%} 466 {%- else -%} 370 {%- endif -%}
Here’s the error:
Invalid config for [automation]: [entity_id] is an invalid option for [automation]. Check: automation->trigger->0->entity_id.
Any ideas?
Posts: 3
Participants: 2