This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

Hue Brightness feedback
#61
Thank you admin

it worked just one time then this error replyed

Code:
123
Resident script:32: Expected value but found T_END at character 1 stack traceback: [C]: in function 'decode'


this is my full resident feedbac script

Code:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
-- 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   ['Schlafzimmer'] = {state = '10/1/27', bri = '10/1/15', rgb = 'x/x/x', ct = '32/1/21', statevalue = '', brivalue = '', colorvalue = ''},   ['Laura Wand Links'] = {state = '32/1/7', bri = '32/1/9', rgb = '32/1/16', statevalue = '', brivalue = '', colorvalue = ''},   ['Laura Wand Rechts'] = {state = '32/1/8', bri = '32/1/10', rgb = '', statevalue = '', brivalue = '', colorvalue = ''},   ['Küche Led'] = {state = '32/1/11', bri = '32/1/13', rgb = '10/1/5', statevalue = '', brivalue = '', colorvalue = ''},   ['Küche indirekt'] = {state = '32/1/12', bri = '10/1/3', rgb = '32/1/14', statevalue = '', brivalue = '', colorvalue = ''},   ['Esstisch'] = {state = '10/1/157', bri = '10/1/159', rgb = 'x/x/x', statevalue = '', brivalue = '', colorvalue = ''},   ['Laura Zelt'] = {state = '10/1/25', bri = 'x/x/x', rgb = 'x/x/x', statevalue = '', brivalue = '', colorvalue = ''},   ['Wohnzimmer Links'] = {state = '32/1/3', bri = '32/1/5', rgb = 'x/x/x', statevalue = '', brivalue = '', colorvalue = ''},   ['Wohnzimmer Rechts'] = {state = '32/1/4', bri = '32/1/6', rgb = 'x/x/x', statevalue = '', brivalue = '', colorvalue = ''},   ['Kinderzimmer Links'] = {state = '32/1/17', bri = '32/1/19', rgb = 'x/x/x', statevalue = '', brivalue = '', colorvalue = ''},   ['Kinderzimmer Rechts'] = {state = '32/1/18', bri = '32/1/20', rgb = 'x/x/x', statevalue = '', brivalue = '', colorvalue = ''},   ['Nachtlicht'] = {state = '10/1/57', bri = '10/1/59', rgb = 'x/x/x', statevalue = '', brivalue = '', colorvalue = ''},   ['Küche Theke'] = {state = '10/1/161', bri = '10/1/163', rgb = 'x/x/x', statevalue = '', brivalue = '', colorvalue = ''} } -- Set polling interval in seconds interval = 1 -- Use logging logging = false -- Load needed lib's 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.write(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       if item.state.bri then         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'] or 0             if currentvalue ~= item.state.bri then               grp.write(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       end             -- color temperature       name = addressmapping[item.name]       if name and item.state.ct then         addr = addressmapping[item.name]['ct']         if addr and addr ~= '' then           newvalue = math.floor(1000000 / item.state.ct)           currentvalue = addressmapping[item.name]['ctvalue']           if currentvalue ~= newvalue then             grp.update(addr, newvalue)             addressmapping[item.name]['ctvalue'] = newvalue             if logging == true then               log('lamp ' .. item.name .. ' color temperature is: ' .. newvalue .. ' K')             end           end         end       end           --Color       if item.state.ct or item.state.xy then         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.checkwrite(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.write(addr, colortemp)                 addressmapping[item.name]['colorvalue'] = colortemp                 if logging == true then                   log('lamp ' .. item.name .. ' color is: ' .. colortemp)                 end               end             end           end         end       end     end   end   -- Delay loop   os.sleep(interval) end
Reply
#62
I think you use an older version of the user.hue

Can you check if your function getHueLights() matches the one below? Especially for return table.concat(response)

Code:
123456789101112131415
function getHueLights()   local response = {}   body_searchHueLights= ''   socket.http.request({   url = "http://"..ip_add.."/api/"..user.."/lights",   method = 'GET',     sink = ltn12.sink.table(response),   headers = {       ['content-length'] = #body_searchHueLights,       ['content-type'] = 'application/json',   },       source = ltn12.source.string(body_searchHueLights),   })   return table.concat(response) end
Reply
#63
Hmm strage behavior,

now it works without any error. User.hue function is the same. I user your V3.

The last time this Error appeared was yesterday 22:30, i did not change anything.

What i notice is when i add a new light ist takes some time to recorgnize till states would written on objects. Is there something like a timeouot or value check before writing to objects ?

Anyway thank you admin and Erwin for your Work

BR
Reply
#64
(09.06.2020, 08:24)Firechief Wrote: Ok, got it working now!

Thx for the help
Can u pls tell me How run the Bridge setup ()  and how to control hue lights with LM
Reply
#65
Hello
The control of Philips Hue lamps via the fabrscript is working.
But how can I control tunable white lamp or how is the script to do this for a single lamp
So that I can change the color temperature.
Could someone help me with this I would need the script for this (hue commands)
Reply
#66
@ Erwin,

I've installed a few (13) new Hue lamps and i'm trying to discover their lampnumbers via the discover script. I get a return in the log, but not all lamps are there. Any idea?

Code:
123456789101112131415161718192021222324252627282930313233343536373839404142434445
Hue discovery 24.03.2023 08:18:54 * string: 192.168.100.187 Hue discovery 24.03.2023 08:18:54 * table: [1]   * string: [{"error":{"type":101,"address":"","description":"link button not pressed"}}] Hue discovery 24.03.2023 08:18:55 * table: [1]   * string: [{"success":{"/lights":"Searching for new devices"}}] Hue discovery 24.03.2023 08:18:55 string: { “1":{"state":{"on":false,"bri":254,"hue":41490,"sat":78,"effect":"none","xy":[0.3116,0.3277],"ct":153,"alert":"select","colormode":"ct","mode":"homeautomation","reachable":true},"swupdate":{"state":"noupdates","lastinstall":"2022-12-03T14:06:43"},"type":"Extended color light”,"name":"Led terras”, "modelid":"LST004","manufacturername":"Signify Netherlands B.V.","productname":"Hue lightstrip outdoor”,"capabilities":{"certified":true,"control":{"mindimlevel":2000,"colorgamuttype":"C","colorgamut":[[0.6915,0.3083],[0.1700,0.7000],[0.1532,0.0475]],"ct":{"min":153,"max":500}},"streaming":{"renderer":true,"proxy":true}},"config":{"archetype":"huelightstrip","function":"mixed","direction":"omnidirectional","startup":{"mode":"powerfail","configured":true}},"uniqueid":"00:17:88:01:06:6a:54:98-0b","swversion":"1.101.2","swconfigid":"D771FA32","productid":"Philips-LST004-1-LedStripsOutv1"}, "3":{"state":{"on":false,"bri":254,"hue":41432,"sat":75,"effect":"none","xy":[0.3143,0.3302],"ct":156,"alert":"none","colormode":"ct","mode":"homeautomation","reachable":true},"swupdate":{"state":"noupdates","lastinstall":"2022-12-03T14:00:15"},"type":"Extended color light","name":"Keuken Werkblad R”, "modelid":"LCA001","manufacturername":"Signify Netherlands B.V.","productname":"Hue color lamp”,"capabilities":{"certified":true,"control":{"mindimlevel":200,"maxlumen":800,"colorgamuttype":"C","colorgamut":[[0.6915,0.3083],[0.1700,0.7000],[0.1532,0.0475]],"ct":{"min":153,"max":500}},"streaming":{"renderer":true,"proxy":true}},"config":{"archetype":"sultanbulb","function":"mixed","direction":"omnidirectional","startup":{"mode":"powerfail","configured":true}},"uniqueid":"00:17:88:01:06:2e:13:af-0b","swversion":"1.101.2","swconfigid":"3C05E7B6","productid":"Philips-LCA001-5-A19ECLv6"}, "4":{"state":{"on":false,"bri":254,"hue":41432,"sat":75,"effect":"none","xy":[0.3143,0.3302],"ct":156,"alert":"none","colormode":"ct","mode":"homeautomation","reachable":true},"swupdate":{"state":"noupdates","lastinstall":"2022-12-03T14:00:25"},"type":"Extended color light","name":"Keuken Werkblad L”, "modelid":"LCA001","manufacturername":"Signify Netherlands B.V.","productname":"Hue color lamp”,"capabilities":{"certified":true,"control":{"mindimlevel":200,"maxlumen":800,"colorgamuttype":"C","colorgamut":[[0.6915,0.3083],[0.1700,0.7000],[0.1532,0.0475]],"ct":{"min":153,"max":500}},"streaming":{"renderer":true,"proxy":true}},"config":{"archetype":"sultanbulb","function":"mixed","direction":"omnidirectional","startup":{"mode":"powerfail","configured":true}},"uniqueid":"00:17:88:01:06:2c:ef:60-0b","swversion":"1.101.2","swconfigid":"3C05E7B6","productid":"Philips-LCA001-5-A19ECLv6"}, "5":{"state":{"on":false,"bri":254,"hue":8632,"sat":117,"effect":"none","xy":[0.4425,0.4060],"ct":343,"alert":"select","colormode":"ct","mode":"homeautomation","reachable":true},"swupdate":{"state":"noupdates","lastinstall":"2023-02-16T16:21:36"},"type":"Extended color light","name":"Douche 1”, "modelid":"LCG002","manufacturername":"Signify Netherlands B.V.","productname":"Hue color spot”,"capabilities":{"certified":true,"control":{"mindimlevel":200,"maxlumen":300,"colorgamuttype":"C","colorgamut":[[0.6915,0.3083],[0.1700,0.7000],[0.1532,0.0475]],"ct":{"min":153,"max":500}},"streaming":{"renderer":true,"proxy":true}},"config":{"archetype":"spotbulb","function":"mixed","direction":"downwards","startup":{"mode":"powerfail","configured":true}},"uniqueid":"00:17:88:01:06:bb:4b:ae-0b","swversion":"1.101.10","swconfigid":"0982EB31","productid":"Philips-LCG002-1-GU10ECLv2"}, "6":{"state":{"on":false,"bri":254,"hue":8632,"sat":117,"effect":"none","xy":[0.4425,0.4060],"ct":343,"alert":"select","colormode":"ct","mode":"homeautomation","reachable":true},"swupdate":{"state":"noupdates","lastinstall":"2023-02-16T16:27:01"},"type":"Extended color light","name":"Douche 2”, "modelid":"LCG002","manufacturername":"Signify Netherlands B.V.","productname":"Hue color spot”,"capabilities":{"certified":true,"control":{"mindimlevel":200,"maxlumen":300,"colorgamuttype":"C","colorgamut":[[0.6915,0.3083],[0.1700,0.7000],[0.1532,0.0475]],"ct":{"min":153,"max":500}},"streaming":{"renderer":true,"proxy":true}},"config":{"archetype":"spotbulb","function":"mixed","direction":"downwards","startup":{"mode":"powerfail","configured":true}},"uniqueid":"00:17:88:01:08:41:77:f1-0b","swversion":"1.101.10","swconfigid":"0982EB31","productid":"Philips-LCG002-1-GU10ECLv2"}, "7":{"state":{"on":false,"alert":"none","mode":"homeautomation","reachable":true},"swupdate":{"state":"noupdates","lastinstall":"2021-12-12T13:50:30"},"type":"On/Off plug-in unit","name":"Hue Smart plug”, "modelid":"LOM002","manufacturername":"Signify Netherlands B.V.","productname":"Hue Smart plug”,"capabilities":{"certified":true,"control":{},"streaming":{"renderer":false,"proxy":false}},"config":{"archetype":"plug","function":"functional","direction":"omnidirectional","startup":{"mode":"safety","configured":true}},"uniqueid":"00:17:88:01:08:62:9c:b7-0b","swversion":"1.93.6","swconfigid":"7A0791B1","productid":"SmartPlug_OnOff_v01-00_02"}, "10":{"state":{"on":false,"bri":254,"hue":41432,"sat":75,"effect":"none","xy":[0.3143,0.3302],"ct":156,"alert":"select","colormode":"ct","mode":"homeautomation","reachable":true},"swupdate":{"state":"noupdates","lastinstall":"2022-12-08T15:39:53"},"type":"Extended color light","name":"Keuken Wasbak”, "modelid":"929003116101","manufacturername":"Signify Netherlands B.V.","productname":"Perifo linear light bar”,"capabilities":{"certified":true,"control":{"mindimlevel":100,"maxlumen":1700,"colorgamuttype":"C","colorgamut":[[0.6915,0.3083],[0.1700,0.7000],[0.1532,0.0475]],"ct":{"min":153,"max":500}},"streaming":{"renderer":true,"proxy":true}},"config":{"archetype":"ceilinghorizontal","function":"mixed","direction":"downwards","startup":{"mode":"powerfail","configured":true}},"uniqueid":"00:17:88:01:0c:bd:de:f4-0b","swversion":"1.101.5","swconfigid":"83BB01E2","productid":"3241-3129-1221_HC07_PSG04"}, "11":{"state":{"on":false,"bri":254,"hue":41432,"sat":75,"effect":"none","xy":[0.3143,0.3302],"ct":156,"alert":"select","colormode":"ct","mode":"homeautomation","reachable":true},"swupdate":{"state":"noupdates","lastinstall":"2022-12-08T14:16:02"},"type":"Extended color light","name":"Hanglamp Eiland 2”, "modelid":"929003115901","manufacturername":"Signify Netherlands B.V.","productname":"Perifo cylinder pendant”,"capabilities":{"certified":true,"control":{"mindimlevel":100,"maxlumen":510,"colorgamuttype":"C","colorgamut":[[0.6915,0.3083],[0.1700,0.7000],[0.1532,0.0475]],"ct":{"min":153,"max":500}},"streaming":{"renderer":true,"proxy":true}},"config":{"archetype":"pendantspot","function":"mixed","direction":"downwards","startup":{"mode":"powerfail","configured":true}},"uniqueid":"00:17:88:01:0d:1a:8b:aa-0b","swversion":"1.101.5","swconfigid":"85CF1793","productid":"4422-9556-4251_HC07_PSG04"}, "13":{"state":{"on":false,"bri":254,"hue":41432,"sat":75,"effect":"none","xy":[0.3143,0.3302],"ct":156,"alert":"select","colormode":"ct","mode":"homeautomation","reachable":true},"swupdate":{"state":"noupdates","lastinstall":"2023-01-04T16:43:50"},"type":"Extended color light","name":"Hanglamp Eiland 1”, "modelid":"929003115901","manufacturername":"Signify Netherlands B.V.","productname":"Perifo cylinder pendant”,"capabilities":{"certified":true,"control":{"mindimlevel":100,"maxlumen":510,"colorgamuttype":"C","colorgamut":[[0.6915,0.3083],[0.1700,0.7000],[0.1532,0.0475]],"ct":{"min":153,"max":500}},"streaming":{"renderer":true,"proxy":true}},"config":{"archetype":"pendantspot","function":"mixed","direction":"downwards","startup":{"mode":"safety","configured":true}},"uniqueid":"00:17:88:01:0c:69:83:d8-0b","swversion":"1.101.5","swconfigid":"85CF1793","productid":"4422-9556-4251_HC07_PSG04"}, "14":{"state":{"on":false,"bri":254,"hue":39391,"sat":14,"effect":"none","xy":[0.3682,0.3715],"ct":230,"alert":"select","colormode":"xy","mode":"homeautomation","reachable":true},"swupdate":{"state":"noupdates","lastinstall":"2023-03-24T07:16:31"},"type":"Extended color light","name":"Eetplaats Balk”, "modelid":"5060730P7_01","manufacturername":"Signify Netherlands B.V.","productname"...

As you can see there are ... but even that lamp is not complete.

user.lua: V5

Kind regards
Novice DIY with a HL and KNX basics trying to ...
Reply
#67
Each log entry is limited to 8KB. You can decode the JSON string and log each entry separately:
Code:
1234
data = require('json').decode(response) for key, value in pairs(data) do   log(key, value) end
Reply
#68
(27.03.2023, 05:28)admin Wrote: Each log entry is limited to 8KB. You can decode the JSON string and log each entry separately:
Code:
1234
data = require('json').decode(response) for key, value in pairs(data) do   log(key, value) end

Do i add this to the current hue discovery script?

Kind regards.
Novice DIY with a HL and KNX basics trying to ...
Reply
#69
Yes, instead of logging the JSON string response from getHueLights() use the above code. Replace response variable with the variable name that getHueLights() returns.
Reply
#70
Admin,

I'm sorry, but as stated in my signature i am a novice at this.

So i've made a new "test" script and pasted the code in there, but nothing shows up.
I do get an error in the error log:

Code:
1234
Hue Discovery Test 28.03.2023 11:22:58 Resident script:2: bad argument #1 to 'decode' (string expected, got nil) stack traceback: [C]: in function 'decode'
 So cleary i'm doing something wrong but i have no clue.  Confused
Novice DIY with a HL and KNX basics trying to ...
Reply
#71
Post your full script
Reply
#72
Code:
12345
require('user.hue') data = require('json').decode(response) for key, value in pairs(data) do   log(key, value) end
Novice DIY with a HL and KNX basics trying to ...
Reply
#73
Try this:
Code:
123456
require('user.hue') response = getHueLights() data = require('json').decode(response) for key, value in pairs(data) do   log(key, value) end
Reply
#74
This works! Thx a lot!

Admin,

This seems to log only 10 out of my 19 lamps...

Admin,

Disregard my remark, it seems only 10 are shown in the log at the script itself. In the SE general log they are all there.
Novice DIY with a HL and KNX basics trying to ...
Reply
#75
Helo, 

Can you help me with the script to control the RGB color of a group in Philips Hue. I followed your recommendations for on/off, brightness and color temperature and everything works very well. But I can't handle the RGB of a group. I am using user.hue v5

Thank you in advance!

Best regards,
Nayden
Reply
#76
Are you using setRGBGroup(Group_num,RGB_variable)?
Reply
#77
(20.04.2023, 12:12)Erwin van der Zwart Wrote: Are you using setRGBGroup(Group_num,RGB_variable)?

Hello,

I haven't tried that. In the forum I can't find an example script using the setRGBGroup(Group_num,RGB_variable). I'm an electrical engineer and now styding lua scripting. I used the RGB commands in the HUE for one lamp and everything works perfectly. But for a group I can't set it up. 

Best regards,

Nayden Kereshki
Reply
#78
Code:
12345678910
--Control HUE group from RGB object (color) (use as event based script) require('user.hue') value = event.getvalue() group_id = 1 if value == 0 then   body_msg = '{"on":false}'   sendToGroup(lamp_id,body_msg) else   setRGBGroup(group_id,value) end
Reply
#79
(21.04.2023, 06:45)Erwin van der Zwart Wrote:
Code:
12345678910
--Control HUE group from RGB object (color) (use as event based script) require('user.hue') value = event.getvalue() group_id = 1 if value == 0 then   body_msg = '{"on":false}'   sendToGroup(lamp_id,body_msg) else   setRGBGroup(group_id,value) end

Hello, Erwin

Thank you very much for the help. It works exactly as I expected. I don't know what we would do without your support.

Best regards,
Nayden Kereshki
Reply
#80
(05.09.2020, 20:24)Erwin van der Zwart Wrote: Hi,

You have 2 mistakes in your script:
Code:
12345678910111213
response = sendToGroup(group_id,body_msg) should be response = sendToGroup(Group_id,body_msg) and response = sendToGroup(Group_num,body_msg) should be response = sendToGroup(Group_id,body_msg)
I just tested with my latest user lib and this command and works perfect
Code:
123456
require('user.hue') require('json') --log(json.pdecode(getHueGroups())) -- enable to check group number --setBrightnessGroup(1,100) -- Group, brightness in % setBrightnessCTGroup(1,60,2000) -- Group, brightness in %, CT in Kelvin

BR,

Erwin

Hi Erwin,

finaly i found time to Solve Group Control, unfortunanly i cant control Groups by Group Adress cause the Brightness Value is the Script by 100%. How could i change that ?

NVM!!! Sometimes the Solutuoion is just to easy ( shame on me )

of course it has to be like this

require('user.hue')
require('json')
--log(json.pdecode(getHueGroups())) -- enable to check group number
value = event.getvalue() -- 1 byte unsigned integer scale 0 - 100
setBrightnessGroup(3,value) -- Group, brightness in %
--setBrightnessCTGroup(1,60,2000) -- Group, brightness in %, CT in Kelvin
Reply


Forum Jump: