mirror of
https://github.com/stagehacks/Cue-View.git
synced 2026-08-18 20:13:57 +00:00
First Commit
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
exports.defaultName = "PJLink Projector";
|
||||
exports.connectionType = "TCPsocket";
|
||||
exports.heartbeatInterval = 5000;
|
||||
exports.searchOptions = {
|
||||
type: "UDPsocket",
|
||||
searchBuffer: Buffer.from([0x25, 0x32, 0x53, 0x52, 0x43, 0x48, 0x0d]),
|
||||
devicePort: 4352,
|
||||
listenPort: 4352,
|
||||
validateResponse: function(msg, info){
|
||||
return (msg.toString().indexOf("%2ACKN=")>=0);
|
||||
}
|
||||
}
|
||||
exports.defaultPort = 4352;
|
||||
|
||||
exports.ready = function(device){
|
||||
//Power status query
|
||||
//device.send("%1POWR ?\r");
|
||||
}
|
||||
var password = false;
|
||||
|
||||
exports.data = function(device, message){
|
||||
this.deviceInfoUpdate(device, "status", "ok");
|
||||
var msg = message.toString();
|
||||
|
||||
const md5 = require("md5");
|
||||
|
||||
if(msg.substring(0, 8)=="PJLINK 1"){
|
||||
password = md5(msg.substring(9, 17)+"JBMIAProjectorLink")
|
||||
device.send(password+"%1POWR ?\r%1INPT ?\r%1AVMT ?\r%1ERST ?\r%1LAMP ?\r%1NAME ?\r%1INF1 ?\r%1INF2 ?\r%2SNUM ?\r%2SVER ?\r");
|
||||
}
|
||||
if(msg.substring(0, 7)=="%1POWR="){
|
||||
processPJLink(device, msg, this);
|
||||
}
|
||||
if(msg.substring(0, 7)=="%1INPT="){
|
||||
processPJLink(device, msg, this);
|
||||
}
|
||||
if(msg.substring(0, 7)=="%1AVMT="){
|
||||
processPJLink(device, msg, this);
|
||||
}
|
||||
if(msg.substring(0, 7)=="%1ERST="){
|
||||
processPJLink(device, msg, this);
|
||||
}
|
||||
if(msg.substring(0, 7)=="%1LAMP="){
|
||||
processPJLink(device, msg, this);
|
||||
}
|
||||
if(msg.substring(0, 7)=="%1NAME="){
|
||||
processPJLink(device, msg, this);
|
||||
}
|
||||
if(msg.substring(0, 7)=="%1INF1="){
|
||||
processPJLink(device, msg, this);
|
||||
}
|
||||
if(msg.substring(0, 7)=="%1INF2="){
|
||||
processPJLink(device, msg, this);
|
||||
}
|
||||
if(msg.substring(0, 7)=="%2SNUM="){
|
||||
processPJLink(device, msg, this);
|
||||
}
|
||||
if(msg.substring(0, 7)=="%2SVER="){
|
||||
processPJLink(device, msg, this);
|
||||
}
|
||||
}
|
||||
|
||||
function processPJLink(device, str, that){
|
||||
var arr = str.split("%");
|
||||
for(var key in arr){
|
||||
var split = arr[key].split("=");
|
||||
var key = split[0];
|
||||
var value = split[1];
|
||||
|
||||
switch(key){
|
||||
case "1POWR":
|
||||
device.data.power = value;
|
||||
break;
|
||||
case "1INPT":
|
||||
device.data.input = value;
|
||||
break;
|
||||
case "1AVMT":
|
||||
device.data.avmute = value;
|
||||
break;
|
||||
case "1ERST":
|
||||
device.data.fanError = value[0];
|
||||
device.data.lampError = value[1];
|
||||
device.data.tempError = value[2];
|
||||
device.data.coverError = value[3];
|
||||
device.data.filterError = value[4];
|
||||
device.data.otherError = value[5];
|
||||
break;
|
||||
case "1LAMP":
|
||||
device.data.lamp = value.split(" ");
|
||||
break;
|
||||
case "1NAME":
|
||||
device.data.name = value;
|
||||
that.deviceInfoUpdate(device, "defaultName", device.data.name);
|
||||
break;
|
||||
case "1INF1":
|
||||
device.data.info1 = value;
|
||||
break;
|
||||
case "1INF2":
|
||||
device.data.info2 = value;
|
||||
break;
|
||||
case "2SNUM":
|
||||
device.data.serial = value;
|
||||
break;
|
||||
case "2SVER":
|
||||
device.data.version = value;
|
||||
break;
|
||||
}
|
||||
}
|
||||
device.draw();
|
||||
}
|
||||
|
||||
exports.heartbeat = function(device){
|
||||
if(password){
|
||||
device.send(password+"%1POWR ?\r%1INPT ?\r%1AVMT ?\r%1ERST ?\r%1LAMP ?\r%1NAME ?\r%1INF1 ?\r%1INF2 ?\r%2SNUM ?\r%2SVER ?\r");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user