mirror of
https://github.com/stagehacks/Cue-View.git
synced 2026-08-15 02:33:38 +00:00
First Commit
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 3.1 KiB |
Binary file not shown.
@@ -0,0 +1,10 @@
|
||||
|
||||
.warning{
|
||||
color: #e9873a;
|
||||
}
|
||||
.error{
|
||||
color: #ed5f5d;
|
||||
}
|
||||
.ok{
|
||||
color: #79b757;
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
<header>
|
||||
<h1><%= listName %></h1>
|
||||
</header>
|
||||
|
||||
|
||||
<table class="cv-table">
|
||||
<tr>
|
||||
<td>Power</td>
|
||||
<td><div>
|
||||
<% if(data.power==0){ %><span class='error'>OFF</span><% } %>
|
||||
<% if(data.power==1){ %><span class='ok'>ON</span><% } %>
|
||||
<% if(data.power==2){ %><span class='warning'>COOLING DOWN</span><% } %>
|
||||
<% if(data.power==3){ %><span class='warning'>WARMING UP</span><% } %>
|
||||
</div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>AV Mute</td>
|
||||
<td><div>
|
||||
<% if(data.avmute==11){ %><span class='error'>Video Mute</span><% } %>
|
||||
<% if(data.avmute==21){ %><span class='error'>Audio Mute</span><% } %>
|
||||
<% if(data.avmute==31){ %><span class='error'>Video & Audio Mute</span><% } %>
|
||||
<% if(data.avmute==30){ %>...<% } %>
|
||||
</div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Errors</td>
|
||||
<td><div>
|
||||
<% if(data.fanError==1){ %><span class="warning">Fan Warning</span><br><% } %>
|
||||
<% if(data.fanError==2){ %><span class="error">Fan Error</span><br><% } %>
|
||||
|
||||
<% if(data.lampError==1){ %><span class="warning">Lamp Warning</span><br><% } %>
|
||||
<% if(data.lampError==2){ %><span class="error">Lamp Error</span><br><% } %>
|
||||
|
||||
<% if(data.tempError==1){ %><span class="warning">Temp Warning</span><br><% } %>
|
||||
<% if(data.tempError==2){ %><span class="error">Temp Error</span><br><% } %>
|
||||
|
||||
<% if(data.coverError==1){ %><span class="warning">Cover Warning</span><br><% } %>
|
||||
<% if(data.coverError==2){ %><span class="error">Cover Error</span><br><% } %>
|
||||
|
||||
<% if(data.filterError==1){ %><span class="warning">Filter Warning</span><br><% } %>
|
||||
<% if(data.filterError==2){ %><span class="error">Filter Error</span><br><% } %>
|
||||
|
||||
<% if(data.otherError==1){ %><span class="warning">Other Warning</span><br><% } %>
|
||||
<% if(data.otherError==2){ %><span class="error">Other Error</span><br><% } %>
|
||||
</div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Input</td>
|
||||
<td><div>
|
||||
<% if(data.input){ %>
|
||||
<% if(data.input[0]==1){ %>RGB<% } %>
|
||||
<% if(data.input[0]==2){ %>Video<% } %>
|
||||
<% if(data.input[0]==3){ %>Digital<% } %>
|
||||
<% if(data.input[0]==4){ %>Storage<% } %>
|
||||
<% if(data.input[0]==5){ %>Network<% } %>
|
||||
<%= data.input[1] %>
|
||||
<% } %>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
||||
<% if(data.lamp){ %>
|
||||
<% for(var i=0; i<data.lamp.length; i+=2){ %>
|
||||
<tr>
|
||||
<td>Lamp <%= i/2 %></td>
|
||||
<td>
|
||||
<% if(Number(data.lamp[i+1])){ %>
|
||||
<div class='ok'>ON</div>
|
||||
<% }else{ %>
|
||||
<div class='error'>OFF</div>
|
||||
<% } %>
|
||||
</td>
|
||||
</tr>
|
||||
<% } %>
|
||||
<% } %>
|
||||
|
||||
|
||||
<tr>
|
||||
<td>Name</td>
|
||||
<td><div><%= data.name %></div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Info 1</td>
|
||||
<td><div><%= data.info1 %></div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Info 2</td>
|
||||
<td><div><%= data.info2 %></div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Serial Number</td>
|
||||
<td><div><%= data.serial %></div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Version</td>
|
||||
<td><div><%= data.version %></div></td>
|
||||
</tr>
|
||||
</table>
|
||||
@@ -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