16.07.2024, 14:25
Hi!
I have a project with Lutron integration and I follwed the thread below to setup Lutron library.
https://forum.logicmachine.net/showthrea...ght=lutron
As I have a lot of group addresses which requires to send command to Lutron server, I have setup localhost socket inside LM as always, in order to unite the place to open TCP port for Lutron.
My scripts are below.
Event script to simulate Lutron button press and release.
Resident script which collects the udp information and send to Lutron server
(address "10/1/2" indicates if there is a conection error with Lutron server)
When I execute the event above, this is what I can see in the log.
For some reason, when I send val 18 or 19 to press dim up /down button on lutron
I cannot send button release command (val 20 or 21) within next 20 seconds even though I simulate to press them way earlier than that.
This happens only when I send val 18 or 19 to this event....how am I making the socket stuck?
I have a project with Lutron integration and I follwed the thread below to setup Lutron library.
https://forum.logicmachine.net/showthrea...ght=lutron
As I have a lot of group addresses which requires to send command to Lutron server, I have setup localhost socket inside LM as always, in order to unite the place to open TCP port for Lutron.
My scripts are below.
Event script to simulate Lutron button press and release.
Code:
--1 ALL ON
--2 Reading
--3 Relax
--4 Goodnight
--5 ALL OFF
--18 Dim down
--19 Dim up
--20 Dim down button release (stop dimming)
--21 Dim up button release (stop)
device = '5101'
value = event.getvalue()
if value == 20 then
cmd = '#DEVICE,'..device..',18,4\r\n'
log(cmd..'_dim down↓stop')
elseif value == 21 then
cmd = '#DEVICE,'..device..',19,4\r\n'
log(cmd..'_dim up↑stop')
else
cmd = '#DEVICE,'..device..','..value..',3\r\n'
end
sock = require('socket').udp()
log(cmd..'_sent to udp socket in the event')
sock:sendto(cmd, '127.0.0.1', 5485)
sock:close()
Resident script which collects the udp information and send to Lutron server
(address "10/1/2" indicates if there is a conection error with Lutron server)
Code:
require('user.lutron')
require('socket')
if not server then
server = socket.udp()
server:setsockname('127.0.0.1', 5485)
end
data = server:receive()
if data then
log(data..'_data before sent to lutron tcp')
tcp, err = lutron_login()
if not tcp then
grp.checkwrite('10/0/2', true)
log('no connection to device', err)
end
if tcp == nil then
grp.checkwrite('10/0/2', true)
else
tcp:send(data)
log(data)
os.sleep(0.3)
end
if tcp == nil then
grp.checkwrite('10/0/2', true)
elseif lutron_receive(tcp)~= nil then
if lutron_receive(tcp)[1] ~= nil then
if lutron_receive(tcp)[1]== "no connection to device" then
log(lutron_receive(tcp)[1])
grp.checkwrite('10/0/2', true)
end
end
end
end
When I execute the event above, this is what I can see in the log.
For some reason, when I send val 18 or 19 to press dim up /down button on lutron
I cannot send button release command (val 20 or 21) within next 20 seconds even though I simulate to press them way earlier than that.
This happens only when I send val 18 or 19 to this event....how am I making the socket stuck?