2022-12-20 20:17:30 +00:00
|
|
|
<!DOCTYPE html>
|
|
|
|
<html>
|
|
|
|
<head>
|
|
|
|
<title>Pellet Stove Web Portal</title>
|
|
|
|
<link rel="stylesheet" href="/main.css">
|
|
|
|
</head>
|
2022-12-21 18:50:09 +00:00
|
|
|
<body onload="refreshData()">
|
2022-12-20 20:53:25 +00:00
|
|
|
<%- include('trial.html') -%>
|
2022-12-20 20:17:30 +00:00
|
|
|
<div id="title">Pellet Stove Web Portal</div>
|
2022-12-21 18:50:09 +00:00
|
|
|
<div id="status">Auger: <span id="auger-status"></span> | Igniter: <span id="igniter-status"></span> | Combustion Blower: <span id="blower-status"></span></div>
|
|
|
|
<div id="safeties">Vacuum: <span id="vacuum-status"></span> | Proof of Fire: <span id="pof-status"></span></div>
|
2022-12-20 20:17:30 +00:00
|
|
|
<div id="controls-container">
|
2022-12-21 02:12:22 +00:00
|
|
|
<form action="/" method="post">
|
2022-12-20 20:17:30 +00:00
|
|
|
<!-- Start | Shutdown | Reload Settings -->
|
|
|
|
<div id="buttons">
|
2022-12-21 02:12:22 +00:00
|
|
|
<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>
|
2022-12-20 20:17:30 +00:00
|
|
|
</div>
|
|
|
|
<!-- Set feed rates -->
|
2022-12-21 18:50:09 +00:00
|
|
|
<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="pauseInt">App Pause Interval: </label><input type="number" id="pause-int" name="pauseInt" min="1000" max="600000" value="<%= intervals.pause %>">ms<br>
|
2022-12-20 20:17:30 +00:00
|
|
|
</form>
|
|
|
|
</div>
|
|
|
|
<div id="log-container">
|
2022-12-21 18:50:09 +00:00
|
|
|
<button id="refresh-log" onclick="refreshLog()">Refresh Log</button><br>
|
|
|
|
<!-- <textarea id="log-area"></textarea> -->
|
2022-12-20 20:53:25 +00:00
|
|
|
<iframe id="log-area" src="log.txt"></iframe>
|
2022-12-20 20:17:30 +00:00
|
|
|
</div>
|
2022-12-20 20:53:25 +00:00
|
|
|
<script>
|
2022-12-21 18:50:09 +00:00
|
|
|
function sleep(ms) {
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
setTimeout(() => {
|
|
|
|
resolve();
|
|
|
|
}, ms);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
function readJSON(path) {
|
|
|
|
var request = new XMLHttpRequest();
|
|
|
|
request.open("GET", path, false);
|
|
|
|
request.send(null)
|
|
|
|
var JSONObj = JSON.parse(request.responseText);
|
|
|
|
return JSONObj;
|
|
|
|
}
|
|
|
|
|
|
|
|
function refreshData() {
|
|
|
|
const log = document.getElementById('log-area');
|
|
|
|
log.contentWindow.location.reload();
|
|
|
|
sleep(100).then(() => {
|
|
|
|
document.getElementById('log-area').contentWindow.scrollTo(0, 9999999);
|
|
|
|
});
|
|
|
|
|
|
|
|
const augerStatus = document.getElementById('auger-status');
|
|
|
|
const augerOn = document.getElementById('auger-on');
|
|
|
|
const augerOff = document.getElementById('auger-off');
|
|
|
|
const igniterStatus = document.getElementById('igniter-status');
|
|
|
|
const blowerStatus = document.getElementById('blower-status');
|
|
|
|
const pauseInt = document.getElementById('pause-int');
|
|
|
|
|
|
|
|
const config = readJSON('./config.json');
|
|
|
|
|
|
|
|
augerStatus.innerHTML = config.status.auger;
|
|
|
|
augerOn.innerHTML = config.intervals.augerOn;
|
|
|
|
augerOff.innerHTML = config.intervals.augerOff;
|
|
|
|
igniterStatus.innerHTML = config.status.igniter;
|
|
|
|
blowerStatus.innerHTML = config.status.blower;
|
|
|
|
pauseInt.innerHTML = config.intervals.pause;
|
|
|
|
|
|
|
|
sleep(2000).then(() => {
|
|
|
|
refreshData();
|
2022-12-20 20:53:25 +00:00
|
|
|
});
|
|
|
|
};
|
|
|
|
</script>
|
2022-12-20 20:17:30 +00:00
|
|
|
</body>
|
|
|
|
</html>
|