This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

PJLINK to Panasonic Projector
#1
Hello All,



I need to control a Panasonic Projector which is compatible with the PJLINK (TCP/IP) protocol on port 4352.



I will need to send some hex or character commands to the IP 192.168.1.98 port 4352. Please see below example:



Power ON :
CHARACHTER =>    %1POWR(SP)0(CR)
HEX =>   25 31 50 4f 57 52 20 30 0d


Can this be done via an event script triggered by a virtual object?


HomeLynk V3.0 FW:2.4.0

Thank you in advance
Reply
#2
Event script mapped to binary on/off object:
Code:
value = event.getvalue() and 1 or 0
sock = require('socket').tcp()
cmd = '%1POWR ' .. value .. '\r'
sock:settimeout(1)
res, err = sock:connect('192.168.1.98', 4352)

if res then
  res, err = sock:receive(9)

  if res and res == 'PJLINK 0\r' then
    sock:send(cmd)
    res, err = sock:receive(10)
    log('receive reply', res, err)
  else
    log('receive init failed', res, err)
  end
else
  log('connect failed', err)
end

sock:close()
Result and any errors will be visible in Logs tab. You can remove log() calls if everything is working correctly.
Reply
#3
(22.04.2020, 14:55)admin Wrote: Event script mapped to binary on/off object:
Code:
value = event.getvalue() and 1 or 0
sock = require('socket').tcp()
cmd = '%1POWR ' .. value .. '\r'
sock:settimeout(1)
res, err = sock:connect('192.168.1.98', 4352)

if res then
  res, err = sock:receive(9)

  if res and res == 'PJLINK 0\r' then
    sock:send(cmd)
    res, err = sock:receive(10)
    log('receive reply', res, err)
  else
    log('receive init failed', res, err)
  end
else
  log('connect failed', err)
end

sock:close()
Result and any errors will be visible in Logs tab. You can remove log() calls if everything is working correctly.


Thank you Admin. I will try tomorrow.

If I need to send the command ON only when the object has a value 1 (True) then OFF using an other object with value 1 (TRUE) then the code will be like?:
Code:
value = event.getvalue()
sock = require('socket').tcp()
cmd = '%1POWR 1\r'  --OR '%1POWR 0\r' for OFF
sock:settimeout(1)
res, err = sock:connect('192.168.1.98', 4352)

if value and res then
  res, err = sock:receive(9)

  if res and res == 'PJLINK 0\r' then
    sock:send(cmd)
    res, err = sock:receive(10)
    log('receive reply', res, err)
  else
    log('receive init failed', res, err)
  end
else
  log('connect failed', err)
end

sock:close()
Reply
#4
The example already handles this, don't change anything.
Reply


Forum Jump: