| 
		
	
	
	
		
	Posts: 23 
	Threads: 7 
	Joined: Aug 2017
	
 Reputation: 
0 
	
	
		Hi control is working but I am get respond with timeout. why?  
Command function:
 Code: function tcp_oppo(data, ip, port)local sock = require('socket').tcp()
 sock:settimeout(3)
 
 local res, err = sock:connect(ip, port or 23)
 
 if res then
 res, err = sock:send('#' .. data .. '\r')
 
 if res then
 res, err = sock:receive('*a')
 else
 alert('send failed: ' .. tostring(err))
 end
 else
 alert('connect failed: ' .. tostring(err))
 end
 
 sock:close()
 
 return res, err
 end
Event:
 ManualCode: ip = '192.168.11.105'
 if (event.getvalue() == true) then
 res, err = tcp_oppo('POW', ip)
 end
 log (res, err)
		
	 
	
	
	
		
	Posts: 8413 
	Threads: 45 
	Joined: Jun 2015
	
 Reputation: 
481 
	
	
		Try adding a new line character when sending: Code: res, err = sock:send('#' .. data .. '\r\n')
		
	 
	
	
	
		
	Posts: 23 
	Threads: 7 
	Joined: Aug 2017
	
 Reputation: 
0 
	
	
		 (04.12.2018, 13:45)admin Wrote:  Try adding a new line character when sending:
 Code: res, err = sock:send('#' .. data .. '\r\n')
 
Nop it`s not hellp in logs I got the same:
 Code: Event for Test 2 (32/5/1) 04.12.2018 16:36:21* arg: 1
 * nil
 * arg: 2
 * string: timeout
 
		
	 
	
	
	
		
	Posts: 8413 
	Threads: 45 
	Joined: Jun 2015
	
 Reputation: 
481 
	
	
		The remote host probably is not closing the socket after command that's why receive all (*a) is not working. You can get partial response like this: Code: function tcp_oppo(data, ip, port)local sock = require('socket').tcp()
 sock:settimeout(3)
 
 local res, err = sock:connect(ip, port or 23)
 
 if res then
 res, err = sock:send('#' .. data .. '\r')
 
 if res then
 res, err, partial = sock:receive('*a')
 else
 alert('send failed: ' .. tostring(err))
 end
 else
 alert('connect failed: ' .. tostring(err))
 end
 
 sock:close()
 
 return res, err, partial
 end
 
 ----------------------------------
 
 ip = '192.168.11.105'
 
 if (event.getvalue() == true) then
 res, err, partial = tcp_oppo('POW', ip)
 end
 log (res, err, partial)
		
	 
	
	
	
		
	Posts: 23 
	Threads: 7 
	Joined: Aug 2017
	
 Reputation: 
0 
	
	
		 (04.12.2018, 14:45)admin Wrote:  The remote host probably is not closing the socket after command that's why receive all (*a) is not working. You can get partial response like this:
 Code: function tcp_oppo(data, ip, port)local sock = require('socket').tcp()
 sock:settimeout(3)
 
 local res, err = sock:connect(ip, port or 23)
 
 if res then
 res, err = sock:send('#' .. data .. '\r')
 
 if res then
 res, err, partial = sock:receive('*a')
 else
 alert('send failed: ' .. tostring(err))
 end
 else
 alert('connect failed: ' .. tostring(err))
 end
 
 sock:close()
 
 return res, err, partial
 end
 
 ----------------------------------
 
 ip = '192.168.11.105'
 
 if (event.getvalue() == true) then
 res, err, partial = tcp_oppo('POW', ip)
 end
 log (res, err, partial)
 
Thanks admin its working I get 'partial' 
How you think how to do to get status of device power when device will be turn on over remote that LM will know of Player status.
	 
		
	 
	
	
	
		
	Posts: 8413 
	Threads: 45 
	Joined: Jun 2015
	
 Reputation: 
481 
	
	
		Upgrade LuaSocket package via System config > System > Packages:https://dl.openrb.com/lm-18-imx6/pkg/lua...1_imx6.ipk 
Then replace receive part with:
 Code: res, err, partial = sock:receive('*r')
		
	 
	
	
	
		
	Posts: 23 
	Threads: 7 
	Joined: Aug 2017
	
 Reputation: 
0 
	
	
		 (05.12.2018, 08:32)admin Wrote:  Upgrade LuaSocket package via System config > System > Packages:https://dl.openrb.com/lm-18-imx6/pkg/lua...1_imx6.ipk
 
 Then replace receive part with:
 
 Code: res, err, partial = sock:receive('*r')
 
OK that working now I get sting in res. 
How do that I get status of player in KNX objekt about power status. I mean that sometime can be that player will be turn on from original remote control I need to know. 
Thanks.
	 
		
	 
	
	
	
		
	Posts: 8413 
	Threads: 45 
	Joined: Jun 2015
	
 Reputation: 
481 
	
	
		You need to send QPW command then parse the result and update status object if needed. You will need a separate resident script for that. Make sure that you don't use one object for both control and status, otherwise you can get an infinite script loop.
	 
		
	 |