@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