Implementing Web Portal
This commit is contained in:
parent
8890e8acbd
commit
f0ef52d5c0
@ -1 +1 @@
|
|||||||
{"debugMode":true,"status":{"igniter":0,"blower":0,"auger":0,"igniterFinished":true,"seenFire":false,"shutdown":0,"vacuum":1,"pof":1},"timestamps":{"procStart":1671648471606,"blowerOn":1671648232716,"blowerOff":1671648326617,"igniterOn":1671648232717,"igniterOff":1671648263542},"intervals":{"augerOn":500,"augerOff":1500,"pause":3000,"igniterStart":30000,"blowerStop":10000},"web":{"port":8080,"ip":"127.0.0.1"}}
|
{"debugMode":true,"status":{"igniter":0,"blower":1,"auger":1,"igniterFinished":true,"seenFire":false,"shutdown":0,"vacuum":1,"pof":1},"timestamps":{"procStart":1671671326941,"blowerOn":1671670035064,"blowerOff":1671660280248,"igniterOn":1671670035064,"igniterOff":1671670065800},"intervals":{"augerOn":500,"augerOff":1500,"pause":3000,"igniterStart":30000,"blowerStop":10000},"web":{"port":8080,"ip":"0.0.0.0"}}
|
80
log.txt
80
log.txt
@ -0,0 +1,80 @@
|
|||||||
|
[0] I: Not running on a Raspberry Pi.
|
||||||
|
== Lennox Winslow PS40
|
||||||
|
== Pellet Stove Control Panel
|
||||||
|
== Author: Skylar Grant
|
||||||
|
== Version: v0.2.1
|
||||||
|
==
|
||||||
|
== Startup Time: 2022-12-21T22:02:46.124Z
|
||||||
|
==
|
||||||
|
== Environment variables:
|
||||||
|
== == ONTIME=500
|
||||||
|
== == OFFTIME=1500
|
||||||
|
== == PAUSETIME=3000
|
||||||
|
== == DEBUG=true
|
||||||
|
== == ONPI=false
|
||||||
|
[0.008] I: == GPIO Not Available
|
||||||
|
[0.008] I: Pausing for 3000ms
|
||||||
|
[3.012] I: Pausing for 3000ms
|
||||||
|
[6.015] I: Pausing for 3000ms
|
||||||
|
[9.016] I: Pausing for 3000ms
|
||||||
|
[12.018] I: Pausing for 3000ms
|
||||||
|
[15.02] I: Pausing for 3000ms
|
||||||
|
[18.021] I: Pausing for 3000ms
|
||||||
|
[21.023] I: Pausing for 3000ms
|
||||||
|
[21.995] I: Blower turned on.
|
||||||
|
[21.995] I: Igniter turned on.
|
||||||
|
[21.995] I: Auger enabled.
|
||||||
|
[24.024] I: The igniter is on. Started: 17:3:8. Stopping: 17:3:38.
|
||||||
|
[26.027] I: The igniter is on. Started: 17:3:8. Stopping: 17:3:38.
|
||||||
|
[28.03] I: The igniter is on. Started: 17:3:8. Stopping: 17:3:38.
|
||||||
|
[30.034] I: The igniter is on. Started: 17:3:8. Stopping: 17:3:38.
|
||||||
|
[32.037] I: The igniter is on. Started: 17:3:8. Stopping: 17:3:38.
|
||||||
|
[34.04] I: The igniter is on. Started: 17:3:8. Stopping: 17:3:38.
|
||||||
|
[36.045] I: The igniter is on. Started: 17:3:8. Stopping: 17:3:38.
|
||||||
|
[38.047] I: The igniter is on. Started: 17:3:8. Stopping: 17:3:38.
|
||||||
|
[40.05] I: The igniter is on. Started: 17:3:8. Stopping: 17:3:38.
|
||||||
|
[42.053] I: The igniter is on. Started: 17:3:8. Stopping: 17:3:38.
|
||||||
|
[44.056] I: The igniter is on. Started: 17:3:8. Stopping: 17:3:38.
|
||||||
|
[46.06] I: The igniter is on. Started: 17:3:8. Stopping: 17:3:38.
|
||||||
|
[48.063] I: The igniter is on. Started: 17:3:8. Stopping: 17:3:38.
|
||||||
|
[50.066] I: The igniter is on. Started: 17:3:8. Stopping: 17:3:38.
|
||||||
|
[52.069] I: Igniter turned off.
|
||||||
|
[52.069] I: The igniter is on.
|
||||||
|
[71.858] I: Auger disabled.
|
||||||
|
A shutdown has already been initiated and the blower is preventing shutdown.
|
||||||
|
[72.094] I: Pausing for 3000ms
|
||||||
|
A shutdown has already been initiated and the blower is preventing shutdown.
|
||||||
|
[75.096] I: Pausing for 3000ms
|
||||||
|
A shutdown has already been initiated and the blower is preventing shutdown.
|
||||||
|
[78.098] I: Pausing for 3000ms
|
||||||
|
A shutdown has already been initiated and the blower is preventing shutdown.
|
||||||
|
[81.1] I: Pausing for 3000ms
|
||||||
|
[84.101] I: Blower can be turned off.
|
||||||
|
Shutting down...
|
||||||
|
[84.102] I: Pausing for 3000ms
|
||||||
|
[87.103] I: Pausing for 3000ms
|
||||||
|
[90.105] I: Pausing for 3000ms
|
||||||
|
[93.106] I: Pausing for 3000ms
|
||||||
|
[96.108] I: Pausing for 3000ms
|
||||||
|
[98.989] I: Blower turned on.
|
||||||
|
[98.99] I: Igniter turned on.
|
||||||
|
[98.99] I: Auger enabled.
|
||||||
|
[99.11] I: The igniter is on. Started: 17:4:25. Stopping: 17:4:55.
|
||||||
|
[101.113] I: The igniter is on. Started: 17:4:25. Stopping: 17:4:55.
|
||||||
|
[103.115] I: The igniter is on. Started: 17:4:25. Stopping: 17:4:55.
|
||||||
|
[103.441] I: Auger disabled.
|
||||||
|
[103.441] I: Igniter turned off.
|
||||||
|
A shutdown has already been initiated and the blower is preventing shutdown.
|
||||||
|
[105.119] I: Pausing for 3000ms
|
||||||
|
A shutdown has already been initiated and the blower is preventing shutdown.
|
||||||
|
[108.12] I: Pausing for 3000ms
|
||||||
|
A shutdown has already been initiated and the blower is preventing shutdown.
|
||||||
|
[111.123] I: Pausing for 3000ms
|
||||||
|
[114.124] I: Blower can be turned off.
|
||||||
|
Shutting down...
|
||||||
|
[114.125] I: Pausing for 3000ms
|
||||||
|
[117.126] I: Pausing for 3000ms
|
||||||
|
[120.128] I: Pausing for 3000ms
|
||||||
|
[123.129] I: Pausing for 3000ms
|
||||||
|
[126.131] I: Pausing for 3000ms
|
||||||
|
[129.132] I: Pausing for 3000ms
|
@ -1 +1 @@
|
|||||||
/Users/voidf1sh/pscontrolpanel/config.json
|
../../config.json
|
BIN
www/public/dancing_jesus.gif
Normal file
BIN
www/public/dancing_jesus.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 163 KiB |
@ -1 +1 @@
|
|||||||
/Users/voidf1sh/pscontrolpanel/log.txt
|
../../log.txt
|
@ -1,4 +1,6 @@
|
|||||||
html, body {
|
html, body {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
background-color: #333;
|
background-color: #333;
|
||||||
color: aqua;
|
color: aqua;
|
||||||
font-family: sans-serif;
|
font-family: sans-serif;
|
||||||
@ -33,6 +35,12 @@ html, body {
|
|||||||
margin: 5px;
|
margin: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.subheading {
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: bold;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
#log-container {
|
#log-container {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
@ -48,4 +56,38 @@ html, body {
|
|||||||
color: yellow;
|
color: yellow;
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
background-color: red;
|
background-color: red;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.button-container {
|
||||||
|
padding: 0;
|
||||||
|
margin-top: 20px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-unselected {
|
||||||
|
margin: 5px;
|
||||||
|
border-width: 0px;
|
||||||
|
font-family: times;
|
||||||
|
font-size: 20px;
|
||||||
|
height: 35px;
|
||||||
|
width: 100px;
|
||||||
|
border-top-left-radius: 0px;
|
||||||
|
border-bottom-left-radius: 0px;
|
||||||
|
border-top-right-radius: 0px;
|
||||||
|
border-bottom-right-radius: 0px;
|
||||||
|
background-color: #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-selected {
|
||||||
|
margin: 5px;
|
||||||
|
border-width: 0px;
|
||||||
|
font-family: times;
|
||||||
|
font-size: 20px;
|
||||||
|
height: 35px;
|
||||||
|
width: 100px;
|
||||||
|
border-top-left-radius: 0px;
|
||||||
|
border-bottom-left-radius: 0px;
|
||||||
|
border-top-right-radius: 0px;
|
||||||
|
border-bottom-right-radius: 0px;
|
||||||
|
}
|
||||||
|
@ -12,15 +12,24 @@
|
|||||||
<div id="controls-container">
|
<div id="controls-container">
|
||||||
<form action="/" method="post">
|
<form action="/" method="post">
|
||||||
<!-- Start | Shutdown | Reload Settings -->
|
<!-- Start | Shutdown | Reload Settings -->
|
||||||
<div id="buttons">
|
<div class="button-container">
|
||||||
<input type="submit" id="ignite" value="Start" name="start"><input type="submit" id="shutdown" value="Shutdown" name="shutdown"><input type="submit" id="reload" value="Reload" name="reload"><br>
|
<input class="button-unselected" type="submit" id="ignite" value="Start" name="start"><input class="button-unselected" type="submit" id="shutdown" value="Shutdown" name="shutdown"><input class="button-unselected" type="submit" id="reload" value="Reload" name="reload"><br>
|
||||||
</div>
|
</div>
|
||||||
<!-- Set feed rates -->
|
<!-- Set feed rates -->
|
||||||
<label for="augerOn">Auger On Interval: </label><input type="number" id="auger-on" name="augerOn" min="500" max="1000" value="<%= intervals.augerOn %>">ms<br>
|
<!-- <label for="augerOn">Auger On Interval: </label><input type="number" id="auger-on" name="augerOn" min="500" max="1000" value="<%= intervals.augerOn %>">ms<br> -->
|
||||||
<label for="augerOff">Auger Off Interval: </label><input type="number" id="auger-off" name="augerOff" min="1000" max="2000" value="<%= intervals.augerOff %>">ms<br>
|
<!-- <label for="augerOff">Auger Off Interval: </label><input type="number" id="auger-off" name="augerOff" min="1000" max="2000" value="<%= intervals.augerOff %>">ms<br> -->
|
||||||
<label for="pauseInt">App Pause Interval: </label><input type="number" id="pause-int" name="pauseInt" min="1000" max="600000" value="<%= intervals.pause %>">ms<br>
|
<!-- <label for="pauseInt">App Pause Interval: </label><input type="number" id="pause-int" name="pauseInt" min="1000" max="600000" value="<%= intervals.pause %>">ms<br> -->
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="subheading">
|
||||||
|
Pellet Feed Rate
|
||||||
|
</div>
|
||||||
|
<div class="button-container">
|
||||||
|
<button class="button-unselected" id="low-level">LOW</button><button class="button-unselected" id="med-level">MED</button><button class="button-unselected" id="hi-level">HI</button>
|
||||||
|
</div>
|
||||||
|
<div class="button-container">
|
||||||
|
<img src="./dancing_jesus.gif">
|
||||||
|
</div>
|
||||||
<div id="log-container">
|
<div id="log-container">
|
||||||
<button id="refresh-log" onclick="refreshLog()">Refresh Log</button><br>
|
<button id="refresh-log" onclick="refreshLog()">Refresh Log</button><br>
|
||||||
<!-- <textarea id="log-area"></textarea> -->
|
<!-- <textarea id="log-area"></textarea> -->
|
||||||
@ -43,6 +52,20 @@
|
|||||||
return JSONObj;
|
return JSONObj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function parseStatus(data) {
|
||||||
|
switch (data) {
|
||||||
|
case 0:
|
||||||
|
return "Off";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
return "On";
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
return "Error";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function refreshData() {
|
function refreshData() {
|
||||||
const log = document.getElementById('log-area');
|
const log = document.getElementById('log-area');
|
||||||
log.contentWindow.location.reload();
|
log.contentWindow.location.reload();
|
||||||
@ -59,12 +82,12 @@
|
|||||||
|
|
||||||
const config = readJSON('./config.json');
|
const config = readJSON('./config.json');
|
||||||
|
|
||||||
augerStatus.innerHTML = config.status.auger;
|
augerStatus.innerHTML = parseStatus(config.status.auger);
|
||||||
augerOn.innerHTML = config.intervals.augerOn;
|
augerOn.innerHTML = parseStatus(config.intervals.augerOn);
|
||||||
augerOff.innerHTML = config.intervals.augerOff;
|
augerOff.innerHTML = parseStatus(config.intervals.augerOff);
|
||||||
igniterStatus.innerHTML = config.status.igniter;
|
igniterStatus.innerHTML = parseStatus(config.status.igniter);
|
||||||
blowerStatus.innerHTML = config.status.blower;
|
blowerStatus.innerHTML = parseStatus(config.status.blower);
|
||||||
pauseInt.innerHTML = config.intervals.pause;
|
pauseInt.innerHTML = parseStatus(config.intervals.pause);
|
||||||
|
|
||||||
sleep(2000).then(() => {
|
sleep(2000).then(() => {
|
||||||
refreshData();
|
refreshData();
|
||||||
|
Loading…
Reference in New Issue
Block a user