Simplified code that generates data.json

This commit is contained in:
Gunnar Skjold
2021-01-17 15:08:01 +01:00
parent f9597c786e
commit decc4788a7
5 changed files with 190 additions and 280 deletions

View File

@@ -219,12 +219,22 @@ $(function() {
}
});
var setStatus = function(id, status) {
var setStatus = function(id, sid) {
var item = $('#'+id);
item.removeClass('d-none');
item.removeClass (function (index, className) {
return (className.match (/(^|\s)badge-\S+/g) || []).join(' ');
});
var status;
if(sid == 0) {
status = "secondary";
} else if(sid == 1) {
status = "success";
} else if(sid == 2) {
status = "warning";
} else {
status = "danger";
}
item.addClass('badge badge-' + status);
};
@@ -249,150 +259,90 @@ var fetch = function() {
continue;
}
if(isNaN(str)) {
$('.'+id).html(str);
$('.j'+id).html(str);
} else {
var num = parseFloat(str);
$('.'+id).html(num.toFixed(num < 0 ? 0 : num < 10 ? 2 : 1));
$('.j'+id).html(num.toFixed(num < 0 ? 0 : num < 10 ? 2 : 1));
}
$('.r'+id).show();
}
if(window.moment) {
$('.cs').html(moment.duration(parseInt(json.uptime_seconds), 'seconds').humanize());
$('.cs').closest('.row').show();
$('.ju').html(moment.duration(parseInt(json.u), 'seconds').humanize());
}
if(json.status) {
for(var id in json.status) {
setStatus(id, json.status[id]);
setStatus("esp", json.em);
setStatus("han", json.em == 3 ? 0 : json.hm);
setStatus("wifi", json.em == 3 ? 0 : json.wm);
setStatus("mqtt", json.em == 3 ? 0 : json.mm);
if(im && im.gaugeMeter) {
var v = parseInt(json.i);
var pct = (v*100)/parseInt(json.im);
var append = "W";
if(v > 1000) {
v = (v/1000).toFixed(1);
append = "kW";
}
im.gaugeMeter({
percent: pct,
text: v,
append: append
});
}
if(json.mqtt) {
if(em && em.gaugeMeter && json.om) {
var v = parseInt(json.e);
var pct = (v*100)/(parseInt(json.om)*1000);
var append = "W";
if(v > 1000) {
v = (v/1000).toFixed(1);
append = "kW";
}
em.gaugeMeter({
percent: pct,
text: v,
append: append
});
}
if(vm && vm.gaugeMeter && json.u1) {
var v = parseFloat(json.u1);
if(json.u2) {
v = (v+parseFloat(json.u2)+parseFloat(json.u3)) / 3;
}
var pct = (Math.max(v-207, 1)*100/46);
vm.gaugeMeter({
percent: pct,
text: v.toFixed(1)
});
}
if(am && am.gaugeMeter && json.i1 && json.mf) {
var v = parseFloat(json.i1);
if(json.i2) {
v = Math.max(v, parseFloat(json.i2));
}
if(json.i3) {
v = Math.max(v, parseFloat(json.i3));
}
var pct = (v*100)/parseInt(json.mf);
am.gaugeMeter({
percent: pct,
text: v.toFixed(1)
});
}
if(json.me) {
$('.me').addClass('d-none');
$('.me'+json.mqtt.lastError).removeClass('d-none');
$('#ml').html(json.mqtt.lastError);
$('.me'+json.me).removeClass('d-none');
$('#ml').html(json.me);
}
if(json.wifi) {
for(var id in json.wifi) {
var str = json.wifi[id];
dst = $('.'+id);
if(isNaN(str)) {
dst.html(str);
} else {
var num = parseFloat(str);
dst.html(num.toFixed(0));
$('.'+id+'-row').show();
}
}
}
if(json.data) {
var p = 0;
var p_pct = parseInt(json.p_pct);
var p_append = "W";
if(json.data.P) {
p = parseFloat(json.data.P);
if(p > 1000) {
p = (p/1000).toFixed(1);
p_append = "kW";
}
}
if(im && im.gaugeMeter) {
im.gaugeMeter({
percent: p_pct,
text: p,
append: p_append
});
}
var po = 0;
var po_pct = parseInt(json.po_pct);
var po_append = "W";
if(json.data.PO) {
po = parseFloat(json.data.PO);
if(po > 1000) {
po = (po/1000).toFixed(1);
po_append = "kW";
}
}
if(em && em.gaugeMeter) {
em.gaugeMeter({
percent: po_pct,
text: po,
append: po_append
});
}
var v = parseFloat(json.v);
if(v > 0) {
var v_pct = parseInt(json.v_pct);
if(vm && vm.gaugeMeter) {
vm.gaugeMeter({
percent: v_pct,
text: v.toFixed(1)
});
}
}
var a = parseFloat(json.a);
if(a > 0) {
var a_pct = parseInt(json.a_pct);
if(am && am.gaugeMeter) {
am.gaugeMeter({
percent: a_pct,
text: a.toFixed(1)
});
}
}
for(var id in json.data) {
var str = json.data[id];
if(isNaN(str)) {
$('.'+id).html(str);
} else {
var num = parseFloat(str);
$('.'+id).html(num.toFixed(1));
$('.'+id+'-row').show();
}
}
var temp = parseInt(json.temp);
if(temp == -127) {
$('.temp').html("N/A");
}
} else {
if(im && im.gaugeMeter) {
im.gaugeMeter({
percent: 0,
text: "-",
append: "W"
});
}
if(em && em.gaugeMeter) {
em.gaugeMeter({
percent: 0,
text: "-",
append: "W"
});
}
if(vm && vm.gaugeMeter) {
vm.gaugeMeter({
percent: 0,
text: "-"
});
}
if(am && am.gaugeMeter) {
am.gaugeMeter({
percent: 0,
text: "-"
});
}
var temp = parseInt(json.t);
if(temp == -127) {
$('.jt').html("N/A");
}
setTimeout(fetch, interval);
}).fail(function() {

29
web/data.json Normal file
View File

@@ -0,0 +1,29 @@
{
"im" : %d,
"om" : %d,
"mf" : %d,
"i" : %d,
"e" : %d,
"ri" : %d,
"re" : %d,
"ic" : %.1f,
"ec" : %.1f,
"ric" : %.1f,
"rec" : %.1f,
"u1" : %.1f,
"u2" : %.1f,
"u3" : %.1f,
"i1" : %.2f,
"i2" : %.2f,
"i3" : %.2f,
"v" : %.2f,
"r" : %d,
"t" : %.1f,
"u" : %lu,
"m" : %lu,
"em" : %d,
"hm" : %d,
"wm" : %d,
"mm" : %d,
"me" : %d
}

View File

@@ -1,16 +1,16 @@
<div class="bg-white rounded shadow p-1">
<div class="row">
<div class="col-md-3 col-6">
<div class="text-center">Up <span class="cs">{cs}</span></div>
<div class="text-center">Up <span class="ju">{cs}</span></div>
</div>
<div class="col-md-3 col-6">
<div class="text-center">Temperature: <span class="temp">{temp}</span>&deg;C</div>
<div class="text-center">Temperature: <span class="jt">{temp}</span>&deg;C</div>
</div>
<div class="col-md-3 col-6">
<div class="text-center">ESP volt: <span class="vcc">{vcc}</span>V</div>
<div class="text-center">ESP volt: <span class="jv">{vcc}</span>V</div>
</div>
<div class="col-md-3 col-6">
<div class="text-center">WiFi RSSI: <span class="rssi">{rssi}</span>dBm</div>
<div class="text-center">WiFi RSSI: <span class="jr">{rssi}</span>dBm</div>
</div>
</div>
</div>
@@ -21,7 +21,7 @@
<div class="col-sm-6 mt-3">
<div class="bg-white rounded shadow p-3">
<div class="text-center">
<div class="SimpleMeter P" style="display: inline;">
<div class="SimpleMeter ji" style="display: inline;">
{P} W
</div>
<div id="im" class="GaugeMeter rounded"
@@ -35,15 +35,15 @@
data-label="{ti}"
></div>
</div>
<div class="row tPI-row" style="display: {da};">
<div class="col-12 text-right"><span class="tPI">{tPI}</span> kWh</div>
<div class="row ric" style="display: {da};">
<div class="col-12 text-right"><span class="jic">{tPI}</span> kWh</div>
</div>
</div>
</div>
<div class="col-sm-6 mt-3" style="display: {de};">
<div class="bg-white rounded shadow p-3">
<div class="text-center">
<div class="SimpleMeter PO" style="display: inline;">
<div class="SimpleMeter je" style="display: inline;">
{PO} W
</div>
<div id="em" class="GaugeMeter rounded"
@@ -57,29 +57,29 @@
data-label="Export"
></div>
</div>
<div class="row tPO-row" style="display: {da};">
<div class="col-12 text-right"><span class="tPO">{tPO}</span> kWh</div>
<div class="row rec" style="display: {da};">
<div class="col-12 text-right"><span class="jec">{tPO}</span> kWh</div>
</div>
</div>
</div>
<div class="col-sm-6 mt-3" style="display: {dn};">
<div class="bg-white rounded shadow p-3" style="display: {da};">
<h5 class="text-center">Reactive</h5>
<div class="row tQI-row">
<div class="row rric">
<div class="col-4">In</div>
<div class="col-8 text-right"><span class="tQI">{tQI}</span> kvarh</div>
<div class="col-8 text-right"><span class="jric">{tQI}</span> kvarh</div>
<div class="col-4">Out</div>
<div class="col-8 text-right"><span class="tQO">{tQO}</span> kvarh</div>
<div class="col-8 text-right"><span class="jrec">{tQO}</span> kvarh</div>
</div>
</div>
</div>
<div class="col-sm-12 mt-3" style="display: {de};">
<div class="bg-white rounded shadow p-3" style="display: {da};">
<div class="row tQO-row">
<div class="row rrec">
<div class="col-4 col-sm-2">In</div>
<div class="col-8 col-sm-4 text-right"><span class="tQI">{tQI}</span> kvarh</div>
<div class="col-8 col-sm-4 text-right"><span class="jric">{tQI}</span> kvarh</div>
<div class="col-4 col-sm-2">Out</div>
<div class="col-8 col-sm-4 text-right"><span class="tQO">{tQO}</span> kvarh</div>
<div class="col-8 col-sm-4 text-right"><span class="jrec">{tQO}</span> kvarh</div>
</div>
</div>
</div>
@@ -99,10 +99,10 @@
data-label="Volt"
></div>
</div>
<div class="row U2-row" style="display: {3p};">
<div class="col-4"><span class="U1">{U1}</span>V</div>
<div class="col-4 text-center"><span class="U2">{U2}</span>V</div>
<div class="col-4 text-right"><span class="U3">{U3}</span>V</div>
<div class="row ru2" style="display: {3p};">
<div class="col-4"><span class="ju1">{U1}</span>V</div>
<div class="col-4 text-center"><span class="ju2">{U2}</span>V</div>
<div class="col-4 text-right"><span class="ju3">{U3}</span>V</div>
</div>
</div>
</div>
@@ -120,10 +120,10 @@
data-label="Ampere"
></div>
</div>
<div class="row I2-row" style="display: {3p};">
<div class="col-4"><span class="I1">{I1}</span>A</div>
<div class="col-4 text-center"><span class="I2">{I2}</span>A</div>
<div class="col-4 text-right"><span class="I3">{I3}</span>A</div>
<div class="row ru2" style="display: {3p};">
<div class="col-4"><span class="ji1">{I1}</span>A</div>
<div class="col-4 text-center"><span class="ji2">{I2}</span>A</div>
<div class="col-4 text-right"><span class="ji3">{I3}</span>A</div>
</div>
</div>
</div>