Logic Machine Forum
Arcam control over ip - Printable Version

+- Logic Machine Forum (https://forum.logicmachine.net)
+-- Forum: LogicMachine eco-system (https://forum.logicmachine.net/forumdisplay.php?fid=1)
+--- Forum: Gateway (https://forum.logicmachine.net/forumdisplay.php?fid=10)
+--- Thread: Arcam control over ip (/showthread.php?tid=1768)



Arcam control over ip - Thinklight - 03.12.2018

Hi,
What I am doing wrong?
I want to control Arcam receiver over IP and put in Command function this code:
Code:
function tcp_arcam(data, ip, port)
 local sock, res, err

 sock = require('socket').tcp()
 sock:settimeout(5)

 res, err = sock:connect(ip, port or 50000)
 
 if res then
   res, err = sock:receive(5)

   if res == 'PJ_OK' then
     sock:send('PJREQ')
     res, err = sock:receive(5)

     if res == 'PJACK' then
       sock:send(data)
       res, err = sock:receive(6)
     else
       alert('invalid/no ack: ' .. tostring(res))  
     end
   else
     alert('invalid/no init: ' .. tostring(res))  
   end
 else
   alert('connect failed: ' .. tostring(err))
 end

 sock:close()

 return res, err
end
Then from event script using this:

Code:
cmdon  = string.char(0x21, 0x01, 0x00, 0x01, 0xF0, 0x0D)
cmdoff = string.char(0x21, 0x01, 0x00, 0x00, 0xF0, 0x0D)
ip = '192.168.11.112'

if (event.getvalue()==true) then
 res, err = tcp_arcam(cmdon, ip)
else
 res, err = tcp_arcam(cmdoff, ip)
os.sleep(2.5)
 res, err = tcp_arcam(cmdoff, ip)
end
log (res, err)

Manual of receiver is her: Manual of control


RE: Arcam control over ip - admin - 04.12.2018

Try this:
Code:
function tcp_arcam(data, ip, port)
  local sock, res, err, len

  sock = require('socket').tcp()
  sock:settimeout(1)

  res, err = sock:connect(ip, port or 50000)
  
  if res then
    -- send data
    sock:send(data)

    -- receive response
    res, err = sock:receive(5)
    if type(res) == 'string' and #res == 5 then
      len = res:byte(5)
      res, err = sock:receive(len + 1)
    else
      alert('receive failed: ' .. tostring(err))
    end
  else
    alert('connect failed: ' .. tostring(err))
  end

  sock:close()

  return res, err
end



RE: Arcam control over ip - Thinklight - 04.12.2018

(04.12.2018, 07:16)admin Wrote: Try this:
Code:
function tcp_arcam(data, ip, port)
 local sock, res, err, len

 sock = require('socket').tcp()
 sock:settimeout(1)

 res, err = sock:connect(ip, port or 50000)
 
 if res then
   -- send data
   sock:send(data)

   -- receive response
   res, err = sock:receive(5)
   if type(res) == 'string' and #res == 5 then
     len = res:byte(5)
     res, err = sock:receive(len + 1)
   else
     alert('receive failed: ' .. tostring(err))
   end
 else
   alert('connect failed: ' .. tostring(err))
 end

 sock:close()

 return res, err
end

I am got nil and timeout. What you think whats wrong?


RE: Arcam control over ip - admin - 04.12.2018

Do you get any entries in alerts?


RE: Arcam control over ip - Thinklight - 04.12.2018

(04.12.2018, 10:01)admin Wrote: Do you get any entries in alerts?

Yes receive filed: timeout


RE: Arcam control over ip - admin - 04.12.2018

Try using IR simulation commands for on/off:
Code:
cmdon  = string.char(0x21, 0x01, 0x08, 0x02, 0x10, 0x7B, 0x0D)
cmdoff = string.char(0x21, 0x01, 0x08, 0x02, 0x10, 0x7C, 0x0D)



RE: Arcam control over ip - Thinklight - 04.12.2018

(04.12.2018, 10:16)admin Wrote: Try using IR simulation commands for on/off:
Code:
cmdon  = string.char(0x21, 0x01, 0x08, 0x02, 0x10, 0x7B, 0x0D)
cmdoff = string.char(0x21, 0x01, 0x08, 0x02, 0x10, 0x7C, 0x0D)

It's working. Smile


RE: Arcam control over ip - Thinklight - 05.12.2018

Some ideas how need to get status of Arcam in LM:

It is possible that the state of the AV may be changed as a result of user input via the front panel buttons or via the IR remote control. Any change
resulting from these inputs is relayed to the RC using the appropriate message type.
For example, if the user changed the front panel display brightness using the DISPLAY button on the front panel, a display message (defined below)
would be sent to the RC. A similar action would be taken for all other state changes (including decode mode changes).


RE: Arcam control over ip - admin - 07.12.2018

For this you will need a resident script to constantly poll status values from remote host.