<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>ESP32 Microdot Pixel Lights</title>
|
|
<meta charset="UTF-8">
|
|
|
|
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
|
|
<script type="text/javascript">
|
|
var base_url = window.location.href.split("index.html")[0];
|
|
|
|
function http_get(url, callback) {
|
|
console.log("URL: " + url);
|
|
var xhr = new XMLHttpRequest();
|
|
xhr.addEventListener("load", function() {
|
|
callback(JSON.parse(xhr.response));
|
|
}, false);
|
|
xhr.open("GET", url);
|
|
xhr.send();
|
|
}
|
|
|
|
function show_alert(message) {
|
|
document.getElementById("alert").innerHTML = message;
|
|
document.getElementById("alert").style.display = "block";
|
|
}
|
|
|
|
function get_status() {
|
|
http_get(base_url + "status", function(response) {
|
|
document.getElementById("memory_total").innerHTML = response["memory"]["total"] + " B";
|
|
document.getElementById("memory_used").innerHTML = response["memory"]["alloc"] + " B";
|
|
document.getElementById("memory_free").innerHTML = response["memory"]["free"] + " B";
|
|
|
|
document.getElementById("network_ip").innerHTML = response["network"]["wifi"]["ip"];
|
|
document.getElementById("network_netmask").innerHTML = response["network"]["wifi"]["netmask"];
|
|
document.getElementById("network_gateway").innerHTML = response["network"]["wifi"]["gateway"];
|
|
document.getElementById("network_dns").innerHTML = response["network"]["wifi"]["dns"];
|
|
});
|
|
}
|
|
|
|
function run_light_preset(mode) {
|
|
http_get(base_url + "lights/preset/" + mode, function(response) {
|
|
show_alert(response["message"]);
|
|
});
|
|
}
|
|
|
|
function set_color() {
|
|
var r = document.getElementById("r").value;
|
|
var g = document.getElementById("g").value;
|
|
var b = document.getElementById("b").value;
|
|
var url = base_url + "lights/" + mode + "?r= " + r + "&g=" + g + "&b=" + b
|
|
http_get(url , function(response) {
|
|
show_alert(response["message"]);
|
|
});
|
|
}
|
|
|
|
function shutdown() {
|
|
show_alert("Server is shutting down");
|
|
http_get(base_url + "shutdown");
|
|
}
|
|
|
|
function toggle_lights(mode) {
|
|
http_get(base_url + "lights/" + mode, function(response) {
|
|
show_alert(response["message"]);
|
|
});
|
|
}
|
|
</script>
|
|
|
|
<style>
|
|
#status, #lights, #rgb { margin-bottom: 10px; }
|
|
</style>
|
|
</head>
|
|
<body onload="get_status();">
|
|
<div class="container-fluid">
|
|
<h1>ESP32 Microdot Pixel Lights</h1>
|
|
|
|
<div id="alert" class="alert alert-primary" role="alert" style="display: none;"></div>
|
|
|
|
<div id="status" class="row">
|
|
<div class="col">
|
|
<table class="table table-hover">
|
|
<thead>
|
|
<tr><th colspan="100%" style="text-align: center;">Network Settings</th></tr>
|
|
<tr><th>IP</th><th>Netmask</th><th>Gateway</th><th>DNS</th></tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td id="network_ip"></td>
|
|
<td id="network_netmask"></td>
|
|
<td id="network_gateway"></td>
|
|
<td id="network_dns"></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div class="col">
|
|
<table class="table table-hover">
|
|
<thead>
|
|
<tr><th colspan="100%" style="text-align: center;">Controller Memory</th></tr>
|
|
<tr><th>Total</th><th>Used</th><th>Free</th></tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td id="memory_total"></td>
|
|
<td id="memory_used"></td>
|
|
<td id="memory_free"></td>
|
|
</tr>
|
|
</body>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="lights">
|
|
<p>
|
|
<h2>Pixel Lights</h2>
|
|
<button type="button" class="btn btn-lg btn-block btn-outline-success" onclick="toggle_lights('on');">💡 Light On</button>
|
|
<button type="button" class="btn btn-lg btn-block btn-outline-secondary" onclick="toggle_lights('off');">💡 Light Off</button>
|
|
<button type="button" class="btn btn-lg btn-block btn-outline-primary" onclick="set_color();">🟠 Set Color</button>
|
|
</p>
|
|
|
|
|
|
<p>
|
|
<h2>Preset Presets</h2>
|
|
<button type="button" class="btn btn-lg btn-block btn-outline-info" onclick="run_light_preset('bounce');">🏀 Bounce</button>
|
|
<button type="button" class="btn btn-lg btn-block btn-outline-info" onclick="run_light_preset('cycle');">🌀 Cycle</button>
|
|
<button type="button" class="btn btn-lg btn-block btn-outline-info" onclick="run_light_preset('niagra');">🌊 Niagra</button>
|
|
<button type="button" class="btn btn-lg btn-block btn-outline-info" onclick="run_light_preset('rainbow');">🌈 Rainbow</button>
|
|
</p>
|
|
</div>
|
|
|
|
<div id="rgb" class="form-row form-group">
|
|
<label class="col-form-label" for="r">R</label>
|
|
<div class="form-group col-sm-1">
|
|
<input name="r" id="r" class="form-control" type="text" placeholder="0" value="0" />
|
|
</div>
|
|
|
|
<label class="col-form-label" for="g">G</label>
|
|
<div class="form-group col-sm-1">
|
|
<input name="g" id="g" class="form-control" type="text" placeholder="0" value="0" />
|
|
</div>
|
|
|
|
<label class="col-form-label" for="b">B</label>
|
|
<div class="form-group col-sm-1">
|
|
<input name="b" id="b" class="form-control" type="text" placeholder="255" value="255" />
|
|
</div>
|
|
|
|
<small id="rgb_help" class="form-text text-muted">Used for a few presets or set color</small>
|
|
</div>
|
|
|
|
<hr>
|
|
<div id="shutdown" style="margin-top: 10px;">
|
|
<button type="button" class="btn btn-outline-danger btn-lg btn-block" onclick="shutdown();">🚫 Shutdown App</button>
|
|
|
|
<p style="margin: 10px;">Please Note: Shutting down the server will require restart of the microcontroller</p>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|