Logic Machine Forum
Hue Brightness feedback - 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 Brightness feedback (/showthread.php?tid=890)

Pages: 1 2 3 4


RE: Hue Brightness feedback - MLa - 31.07.2020

(31.07.2020, 07:53)Erwin van der Zwart Wrote: Hi,

I checked and line 21 is handling the response of the function getHueLights() that is located in the user.hue, so i guess you use a older version of the user lib.

Can you try to replace your user.hue with this version? A restart might be required.


BR,

Erwin
Thank you, it's working nowSmile

BR 
Magnus


RE: Hue Brightness feedback - Sral1987 - 02.08.2020

Hi Ervin,

since i update the user.hue to V4 i get this error message every time:
Code:
Resident script:62: attempt to perform arithmetic on a nil value
stack traceback:

this is my resident script:

Code:
-- 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', 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 = ''},
  ['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 = 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.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
      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.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

      -- 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.write(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

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

line 62 is the grp.write, before i used your script in V3.

HW is an HL V1 running LM Firmware 202007 RC2.

BR
Lars


RE: Hue Brightness feedback - Erwin van der Zwart - 02.08.2020

Hi,

Try this: (I added a check to be sure the device supports BR, CT or XY)
Code:
-- 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', 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 = ''},
  ['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.checkwrite(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.checkwrite(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
      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.checkwrite(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
BR,

Erwin


RE: Hue Brightness feedback - Sral1987 - 09.08.2020

Thank you Erwin. No more errors. Big Grin 

I saw in the user.hue an Line send to Group. Have you any scripts to controll an entire Hue Group ?

At the moment i control a Group that each Light has an own event based script wich is triggerd by the same tag behind the KNX Group adress.


RE: Hue Brightness feedback - Erwin van der Zwart - 10.08.2020

Hi,

Yes you can do that, in the user.hue there are already 2 functions to use for group commands, getHueGroups() and sendToGroup()

First you have to get the groups by this command:
Code:
--Get all group information
require('user.hue')
-- get all lights from bridge
result = getHueGroups()
log(result)
When you know the group ID you can control it with:
Code:
require('user.hue')
value = event.getvalue()
group_id = 1 -- change this ID to your actual group, see getHueGroups() result
if value == true then
  body_msg = '{"on":true}'
  sendToGroup(group_id,body_msg)
else
  body_msg = '{"on":false}'
  sendToGroup(group_id,body_msg)
end
BR,

Erwin


RE: Hue Brightness feedback - Sral1987 - 05.09.2020

Hi Ervin,

thank you for your help. The Script for group switching works perfect. I tried the same with brigtness but had no luck. Just change the script from lampID to GroupID didn´t work.

Do you have any scripts for controlling the Brightness, RGB an CT for Group´s with Feedback ?

Is there a chance that upcomming releases of W4K Firmware have an nativ integration of Philips HUE ?

BR,

Lars


RE: Hue Brightness feedback - Erwin van der Zwart - 05.09.2020

Did you also called the function sendToGroup?

No I don’t think so, i have not seen any development in that direction, they work on speech control and new mobile app at this moment. Maybe i will start a new project to build a app for HUE this winter, but I don’t have time until November this year..

BR,

Erwin


RE: Hue Brightness feedback - Sral1987 - 05.09.2020

I Tried this with no effect

Code:
--Control HUE from byte object (brightness) (use as event based script)
require('user.hue')
value = event.getvalue()  -- 1 byte unsigned integer scale 0 - 100
group_id = 1 -- change this ID to your actual light, see getHueLights() result for lamps or use your app to resolve them
setBrightness(group_id,value)

then i added a function in user.hue with also no luck.

Code:
function setBrightness(Group_id,brightness)
  if brightness == 0 then
      body_msg = '{"on":false}'
      response = sendToGroup(group_id,body_msg)
    return response
  else
    brightness = math.floor((brightness / 1) + 0.5)
    brightness = math.floor((brightness * 2.54) + 0.5)
    --HTTP request send
    body_msg = '{"on":true,"bri":'..brightness..'}'
    response = sendToGroup(Group_num,body_msg)
    return response
  end
end



RE: Hue Brightness feedback - Erwin van der Zwart - 05.09.2020

Hi,

You have 2 mistakes in your script:
Code:
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:
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
.lua   user.hue v5.lua (Size: 11.17 KB / Downloads: 63)

BR,

Erwin


RE: Hue Brightness feedback - Firechief - 08.11.2020

Hi Erwin,

I just configured a group and i can control the group via the group-script. However i can not get the status of this group to update.

Code:
-- 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
  ['Led terras'] = {state = '20/0/1', bri = '20/1/1', rgb = '20/2/1', ct = '20/3/1', statevalue = '', brivalue = '', colorvalue = ''},
  ['Keuken Eiland'] = {state = '20/0/2', bri = '20/1/2', rgb = '20/2/2', statevalue = '', brivalue = '', colorvalue = ''},
  ['Keuken Werkblad R'] = {state = '20/0/3', bri = '20/1/3', rgb = '20/2/3', statevalue = '', brivalue = '', colorvalue = ''},
  ['Keuken Werkblad L'] = {state = '20/0/4', bri = '20/1/4', rgb = '20/2/4', statevalue = '', brivalue = '', colorvalue = ''},
  ['Douche L'] = {state = '20/0/5', bri = '20/1/5', rgb = '20/2/5', statevalue = '', brivalue = '', colorvalue = ''},
  ['Douche R'] = {state = '20/0/6', bri = '20/1/6', rgb = '20/2/6', statevalue = '', brivalue = '', colorvalue = ''},
  ['Keuken Werkblad'] = {state = '20/0/7', bri = '20/1/7', rgb = '20/2/7', statevalue = '', brivalue = '', colorvalue = ''},
}

It's the last line in the code "Keuken Werkblad" The individual lamps "Keuken Werkblad L" & "Keuken Werkblad R" get updated in both "state", "bri" and "rgb"
Can you help me out?


RE: Hue Brightness feedback - admin - 09.11.2020

Erwin's script uses getHueLights() which does not include groups. Try this to get info for both lights and groups together (replace the relevant script part with this):
Code:
-- loop indefenitly
while true do
  reply = getHueLights()
  mylamps = json.decode(reply)

  -- get groups start
  reply = getHueGroups()
  groups = json.pdecode(reply)
  if type(groups) == 'table' then
    for k, v in pairs(groups) do
      mylamps[ k ] = v
    end
  end
  -- get groups end

  for _, item in pairs(mylamps) do



RE: Hue Brightness feedback - Firechief - 09.11.2020

Dear Admin,

I've added these lines to the resident Hue script. Now none of the Hue lamp statusses are updated, neither the brightness nor the rgb. These worked before i added the lines. I do not get log's when switching lamps on or off. No error logs as well. I'm using the v5 user.hue library.



Code:
-- 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
  ['Led terras'] = {state = '20/0/1', bri = '20/1/1', rgb = '20/2/1', ct = '20/3/1', statevalue = '', brivalue = '', colorvalue = ''},
  ['Keuken Eiland'] = {state = '20/0/2', bri = '20/1/2', rgb = '20/2/2', statevalue = '', brivalue = '', colorvalue = ''},
  ['Keuken Werkblad R'] = {state = '20/0/3', bri = '20/1/3', rgb = '20/2/3', statevalue = '', brivalue = '', colorvalue = ''},
  ['Keuken Werkblad L'] = {state = '20/0/4', bri = '20/1/4', rgb = '20/2/4', statevalue = '', brivalue = '', colorvalue = ''},
  ['Douche L'] = {state = '20/0/5', bri = '20/1/5', rgb = '20/2/5', statevalue = '', brivalue = '', colorvalue = ''},
  ['Douche R'] = {state = '20/0/6', bri = '20/1/6', rgb = '20/2/6', statevalue = '', brivalue = '', colorvalue = ''},
  ['Keuken Werkblad'] = {state = '20/0/7', bri = '20/1/7', rgb = '20/2/7', 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)
 
  -- get groups start
  reply = getHueGroups()
  groups = json.pdecode(reply)
  if type(groups) == 'table' then
    for k, v in pairs(groups) do
      mylamps[ k ] = v
    end
  end
  -- get groups end
 
  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


Kind regards

Can it be that there's a typo in the lines?

Code:
-- get groups start
  reply = getHueGroups()
  groups = json.pdecode(reply) -- ==>json.decode(reply) ???
  if type(groups) == 'table' then
    for k, v in pairs(groups) do
      mylamps[ k ] = v
    end
  end
  -- get groups end



RE: Hue Brightness feedback - admin - 09.11.2020

Try this (change line 31): mylamps[ #mylamps +1 ] = v
pdecode is needed for safe deciding in case there's no reply or it is malformed.


RE: Hue Brightness feedback - Firechief - 09.11.2020

Admin,

Individual lamp statusses are updated again, but still no update on the group status, brightness and rgb. Log's are also back now.


RE: Hue Brightness feedback - admin - 09.11.2020

Add log(groups) after pdecode and post what you get in Logs tab.


RE: Hue Brightness feedback - Firechief - 09.11.2020

this is the log:

Code:
* table:
["4"]
  * table:
   ["action"]
    * table:
     ["ct"]
      * number: 153
     ["alert"]
      * string: select
     ["on"]
      * bool: true
     ["bri"]
      * number: 254
     ["colormode"]
      * string: xy
     ["hue"]
      * number: 41435
     ["sat"]
      * number: 77
     ["effect"]
      * string: none
     ["xy"]
      * table:
       [1]
        * number: 0.3129
       [2]
        * number: 0.3291
   ["sensors"]
    * table:
   ["recycle"]
    * bool: false
   ["state"]
    * table:
     ["all_on"]
      * bool: true
     ["any_on"]
      * bool: true
   ["lights"]
    * table:
     [1]
      * string: 4
     [2]
      * string: 3
   ["class"]
    * string: Kitchen
   ["name"]
    * string: Keuken Werkblad
   ["type"]
    * string: Room
["1"]
  * table:
   ["action"]
    * table:
     ["ct"]
      * number: 331
     ["alert"]
      * string: none
     ["on"]
      * bool: false
     ["bri"]
      * number: 254
     ["colormode"]
      * string: xy
     ["hue"]
      * number: 58281
     ["sat"]
      * number: 142
     ["effect"]
      * string: none
     ["xy"]
      * table:
       [1]
        * number: 0.4359
       [2]
        * number: 0.2811
   ["sensors"]
    * table:
   ["recycle"]
    * bool: false
   ["state"]
    * table:
     ["all_on"]
      * bool: false
     ["any_on"]
      * bool: false
   ["lights"]
    * table:
     [1]
      * string: 1
   ["class"]
    * string: Terrace
   ["name"]
    * string: Tuin
   ["type"]
    * string: Room
["2"]
  * table:
   ["action"]
    * table:
     ["on"]
      * bool: false
     ["alert"]
      * string: none
   ["sensors"]
    * table:
   ["recycle"]
    * bool: false
   ["state"]
    * table:
     ["all_on"]
      * bool: false
     ["any_on"]
      * bool: false
   ["lights"]
    * table:
   ["class"]
    * string: Bathroom
   ["name"]
    * string: Badkamer
   ["type"]
    * string: Room
["6"]
  * table:
   ["action"]
    * table:
     ["ct"]
      * number: 343
     ["alert"]
      * string: select
     ["on"]
      * bool: false
     ["bri"]
      * number: 254
     ["colormode"]
      * string: xy
     ["hue"]
      * number: 8597
     ["sat"]
      * number: 121
     ["effect"]
      * string: none
     ["xy"]
      * table:
       [1]
        * number: 0.4452
       [2]
        * number: 0.4068
   ["sensors"]
    * table:
   ["recycle"]
    * bool: false
   ["state"]
    * table:
     ["all_on"]
      * bool: false
     ["any_on"]
      * bool: false
   ["lights"]
    * table:
     [1]
      * string: 5
     [2]
      * string: 6
   ["class"]
    * string: Bathroom
   ["name"]
    * string: Douche
   ["type"]
    * string: Room
["3"]
  * table:
   ["action"]
    * table:
     ["ct"]
      * number: 156
     ["alert"]
      * string: select
     ["on"]
      * bool: true
     ["bri"]
      * number: 254
     ["colormode"]
      * string: ct
     ["hue"]
      * number: 41432
     ["sat"]
      * number: 75
     ["effect"]
      * string: none
     ["xy"]
      * table:
       [1]
        * number: 0.3146
       [2]
        * number: 0.3304
   ["sensors"]
    * table:
   ["recycle"]
    * bool: false
   ["state"]
    * table:
     ["all_on"]
      * bool: true
     ["any_on"]
      * bool: true
   ["lights"]
    * table:
     [1]
      * string: 2
   ["class"]
    * string: Kitchen
   ["name"]
    * string: Keuken Eiland
   ["type"]
    * string: Room



RE: Hue Brightness feedback - admin - 09.11.2020

Try this:
Code:
v.state = v.action
mylamps[ #mylamps +1 ] = v
There's no full state response for groups, only the last sent values.


RE: Hue Brightness feedback - Firechief - 09.11.2020

No change. Group doesn't get updated


RE: Hue Brightness feedback - Sral1987 - 27.11.2020

How do you get CT state in the resident Script ??

I tried adding , ct = x/x/x , after the RGB state valeu but nothing happens.


RE: Hue Brightness feedback - admin - 30.11.2020

Try adding this to the script before -- Color:
Code:
-- 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