2293 lines
85 KiB
HTML
2293 lines
85 KiB
HTML
<!--
|
|
Written By: Robert Zmrzli robert@zmrinc.com
|
|
devices.html
|
|
-->
|
|
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>WellPlugs Administrator</title>
|
|
|
|
<style>
|
|
|
|
html, body {
|
|
height: 100%;
|
|
margin: 0;
|
|
}
|
|
|
|
div.helper {
|
|
position: fixed;
|
|
bottom: 0;
|
|
left: 0px;
|
|
}
|
|
|
|
.full-height {
|
|
height: 150%;
|
|
background: yellow;
|
|
}
|
|
|
|
input[type="text"]
|
|
{
|
|
font-size:12px;
|
|
}
|
|
|
|
select.my_dropdown {
|
|
width:100px;
|
|
}
|
|
|
|
/*IE FIX */
|
|
select#my_dropdown {
|
|
width:100px;
|
|
}
|
|
|
|
select:focus#my_dropdown {
|
|
width:100px\9;
|
|
}
|
|
|
|
.small-button {
|
|
border: none;
|
|
color: white;
|
|
padding: 1px 1px;
|
|
text-align: center;
|
|
display: inline-block;
|
|
font-size: 12px;
|
|
margin: 1px 1px;
|
|
cursor: pointer;
|
|
background-color: #00A000;
|
|
height:24px;
|
|
width:60px;
|
|
border-radius: 5px;
|
|
box-shadow: 0 2px #999;
|
|
}
|
|
.small-button:hover {background-color: #808080; font-color: #0000ff}
|
|
|
|
.small-button:active {
|
|
background-color: #00ff00;
|
|
box-shadow: 0 4px #666;
|
|
transform: translateY(2px);
|
|
|
|
}
|
|
|
|
|
|
.wider-button {
|
|
border: none;
|
|
color: white;
|
|
padding: 1px 1px;
|
|
text-align: center;
|
|
display: inline-block;
|
|
font-size: 12px;
|
|
margin: 1px 1px;
|
|
cursor: pointer;
|
|
background-color: #00A000;
|
|
height:24px;
|
|
width:80px;
|
|
border-radius: 5px;
|
|
box-shadow: 0 2px #999;
|
|
}
|
|
</style>
|
|
|
|
|
|
<meta charset="UTF-8" />
|
|
<!--[if lt IE 9]>
|
|
<script src="http://bellacon.com/js/src/excanvas/excanvas_text.js"></script>
|
|
<script src="http://bellacon.com/js/src/excanvas/canvas.text.js"></script>
|
|
<![endif]-->
|
|
|
|
<script src="https://eluxnetworks.net/js/src/teechart.js" type="text/javascript"></script>
|
|
<script
|
|
src="https://eluxnetworks.net/js/src/teechart-extras.js"
|
|
type="text/javascript"
|
|
></script>
|
|
<script src="https://eluxnetworks.net/js/src/jquery-2.1.3.js" type="text/javascript"></script>
|
|
|
|
<script src="https://eluxnetworks.net/js/src/demo.js" type="text/javascript"></script>
|
|
<!-- Bootstrap -->
|
|
<link
|
|
href="https://eluxnetworks.net/js/3rd_party/bootstrap/dist/css/bootstrap.min.css"
|
|
rel="stylesheet"
|
|
/>
|
|
<!-- Font Awesome -->
|
|
<link
|
|
href="https://eluxnetworks.net/js/3rd_party/font-awesome-4.6.3/css/font-awesome-4.6.3/css/font-awesome.min.css"
|
|
rel="stylesheet"
|
|
/>
|
|
<!-- NProgress -->
|
|
<!-- Custom Theme Style -->
|
|
<link href="https://eluxnetworks.net/js/3rd_party/build/css/custom.min.css" rel="stylesheet" />
|
|
<link rel="stylesheet" type="text/css" href="https://eluxnetworks.net/js/src/demo.css" />
|
|
<script src="https://eluxnetworks.net/js/src/date.format.js" type="text/javascript"></script>
|
|
<link
|
|
rel="stylesheet"
|
|
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"
|
|
/>
|
|
|
|
<script
|
|
src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js"
|
|
type="text/javascript"
|
|
></script>
|
|
<script src="https://cdn.jsdelivr.net/pako/1.0.3/pako.min.js"></script>
|
|
<script type="text/javascript">
|
|
var MAXESChart;
|
|
var AsChart;
|
|
var sensed_value_glob = 0;
|
|
var tim_value_glob = 0;
|
|
var chart_index_glob = 0;
|
|
var MAX_POINTS = 3600;
|
|
var start_time = Date.now();
|
|
var GLOB_HEIGHT = "100";
|
|
var fresh = true;
|
|
var secs_in_day = 86400;
|
|
var signature = "devices.htm" + start_time.toString();
|
|
|
|
var Indexes = {
|
|
Maximums_RAW_max_val: 0,
|
|
Maximums_RAW_a: 1,
|
|
Maximums_RAW_b: 2,
|
|
Maximums_RAW_c: 3,
|
|
};
|
|
|
|
|
|
|
|
function sendToBackend(topicl, send_what) {
|
|
// Once a connection has been made, make a subscription and send a message.
|
|
console.log("sendToBackend "+topicl+":" + send_what);
|
|
|
|
if (topicl.substr(topicl.length - 4) == "_cmp") {
|
|
//var djson = new TextDecoder("utf-8").encode(send_what);
|
|
var compressedJSON = pako.deflate(send_what);
|
|
//var message.payloadBytes= compressedJSON;
|
|
message = new Paho.MQTT.Message(compressedJSON);
|
|
message.destinationName = topicl;
|
|
}
|
|
else {
|
|
message = new Paho.MQTT.Message(send_what);
|
|
message.destinationName = topicl;
|
|
}
|
|
client.send(message);
|
|
}
|
|
|
|
function RequestFromDB(group, deployment, location, is_fresh) {
|
|
timee = Date.now();
|
|
user = document.getElementById("user").value;
|
|
key = document.getElementById("ps").value;
|
|
var obj = {
|
|
function: "request_devices",
|
|
group: group,
|
|
deployment: deployment,
|
|
location: location,
|
|
fresh:is_fresh,
|
|
time:timee,
|
|
user:user,
|
|
ps:key,
|
|
signature:signature
|
|
};
|
|
var json = JSON.stringify(obj);
|
|
sendToBackend("/wellget_cmp", json);
|
|
}
|
|
|
|
|
|
function RequestDeploymentProximity() {
|
|
timee = Date.now();
|
|
user = document.getElementById("user").value;
|
|
key = document.getElementById("ps").value;
|
|
deployment = document.getElementById("Deployments").value;
|
|
var obj = {
|
|
function: "request_proximity",
|
|
deployment: deployment,
|
|
time:timee,
|
|
user:user,
|
|
ps:key,
|
|
signature:signature
|
|
};
|
|
var json = JSON.stringify(obj);
|
|
sendToBackend("/wellget_cmp", json);
|
|
}
|
|
|
|
function CopyDeploymentProximity() {
|
|
|
|
$("#Proximity").empty();
|
|
var oldSel = $("#Proximity").get(0);
|
|
|
|
var table = document.getElementById("devices");
|
|
var rowCount = table.rows.length;
|
|
for (var i = 1; i < rowCount; i++) {
|
|
cell = table.rows[i].cells[0];
|
|
if(cell.innerText.length > 0) {
|
|
|
|
var opt = document.createElement('option');
|
|
opt.text = cell.innerText;
|
|
opt.value = cell.innerText;
|
|
oldSel.add(opt, null);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
function WriteDeploymentProximity() {
|
|
timee = Date.now();
|
|
user = document.getElementById("user").value;
|
|
key = document.getElementById("ps").value;
|
|
deployment = document.getElementById("Deployments").value;
|
|
proximity_string = "";
|
|
var proximity_list = $("#Proximity").get(0);
|
|
|
|
|
|
if(proximity_list.length > 0){
|
|
proximity_string = proximity_list[0].innerText;
|
|
for (i = 1; i < proximity_list.length; i++)
|
|
{
|
|
proximity_string = proximity_string +","+proximity_list[i].innerText;
|
|
}
|
|
|
|
}
|
|
|
|
var obj = {
|
|
function: "write_proximity",
|
|
deployment: deployment,
|
|
proximity_string: proximity_string,
|
|
time:timee,
|
|
user:user,
|
|
ps:key,
|
|
signature:signature
|
|
};
|
|
var json = JSON.stringify(obj);
|
|
sendToBackend("/wellget_cmp", json);
|
|
}
|
|
|
|
function RequestFWsUpdate(device_settings) {
|
|
timee = Date.now();
|
|
user = document.getElementById("user").value;
|
|
key = document.getElementById("ps").value;
|
|
group = document.getElementById("group_id").value;
|
|
deployment = document.getElementById("Deployments").value;
|
|
locationn = document.getElementById("Locations").value;
|
|
//lets prevent FW updates to devices lower than 200
|
|
var table = document.getElementById("devices");
|
|
var rowCount = table.rows.length;
|
|
//If all are enabled, request group update, othervise request d
|
|
which_tags = [];
|
|
all_selected = true;
|
|
for (var i = 1; i < rowCount; i++) {
|
|
|
|
cell = table.rows[i].cells[8];
|
|
checkm = cell.children[0];
|
|
if (checkm.checked) {
|
|
cell = table.rows[i].cells[0];
|
|
device_id = parseInt(cell.innerText);
|
|
if (device_id >= 200){ //Prevent updates to older devices
|
|
MAC = table.rows[i].cells[1].innerText;
|
|
//FW = table.rows[i].cells[3].childNodes[0].data;
|
|
var tag_info = MAC;
|
|
which_tags.push(tag_info);
|
|
}
|
|
}
|
|
else {
|
|
all_selected = false;
|
|
}
|
|
}
|
|
|
|
var obj = {
|
|
function: "update_fws",
|
|
group: group,
|
|
deployment: deployment,
|
|
location: locationn,
|
|
time:timee,
|
|
user:user,
|
|
ps:key,
|
|
signature:signature,
|
|
device_settings:device_settings,
|
|
which_tags: which_tags,
|
|
all_selected:all_selected
|
|
};
|
|
|
|
var json = JSON.stringify(obj);
|
|
sendToBackend("/wellget_cmp", json);
|
|
}
|
|
|
|
|
|
function RequestDevsUpdate(device_settings) {
|
|
timee = Date.now();
|
|
user = document.getElementById("user").value;
|
|
key = document.getElementById("ps").value;
|
|
group = document.getElementById("group_id").value;
|
|
deployment = document.getElementById("Deployments").value;
|
|
locationn = document.getElementById("Locations").value;
|
|
|
|
var table = document.getElementById("devices");
|
|
var rowCount = table.rows.length;
|
|
//If all are enabled, request group update, othervise request d
|
|
which_tags = [];
|
|
all_selected = true;
|
|
for (var i = 1; i < rowCount; i++) {
|
|
cell = table.rows[i].cells[8];
|
|
checkm = cell.children[0];
|
|
if (checkm.checked) {
|
|
MAC = table.rows[i].cells[1].innerText;
|
|
//FW = table.rows[i].cells[3].childNodes[0].data;
|
|
var tag_info = MAC;
|
|
which_tags.push(tag_info);
|
|
}
|
|
else {
|
|
all_selected = false;
|
|
};
|
|
}
|
|
|
|
var obj = {
|
|
function: "update_devices",
|
|
group: group,
|
|
deployment: deployment,
|
|
location: locationn,
|
|
time:timee,
|
|
user:user,
|
|
ps:key,
|
|
signature:signature,
|
|
device_settings:device_settings,
|
|
which_tags: which_tags,
|
|
all_selected:all_selected
|
|
};
|
|
|
|
var json = JSON.stringify(obj);
|
|
sendToBackend("/wellget_cmp", json);
|
|
}
|
|
|
|
function DoRefresh() {
|
|
//Lets determine db_file,from_time, to_time from selected options
|
|
|
|
btn = document.getElementById("set_device_s");
|
|
//if (btn.innerText == "Set Devices") { //single
|
|
|
|
groups = document.getElementById("group_id").value;
|
|
deployments = document.getElementById("Deployments").value;
|
|
locations = document.getElementById("Locations").value;
|
|
|
|
RequestFromDB(groups, deployments, locations, fresh);
|
|
//}
|
|
}
|
|
|
|
function ShowDeployment(do_show) {
|
|
var x = document.getElementById("deployment_info");
|
|
var x1 = document.getElementById("deployment_info1");
|
|
|
|
if (do_show == true) {
|
|
x.style.display = "block";
|
|
x1.style.display = "block";
|
|
} else {
|
|
x.style.display = "none";
|
|
x1.style.display = "none";
|
|
}
|
|
}
|
|
|
|
|
|
function DeploymentChange() {
|
|
deployments = document.getElementById("Deployments").value;
|
|
if(deployments == "0" || deployments == "-1" || deployments == "All" || deployments == "") {
|
|
ShowDeployment(false);
|
|
}
|
|
else {
|
|
ShowDeployment(true);
|
|
RequestDeploymentProximity();
|
|
}
|
|
|
|
}
|
|
|
|
function resize() {
|
|
var body = document.body;
|
|
var count = 0;
|
|
//h = Math.min( window.innerHeight, document.body.clientHeight )
|
|
h = window.innerHeight;
|
|
try {
|
|
if (MAXESChart.canvas.clientHeight > 0) count = count + 1;
|
|
if (AsChart.canvas.clientHeight > 0) count = count + 1;
|
|
} catch (err) {
|
|
count = 3;
|
|
}
|
|
|
|
//var devlist = document.getElementById("devslist");
|
|
//devlist.offsetHeight = 50;
|
|
|
|
//how many are visible
|
|
|
|
GLOB_HEIGHT = (h - 2 * 100) / count;
|
|
|
|
//var devs_table = document.getElementById("devslist");
|
|
//devs_table.height = 100%;
|
|
|
|
try {
|
|
MAXESChart.canvas.height = 100;//GLOB_HEIGHT;
|
|
|
|
MAXESChart.canvas.width = body.clientWidth;
|
|
|
|
MAXESChart.bounds.width = MAXESChart.canvas.width - 100;
|
|
MAXESChart.bounds.height = MAXESChart.canvas.height;
|
|
//changeTheme(MAXESChart, "minimal");
|
|
//changeTheme(AsChart, "minimal");
|
|
} catch (err) {}
|
|
}
|
|
|
|
function draw() {
|
|
|
|
console.log("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
|
|
ShowDeployment(false);
|
|
MAXESChart = new Tee.Chart("canvas1");
|
|
console.log(document.getElementById("privilidges").value);
|
|
if (parseInt(document.getElementById("privilidges").value) >0) {
|
|
document.getElementById("DEVICE_ID").readOnly = true;
|
|
document.getElementById("GroupPanel").style.display = 'none';
|
|
document.getElementById("firmware").style.display = 'none';
|
|
document.getElementById("key_panel").style.display = 'none';
|
|
document.getElementById("SSIDSes").style.display = 'none';
|
|
document.getElementById("details1").style.display = 'none';
|
|
document.getElementById("single_info").style.left = '440px';
|
|
document.getElementById("deployment_info").style.left = '960px';
|
|
document.getElementById("deployment_info1").style.left = '870px';
|
|
}
|
|
else {
|
|
document.getElementById("DEVICE_ID").readOnly = false;
|
|
document.getElementById("GroupPanel").style.visibility = 'visible';
|
|
document.getElementById("firmware").style.display = 'visible';
|
|
document.getElementById("key_panel").style.display = 'visible';
|
|
document.getElementById("SSIDSes").style.display = 'visible';
|
|
document.getElementById("details1").style.display = 'visible';
|
|
document.getElementById("single_info").style.left = '540px';
|
|
document.getElementById("deployment_info").style.left = '1160px';
|
|
document.getElementById("deployment_info1").style.left = '1260px';
|
|
}
|
|
ConnectMQTT();
|
|
}
|
|
|
|
|
|
function GraphUpdate(which_Graph, tim_value, sensed_value, series_index) {
|
|
//sensed_value_glob =
|
|
function newData(now) {
|
|
if (!now) now = new Date().getTime();
|
|
}
|
|
if (document.getElementById("live-check").checked == false) {
|
|
which_Graph = "";
|
|
}
|
|
switch (which_Graph) {
|
|
case "PressuresChart":
|
|
chart_index_glob = 0;
|
|
|
|
series = PressuresChart.series.items[series_index];
|
|
|
|
var d = series.data.values,
|
|
x = series.data.x,
|
|
t,
|
|
l = d.length;
|
|
|
|
d[l] = sensed_value;
|
|
x[l] = 1000 * tim_value;
|
|
|
|
if (l > MAX_POINTS) {
|
|
d.shift();
|
|
x.shift();
|
|
}
|
|
|
|
changeTheme(PressuresChart, "minimal");
|
|
PressuresChart.draw();
|
|
requestAnimFrame(newData, PressuresChart, 1);
|
|
|
|
break;
|
|
case "TemperaturesChart":
|
|
chart_index_glob = 2;
|
|
series = TemperaturesChart.series.items[series_index];
|
|
|
|
var d = series.data.values,
|
|
x = series.data.x,
|
|
t,
|
|
l = d.length;
|
|
|
|
d[l] = sensed_value;
|
|
x[l] = 1000 * tim_value;
|
|
|
|
if (l > MAX_POINTS) {
|
|
d.shift();
|
|
x.shift();
|
|
}
|
|
|
|
changeTheme(TemperaturesChart, "minimal");
|
|
TemperaturesChart.draw();
|
|
requestAnimFrame(newData, TemperaturesChart, 1);
|
|
break;
|
|
case "AirQualsChart":
|
|
chart_index_glob = 1;
|
|
series = AirQualsChart.series.items[series_index];
|
|
|
|
var d = series.data.values,
|
|
x = series.data.x,
|
|
t,
|
|
l = d.length;
|
|
|
|
d[l] = sensed_value;
|
|
x[l] = 1000 * tim_value;
|
|
|
|
if (l > MAX_POINTS) {
|
|
d.shift();
|
|
x.shift();
|
|
}
|
|
|
|
changeTheme(AirQualsChart, "minimal");
|
|
AirQualsChart.draw();
|
|
requestAnimFrame(newData, AirQualsChart, 1);
|
|
break;
|
|
case "HumidChart":
|
|
chart_index_glob = 3;
|
|
series = HumidChart.series.items[series_index];
|
|
|
|
var d = series.data.values,
|
|
x = series.data.x,
|
|
t,
|
|
l = d.length;
|
|
|
|
d[l] = sensed_value;
|
|
x[l] = 1000 * tim_value;
|
|
|
|
if (l > MAX_POINTS) {
|
|
d.shift();
|
|
x.shift();
|
|
}
|
|
|
|
changeTheme(HumidChart, "minimal");
|
|
//HumidChart.draw();
|
|
requestAnimFrame(newData, HumidChart, 1);
|
|
break;
|
|
}
|
|
}
|
|
|
|
function showTutorial(name) {
|
|
document.myform.stage.value = name;
|
|
}
|
|
|
|
function ConnectMQTT() {
|
|
// Create a client instance
|
|
//hostname = "a1f5050e4717b47d69fa4ea4262fb425-1493152587.us-east-2.elb.amazonaws.com"; //"127.0.0.1";
|
|
//hostname = "wellnua.com"; //"eluxnetworks.net"; //3.12.6.23";
|
|
hostname = "104.168.190.251"; //"99.105.56.85";
|
|
port = 9001;
|
|
topic = "/wellget";
|
|
console.log("Connecting to: ", hostname);
|
|
client = new Paho.MQTT.Client(
|
|
hostname,
|
|
Number(port),
|
|
signature
|
|
);
|
|
// set callback handlers
|
|
client.onConnectionLost = onConnectionLost;
|
|
client.onMessageArrived = onMessageArrived;
|
|
|
|
// connect the client
|
|
|
|
client.connect({
|
|
onSuccess: onConnect,
|
|
userName: "telegraf",
|
|
password: "well18",
|
|
});
|
|
|
|
// called when the client connects
|
|
function onConnect() {
|
|
// Once a connection has been made, make a subscription and send a message.
|
|
console.log("onConnect");
|
|
client.subscribe("/well_cmp"+signature);
|
|
//client.subscribe("/well");
|
|
console.log("Subscribed to: /well_cmp"+signature);
|
|
message = new Paho.MQTT.Message("Hello");
|
|
message.destinationName = topic;
|
|
client.send(message);
|
|
var from_time = 0; //dummy, not used with "latest"
|
|
var to_time = 0;
|
|
db_file = "latest";
|
|
if (fresh == true) {
|
|
//Request only first time
|
|
groups = "0";//document.getElementById("group_id").value;
|
|
deployments = "0";//document.getElementById("Deployments").value;
|
|
locations = "0";//document.getElementById("Locations").value;
|
|
RequestFromDB(groups, deployments, locations, fresh);
|
|
fresh = false;
|
|
}
|
|
}
|
|
// called when the client loses its connection
|
|
function onConnectionLost(responseObject) {
|
|
if (responseObject.errorCode !== 0) {
|
|
console.log("onConnectionLost:" + responseObject.errorMessage);
|
|
client.connect({
|
|
onSuccess: onConnect,
|
|
userName: "telegraf",
|
|
password: "well18",
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
function AddOrSet(Version) {
|
|
var dropdown = document.getElementById("FWs");
|
|
|
|
// Check if the option already exists
|
|
var existingOption = Array.from(dropdown.options).find(option => option.value === Version);
|
|
|
|
if (existingOption) {
|
|
// If the option exists, select it
|
|
existingOption.selected = true;
|
|
} else {
|
|
// If the option doesn't exist, add it and then select it
|
|
var newOption = document.createElement("option");
|
|
newOption.value = Version;
|
|
newOption.text = Version;
|
|
dropdown.add(newOption);
|
|
newOption.selected = true;
|
|
}
|
|
}
|
|
|
|
// called when a message arrives
|
|
// this can be dump of copressed or uncompressed data, or single time / values entry
|
|
function onMessageArrived(message) {
|
|
json = "";
|
|
dest = message.destinationName;
|
|
console.log(message);
|
|
if (dest.includes("_cmp")){
|
|
//compressed
|
|
var compressedJSON = message.payloadBytes;
|
|
console.log("onMessageArrived:" + compressedJSON.length);
|
|
var djson = pako.inflate(compressedJSON);
|
|
var json = new TextDecoder("utf-8").decode(djson);
|
|
} else {
|
|
//uncompressed
|
|
var json = message.payloadString;
|
|
}
|
|
|
|
console.log(json);
|
|
|
|
if (json.substr(json.length - 1)== "}" && json.substr(0,1)== "{"){
|
|
var obj = JSON.parse(json);
|
|
}
|
|
else {
|
|
showTutorial(json);
|
|
return;
|
|
}
|
|
|
|
if (obj.signature == signature) {
|
|
if (json.includes("Function")) {
|
|
if (obj.Function == "alert") {
|
|
alert(obj.message);
|
|
}
|
|
showTutorial(obj.Function);
|
|
if (obj.Function == "device_report") {
|
|
var settings = obj.settings;
|
|
//"settings": {"time": 1644384794.273, "group_id": 1, "deployment_id": null, "location_id": null, "description": null, "close_to": null, "owner_id": null, "other": null, "fw_version": "2.0.4", "scan_ble_every": 120, "scan_ble_for": 255, "slow_fast_ratio": 255, "nc_report": 255, "reboot": 0, "wifis": "CBX", "wifi_pass": "69696969", "last_ssids": null, "last_btles": null, "led_schema": "FFFFFFFFFFFFFFFFFFFF"}
|
|
MAC = settings["MAC"]
|
|
var x = document.getElementById("caption");
|
|
var last_reboot = 0;
|
|
if (x.innerHTML == "Settings") {
|
|
for (const [key, value] of Object.entries(settings)) {
|
|
switch (key) {
|
|
case "MAC":
|
|
break;
|
|
case "voc0_min":
|
|
case "voc0_max":
|
|
case "voc1_min":
|
|
case "voc1_max":
|
|
case "voc2_min":
|
|
case "voc2_max":
|
|
case "voc3_min":
|
|
case "voc3_max":
|
|
case "voc4_min":
|
|
case "voc4_max":
|
|
case "voc5_min":
|
|
case "voc5_max":
|
|
case "voc6_min":
|
|
case "voc6_max":
|
|
case "voc7_min":
|
|
case "voc7_max":
|
|
case "voc8_min":
|
|
case "voc8_max":
|
|
case "voc9_min":
|
|
case "voc9_max":
|
|
case "radar_max":
|
|
break;
|
|
case "id":
|
|
document.getElementById("DEVICE_ID").value = value;
|
|
break;
|
|
case "led_schema":
|
|
document.getElementById("LEDPATTERN").value = value;
|
|
break;
|
|
case "time":
|
|
document.getElementById("naslov").innerHTML = "Parameters as of: "+ new Date(1000*value);
|
|
last_time = value;
|
|
break;
|
|
case "group_id":
|
|
document.getElementById("group_id").value = value;
|
|
break;
|
|
case "deployment_id":
|
|
document.getElementById("Deployments").value = value;
|
|
break;
|
|
case "location_id":
|
|
document.getElementById("Locations").value = value;
|
|
break;
|
|
case "description":
|
|
document.getElementById("DESCRIPTION").value = value;
|
|
break;
|
|
case "close_to":
|
|
document.getElementById("CLOSETO").value = value;
|
|
break;
|
|
case "owner_id":
|
|
document.getElementById("Owners").value = value;
|
|
break;
|
|
case "other":
|
|
document.getElementById("OTHER").value = value;
|
|
break;
|
|
case "fw_version":
|
|
document.getElementById("FWs").value = value;
|
|
break;
|
|
case "scan_ble_every":
|
|
document.getElementById("BLEScanPeriod").value = value;
|
|
break;
|
|
case "scan_ble_for":
|
|
document.getElementById("BLEScanDuration").value = value;
|
|
break;
|
|
case "temperature_offset":
|
|
document.getElementById("TemperatureOffset").value = value;
|
|
break;
|
|
case "radar_threshold":
|
|
document.getElementById("RadarThreshold").value = value;
|
|
break;
|
|
case "slow_fast_ratio":
|
|
document.getElementById("S2FSR").value = value;
|
|
break;
|
|
case "reporting_period_s":
|
|
document.getElementById("reporting_period_s").value = value;
|
|
break;
|
|
case "nc_report":
|
|
document.getElementById("NCRE").value = value;
|
|
break;
|
|
case "reboot":
|
|
document.getElementById("LAST_REBOOT").value = value;
|
|
last_reboot = value;
|
|
break;
|
|
case "wifis":
|
|
document.getElementById("WIFISSID").value = value;
|
|
break;
|
|
case "wifi_pass":
|
|
document.getElementById("WIFIPASS").value = value;
|
|
break;
|
|
case "last_ssids":
|
|
document.getElementById("WFISS").value = value;
|
|
break;
|
|
case "last_btles":
|
|
document.getElementById("BTISS").value = value;
|
|
break;
|
|
default:
|
|
document.getElementById(key).value = value;
|
|
}
|
|
//console.log(key,value);
|
|
}
|
|
//lets update last_time and last_reboot in table row
|
|
var table = document.getElementById("devices");
|
|
var rowCount = table.rows.length;
|
|
now_time = parseInt(Date.now()/1000);
|
|
for (var i = 1; i < rowCount; i++) {
|
|
if (MAC == table.rows[i].cells[1].innerText) {
|
|
age = now_time - last_time;
|
|
table.rows[i].cells[2].innerText = ShowAge(age);
|
|
if (age < 300)
|
|
table.rows[i].style.backgroundColor = "#90D7FF";
|
|
else
|
|
table.rows[i].style.backgroundColor = "";
|
|
age = now_time - last_reboot;
|
|
table.rows[i].cells[3].innerText = ShowAge(age);
|
|
loc_str = document.getElementById("Locations").options[document.getElementById("Locations").selectedIndex].text;
|
|
table.rows[i].cells[5].innerText = loc_str;
|
|
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (MAC == x.innerHTML) {
|
|
for (const [key, value] of Object.entries(settings)) {
|
|
if (value != 'null'){
|
|
switch (key) {
|
|
case "MAC":
|
|
break;
|
|
case "voc0_min":
|
|
case "voc0_max":
|
|
case "voc1_min":
|
|
case "voc1_max":
|
|
case "voc2_min":
|
|
case "voc2_max":
|
|
case "voc3_min":
|
|
case "voc3_max":
|
|
case "voc4_min":
|
|
case "voc4_max":
|
|
case "voc5_min":
|
|
case "voc5_max":
|
|
case "voc6_min":
|
|
case "voc6_max":
|
|
case "voc7_min":
|
|
case "voc7_max":
|
|
case "voc8_min":
|
|
case "voc8_max":
|
|
case "voc9_min":
|
|
case "voc9_max":
|
|
case "radar_max":
|
|
break;
|
|
case "id":
|
|
document.getElementById("DEVICE_ID").value = value;
|
|
break;
|
|
case "led_schema":
|
|
document.getElementById("LEDPATTERN").value = value;
|
|
break;
|
|
case "time":
|
|
document.getElementById("naslov").innerHTML = "Parameters as of: "+ new Date(1000*value);
|
|
last_time = value;
|
|
break;
|
|
case "group_id":
|
|
document.getElementById("group_id").value = value;
|
|
break;
|
|
case "deployment_id":
|
|
document.getElementById("Deployments").value = value;
|
|
break;
|
|
case "location_id":
|
|
document.getElementById("Locations").value = value;
|
|
break;
|
|
case "description":
|
|
document.getElementById("DESCRIPTION").value = value;
|
|
break;
|
|
case "close_to":
|
|
document.getElementById("CLOSETO").value = value;
|
|
break;
|
|
case "owner_id":
|
|
document.getElementById("Owners").value = value;
|
|
break;
|
|
case "other":
|
|
document.getElementById("OTHER").value = value;
|
|
break;
|
|
case "fw_version":
|
|
document.getElementById("FWs").value = value;
|
|
break;
|
|
case "scan_ble_every":
|
|
document.getElementById("BLEScanPeriod").value = value;
|
|
break;
|
|
case "scan_ble_for":
|
|
document.getElementById("BLEScanDuration").value = value;
|
|
break;
|
|
case "temperature_offset":
|
|
document.getElementById("TemperatureOffset").value = value;
|
|
break;
|
|
case "radar_threshold":
|
|
document.getElementById("RadarThreshold").value = value;
|
|
break;
|
|
case "slow_fast_ratio":
|
|
document.getElementById("S2FSR").value = value;
|
|
break;
|
|
case "reporting_period_s":
|
|
document.getElementById("reporting_period_s").value = value;
|
|
case "nc_report":
|
|
document.getElementById("NCRE").value = value;
|
|
break;
|
|
case "reboot":
|
|
document.getElementById("LAST_REBOOT").value = value;
|
|
last_reboot = value;
|
|
break;
|
|
case "wifis":
|
|
document.getElementById("WIFISSID").value = value;
|
|
break;
|
|
case "wifi_pass":
|
|
document.getElementById("WIFIPASS").value = value;
|
|
break;
|
|
case "last_ssids":
|
|
document.getElementById("WFISS").value = value;
|
|
break;
|
|
case "last_btles":
|
|
document.getElementById("BTISS").value = value;
|
|
break;
|
|
default:
|
|
try {
|
|
document.getElementById(key).value = value;
|
|
} catch (error) {
|
|
console.log("Field not found: ", key);
|
|
}
|
|
|
|
}
|
|
}
|
|
//console.log(key,value);
|
|
}
|
|
//lets update last_time and last_reboot in table row
|
|
var table = document.getElementById("devices");
|
|
var rowCount = table.rows.length;
|
|
now_time = parseInt(Date.now()/1000);
|
|
for (var i = 1; i < rowCount; i++) {
|
|
if (MAC == table.rows[i].cells[1].innerText) {
|
|
age = now_time - last_time;
|
|
table.rows[i].cells[2].innerText = ShowAge(age);
|
|
if (age < 300)
|
|
table.rows[i].style.backgroundColor = "#90D7FF";
|
|
else
|
|
table.rows[i].style.backgroundColor = "";
|
|
age = now_time - last_reboot;
|
|
table.rows[i].cells[3].innerText = ShowAge(age);
|
|
table.rows[i].cells[4].innerText = settings["fw_version"];
|
|
//loc_str = document.getElementById("Locations").text;
|
|
if (document.getElementById("Locations").selectedIndex >=0){
|
|
loc_str = document.getElementById("Locations").options[document.getElementById("Locations").selectedIndex].text;
|
|
table.rows[i].cells[5].innerText = loc_str;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (obj.Function == "live_device_report") {
|
|
var settings = obj.settings;
|
|
//"settings": {"time": 1644384794.273, "group_id": 1, "deployment_id": null, "location_id": null, "description": null, "close_to": null, "owner_id": null, "other": null, "fw_version": "2.0.4", "scan_ble_every": 120, "scan_ble_for": 255, "slow_fast_ratio": 255, "nc_report": 255, "reboot": 0, "wifis": "CBX", "wifi_pass": "69696969", "last_ssids": null, "last_btles": null, "led_schema": "FFFFFFFFFFFFFFFFFFFF"}
|
|
MAC = settings["MAC"]
|
|
var x = document.getElementById("caption");
|
|
var last_reboot = 0;
|
|
if (x.innerHTML == "Settings") {
|
|
for (const [key, value] of Object.entries(settings)) {
|
|
if(value != 'null'){
|
|
switch (key) {
|
|
case "voc0_min":
|
|
case "voc0_max":
|
|
case "voc1_min":
|
|
case "voc1_max":
|
|
case "voc2_min":
|
|
case "voc2_max":
|
|
case "voc3_min":
|
|
case "voc3_max":
|
|
case "voc4_min":
|
|
case "voc4_max":
|
|
case "voc5_min":
|
|
case "voc5_max":
|
|
case "voc6_min":
|
|
case "voc6_max":
|
|
case "voc7_min":
|
|
case "voc7_max":
|
|
case "voc8_min":
|
|
case "voc8_max":
|
|
case "voc9_min":
|
|
case "voc9_max":
|
|
case "radar_max": case "MAC": //lets find row that contains this mac, and paint it red
|
|
break;
|
|
case "id":
|
|
//document.getElementById("DEVICE_ID").value = value;
|
|
break;
|
|
case "led_schema":
|
|
//document.getElementById("LEDPATTERN").value = value;
|
|
break;
|
|
case "time":
|
|
document.getElementById("naslov").innerHTML = "Parameters as of: "+ new Date(1000*value);
|
|
last_time = value;
|
|
break;
|
|
case "group_id":
|
|
//document.getElementById("group_id").value = value;
|
|
break;
|
|
case "deployment_id":
|
|
//document.getElementById("Deployments").value = value;
|
|
break;
|
|
case "location_id":
|
|
//document.getElementById("Locations").value = value;
|
|
document.getElementById("Locations").value = value;
|
|
break;
|
|
case "description":
|
|
document.getElementById("DESCRIPTION").value = value;
|
|
break;
|
|
case "close_to":
|
|
document.getElementById("CLOSETO").value = value;
|
|
break;
|
|
case "owner_id":
|
|
document.getElementById("Owners").value = value;
|
|
break;
|
|
case "other":
|
|
document.getElementById("OTHER").value = value;
|
|
break;
|
|
case "fw_version":
|
|
document.getElementById("FWs").value = value;
|
|
break;
|
|
case "scan_ble_every":
|
|
document.getElementById("BLEScanPeriod").value = value;
|
|
break;
|
|
case "scan_ble_for":
|
|
document.getElementById("BLEScanDuration").value = value;
|
|
break;
|
|
case "temperature_offset":
|
|
document.getElementById("TemperatureOffset").value = value;
|
|
break;
|
|
case "radar_threshold":
|
|
document.getElementById("RadarThreshold").value = value;
|
|
break;
|
|
case "slow_fast_ratio":
|
|
document.getElementById("S2FSR").value = value;
|
|
break;
|
|
case "reporting_period_s":
|
|
document.getElementById("reporting_period_s").value = value;
|
|
case "nc_report":
|
|
document.getElementById("NCRE").value = value;
|
|
break;
|
|
case "reboot":
|
|
document.getElementById("LAST_REBOOT").value = value;
|
|
last_reboot = value;
|
|
break;
|
|
case "wifis":
|
|
document.getElementById("WIFISSID").value = value;
|
|
break;
|
|
case "wifi_pass":
|
|
document.getElementById("WIFIPASS").value = value;
|
|
break;
|
|
case "last_ssids":
|
|
document.getElementById("WFISS").value = value;
|
|
break;
|
|
case "last_btles":
|
|
document.getElementById("BTISS").value = value;
|
|
break;
|
|
default:
|
|
document.getElementById(key).value = value;
|
|
}
|
|
//console.log(key,value);
|
|
}
|
|
}
|
|
//lets update last_time and last_reboot in table row
|
|
var table = document.getElementById("devices");
|
|
var rowCount = table.rows.length;
|
|
now_time = parseInt(Date.now()/1000);
|
|
for (var i = 1; i < rowCount; i++) {
|
|
if (MAC == table.rows[i].cells[1].innerText) {
|
|
age = now_time - last_time;
|
|
table.rows[i].cells[2].innerText = ShowAge(age);
|
|
if (age < 300)
|
|
table.rows[i].style.backgroundColor = "#90FFD7";
|
|
else
|
|
table.rows[i].style.backgroundColor = "";
|
|
age = now_time - last_reboot;
|
|
table.rows[i].cells[3].innerText = ShowAge(age);
|
|
table.rows[i].cells[4].innerText = settings["fw_version"];
|
|
loc_str = document.getElementById("Locations").options[document.getElementById("Locations").selectedIndex].text;
|
|
table.rows[i].cells[5].innerText = loc_str;
|
|
if(settings["description"] != 'null'){
|
|
table.rows[i].cells[6].innerText = settings["description"];
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (MAC == x.innerHTML) {
|
|
for (const [key, value] of Object.entries(settings)) {
|
|
if (value != 'null'){
|
|
switch (key) {
|
|
case "MAC":
|
|
case "voc0_min":
|
|
case "voc0_max":
|
|
case "voc1_min":
|
|
case "voc1_max":
|
|
case "voc2_min":
|
|
case "voc2_max":
|
|
case "voc3_min":
|
|
case "voc3_max":
|
|
case "voc4_min":
|
|
case "voc4_max":
|
|
case "voc5_min":
|
|
case "voc5_max":
|
|
case "voc6_min":
|
|
case "voc6_max":
|
|
case "voc7_min":
|
|
case "voc7_max":
|
|
case "voc8_min":
|
|
case "voc8_max":
|
|
case "voc9_min":
|
|
case "voc9_max":
|
|
case "radar_max":
|
|
break;
|
|
case "id":
|
|
//document.getElementById("DEVICE_ID").value = value;
|
|
break;
|
|
case "led_schema":
|
|
document.getElementById("LEDPATTERN").value = value;
|
|
break;
|
|
case "time":
|
|
document.getElementById("naslov").innerHTML = "Parameters as of: "+ new Date(1000*value);
|
|
last_time = value;
|
|
break;
|
|
case "group_id":
|
|
//document.getElementById("group_id").value = value;
|
|
break;
|
|
case "deployment_id":
|
|
//document.getElementById("Deployments").value = value;
|
|
break;
|
|
case "location_id":
|
|
//document.getElementById("Locations").value = value;
|
|
break;
|
|
case "description":
|
|
document.getElementById("DESCRIPTION").value = value;
|
|
break;
|
|
case "close_to":
|
|
document.getElementById("CLOSETO").value = value;
|
|
break;
|
|
case "owner_id":
|
|
document.getElementById("Owners").value = value;
|
|
break;
|
|
case "other":
|
|
document.getElementById("OTHER").value = value;
|
|
break;
|
|
case "fw_version":
|
|
AddOrSet(value);
|
|
//document.getElementById("FWs").value = value;
|
|
break;
|
|
case "scan_ble_every":
|
|
document.getElementById("BLEScanPeriod").value = value;
|
|
break;
|
|
case "scan_ble_for":
|
|
document.getElementById("BLEScanDuration").value = value;
|
|
break;
|
|
case "temperature_offset":
|
|
document.getElementById("TemperatureOffset").value = value;
|
|
break;
|
|
case "radar_threshold":
|
|
document.getElementById("RadarThreshold").value = value;
|
|
break;
|
|
case "slow_fast_ratio":
|
|
document.getElementById("S2FSR").value = value;
|
|
break;
|
|
case "reporting_period_s":
|
|
document.getElementById("reporting_period_s").value = value;
|
|
case "nc_report":
|
|
document.getElementById("NCRE").value = value;
|
|
break;
|
|
case "reboot":
|
|
document.getElementById("LAST_REBOOT").value = value;
|
|
last_reboot = value;
|
|
break;
|
|
case "wifis":
|
|
document.getElementById("WIFISSID").value = value;
|
|
break;
|
|
case "wifi_pass":
|
|
document.getElementById("WIFIPASS").value = value;
|
|
break;
|
|
case "last_ssids":
|
|
document.getElementById("WFISS").value = value;
|
|
break;
|
|
case "last_btles":
|
|
document.getElementById("BTISS").value = value;
|
|
break;
|
|
default:
|
|
document.getElementById(key).value = value;
|
|
}
|
|
}
|
|
//console.log(key,value);
|
|
}
|
|
//lets update last_time and last_reboot in table row
|
|
var table = document.getElementById("devices");
|
|
var rowCount = table.rows.length;
|
|
now_time = parseInt(Date.now()/1000);
|
|
for (var i = 1; i < rowCount; i++) {
|
|
if (MAC == table.rows[i].cells[1].innerText) {
|
|
age = now_time - last_time;
|
|
table.rows[i].cells[2].innerText = ShowAge(age);
|
|
if (age < 300)
|
|
table.rows[i].style.backgroundColor = "#90FFD7";
|
|
else
|
|
table.rows[i].style.backgroundColor = "";
|
|
age = now_time - last_reboot;
|
|
table.rows[i].cells[3].innerText = ShowAge(age);
|
|
if (settings["fw_version"] != "null"){
|
|
table.rows[i].cells[4].innerText = settings["fw_version"];
|
|
}
|
|
if(document.getElementById("Locations").selectedIndex >= 0) {
|
|
loc_str = document.getElementById("Locations").options[document.getElementById("Locations").selectedIndex].text;
|
|
table.rows[i].cells[5].innerText = loc_str;
|
|
}
|
|
if (settings["description"] != "null"){
|
|
table.rows[i].cells[6].innerText = settings["description"];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
else if (obj.Function == "proximity_report") {
|
|
//proximity_list = [];
|
|
proximity_list = obj.proximity;
|
|
user = obj.user;
|
|
key = obj.ps;
|
|
|
|
//Lets create Show Deployment link here
|
|
MAC = "308398DF2FC8";
|
|
//depl_link = '/?user='+user+'&key='+key+'&MAC='+MAC
|
|
depl_link = '/?user='+user+'&key='+key+'&deployment='+deployment
|
|
|
|
GenerateDeploymentLink(depl_link);
|
|
|
|
if (proximity_list.length == 0) {
|
|
var table = document.getElementById("devices");
|
|
var rowCount = table.rows.length;
|
|
for (var i = 1; i < rowCount; i++) {
|
|
cell = table.rows[i].cells[0];
|
|
if(cell.innerText.length > 0) {
|
|
proximity_list.push(cell.innerText);
|
|
}
|
|
}
|
|
}
|
|
$("#Proximity").empty();
|
|
var oldSel = $("#Proximity").get(0);
|
|
for (i = 0; i < proximity_list.length; i++)
|
|
{
|
|
var opt = document.createElement('option');
|
|
opt.text = proximity_list[i][0];
|
|
opt.value = proximity_list[i][0];
|
|
oldSel.add(opt, null);
|
|
}
|
|
|
|
}
|
|
|
|
else if (obj.Function == "latest_devices") {
|
|
var matching_devices = obj.matching_devices;
|
|
|
|
var doc = document;
|
|
|
|
//var fragment = doc.createDocumentFragment();
|
|
|
|
|
|
//$("#devices_body").empty();
|
|
|
|
//var table = doc.createElement("table");
|
|
var table = document.getElementById("devices");
|
|
var rowCount = table.rows.length;
|
|
for (var i = rowCount - 1; i > 0; i--) {
|
|
table.deleteRow(i);
|
|
}
|
|
|
|
now_time = parseInt(Date.now()/1000);
|
|
|
|
for (i = 0; i < matching_devices.length; i++) {
|
|
age = now_time - matching_devices[i][2];
|
|
var tr = doc.createElement("tr");
|
|
if (age < 300)
|
|
tr.style.backgroundColor = "#90FFD7";
|
|
else
|
|
tr.style.backgroundColor = "";
|
|
var th = doc.createElement("th");
|
|
th.style="text-align:center";
|
|
th.innerHTML = matching_devices[i][0];
|
|
tr.appendChild(th);
|
|
|
|
var td = doc.createElement("td");
|
|
td.style="text-align:center";
|
|
|
|
user = document.getElementById("user").value;
|
|
key = document.getElementById("ps").value;
|
|
mac = matching_devices[i][1];
|
|
cell_content = "<a href=\"/?user="+user+"&key="+key+"&MAC="+mac+"\" target=\"_blank\">"+mac+"</a>"
|
|
//console.log(td.outerHTML);
|
|
//http://192.168.1.22:5002/?user=john&key=mykey&MAC=716798E056AC
|
|
td.innerHTML = cell_content;
|
|
//td.innerHTML = matching_devices[i][1];
|
|
tr.appendChild(td);
|
|
|
|
var td = doc.createElement("td");
|
|
td.style="text-align:center";
|
|
age_string = ShowAge(age);
|
|
td.innerHTML = age_string;
|
|
tr.appendChild(td);
|
|
|
|
var td = doc.createElement("td");
|
|
td.style="text-align:center";
|
|
age = now_time - matching_devices[i][3];
|
|
age_string = ShowAge(age);
|
|
td.innerHTML = age_string;
|
|
tr.appendChild(td);
|
|
|
|
var td = doc.createElement("td");
|
|
td.style="text-align:center";
|
|
td.innerHTML = matching_devices[i][4];
|
|
tr.appendChild(td);
|
|
|
|
var td = doc.createElement("td");
|
|
td.style="text-align:center";
|
|
if( matching_devices[i][5] == "All") {
|
|
td.innerHTML = "";
|
|
}
|
|
else {
|
|
td.innerHTML = matching_devices[i][5];
|
|
}
|
|
tr.appendChild(td);
|
|
|
|
var td = doc.createElement("td");
|
|
td.style="text-align:center";
|
|
td.innerHTML = matching_devices[i][6];
|
|
tr.appendChild(td);
|
|
|
|
var td = doc.createElement("td");
|
|
td.style="text-align:center";
|
|
td.innerHTML = matching_devices[i][7];
|
|
tr.appendChild(td);
|
|
|
|
var ch = doc.createElement("input");
|
|
ch.type = "checkbox";
|
|
ch.onchange=function(){IsItSingle();};
|
|
var td = doc.createElement("td");
|
|
td.style="text-align:center";
|
|
td.appendChild(ch);
|
|
tr.appendChild(td);
|
|
table.appendChild(tr);
|
|
// <td style="text-align:center"><input type="checkbox" onchange="IsItSingle();"></td>
|
|
|
|
}
|
|
IsItSingle();
|
|
|
|
//doc.getElementById("here_table").appendChild(table);
|
|
}
|
|
else if (obj.Function == "devices_report") {
|
|
var common_settings = obj.common_settings;
|
|
var fw_versions = obj.fw_versions;
|
|
var led_schemas = obj.led_schemas;
|
|
var groups = obj.groups;
|
|
var deployments = obj.deployments;
|
|
var locations = obj.locations;
|
|
var owners = obj.owners;
|
|
var matching_devices = obj.matching_devices;
|
|
|
|
|
|
if(deployments.length > 0) {
|
|
$("#Deployments").empty();
|
|
var oldSel = $("#Deployments").get(0);
|
|
|
|
var opt = document.createElement('option');
|
|
opt.text = "Not deployed";
|
|
opt.value = "-1";
|
|
oldSel.add(opt, null);
|
|
var opt = document.createElement('option');
|
|
opt.text = "All";
|
|
opt.value = "0";
|
|
opt.selected = true;
|
|
oldSel.add(opt, null);
|
|
}
|
|
/* Remove all options from the select list */
|
|
$("#FWs").empty();
|
|
var oldSel = $("#FWs").get(0);
|
|
for (i = 0; i < fw_versions.length; i++)
|
|
{
|
|
var opt = document.createElement('option');
|
|
opt.text = fw_versions[i];
|
|
opt.value = fw_versions[i];
|
|
oldSel.add(opt, null);
|
|
}
|
|
|
|
$("#LEDSchemas").empty();
|
|
var oldSel = $("#LEDSchemas").get(0);
|
|
for (i = 0; i < led_schemas.length; i++)
|
|
{
|
|
var opt = document.createElement('option');
|
|
opt.text = led_schemas[i];
|
|
opt.value = led_schemas[i];
|
|
oldSel.add(opt, null);
|
|
}
|
|
|
|
if (groups.length > 0) {
|
|
$("#group_id").empty();
|
|
var oldSel = $("#group_id").get(0);
|
|
for (i = 0; i < groups.length; i++)
|
|
{
|
|
var opt = document.createElement('option');
|
|
opt.text = groups[i][1];
|
|
opt.value = groups[i][0];
|
|
oldSel.add(opt, null);
|
|
}
|
|
}
|
|
|
|
if (deployments.length > 0) {
|
|
var oldSel = $("#Deployments").get(0);
|
|
for (i = 0; i < deployments.length; i++)
|
|
{
|
|
var opt = document.createElement('option');
|
|
opt.text = deployments[i][1];
|
|
opt.value = deployments[i][0];
|
|
oldSel.add(opt, null);
|
|
}
|
|
}
|
|
|
|
if (locations.length > 0) {
|
|
$("#Locations").empty();
|
|
var oldSel = $("#Locations").get(0);
|
|
for (i = 0; i < locations.length; i++)
|
|
{
|
|
var opt = document.createElement('option');
|
|
opt.text = locations[i][1];
|
|
opt.value = locations[i][0];
|
|
oldSel.add(opt, null);
|
|
}
|
|
}
|
|
|
|
$("#Owners").empty();
|
|
var oldSel = $("#Owners").get(0);
|
|
for (i = 0; i < owners.length; i++)
|
|
{
|
|
var opt = document.createElement('option');
|
|
opt.text = owners[i][1];
|
|
opt.value = owners[i][0];
|
|
oldSel.add(opt, null);
|
|
}
|
|
|
|
for (const [key, value] of Object.entries(common_settings)) {
|
|
console.log(key, value)
|
|
try{
|
|
if ((key !="group_id") && (key !="location_id") && (key !="deployment_id") && (key !="id"))
|
|
document.getElementById(key).value = value;
|
|
} catch(error) {
|
|
//console.log(error);
|
|
}
|
|
}
|
|
|
|
var doc = document;
|
|
|
|
//var fragment = doc.createDocumentFragment();
|
|
|
|
//$("#devices_body").empty();
|
|
|
|
//var table = doc.createElement("table");
|
|
var table = document.getElementById("devices");
|
|
var rowCount = table.rows.length;
|
|
for (var i = rowCount - 1; i > 0; i--) {
|
|
table.deleteRow(i);
|
|
}
|
|
|
|
now_time = parseInt(Date.now()/1000);
|
|
|
|
for (i = 0; i < matching_devices.length; i++) {
|
|
age = now_time - matching_devices[i][2];
|
|
var tr = doc.createElement("tr");
|
|
if (age < 300)
|
|
tr.style.backgroundColor = "#90FFD7";
|
|
else
|
|
tr.style.backgroundColor = "";
|
|
var th = doc.createElement("th");
|
|
th.style="text-align:center";
|
|
th.innerHTML = matching_devices[i][0];
|
|
tr.appendChild(th);
|
|
|
|
var td = doc.createElement("td");
|
|
td.style="text-align:center";
|
|
user = document.getElementById("user").value;
|
|
key = document.getElementById("ps").value;
|
|
mac = matching_devices[i][1];
|
|
cell_content = "<a href=\"/?user="+user+"&key="+key+"&MAC="+mac+"\" target=\"_blank\">"+mac+"</a>"
|
|
//console.log(td.outerHTML);
|
|
//http://192.168.1.22:5002/?user=john&key=mykey&MAC=716798E056AC
|
|
td.innerHTML = cell_content;
|
|
tr.appendChild(td);
|
|
|
|
var td = doc.createElement("td");
|
|
td.style="text-align:center";
|
|
age_string = ShowAge(age);
|
|
td.innerHTML = age_string;
|
|
tr.appendChild(td);
|
|
|
|
var td = doc.createElement("td");
|
|
td.style="text-align:center";
|
|
age = now_time - matching_devices[i][3];
|
|
age_string = ShowAge(age);
|
|
td.innerHTML = age_string;
|
|
tr.appendChild(td);
|
|
|
|
var td = doc.createElement("td");
|
|
td.style="text-align:center";
|
|
td.innerHTML = matching_devices[i][4];
|
|
tr.appendChild(td);
|
|
|
|
var td = doc.createElement("td");
|
|
td.style="text-align:center";
|
|
if( matching_devices[i][5] == "All") {
|
|
td.innerHTML = "";
|
|
}
|
|
else {
|
|
td.innerHTML = matching_devices[i][5];
|
|
}
|
|
tr.appendChild(td);
|
|
|
|
var td = doc.createElement("td");
|
|
td.style="text-align:center";
|
|
td.innerHTML = matching_devices[i][6];
|
|
tr.appendChild(td);
|
|
|
|
var td = doc.createElement("td");
|
|
td.style="text-align:center";
|
|
td.innerHTML = matching_devices[i][7];
|
|
tr.appendChild(td);
|
|
|
|
var ch = doc.createElement("input");
|
|
ch.type = "checkbox";
|
|
ch.onchange=function(){IsItSingle();};
|
|
var td = doc.createElement("td");
|
|
td.style="text-align:center";
|
|
td.appendChild(ch);
|
|
tr.appendChild(td);
|
|
table.appendChild(tr);
|
|
// <td style="text-align:center"><input type="checkbox" onchange="IsItSingle();"></td>
|
|
|
|
}
|
|
IsItSingle();
|
|
|
|
//doc.getElementById("here_table").appendChild(table);
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function ProcessClick(func_name) {
|
|
|
|
showTutorial("");
|
|
switch (func_name) {
|
|
|
|
case "save":
|
|
|
|
|
|
timee = Date.now();
|
|
user = document.getElementById("user").value;
|
|
key = document.getElementById("ps").value;
|
|
|
|
//Lets find name of deployment
|
|
sel = document.getElementById("Deployments");
|
|
name = sel.options[sel.selectedIndex].text;
|
|
|
|
proximity_string = "";
|
|
var proximity_list = $("#Proximity").get(0);
|
|
|
|
|
|
if(proximity_list.length > 0){
|
|
proximity_string = proximity_list[0].innerText;
|
|
for (i = 1; i < proximity_list.length; i++)
|
|
{
|
|
proximity_string = proximity_string +","+proximity_list[i].innerText;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
var obj = {
|
|
function: "save_deployments",
|
|
time:timee,
|
|
user:user,
|
|
ps:key,
|
|
signature:signature,
|
|
deployments:document.getElementById("Deployments").innerHTML,
|
|
deployment:document.getElementById("Deployments").value,
|
|
deployment_name:name,
|
|
deployment_owner_id:"1",
|
|
proximity:proximity_string,
|
|
visible_to:""
|
|
};
|
|
var json = JSON.stringify(obj);
|
|
sendToBackend("/wellget_cmp", json);
|
|
|
|
}
|
|
}
|
|
|
|
function moveUp(selectId) {
|
|
var selectList = document.getElementById(selectId);
|
|
var selectOptions = selectList.getElementsByTagName('option');
|
|
for (var i = 1; i < selectOptions.length; i++) {
|
|
var opt = selectOptions[i];
|
|
if (opt.selected) {
|
|
selectList.removeChild(opt);
|
|
selectList.insertBefore(opt, selectOptions[i - 1]);
|
|
}
|
|
}
|
|
}
|
|
|
|
function moveDown(selectId) {
|
|
var selectList = document.getElementById(selectId);
|
|
var selectOptions = selectList.getElementsByTagName('option');
|
|
for (var i = selectOptions.length - 2; i >= 0; i--) {
|
|
var opt = selectOptions[i];
|
|
if (opt.selected) {
|
|
var nextOpt = selectOptions[i + 1];
|
|
opt = selectList.removeChild(opt);
|
|
nextOpt = selectList.replaceChild(opt, nextOpt);
|
|
selectList.insertBefore(nextOpt, opt);
|
|
}
|
|
}
|
|
}
|
|
|
|
function ShowAge(seconds) {
|
|
var minutes = Math.floor(seconds/60);
|
|
var hours = Math.floor(minutes/60);
|
|
var days = Math.floor(hours/24);
|
|
|
|
|
|
if(seconds >=0) {
|
|
hours = hours-(days*24);
|
|
minutes = minutes-(days*24*60)-(hours*60);
|
|
seconds = seconds-(days*24*60*60)-(hours*60*60)-(minutes*60);
|
|
if (days > 0) {
|
|
report = days.toString()+" d "+hours.toString()+" h "+minutes.toString()+" m "+parseInt(seconds).toString() +" s";
|
|
}
|
|
else if(hours > 0) {
|
|
report = hours.toString()+" h "+minutes.toString()+" m "+parseInt(seconds).toString() +" s";
|
|
}
|
|
else if(minutes > 0) {
|
|
report = minutes.toString()+" m "+parseInt(seconds).toString() +" s";
|
|
}
|
|
else{
|
|
report = parseInt(seconds).toString() +" s";
|
|
}
|
|
return(report);
|
|
}
|
|
else {
|
|
return("0 s");
|
|
}
|
|
}
|
|
|
|
function AddGroup() {
|
|
|
|
var x = document.getElementById("group_id");
|
|
var old_values = $("#group_id").children('option').map(function(i, e){
|
|
return e.value || e.innerText;
|
|
}).get();
|
|
|
|
new_element = $("#NewGroup").val();
|
|
if( $.inArray(new_element, old_values) == -1 ) {
|
|
$("#group_id").append(
|
|
"<option value='" + new_element + "'>" + new_element + "</option>"
|
|
);
|
|
$("#group_id").val(new_element);
|
|
}
|
|
else {
|
|
alert("Group already exists!");
|
|
}
|
|
}
|
|
function AddDeployment() {
|
|
|
|
var x = document.getElementById("Deployments");
|
|
var old_values = $("#Deployments").children('option').map(function(i, e){
|
|
return e.innerText;
|
|
}).get();
|
|
|
|
new_element = $("#NewDeployment").val();
|
|
|
|
if (new_element == "Change_me"){
|
|
alert("Assign new name!");
|
|
}
|
|
else {
|
|
|
|
if (new_element.length < 3){
|
|
alert("Minimum length of deployment name is 3 characters!");
|
|
}
|
|
else {
|
|
if( $.inArray(new_element, old_values) == -1 ) {
|
|
$("#Deployments").append(
|
|
"<option value='" + new_element + "'>" + new_element + "</option>"
|
|
);
|
|
$("#Deployments").val(new_element);
|
|
}
|
|
else {
|
|
alert("Deployment already exists!");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
function SelDesel() {
|
|
|
|
var x = document.getElementById("AllSel");
|
|
var table = document.getElementById("devices");
|
|
var rowCount = table.rows.length;
|
|
|
|
for (var i = 1; i < rowCount; i++) {
|
|
cell = table.rows[i].cells[8];
|
|
checkm = cell.children[0];
|
|
checkm.checked=x.checked;
|
|
}
|
|
IsItSingle();
|
|
}
|
|
|
|
function IsItSingle() {
|
|
|
|
var x = document.getElementById("AllSel");
|
|
var table = document.getElementById("devices");
|
|
var rowCount = table.rows.length;
|
|
var sel_count = 0;
|
|
var x = document.getElementById("caption");
|
|
for (var i = 1; i < rowCount; i++) {
|
|
cell = table.rows[i].cells[8];
|
|
MAC = table.rows[i].cells[1].innerText;
|
|
checkm = cell.children[0];
|
|
if (checkm.checked) {
|
|
sel_count +=1;
|
|
x.innerHTML = MAC;
|
|
}
|
|
if (sel_count != 1)
|
|
x.innerHTML = "Settings";
|
|
}
|
|
|
|
if (sel_count ==1)
|
|
ShowSingle(true);
|
|
else
|
|
ShowSingle(false);
|
|
}
|
|
|
|
function DeleteCreds(){
|
|
|
|
var table = document.getElementById("devices");
|
|
var rowCount = table.rows.length;
|
|
showTutorial("Deleting WiFi Credentials...");
|
|
//If all are enabled, request group update, othervise request d
|
|
which_tags = [];
|
|
all_selected = true;
|
|
for (var i = 1; i < rowCount; i++) {
|
|
cell = table.rows[i].cells[8];
|
|
checkm = cell.children[0];
|
|
if (checkm.checked) {
|
|
MAC = table.rows[i].cells[1].innerText;
|
|
//FW = table.rows[i].cells[4].childNodes[0].data;
|
|
var tag_info = MAC;
|
|
which_tags.push(tag_info);
|
|
}
|
|
else {
|
|
all_selected = false;
|
|
}
|
|
}
|
|
|
|
if (which_tags.length == 1) {
|
|
var obj = {
|
|
function: "erase_wifi",
|
|
time:timee,
|
|
user:user,
|
|
ps:key,
|
|
signature:signature,
|
|
which_tags: which_tags,
|
|
};
|
|
var json = JSON.stringify(obj);
|
|
sendToBackend("/wellget_cmp", json);
|
|
}
|
|
else {
|
|
alert("Only 1 device can be selected");
|
|
}
|
|
|
|
}
|
|
|
|
function ReadDevice() {
|
|
|
|
var table = document.getElementById("devices");
|
|
var rowCount = table.rows.length;
|
|
showTutorial("Reading device...");
|
|
//If all are enabled, request group update, othervise request d
|
|
which_tags = [];
|
|
all_selected = true;
|
|
for (var i = 1; i < rowCount; i++) {
|
|
cell = table.rows[i].cells[8];
|
|
checkm = cell.children[0];
|
|
if (checkm.checked) {
|
|
MAC = table.rows[i].cells[1].innerText;
|
|
//FW = table.rows[i].cells[4].childNodes[0].data;
|
|
var tag_info = MAC;
|
|
which_tags.push(tag_info);
|
|
}
|
|
else {
|
|
all_selected = false;
|
|
}
|
|
}
|
|
|
|
if (which_tags.length == 1) {
|
|
var obj = {
|
|
function: "read_device",
|
|
time:timee,
|
|
user:user,
|
|
ps:key,
|
|
signature:signature,
|
|
which_tags: which_tags,
|
|
};
|
|
var json = JSON.stringify(obj);
|
|
sendToBackend("/wellget_cmp", json);
|
|
}
|
|
else {
|
|
alert("Only 1 device can be selected");
|
|
}
|
|
}
|
|
|
|
function WriteDevice() {
|
|
var par_table = document.getElementById("settings");
|
|
var par_rowCount = par_table.rows.length;
|
|
device_settings = {};
|
|
for (var i = 1; i < par_rowCount; i++) {
|
|
sensor_settings = {};
|
|
sensor_name = par_table.rows[i].cells[0].innerText;
|
|
sensor_settings["ut"] = par_table.rows[i].cells[1].childNodes[0].value;
|
|
sensor_settings["dt"] = par_table.rows[i].cells[2].childNodes[0].value;
|
|
sensor_settings["lp"] = par_table.rows[i].cells[3].childNodes[0].value;
|
|
sensor_settings["pn"] = par_table.rows[i].cells[4].childNodes[0].value;
|
|
sensor_settings["sn"] = par_table.rows[i].cells[5].childNodes[0].value;
|
|
sensor_settings["ee"] = par_table.rows[i].cells[6].childNodes[0].value;
|
|
device_settings[sensor_name] = sensor_settings;
|
|
}
|
|
device_settings["fw_v"] = document.getElementById("FWs").value;
|
|
//device_settings["led_s"] = document.getElementById("LEDSchemas").value;
|
|
|
|
device_settings["BLEScanPeriod"] = document.getElementById("BLEScanPeriod").value;
|
|
device_settings["BLEScanDuration"] = document.getElementById("BLEScanDuration").value;
|
|
device_settings["TemperatureOffset"] = document.getElementById("TemperatureOffset").value;
|
|
device_settings["RadarThreshold"] = document.getElementById("RadarThreshold").value;
|
|
|
|
device_settings["S2FSR"] = document.getElementById("S2FSR").value;
|
|
device_settings["reporting_period_s"] = document.getElementById("reporting_period_s").value;
|
|
|
|
device_settings["NCRE"] = document.getElementById("NCRE").value;
|
|
device_settings["e_key"] = document.getElementById("e_key").value;
|
|
device_settings["description"] = document.getElementById("DESCRIPTION").value;
|
|
device_settings["close_to"] = document.getElementById("CLOSETO").value;
|
|
device_settings["owner_id"] = document.getElementById("Owners").value;
|
|
device_settings["wifis"] = document.getElementById("WIFISSID").value;
|
|
device_settings["wifi_pass"] = document.getElementById("WIFIPASS").value;
|
|
device_settings["led_schema"] = document.getElementById("LEDPATTERN").value;
|
|
device_settings["other"] = document.getElementById("OTHER").value;
|
|
|
|
RequestDevsUpdate(device_settings);
|
|
}
|
|
|
|
function FindDevices() {
|
|
|
|
showTutorial("Looking for new devices...");
|
|
timee = Date.now();
|
|
user = document.getElementById("user").value;
|
|
key = document.getElementById("ps").value;
|
|
var obj = {
|
|
function: "find_devices",
|
|
time:timee,
|
|
user:user,
|
|
ps:key,
|
|
signature:signature
|
|
};
|
|
var json = JSON.stringify(obj);
|
|
sendToBackend("/wellget_cmp", json);
|
|
|
|
}
|
|
|
|
function SetFirmwares(){
|
|
showTutorial("Setting firmwares...");
|
|
var par_table = document.getElementById("settings");
|
|
var par_rowCount = par_table.rows.length;
|
|
device_settings = {};
|
|
|
|
device_settings["fw_v"] = document.getElementById("FWs").value;
|
|
|
|
RequestFWsUpdate(device_settings);
|
|
}
|
|
|
|
function SetDevices() {
|
|
|
|
showTutorial("Setting devices...");
|
|
var par_table = document.getElementById("settings");
|
|
var par_rowCount = par_table.rows.length;
|
|
device_settings = {};
|
|
for (var i = 1; i < par_rowCount; i++) {
|
|
sensor_settings = {};
|
|
sensor_name = par_table.rows[i].cells[0].innerText;
|
|
sensor_settings["ut"] = par_table.rows[i].cells[1].childNodes[0].value;
|
|
sensor_settings["dt"] = par_table.rows[i].cells[2].childNodes[0].value;
|
|
sensor_settings["lp"] = par_table.rows[i].cells[3].childNodes[0].value;
|
|
sensor_settings["pn"] = par_table.rows[i].cells[4].childNodes[0].value;
|
|
sensor_settings["sn"] = par_table.rows[i].cells[5].childNodes[0].value;
|
|
sensor_settings["ee"] = par_table.rows[i].cells[6].childNodes[0].value;
|
|
device_settings[sensor_name] = sensor_settings;
|
|
}
|
|
//Dont set FW here, there is separate function for it!
|
|
//device_settings["fw_v"] = document.getElementById("FWs").value;
|
|
//device_settings["led_s"] = document.getElementById("LEDSchemas").value;
|
|
|
|
device_settings["BLEScanPeriod"] = document.getElementById("BLEScanPeriod").value;
|
|
device_settings["BLEScanDuration"] = document.getElementById("BLEScanDuration").value;
|
|
device_settings["TemperatureOffset"] = document.getElementById("TemperatureOffset").value;
|
|
device_settings["RadarThreshold"] = document.getElementById("RadarThreshold").value;
|
|
|
|
|
|
device_settings["S2FSR"] = document.getElementById("S2FSR").value;
|
|
device_settings["reporting_period_s"] = document.getElementById("reporting_period_s").value;
|
|
device_settings["NCRE"] = document.getElementById("NCRE").value;
|
|
device_settings["e_key"] = document.getElementById("e_key").value;
|
|
device_settings["FWs"] = document.getElementById("FWs").value;
|
|
btn = document.getElementById("set_device_s");
|
|
if (btn.innerText == "Set Device") { //single
|
|
|
|
device_settings["id"] = document.getElementById("DEVICE_ID").value;
|
|
device_settings["description"] = document.getElementById("DESCRIPTION").value;
|
|
device_settings["close_to"] = document.getElementById("CLOSETO").value;
|
|
device_settings["owner_id"] = document.getElementById("Owners").value;
|
|
device_settings["wifis"] = document.getElementById("WIFISSID").value;
|
|
device_settings["wifi_pass"] = document.getElementById("WIFIPASS").value;
|
|
device_settings["led_schema"] = document.getElementById("LEDPATTERN").value;
|
|
device_settings["other"] = document.getElementById("OTHER").value;
|
|
}
|
|
|
|
RequestDevsUpdate(device_settings);
|
|
}
|
|
|
|
function ShowSingle(do_show) {
|
|
var x = document.getElementById("single_info");
|
|
btn = document.getElementById("set_device_s");
|
|
if (do_show == true) {
|
|
x.style.display = "block";
|
|
btn.innerText = "Set Device";
|
|
} else {
|
|
x.style.display = "none";
|
|
btn.innerText = "Set Devices";
|
|
var x = document.getElementById("caption");
|
|
x.innerHTML = "Settings";
|
|
|
|
}
|
|
}
|
|
|
|
|
|
function GenerateDeploymentLink(desiredLink) {
|
|
document.getElementById('deployment_link').setAttribute('href',desiredLink);
|
|
document.getElementById('deployment_link').setAttribute('target',"_blank");
|
|
}
|
|
|
|
</script>
|
|
</head>
|
|
|
|
<body onload="draw();" onresize="resize()">
|
|
<div
|
|
class="wrapper"
|
|
style="margin: 0 auto; width: 100%; left: 0; top: 0; position: absolute"
|
|
></div>
|
|
|
|
|
|
<div class="fixed" role="main">
|
|
|
|
<div class="row">
|
|
<div class="x_panel">
|
|
<div class="x_title">
|
|
<h2>
|
|
Options <span class="smallLetters">Filter by:</span>
|
|
</h2>
|
|
<ul class="nav navbar-right panel_toolbox">
|
|
<li>
|
|
<a class="collapse-link" onclick="showHide(this);"
|
|
><i class="fa fa-chevron-up"></i
|
|
></a>
|
|
</li>
|
|
<li>
|
|
<a class="close-link"><i class="fa fa-close"></i></a>
|
|
</li>
|
|
</ul>
|
|
<div class="clearfix"></div>
|
|
</div>
|
|
<div class="x_content" id="selectorsDiv">
|
|
<button class="small-button" onclick="DoRefresh()">Filter</button>
|
|
|
|
<div id = "GroupPanel" style="width:20%;Text-align:center;float:left;">
|
|
Group:
|
|
<select name="group_id" id="group_id" size="1">
|
|
<option value="All">All</option>
|
|
<option value="0">0</option>
|
|
<option value="EyeTech">EyeTech</option>
|
|
</select>
|
|
<button class="small-button" onclick="AddGroup()">New</button>
|
|
<input type="text" id="NewGroup" name="NewGroup" title="New Group #" value="New Group" size="10">
|
|
</div>
|
|
<div id = "OtherPanel" style="width:50%;Text-align:center;float:left;">
|
|
Deployment:
|
|
<select name="Deployments" id="Deployments" onchange="DeploymentChange()" size="1">
|
|
<option value="All" selected>All</option>
|
|
</select>
|
|
|
|
<button class="small-button" title="Create new Deployment with name specified to the right" onclick="AddDeployment()">New</button>
|
|
<input type="text" id="NewDeployment" name="NewDeployment" title="New Deployment (address), mimum 3 characters long" value="Change_me" size="10">
|
|
<button class="small-button" title="Save Deployments" onclick="ProcessClick('save')">Save</button>
|
|
|
|
Location:
|
|
<select name="Locations" id="Locations" size="1">
|
|
<option value="All">All</option>
|
|
<option value="Bathroom">Bathroom</option>
|
|
<option value="Kitchen">Kitchen</option>
|
|
<option value="Dining Room">Dining Room</option>
|
|
<option value="Bedroom">Bedroom</option>
|
|
<option value="Living Room">Living Room</option>
|
|
<option value="Hallway">Hallway</option>
|
|
<option value="Office">Office</option>
|
|
<option value="Conference Room">Conference Room</option>
|
|
<option value="Outside">Outside</option>
|
|
<option value="Attic">Attic</option>
|
|
<option value="Basement">Basement</option>
|
|
<option value="Garage">Garage</option>
|
|
<option value="Other">Other</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="x_panel">
|
|
<div class="x_title">
|
|
<h2><span id="naslov" class="smallLetters">Parameters</span></h2>
|
|
<ul class="nav navbar-right panel_toolbox">
|
|
<li>
|
|
<a class="collapse-link" onclick="showHide(this)"
|
|
><i class="fa fa-chevron-up"></i
|
|
></a>
|
|
</li>
|
|
</ul>
|
|
<div class="clearfix"></div>
|
|
</div>
|
|
<div class="x_content">
|
|
|
|
<table name="settings" id="settings" width="200" border="1" cellspacing="2" cellpadding="2">
|
|
<caption id="caption">
|
|
Settings
|
|
</caption>
|
|
<tbody>
|
|
<tr>
|
|
<th scope="col">Sensor</th>
|
|
<th scope="col">Up Threshold</th>
|
|
<th scope="col">Down Threshold</th>
|
|
<th scope="col">LP Filter</th>
|
|
<th scope="col">Pr noise</th>
|
|
<th scope="col">Sns noise</th>
|
|
<th scope="col">Est error</th>
|
|
</tr>
|
|
<tr>
|
|
<th scope="row">Radar</th>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="rut" id="rut" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="rdt" id="rdt" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="rlp" id="rlp" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="rpn" id="rpn" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="rsn" id="rsn" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="ree" id="ree" size="4"></td>
|
|
</tr>
|
|
<tr>
|
|
<th scope="row">Light</th>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="lut" id="lut" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="ldt" id="ldt" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="llp" id="llp" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="lpn" id="lpn" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="lsn" id="lsn" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="lee" id="lee" size="4"></td>
|
|
</tr>
|
|
<tr>
|
|
<th scope="row">Pressure</th>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="put" id="put" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="pdt" id="pdt" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="plp" id="plp" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="ppn" id="ppn" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="psn" id="psn" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="pee" id="pee" size="4"></td>
|
|
</tr>
|
|
<tr>
|
|
<th scope="row">Temperature</th>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="tut" id="tut" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="tdt" id="tdt" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="tlp" id="tlp" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="tpn" id="tpn" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="tsn" id="tsn" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="tee" id="tee" size="4"></td>
|
|
</tr>
|
|
<tr>
|
|
<th scope="row">Humidity</th>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="hut" id="hut" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="hdt" id="hdt" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="hlp" id="hlp" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="hpn" id="hpn" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="hsn" id="hsn" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="hee" id="hee" size="4"></td>
|
|
</tr>
|
|
<tr>
|
|
<th scope="row">CO2</th>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="cut" id="cut" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="cdt" id="cdt" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="clp" id="clp" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="cpn" id="cpn" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="csn" id="csn" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="cee" id="cee" size="4"></td>
|
|
</tr>
|
|
<tr>
|
|
<th scope="row">VOC</th>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="vut" id="vut" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="vdt" id="vdt" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="vlp" id="vlp" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="vpn" id="vpn" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="vsn" id="vsn" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="vee" id="vee" size="4"></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<div>
|
|
<p>
|
|
<div id = "firmware">
|
|
Firmware version:
|
|
<select name="FWs" id="FWs" size="1">
|
|
<option value="Latest" selected>Latest</option>
|
|
<option value="2.0.0">2.0.0</option>
|
|
<option value="EyeTech_2.0.0">EyeTech_2.0.0</option>
|
|
</select>
|
|
<button class="wider-button" id="set_fws" onclick="SetFirmwares()">Set Firmwares</button>
|
|
</div>
|
|
<br>
|
|
Hardware version:
|
|
<input style="text-align:center" type="text" readOnly= true name="hw_version" id="hw_version" size="8">
|
|
LED Schema:
|
|
<select name="LEDSchemas" id="LEDSchemas" size="1">
|
|
<option value="Fred Status">Fred Status</option>
|
|
</select>
|
|
<br><br>
|
|
Scan BLE every [s]:
|
|
<input style="text-align:center" type="text" name="BLEScanPeriod" id="BLEScanPeriod" size="3">
|
|
for [s]:
|
|
<input style="text-align:center" type="text" name="BLEScanDuration" id="BLEScanDuration" size="3">
|
|
T offset:
|
|
<input style="text-align:center" type="text" name="TemperatureOffset" id="TemperatureOffset" size="3">
|
|
R threshold:
|
|
<input style="text-align:center" type="text" name="RadarThreshold" id="RadarThreshold" size="3">
|
|
<br><br>
|
|
Slow to Fast sensing ratio:
|
|
<input style="text-align:center" type="text" name="S2FSR" id="S2FSR" size="3">
|
|
Reporting period [s]:
|
|
<input style="text-align:center" type="text" name="reporting_period_s" id="reporting_period_s" size="3">
|
|
|
|
<br><br>
|
|
No change report every [s]:
|
|
<input style="text-align:center" type="text" name="NCRE" id="NCRE" size="4">
|
|
|
|
</p>
|
|
|
|
<div id = "key_panel">
|
|
<p>KEY:
|
|
<input style="text-align:center" type="text" name="e_key" id="e_key" size="20">
|
|
</p>
|
|
</div>
|
|
<button title="Writes device parameters to DB!" class="wider-button" id="set_device_s" onclick="SetDevices()">Set Devices</button>
|
|
<button title="Reports data found in DB including latest updates!" class="wider-button" id="find_new_s" onclick="FindDevices()">Received?</button>
|
|
|
|
</div>
|
|
|
|
<div id="SSIDSes" style="position: absolute; left: 240px; top: 480px; width: 300px; height: 16px;">
|
|
WF SSDS:
|
|
<input style="text-align:left" type="text" name="WFISS" id="WFISS" size="30"><br>
|
|
BT MACS:
|
|
<input style="text-align:left" type="text" name="BTISS" id="BTISS" size="30">
|
|
<br><br>
|
|
</div>
|
|
|
|
<div id="single_info" style="position: absolute; left: 440px; top: 310px; width: 460px; height: 16px;">
|
|
Device ID:
|
|
<input style="text-align:center" type="text" name="DEVICE_ID" id="DEVICE_ID" size="4">
|
|
Last Reboot @:
|
|
<input style="text-align:center" type="text" name="LAST_REBOOT" id="LAST_REBOOT" size="10">
|
|
Time Zone:
|
|
<input style="text-align:center" type="text" name="time_zone" id="time_zone" size="6">
|
|
<br><br>
|
|
|
|
<p>Description:
|
|
<textarea name="DESCRIPTION" id="DESCRIPTION" rows="2" cols="100"></textarea>
|
|
Close to:
|
|
<input style="text-align:center" type="text" name="CLOSETO" id="CLOSETO" size="6">
|
|
<br>
|
|
<div id = "details1">
|
|
Owner:
|
|
<select name="Owners" id="Owners" size="1">
|
|
<option value="All">All</option>
|
|
<option value="Robert Zmrzli">Robert Zmrzli</option>
|
|
<option value="Ferdinand Zmrzli">Ferdinand Zmrzli</option>1
|
|
</select>
|
|
<br>
|
|
SSID:
|
|
<input style="text-align:center" type="text" name="WIFISSID" id="WIFISSID" size="16">
|
|
Pass:
|
|
<input style="text-align:center" type="text" name="WIFIPASS" id="WIFIPASS" size="26">
|
|
<button class="wider-button" id="delete_CR_s" onclick="DeleteCreds()">Delete</button>
|
|
<br><br>
|
|
</div>
|
|
LED pattern:
|
|
<input name="LEDPATTERN" type="text" id="LEDPATTERN" style="text-align:center" value="00112233445566778899AA" size="20">
|
|
Other:
|
|
<input name="OTHER" type="text" id="OTHER" style="text-align:center" value="" size="10">
|
|
|
|
|
|
</p>
|
|
<button class="wider-button" id="read_device_s" onclick="ReadDevice()">Read Device</button>
|
|
|
|
</div>
|
|
|
|
<div id="deplink" style="position: absolute; left: 1100px; top: 290px; width: 460px; height: 16px;">
|
|
<a id="deployment_link" href="https://www.w3schools.com/">Proximity of devices:</a>
|
|
</div>
|
|
|
|
<div id="deployment_info" style="position: absolute; left: 1100px; top: 300px; width: 460px; height: 16px;">
|
|
<br>
|
|
<select class="my_dropdown" name="Proximity" id="Proximity" size="10" width=150px>
|
|
<option value="3">3</option>
|
|
<option value="37">37</option>
|
|
<option value="42">42</option>1
|
|
</select>
|
|
<br>
|
|
</div>
|
|
|
|
|
|
<div id="deployment_info1" style="position: absolute; left: 1260px; top: 350px; width: 460px; height: 16px;">
|
|
<button class="wider-button" id="move_up" title="Move selected item up" onclick="moveUp('Proximity');">Up</button>
|
|
<br>
|
|
<button class="wider-button" id="move_down" title="Move selected item down" onclick="moveDown('Proximity');">Down</button>
|
|
<br>
|
|
<button class="wider-button" id="read_proximity" title="Retrieve proximity of devices" onclick="RequestDeploymentProximity();">Read</button>
|
|
<br>
|
|
<button class="wider-button" id="write_proximity" title="Store proximity of devices" onclick="WriteDeploymentProximity();">Write</button>
|
|
<br>
|
|
<button class="wider-button" id="copy_proximity" title="Copy all visible devices to proximity list" onclick="CopyDeploymentProximity();">Copy</button>
|
|
|
|
</div>
|
|
|
|
|
|
<div id="devslist" class="full-height" style="position: absolute; left: -1px; top: 580px; width: 100%; overflow: auto;">
|
|
|
|
<table name="devices" id="devices" cellspacing="2" cellpadding="2">
|
|
<caption>
|
|
Devices
|
|
</caption>
|
|
|
|
<tbody name="devices_body" id="devices_body">
|
|
<tr>
|
|
<th style="text-align:center" scope="col">Id</th>
|
|
<th style="text-align:center" scope="col">MAC</th>
|
|
<th style="text-align:center" scope="col">Last Message</th>
|
|
<th style="text-align:center" scope="col">Last Reboot</th>
|
|
<th style="text-align:center" scope="col">Firmware Ver.</th>
|
|
<th style="text-align:center" scope="col">Location</th>
|
|
<th style="text-align:center" scope="col">Description</th>
|
|
<th style="text-align:center" scope="col">Deployment</th>
|
|
<th style="text-align:center" scope="col">Enable change <input type="checkbox" id="AllSel" onchange="SelDesel();"></th>
|
|
</tr>
|
|
<tr>
|
|
<th scope="row">1</th>
|
|
<td style="text-align:center"><a href="google.com"><input name="mac" type="text" id="mac" style="border:none; text-align:center" value="2333" size="4"></a></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="slrb" id="slrb" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="slms" id="slms" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="fwvr" id="fwvr" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="loc" id="loc" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="desc" id="desc" size="4"></td>
|
|
<td style="text-align:center"><input style="border:none; text-align:center" type="text" name="depl" id="depl" size="4"></td>
|
|
<td style="text-align:center"><input type="checkbox" onchange="IsItSingle();"></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</div>
|
|
<input type="hidden" id="user" value="###USER###" size="4">
|
|
<input type="hidden" id="ps" value="###PASS###" size="4">
|
|
<input type="hidden" id="token" value="###TOKEN###" size="4">
|
|
<input type="hidden" id="privilidges" value="###PRIVILIDGES###" size="4">
|
|
<div id="helper" style="position: absolute; left: 400px; top: 24px; height: 50px; width: 200px;">
|
|
<form name = "myform">
|
|
<input type = "text" name = "stage" size = "32" style="border:0"/>
|
|
</form>
|
|
</div>
|
|
|
|
</body>
|
|
</html>
|