sync web pages and dynamic variables

This commit is contained in:
Bogdan Pilyugin 2022-08-19 18:37:43 +02:00
parent 5d090ec18e
commit a5aa43d594
11 changed files with 20 additions and 108 deletions

View File

@ -5,14 +5,8 @@ favicon.ico
gendata.json
head.inc
index.html
index20.html
index21.html
index22.html
index23.html
index30.html
index31.html
index32.html
index33.html
index40.html
index41.html
ioscr.js
@ -29,6 +23,12 @@ reboot.html
set1.json
set2.json
set3.json
set_eth.html
set_gprs.html
set_mqtt.html
set_sys.html
set_time.html
set_wifi.html
stat.json
status.json
style.css

View File

@ -7,36 +7,11 @@
Home|State[<span id='dn'>?</span>]
</div>
<div style='text-align:center;margin-top:20px'>
<span id="name" ><div class='hdr1'>Станция 'Etherbox-07'</div></span>
<span id="name" ><div class='hdr1'>Your device name'</div></span>
<span id='localtime'>?</span><br/>
Время работы:<span id='uptime'>?</span><br/><br/>
Входное напряжение:<span id='volt2'>?</span> В<br/>
Системное напряжение:<span id='volt'>?</span> В<br/>
Напряжение батареи:<span id='volt3'>?</span> В<br/>
Уровень WiFi:<span id='wlev' style="color:#0099ff;font-weight:bold">?</span><br/>
</div>
<div class='stg indic'>
<table><tr><td>
<table>
<tr><td align='right'>Район 1</td><td align='left'><span class='dot' id='led1'></span></td></tr>
<tr><td align='right'>Район 2</td><td align='left'><span class='dot' id='led2'></span></td></tr>
<tr><td align='right'>Район 3</td><td align='left'><span class='dot' id='led3'></span></td></tr>
<tr><td align='right'>Район 4</td><td align='left'><span class='dot' id='led4'></span></td></tr>
<tr><td align='right'>Район 5</td><td align='left'><span class='dot' id='led5'></span></td></tr>
<tr><td align='right'>Район 6</td><td align='left'><span class='dot' id='led6'></span></td></tr>
<tr><td align='right'>Район 7</td><td align='left'><span class='dot' id='led7'></span></td></tr>
<tr><td align='right'>Район 8</td><td align='left'><span class='dot' id='led8'></span></td></tr>
</table>
</td><td valign='top'>
<table>
<tr><td align='right'><span class='dot' id='sys1'></span></td><td align='left'>Система</td></tr>
<tr><td align='right'><span class='dot' id='sys2'></span></td><td align='left'>Питание</td></tr>
<tr><td align='right'><span class='dot' id='sys3'></span></td><td align='left'>Батарея</td></tr>
<tr><td align='right'><span class='dot' id='sys4'></span></td><td align='left'>Связь</td></tr>
</table>
</td>
</tr></table>
</div>
</div>
</div>
</body>
@ -45,56 +20,18 @@ var tmr;
function updateStatus(xmlData) {
var dat = JSON.parse(xmlData);
var theDate,sec,wl,volt,dnam;
var zr,zy,zg;
var sr,sy,sg;
try{
theDate = new Date(dat.time * 1000);
sec = dat.uptime;
wl = dat.wlev;
volt = dat.vlsys;
volt2 = dat.vlin;
volt3 = dat.vlbat;
dnam = dat.dname;
zr = dat.zred;
zy = dat.zyel;
zg = dat.zgrn;
sr = dat.sred;
sy = dat.syel;
sg = dat.sgrn;
}
catch(e){return;}
volt = (volt*4.7/1000).toFixed(1);
volt2 = (volt2*11/1000+1.4).toFixed(1);
volt3 = (volt3*6.8/1000).toFixed(1);
document.getElementById('localtime').innerHTML = (theDate.toString()).slice(0,34);
document.getElementById('uptime').innerHTML= secondsToHms(sec);
document.getElementById('volt').innerHTML= volt;
document.getElementById('volt2').innerHTML= volt2;
document.getElementById('volt3').innerHTML= volt3;
document.getElementById('wlev').innerHTML= wl;
document.getElementById('dn').innerHTML= dnam;
for(i=1; i<=8; ++i)
{
document.getElementById('led'+i).style.backgroundColor = '#d0d0d0'
if(zg & 1) document.getElementById('led'+i).style.backgroundColor = '#00cc00';
if(zy & 1) document.getElementById('led'+i).style.backgroundColor = '#ffff00';
if(zr & 1) document.getElementById('led'+i).style.backgroundColor = '#ff0000';
zg >>=1;
zy >>=1;
zr >>=1;
}
for(i=1;i<=4;++i)
{
document.getElementById('sys'+i).style.backgroundColor = '#d0d0d0'
if(sg & 8) document.getElementById('sys'+i).style.backgroundColor = '#00cc00';
if(sy & 8) document.getElementById('sys'+i).style.backgroundColor = '#ffff00';
if(sr & 8) document.getElementById('sys'+i).style.backgroundColor = '#ff0000';
sg <<=1;
sy <<=1;
sr <<=1;
}
function secondsToHms(d) {
d = Number(d);
var dd = Math.floor(d/86400);

View File

@ -30,14 +30,14 @@ document.write("<li><a href='index41.html'>Статистика</a></li></ul></l
document.write("<li><a href='#'>Настройки</a><ul>");
document.write("<li><a href='index30.html'>Панель</a></li>");
document.write("<li><a href='index31.html'>Станция</a></li>");
document.write("<li><a href='index32.html'>Система</a></li>");
document.write("<li><a href='index33.html'>Время</a></li></ul></li>");
document.write("<li><a href='set_mqtt.html'>MQTT</a></li>");
document.write("<li><a href='set_sys.html'>System</a></li>");
document.write("<li><a href='set_time.html'>Time</a></li></ul></li>");
document.write("<li><a href='#'>Сеть</a><ul>");
document.write("<li><a href='index20.html'>Ethernet</a></li>");
document.write("<li><a href='index21.html'>WiFi</a></li>");
document.write("<li><a href='index22.html'>GPRS</a></li>");
document.write("<li><a href='set_eth.html'>Ethernet</a></li>");
document.write("<li><a href='set_wifi.html'>WiFi</a></li>");
document.write("<li><a href='set_gprs.html'>GPRS</a></li>");
document.write("<li><a href='index23.html'>LoRaWAN</a></li></ul></li>");
document.write("</ul></nav></div>");}

@ -1 +1 @@
Subproject commit 4b8b8a36d327713a0c08998a7d11b538fd3a8a06
Subproject commit f4ee6c25c7c93db384e47fdf0cac1027498e87de

View File

@ -28,11 +28,6 @@ static void HTTPPrint_DEF(char *VarData, void *arg)
snprintf(VarData, MAX_DYNVAR_LENGTH, "#DEF");
}
void HTTPPrint_topic2(char *VarData, void *arg)
{
snprintf(VarData, MAX_DYNVAR_LENGTH, "%s", "custom-dyn_var");
}
static void HTTPPrint_status_fail(char *VarData, void *arg)
{
snprintf(VarData, MAX_DYNVAR_LENGTH, "none");
@ -41,7 +36,6 @@ static void HTTPPrint_status_fail(char *VarData, void *arg)
dyn_var_handler_t HANDLERS_ARRAY_CUST[] = {
/*ERROR report*/
{ "topic2", sizeof("topic2") - 1, &HTTPPrint_topic2 },
{ "status_fail", sizeof("status_fail") - 1, &HTTPPrint_status_fail },
};
@ -50,33 +44,13 @@ dyn_var_handler_t HANDLERS_ARRAY_CUST[] = {
int HTTPPrintCustom(httpd_req_t *req, char *buf, char *var)
{
char VarData[MAX_DYNVAR_LENGTH];
const char incPat[] = "inc:";
const int incPatLen = sizeof(incPat) - 1;
if (!memcmp(var, incPat, incPatLen))
{
const char rootFS[] = "/";
char filename[32];
filename[0] = 0x00;
var += incPatLen;
strcat(filename, rootFS);
strcat(filename, var);
espfs_file_t *file = espfs_fopen(fs, filename);
struct espfs_stat_t stat;
if (file)
{
espfs_fstat(file, &stat);
int readBytes = espfs_fread(file, buf, stat.size);
espfs_fclose(file);
return readBytes;
}
}
bool fnd = false;
char *p2 = var + strlen(var) - 1; //last var symbol
int arg = 0;
//searching for tag in handles array
for (int i = 0; i < (sizeof(HANDLERS_ARRAY_CUST) / sizeof(HANDLERS_ARRAY_CUST[0])); ++i)
{
//Try to extract integer parameter from dynamic variable
if (*p2 == ')')
{ //found close brace
char *p1 = p2;
@ -90,6 +64,7 @@ int HTTPPrintCustom(httpd_req_t *req, char *buf, char *var)
arg = atoi(p1);
}
}
if (strcmp(var, HANDLERS_ARRAY_CUST[i].tag) == 0
&& HANDLERS_ARRAY_CUST[i].HandlerRoutine != NULL)
{