Quantcast
Channel: Configuration - Home Assistant Community
Viewing all articles
Browse latest Browse all 96121

Advanced Light template Help

$
0
0

@Bigrob8181 wrote:

I am working on creating a light template (for philips hue bulbs) utilizing zha groups. I have it mostly working, but am struggling to get color working, and i think it has to do with formatting.
args should be a list, and the macro is returning a list [x, y, transition]
I know with template lights, the variables are supposed to be contained within double quotes, and i think somewhere this is where it is failing. (h and s are from the color picker)
The math is all correct, and the returned values work in the dev tools>services.
Any help would be greatly appreciated.

light:
  - platform: template
    lights:
      zha_group_living_room:
        # light.living_room_hue_1, light.living_room_hue_1, light.living_room_hue_1, light.living_room_hue_1
        friendly_name: "Living Room Lights"
        turn_on:
          service: zha.issue_zigbee_group_command
          data:
            group: 0x0001
            cluster_id: 6
            command: 1
            args: []
        turn_off:
          service: zha.issue_zigbee_group_command
          data:
            group: 0x0001
            cluster_id: 6
            command: 0
            args: []
        set_level:
          service: zha.issue_zigbee_group_command
          data_template:
            group: 0x0001
            cluster_id: 8
            command: 4
            args:
              - "{{ brightness }}"  # level (0-255)
              - 5                   # transition time
        set_color:
          service: zha.issue_zigbee_group_command
          data_template:
            group: 0x0001
            cluster_id: 768
            command: 7
            args: >-
              {%- macro hs_to_xy(iH, iS, iV, transition) -%}
                  {# Convert from hue/saturation to RGB #}
                  {# Hue is scaled 0-360 #}
                  {# Sat is scaled 0-100 #}
                  {# Val is scaled 0-100 #}
                  {%- set h = iH / 360 -%}
                  {%- set s = iS /100 -%}
                  {%- set v = iV / 100 -%}
                  {%- if s == 0.0: -%}
                  {%-     set rgb = v, v, v -%}
                  {%- endif -%}
                  {%- set i = (h*6.0)|int -%}
                  {%- set f = (h*6.0) - i -%}
                  {%- set p = v*(1.0 - s) -%}
                  {%- set q = v*(1.0 - s*f) -%}
                  {%- set t = v*(1.0 - s*(1.0-f)) -%}
                  {%- set i = i%6 -%}
                  {%- if i == 0: -%}
                  {%-     set fRGB = v, t, p -%}
                  {%- elif i == 1: -%}
                  {%-     set fRGB = q, v, p -%}
                  {%- elif i == 2: -%}
                  {%-     set fRGB = p, v, t -%}
                  {%- elif i == 3: -%}
                  {%-     set fRGB = p, q, v -%}
                  {%- elif i == 4: -%}
                  {%-     set fRGB = t, p, v -%}
                  {%- elif i == 5: -%}
                  {%-     set fRGB = v, p, q -%}
                  {%- endif -%}
                  {%- set rgb = ((fRGB[0] * 255)|int, (fRGB[1] * 255)|int, (fRGB[2] * 255)|int) -%}
                  {#{ rgb }#}
                  {# Convert from RGB color to XY color #}
                  {%- set iR = rgb[0] -%}
                  {%- set iG = rgb[1] -%}
                  {%- set iB = rgb[2] -%}
                  {%- if iR + iG + iB == 0: -%}
                  {%-    set xy = 0.0, 0.0, 0 -%}
                  {%- endif -%}
                  {%- set R = iR / 255 -%}
                  {%- set B = iB / 255 -%}
                  {%- set G = iG / 255 -%}
                  {# Gamma correction #}
                  {%- set R = ((R + 0.055) / (1.0 + 0.055) ** 2.4) if (R > 0.04045) else (R / 12.92) -%}
                  {%- set G = ((G + 0.055) / (1.0 + 0.055) ** 2.4) if (G > 0.04045) else (G / 12.92) -%}
                  {%- set B = ((B + 0.055) / (1.0 + 0.055) ** 2.4) if (B > 0.04045) else (B / 12.92) -%}
                  {# Wide RGB D65 conversion formula #}
                  {%- set X = R * 0.664511 + G * 0.154324 + B * 0.162028 -%}
                  {%- set Y = R * 0.283881 + G * 0.668433 + B * 0.047685 -%}
                  {%- set Z = R * 0.000088 + G * 0.072310 + B * 0.986039 -%}
                  {# Convert XYZ to xy #}
                  {%- set x = X / (X + Y + Z) -%}
                  {%- set y = Y / (X + Y + Z) -%}
                  {# Brightness #}
                  {%- set Y = 1 if Y > 1 else Y -%}
                  {%- set brightness = (Y * 255)|round -%}
                  {%- set xy = x|round(3), y|round(3), brightness -%}
                  {#{ xy }#}
                  [{{ (xy[0] * 65535)|int }}, {{ (xy[1] * 65535)|int }}, {{ transition }}]
              {%- endmacro -%}
              "{{ hs_to_xy(h, s, 100, 5) }}"
        set_temperature:
          service: zha.issue_zigbee_group_command
          data_template:
            group: 0x0001
            cluster_id: 768
            command: 10
            args:
              - "{{ color_temp }}"  # color temperature (153-500)
              - 5                   # transition time

Posts: 1

Participants: 1

Read full topic


Viewing all articles
Browse latest Browse all 96121

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>