29.11.2022, 09:50
(22.11.2022, 12:29)admin Wrote: Try this, no guarantees that it will work because we don't have any Lutron devices to test. Check Logs for any errors if the script does not work.
Adjust each query call as needed. First argument is the query request (without \r\n, it's added automatically), second argument is the status group address where the new value is written.
Code:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354require('user.lutron') sock, err = lutron_login() if not sock then log('no connection to device', err) os.sleep(5) end function close(err) sock:close() sock = nil log('receive failed', err) end function query(req, out) if not sock then return end sock:send(req .. '\r\n') local res, err = sock:receive() if not res then return close(err) end if res:sub(1, 1) ~= '~' then return close('invalid reply ' .. res) end if res:sub(2, #req) ~= req:sub(2) then return close('invalid reply ' .. res) end local val = res:sub(#req + 2) val = tonumber(val) if val then grp.checkupdate(out, val) end end while sock do query('?DEVICE,10,6,3', '1/1/1') query('?DEVICE,10,1,2', '1/1/2') query('?DEVICE,10,3,4', '1/1/3') if sock then os.sleep(5) -- delay between each poll cycle else break end end
The script you have shared worked, but sometimes it goes into the sleep mode or update the status very late. Also How do I get the brightness status through this script. I am using the event based script to send the brightness value command to lutron. Please guide
require('user.lutron')
tcp, err = lutron_login()
if not tcp then
log('no connection to device', err)
end
value = event.getvalue()
value = math.floor(value)
tcp
