![]() |
Hue ledstrip with RGB and Tunable white - Printable Version +- Logic Machine Forum (https://forum.logicmachine.net) +-- Forum: LogicMachine eco-system (https://forum.logicmachine.net/forumdisplay.php?fid=1) +--- Forum: Scripting (https://forum.logicmachine.net/forumdisplay.php?fid=8) +--- Thread: Hue ledstrip with RGB and Tunable white (/showthread.php?tid=1970) |
Hue ledstrip with RGB and Tunable white - DanielB - 15.03.2019 Hi, I have managed to get rgb control work with scripting towards the KNX, but still cant find any script to control Tunable white. Can somebody help me? or is it impossible? ![]() Best regards Daniel RE: Hue ledstrip with RGB and Tunable white - Daniel - 15.03.2019 Hi How do you control the light? Here is script which might help https://forum.logicmachine.net/showthread.php?tid=890&pid=11326#pid11326 BR RE: Hue ledstrip with RGB and Tunable white - DanielB - 15.03.2019 (15.03.2019, 12:36)Daniel. Wrote: Hi I allready checked on that link, but i cant find anything how to control the "kelvin in the white colour" hmmm. I have allready got the RGB control to work but that does not include the control of the white colour. Daniel RE: Hue ledstrip with RGB and Tunable white - Daniel - 15.03.2019 And this is what this script meant to do. It takes color temperature from an 2 byte object and converts it to RGB value. RE: Hue ledstrip with RGB and Tunable white - admin - 15.03.2019 Have a look here: http://rsmck.co.uk/hue It looks like you can send both brightness and color temperature by a single request, you just need to add a new function to the user library. Code: {"ct": 500, "bri": 254} RE: Hue ledstrip with RGB and Tunable white - FatMax - 15.03.2019 HUE uses CT, not the other one you are familiar with. It’s a simple conversion. https://forum.logicmachine.net/showthread.php?tid=1529&highlight=Hcl RE: Hue ledstrip with RGB and Tunable white - DanielB - 19.03.2019 (15.03.2019, 20:15)FatMax Wrote: HUE uses CT, not the other one you are familiar with. It’s a simple conversion. Can you give me an example on how i should put this function in user libraries? and how to set it up in event based?. (Just so i can control Kelvin and brightness from knx) I still dont understand this conversion thing:-) Best regards Daniel RE: Hue ledstrip with RGB and Tunable white - admin - 19.03.2019 Add to user library: Code: function setBrightnessCT(Light_num,brightness,ct) You will need to map an event script to both brightness and color temperature values: Code: require('user.hue) RE: Hue ledstrip with RGB and Tunable white - DanielB - 19.03.2019 (19.03.2019, 09:13)admin Wrote: Add to user library: Thank you very much :-) Now it works like a charm:-) Daniel RE: Hue ledstrip with RGB and Tunable white - DanielB - 20.03.2019 Last question:-) Can anybody help me get feedback for colour temperature for this? I use this script today and get values for on/off, brightness and colour for rgb -- Set name (Lookup in HUE app under light configuration) and feedback adresses (don't change statevalue, brivalue and colorvalue as they are used as memoryfield) addressmapping = { -- Name -- On/Off FB -- Bright FB -- Color FB ['KjkGangstripe'] = {state = '1/5/16', bri = '1/3/20', rgb = '1/7/16', statevalue = '', brivalue = '', colorvalue = ''}, ['Kjkinnredning'] = {state = '1/5/17', bri = '1/6/17', rgb = '1/7/17', statevalue = '', brivalue = '', colorvalue = ''}, -- ['Hue color lamp 3'] = {state = '1/3/3', bri = '1/4/3', rgb = '1/5/3', statevalue = '', brivalue = '', colorvalue = ''}, -- ['Hue color lamp 4'] = {state = '1/3/4', bri = '1/4/4', rgb = '1/5/4', statevalue = '', brivalue = '', colorvalue = ''} } -- Set polling interval in seconds interval = 1 -- Use logging logging = true require('user.hue') require('json') -- loop indefenitly while true do reply = getHueLights() mylamps = json.decode(reply) for _, item in pairs(mylamps) do -- Check if lamp is found by bridge otherwise it make no sense to send commands -- if item.state.reachable == true then -- On/Off name = addressmapping[item.name] if name then addr = addressmapping[item.name]['state'] if addr and addr ~= '' then currentvalue = addressmapping[item.name]['statevalue'] if currentvalue ~= item.state.on then grp.update(addr, item.state.on) addressmapping[item.name]['statevalue'] = item.state.on if logging == true then log('lamp ' .. item.name .. ' state is: ' .. tostring(item.state.on)) end end end end -- Brightness name = addressmapping[item.name] if name then addr = addressmapping[item.name]['bri'] if addr and addr ~= '' then -- Check if lamp is on otherwise overrule BRI value to 0 if item.state.on == false then item.state.bri = 0 end currentvalue = addressmapping[item.name]['brivalue'] if currentvalue ~= item.state.bri then grp.update(addr, math.floor((tonumber(item.state.bri)/2.55) + 0.5)) addressmapping[item.name]['brivalue'] = item.state.bri if logging == true then log('lamp ' .. item.name .. ' brightness is: ' .. math.floor((tonumber(item.state.bri)/2.55) + 0.5) .. ' %') end end end end -- Color name = addressmapping[item.name] if name then addr = addressmapping[item.name]['rgb'] if addr and addr ~= '' then -- Check if lamp is on otherwise overrule color value to 0 if item.state.on == false then colorvalue = 0 end if item.state.colormode == 'xy' then currentvalue = addressmapping[item.name]['colorvalue'] colorvalue = xy_to_rgb(item.state.xy[1],item.state.xy[2],item.state.bri) --colorvalue = xyz_to_rgb((item.state.xy[1] * 100), (item.state.xy[2] * 100)) if currentvalue ~= colorvalue then grp.update(addr, colorvalue) addressmapping[item.name]['colorvalue'] = colorvalue if logging == true then log('lamp ' .. item.name .. ' color is: ' .. colorvalue) end end elseif item.state.colormode == 'ct' then currentvalue = addressmapping[item.name]['colorvalue'] --colortemp = math.floor((item.state.ct / 0.0769) + 0.5) --0.0769230769230769 colortemp = math.abs((item.state.ct - 500) / 2) colortemp = math.floor(colortemp + 0.5) colortemp = 80 + colortemp if colortemp > 255 then colortemp = 255 end r = lmcore.inttohex(255, 1) g = lmcore.inttohex(255, 1) b = lmcore.inttohex(colortemp, 1) rgb = r .. g .. b colortemp = lmcore.hextoint(rgb,3) if currentvalue ~= colortemp then --colortempconverted = ct_to_rgb(colortemp) grp.update(addr, colortemp) addressmapping[item.name]['colorvalue'] = colortemp if logging == true then log('lamp ' .. item.name .. ' color is: ' .. colortemp) end end end end end --end --log('manufacturername = ' .. item.manufacturername) --log('swversion = ' .. item.swversion) --log('type = ' .. item.type) --log('ct = ' .. item.state.ct) --log('reachable = ' .. item.state.reachable) --log('alert = ' .. item.state.alert) --log('on = ' .. item.state.on) --log('bri = ' .. item.state.bri) --log('colormode = ' .. item.state.colormode) --log('hue = ' .. item.state.hue) --log('sat = ' .. item.state.sat) --log('effect = ' .. item.state.effect) --log('x = ' .. item.state.xy[1]) --log('y = ' .. item.state.xy[2]) --log('uniqueid = ' .. item.uniqueid) --log('modelid = ' .. item.modelid) --log('name = ' .. item.name) end -- Delay loop os.sleep(interval) end Thank you for all help :-) RE: Hue ledstrip with RGB and Tunable white - admin - 20.03.2019 Calculate the reverse color temp like this: Code: colortemp = math.floor(1000000 / item.state.ct) Keep in mind that there might be a difference between set and status values due to precision loss during when converting between Mireks and Kelvins. RE: Hue ledstrip with RGB and Tunable white - DanielB - 20.03.2019 (20.03.2019, 08:04)admin Wrote: Calculate the reverse color temp like this: still dont understand how to get this working in my resident script ![]() Sorry for all my questions, but i still got a bit to learn about scripting .-) Daniel |