That works fine to turn the lights on or off, and I have triggers in the automation for that and changes in brightness. But using a non-static number for brightness_pct (yes, I know I'll probably have to math the 0-100 scale instead of 0-255) is giving me trouble. When I try something like this:
I have also tried {{states.light.kitchen_sink_ceiling.attributes.brightness}} instead. Both seem to have the correct value when I play around in the developer tools. But when I put it in the automation, I get an error that a float value was expected. I see some similar issues online, but it always seems to be in a different context and people fix it by changing some value I never had.****
Out of curiosity, is it something as simple as needing to wrap the template in quotes? I may be mixing up my YAML with the Ansible work I've been doing, but I think you need to have templates double quoted like this in order to resolve the jinja2 properly: "{{ state_attr('light.etc', 'brightness') }}
I don't think you need the quotes in the Templates section of dev tools but you do in YAML files. I could be wrong though, let me know if you try it.
Definitely use the state_attr() form over states.etc.etc form. I think there's something about how HA handles startup that may mess with templates if you use states.etc.etc
.
That, plus a couple other things I saw in different places, ended up doing exactly what I wanted! I posted my final solution above. Thanks for finding a piece to the puzzle!
That just might work! It's definitely an easy way to control both at the same time. I just need to figure out a way to change the group's dimness when the dimness on one light's physical switch (a Kasa, unlike the Zigbee one next to it). Maybe an automation for that, targeting the group instead of a single device
Oh.. I think you also need double quotes around template brackets when used as the value in a service call..? Which conflicts with the quotes around the entity and attribute so just use single quotes there.
Just whipped up a partial example with my living room lights.
It is missing a trigger and an else butI focused on theactionyou had trouble with.
Using brightness instead of brightness_pct seemed simpler. (Or at least if both can usethe same attribute...)
alias: Example
description: ""
trigger: []
condition:
- condition: state
entity_id: light.living_room_floor_lamp_1
state: "on"
action:
- action: light.turn_on
metadata: {}
data_template:
brightness: "{{state_attr('light.living_room_floor_lamp_1', 'brightness')}}"
target:
entity_id: light.living_room_floor_lamp_2
mode: single
I think... {{state_attr("light.kitchen_sink_ceiling", "brightness") | float}} also works these days.
My lights return brightness=None when they're off... and None * 1.0 probably breaks something, so this might be more consistent: {{(state_attr("light.kitchen_sink_ceiling", "brightness") or 0) | float}}
PS: I can't say much about brightness_pct, I normally use brightness instead (0-255).
You’ll need to use | float(0) in templates. All state values and attributes start out as strings. Also setting a default value in the float(#) cast will ensure templates don’t break when the value is invalid.
That means use this style:
{{ state\_attr("light.kitchen\_sink\_ceiling", "brightness") | float(0) }}