Solved!

Solution was to create a group and perform an action on that:

action: light.turn_on
target:
  entity_id: light.kitchen_cabinet_sink
data_template:
  brightness_pct: "{{100*state_attr('light.kitchen_sink_ceiling','brightness')/255}}"

Original:

Trying to run an automation to match one light’s state (on/off/dim) to another’s. Have this currently:

alias: Sync cabinet lights with sink light
if:
  - condition: device
    type: is_on
    device_id: [something]5710
    entity_id: [something]a438
    domain: light
then:
  - type: turn_on
    device_id: [something]b447
    entity_id: [something]470f
    domain: light
    brightness_pct: 100
else:
  - type: turn_off
    device_id: [something]b447
    entity_id: [something]470f
    domain: light

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:

alias: Sync cabinet lights with sink light
if:
  - condition: device
    type: is_on
    device_id: [something]5710
    entity_id: [something]a438
    domain: light
then:
  - type: turn_on
    device_id: [something]b447
    entity_id: [something]470f
    domain: light
    brightness_pct: {{state_attr("light.kitchen_sink_ceiling", "brightness")}}
else:
  - type: turn_off
    device_id: [something]b447
    entity_id: [something]470f
    domain: light

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.****

  • Rekhyt@lemmy.world
    link
    fedilink
    English
    arrow-up
    4
    ·
    12 days ago

    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 .

    • spongebue@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      12 days ago

      Combining this with similar comments, plus adding in the math to convert to a percent, I tried this:

      brightness_pct: "{{state_attr('light.kitchen_sink_ceiling', 'brightness') | float(0) /255*100}}"
      

      Still getting the same message

      Message malformed: expected float for dictionary value @ data['brightness_pct']
      

      For what it’s worth, if I try to set brightness instead of brightness_pct, I get a different message

      Message malformed: extra keys not allowed @ data['brightness']
      

      (I’m assuming that device just doesn’t accept a brightness attribute - not a big deal to math it out though)

      • spongebue@lemmy.worldOP
        link
        fedilink
        English
        arrow-up
        2
        ·
        12 days ago

        Taking a different approach of starting simple and working up,

        100.0 works

        {{100.0}} does not work

        “{{100.0}}” also does not work