mirror of
https://github.com/oopuuu/zTC1.git
synced 2025-12-13 05:28:14 +08:00
demo
This commit is contained in:
429
TC1/http_server/demo/demo.html
Normal file
429
TC1/http_server/demo/demo.html
Normal file
@@ -0,0 +1,429 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html" charset="utf-8">
|
||||
<meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0" name="viewport">
|
||||
<title>Welcom TC1</title>
|
||||
<style type="text/css">
|
||||
fieldset{margin-bottom:10px;border:#000 solid 1px;}
|
||||
input,select,button{padding:5px;background:white;border:#777 solid 1px;}
|
||||
button{background:none;border:1px #777 solid;}
|
||||
button:disabled,select:disabled,input:disabled{background:#bfbfbf;}
|
||||
td{padding:5px;}
|
||||
.socket input,.mode input{margin-right:-4px;}
|
||||
.submit{padding:5px;margin-top:5px;}
|
||||
.success{color:#58dc5c;}
|
||||
.error{color:#ff2d2d;}
|
||||
.info{color:#e700ea;}
|
||||
.network div{padding:5px;}
|
||||
.connect div{padding:5px;}
|
||||
.right{text-align:right;}
|
||||
.pw{width:100%}
|
||||
.pw td{width:50%}
|
||||
.line{border-top:1px solid #dedede;}
|
||||
.line_1{height:3px;}
|
||||
.line_2{height:5px;}
|
||||
.line_3{height:5px;}
|
||||
.line_4{height:25px;}
|
||||
.line_5{height:20px;}
|
||||
.line_6{height:16px;}
|
||||
.line_7{height:15px;}
|
||||
.line_8{height:12px;}
|
||||
.line_9{height:10px;border:none;}
|
||||
#power_div{margin-top:10px;border-left:1px solid #000;border-bottom:1px solid #000;}
|
||||
#power_line{height:120px;position:relative;overflow:scroll;margin-top:-120px;}
|
||||
.power_pre{position:absolute;bottom:0;float:left;height:76px;width:0;border-left:1px solid #00ffff38;border-top:1px solid #000;}
|
||||
.power_by{text-align:center;}
|
||||
.power_by a{text-decoration:none;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<fieldset class="socket">
|
||||
<legend>Power Controll</legend>
|
||||
<table id="socket_tb">
|
||||
<tr>
|
||||
<td>
|
||||
<input type="checkbox" id="socket1" name="socket">
|
||||
<label for="socket1">Socket-1</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="checkbox" id="socket2" name="socket">
|
||||
<label for="socket2">Socket-2</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="checkbox" id="socket3" name="socket">
|
||||
<label for="socket3">Socket-3</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<input type="checkbox" id="socket4" name="socket">
|
||||
<label for="socket4">Socket-4</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="checkbox" id="socket5" name="socket">
|
||||
<label for="socket5">Socket-5</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="checkbox" id="socket6" name="socket">
|
||||
<label for="socket6">Socket-6</label>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="submit">
|
||||
<button class="submit_bt" onclick="SetSocket()">Submit</button>
|
||||
<span class="status_sp success">OK</span>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="chart">
|
||||
<legend>Power Status</legend>
|
||||
<table class="pw">
|
||||
<tr>
|
||||
<td>P: <span id="p" class="success">0</span> W</td>
|
||||
<td>W: <span id="w" class="error">0</span> kW·h</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div id="power_div">
|
||||
<div class="line line_9"></div>
|
||||
<div class="line line_8"></div>
|
||||
<div class="line line_7"></div>
|
||||
<div class="line line_6"></div>
|
||||
<div class="line line_5"></div>
|
||||
<div class="line line_4"></div>
|
||||
<div class="line line_3"></div>
|
||||
<div class="line line_2"></div>
|
||||
<div class="line line_1"></div>
|
||||
</div>
|
||||
<div id="power_line">
|
||||
<!-- <div class="power_pre" style="height:70px;left:20px;"></div> -->
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="network">
|
||||
<legend>Network Config</legend>
|
||||
<table>
|
||||
<tr>
|
||||
<td class="right">SSID:</td>
|
||||
<td>
|
||||
<select id="wifi" onchange="SelectWifi()">
|
||||
<option value="0">Manual</option>
|
||||
</select>
|
||||
<button id="rescan" onclick="Rescan()">Rescan</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="right">SSID:</td>
|
||||
<td>
|
||||
<input id="ssid" type="text" onchange="ChangeInput(1)"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="right">PSWD:</td>
|
||||
<td>
|
||||
<input id="pswd" type="password" onchange="ChangeInput(2)"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="right">MODE:</td>
|
||||
<td class="mode">
|
||||
<input type="radio" id="mode1" name="mode" onchange="ChangeMode(0)">
|
||||
<label for="mode1">AP</label>
|
||||
<input type="radio" id="mode2" name="mode" onchange="ChangeMode(1)">
|
||||
<label for="mode2">STATION</label>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="submit">
|
||||
<button class="submit_bt" onclick="SubmitNetwork()">Submit</button>
|
||||
<span class="status_sp success">OK</span>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>MQTT Config</legend>
|
||||
<table>
|
||||
<tr>
|
||||
<td class="right">MQTT:</td>
|
||||
<td>
|
||||
<input id="mqtt_addr"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="right">PORT:</td>
|
||||
<td>
|
||||
<input id="mqtt_port"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="submit">
|
||||
<button class="submit_bt" onclick="SubmitMqtt()">Submit</button>
|
||||
<span class="status_sp success">OK</span>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="connect">
|
||||
<legend>System Status</legend>
|
||||
<table>
|
||||
<tr>
|
||||
<td class="right">IP:</td>
|
||||
<td class="info" id="ip"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="right">Mask:</td>
|
||||
<td class="info" id="mask"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="right">Gateway:</td>
|
||||
<td class="info" id="gateway"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="right">Uptime:</td>
|
||||
<td class="success" id="uptime"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
<p class="power_by">power by <a href="https://github.com/zogodo/zTC1" target="_blank">github/zTC1</a></p>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
function Ajax(url, onsuccess, type, data) {
|
||||
var xml_http = new XMLHttpRequest();
|
||||
xml_http.open(type, url, true);
|
||||
xml_http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
|
||||
xml_http.onreadystatechange = function () {
|
||||
if (xml_http.readyState == 4) {
|
||||
if (xml_http.status == 200) {
|
||||
onsuccess(xml_http.responseText.replace(/'/g, '"'));
|
||||
}
|
||||
else {
|
||||
alert("Ajax error: " + xml_http.status);
|
||||
}
|
||||
}
|
||||
};
|
||||
if (data != null && type == "POST") {
|
||||
xml_http.send(data);
|
||||
} else {
|
||||
xml_http.send();
|
||||
}
|
||||
}
|
||||
function HttpGet(url, onsuccess) {
|
||||
Ajax(url, onsuccess, "GET", null);
|
||||
}
|
||||
function HttpPost(url, onsuccess, data) {
|
||||
Ajax(url, onsuccess, "POST", data);
|
||||
}
|
||||
|
||||
var submit_bts = document.getElementsByClassName("submit_bt");
|
||||
var info_spans = document.getElementsByClassName("status_sp");
|
||||
|
||||
var socket_tb = document.getElementById("socket_tb");
|
||||
var checkboxs = socket_tb.getElementsByTagName("input");
|
||||
|
||||
var p = document.getElementById("p");
|
||||
var w = document.getElementById("w");
|
||||
var power_line = document.getElementById("power_line");
|
||||
|
||||
var rescan_btn = document.getElementById("rescan");
|
||||
var ssid_slt = document.getElementById("wifi");
|
||||
var ssid_ipt = document.getElementById("ssid");
|
||||
var pswd_ipt = document.getElementById("pswd");
|
||||
var mode_rd1 = document.getElementById("mode1");
|
||||
var mode_rd2 = document.getElementById("mode2");
|
||||
|
||||
var mqtt_addr_ipt = document.getElementById("mqtt_addr");
|
||||
var mqtt_port_ipt = document.getElementById("mqtt_port");
|
||||
|
||||
var info_ip = document.getElementById("ip");
|
||||
var info_mask = document.getElementById("mask");
|
||||
var info_gateway = document.getElementById("gateway");
|
||||
var uptime = document.getElementById("uptime");
|
||||
|
||||
var mode = -1;
|
||||
var ap_name = "";
|
||||
var ap_pswd = "";
|
||||
var station_name = "";
|
||||
var station_pswd = "";
|
||||
HttpGet("/status", function (re) {
|
||||
var status = JSON.parse(re);
|
||||
var status_arr = status.sockets.split(",");
|
||||
for (var i = 0; i < status_arr.length; i++) {
|
||||
checkboxs[i].checked = status_arr[i] == "1";
|
||||
station_name = status.station_ssid;
|
||||
station_pswd = status.station_pwd;
|
||||
ap_name = status.ap_ssid;
|
||||
ap_pswd = status.ap_pwd;
|
||||
//mode = status.mode;
|
||||
ChangeMode(status.mode);
|
||||
|
||||
mqtt_addr_ipt.value = status.mqtt_addr;
|
||||
mqtt_port_ipt.value = status.mqtt_port;
|
||||
|
||||
info_ip.innerHTML = status.ip;
|
||||
info_mask.innerHTML = status.mask;
|
||||
info_gateway.innerHTML = status.gateway;
|
||||
uptime.innerHTML = status.start_time;
|
||||
}
|
||||
});
|
||||
|
||||
var power_idx = 0;
|
||||
var position = 0;
|
||||
function GetPowerRecord() {
|
||||
HttpPost("/power", function (re) {
|
||||
var power = JSON.parse(re);
|
||||
power_idx = power.idx + 1;
|
||||
|
||||
power.powers = new Array();
|
||||
for (var i = 0; i < 1000; i++) {
|
||||
power.powers[i] = Math.sin(i*0.1)*1500 + 5000;
|
||||
}
|
||||
|
||||
var html = "";
|
||||
for (var i = 0; i < power.powers.length; i++) {
|
||||
var curr_p = power.powers[i]/10;
|
||||
p.innerHTML = curr_p.toFixed(2);
|
||||
var y = Math.pow(curr_p, 0.6);
|
||||
html += "<div class='power_pre' style='height:"+y+"px;left:"+position+"px;'></div>";
|
||||
position += 1;
|
||||
}
|
||||
if (power.powers.length != 0) {
|
||||
power_line.innerHTML += html;
|
||||
power_line.scrollTo(power_line.scrollWidth, 0); //滑动到最后
|
||||
}
|
||||
var w_v = (17.1 * power.p_count) / 1000 / 36000;
|
||||
w.innerHTML = w_v.toFixed(2); //累加功率
|
||||
uptime.innerHTML = power.up_time;
|
||||
//window.setTimeout(GetPowerRecord, 3000);
|
||||
}, power_idx.toString());
|
||||
}
|
||||
GetPowerRecord();
|
||||
|
||||
function SetOK(i) {
|
||||
submit_bts[i].disabled = false;
|
||||
info_spans[i].className = "status_sp success";
|
||||
info_spans[i].innerHTML = "OK";
|
||||
}
|
||||
function SetIng(i) {
|
||||
submit_bts[i].disabled = true;
|
||||
info_spans[i].className = "status_sp info";
|
||||
info_spans[i].innerHTML = "ing...";
|
||||
}
|
||||
|
||||
function SetSocket() {
|
||||
SetIng(0);
|
||||
var sockets_st = "";
|
||||
for (var i = 0; i < checkboxs.length; i++) {
|
||||
sockets_st += (checkboxs[i].checked ? "1," : "0,");
|
||||
}
|
||||
HttpPost("/socket", function (re) {
|
||||
SetOK(0);
|
||||
}, sockets_st);
|
||||
}
|
||||
|
||||
function SelectWifi() {
|
||||
ssid_ipt.disabled = ssid_slt.value != "0";
|
||||
if (ssid_slt.value == "0") {
|
||||
ssid_ipt.value = station_name;
|
||||
} else {
|
||||
ssid_ipt.value = ssid_slt.options[ssid_slt.selectedIndex].text;
|
||||
}
|
||||
}
|
||||
|
||||
function ChangeMode(m) {
|
||||
if (mode == m) return;
|
||||
if (m != 1) {
|
||||
//AP模式
|
||||
mode_rd1.checked = true;
|
||||
ssid_slt.value = "0";
|
||||
ssid_slt.disabled = true;
|
||||
rescan_btn.disabled = true;
|
||||
ssid_ipt.disabled = false;
|
||||
ssid_ipt.value = ap_name;
|
||||
pswd_ipt.value = ap_pswd;
|
||||
} else {
|
||||
//Station模式
|
||||
mode_rd2.checked = true;
|
||||
ssid_slt.value = "0";
|
||||
ssid_slt.disabled = false;
|
||||
rescan_btn.disabled = false;
|
||||
ssid_ipt.disabled = false;
|
||||
ssid_ipt.value = station_name;
|
||||
pswd_ipt.value = station_pswd;
|
||||
}
|
||||
mode = m;
|
||||
}
|
||||
|
||||
function ChangeInput(type) {
|
||||
if(mode != 1) {
|
||||
ap_name = ssid_ipt.value;
|
||||
ap_pswd = pswd_ipt.value;
|
||||
} else {
|
||||
station_name = ssid_ipt.value;
|
||||
station_pswd = pswd_ipt.value;
|
||||
}
|
||||
}
|
||||
|
||||
//Quotation Marks
|
||||
function ContainQM(str) {
|
||||
if (str.indexOf("'") >= 0
|
||||
|| str.indexOf('"') >= 0
|
||||
|| str.indexOf(' ') >= 0
|
||||
|| str.length > 32) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
var qm_mess = "Sorry, can't use ' or \" or space.\n\nAlso, length <= 32."
|
||||
|
||||
function SubmitNetwork() {
|
||||
if(mode != 1) {
|
||||
if (ContainQM(ap_name) || ContainQM(ap_pswd)) {
|
||||
alert(qm_mess);
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
if (ContainQM(station_name) || ContainQM(station_pswd)) {
|
||||
alert(qm_mess);
|
||||
return;
|
||||
}
|
||||
var params = station_name+" "+station_pswd;
|
||||
HttpPost("/wifi/config", function (re) {
|
||||
alert(re);
|
||||
}, params);
|
||||
}
|
||||
}
|
||||
|
||||
function Rescan() {
|
||||
HttpPost("/wifi/scan", function (re) {
|
||||
if (re == "OK") {
|
||||
rescan_btn.innerHTML = "Scanning...";
|
||||
rescan_btn.disabled = true;
|
||||
window.setTimeout(GetScanResult, 1000);
|
||||
} else {
|
||||
alert(re);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function GetScanResult() {
|
||||
HttpGet("/wifi/scan", function (re) {
|
||||
if (re != "NO") {
|
||||
var ret = JSON.parse(re);
|
||||
var html = "<option value='0'>Manual</option>";
|
||||
for (var i = 0; i < ret.ssids.length; i++) {
|
||||
html += "<option value='"+(i+1)+"'>"+ret.ssids[i]+"</option>";
|
||||
}
|
||||
ssid_slt.innerHTML = html;
|
||||
|
||||
rescan_btn.innerHTML = "Rescan";
|
||||
rescan_btn.disabled = false;
|
||||
return;
|
||||
}
|
||||
window.setTimeout(GetScanResult, 1000);
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
1
TC1/http_server/demo/power
Normal file
1
TC1/http_server/demo/power
Normal file
@@ -0,0 +1 @@
|
||||
{'idx':1332,'len':100,'p_count':36000000,'powers':[20,18,17,30,29,26,24,21,18,17,30,28,26,24,22,20,18,17,29,26,24,22,18,17,31,29,26,23,21,19,17,30,28,26,23,20,17,17,29,26,25,23,20,17,32,30,28,25,24,21,19,17,31,28,27,25,22,20,17,32,29,26,23,21,17,17,28,25,23,20,18,17,31,28,26,23,20,18,17,31,29,27,25,23,21,18,17,31,28,26,24,22,20,17,17,29,26,24,22,19],'up_time':'0:22:13'}
|
||||
1
TC1/http_server/demo/socket
Normal file
1
TC1/http_server/demo/socket
Normal file
@@ -0,0 +1 @@
|
||||
1,1,0,1,0,1
|
||||
1
TC1/http_server/demo/status
Normal file
1
TC1/http_server/demo/status
Normal file
@@ -0,0 +1 @@
|
||||
{ 'sockets':'1,1,1,1,0,1', 'mode':1, 'station_ssid':'TL-5408', 'station_pwd':'stu@5408', 'ap_ssid':'TC1-AP', 'ap_pwd':'12345678', 'mqtt_addr':'MQTT.ADDR', 'mqtt_port':1883, 'ip':'192.168.33.222', 'mask':'255.255.255.0', 'gateway':'192.168.33.1', 'start_time':0}
|
||||
Reference in New Issue
Block a user