Adding diagnostics

This commit is contained in:
2026-08-09 09:20:38 -06:00
parent e593c3fed9
commit bd582c0d81
8 changed files with 216 additions and 10 deletions
+46 -4
View File
@@ -1,9 +1,10 @@
#include "web_service.h"
WebService::WebService(DashboardState& state)
WebService::WebService(DashboardState& state, DiagnosticsState& diag_state)
:
Service("Web", 10),
dashboardState(state),
diagnosticsState(diag_state),
server(80),
webSocket(81)
{
@@ -81,8 +82,11 @@ function connectWebSocket() {
socket.onmessage = function(event) {
const data = JSON.parse(event.data);
document.getElementById("uptime").innerHTML = data.uptime;
document.getElementById("firmware_version").innerHTML = data.version;
document.getElementById("uptime").innerHTML = data.system.uptime;
document.getElementById("firmware_version").innerHTML = data.system.version;
document.getElementById("free_heap").innerHTML = data.diagnostics.free_heap;
document.getElementById("minimum_free_heap").innerHTML = data.diagnostics.minimum_free_heap;
document.getElementById("cpu_frequency").innerHTML = data.diagnostics.cpu_frequency;
};
socket.onclose = function() {
@@ -103,17 +107,32 @@ window.onload = connectWebSocket;
<p>Device uptime:</p>
<div id="uptime">Loading...</div>
</div>
<div class="card">
<h1>Hub Diagnostics:</h1>
<p>Free heap:</p>
<div id=free_heap>Loading...</div>
<p>Minimum free heap:</p>
<div id=minimum_free_heap>Loading...</div>
<p>CPU Frequency:</p>
<div id=cpu_frequency>Loading...</div>
</div>
</body>
<footer>
Firmware Version: <div id="firmware_version">Loading...</div>
</footer>
</body>
</html>
)rawliteral";
void WebService::broadcastState()
{
DiagnosticSample diagnostics = diagnosticsState.getCurrent();
String json = "{";
// Opening system tag:
json += "\"system\":{";
json += "\"uptime\":\"";
json += dashboardState.uptime;
json += "\",";
@@ -122,8 +141,31 @@ void WebService::broadcastState()
json += dashboardState.firmwareVersion;
json += "\"";
json += "},"; // Close system tag
// Opening diagnostic tag:
json += "\"diagnostics\":{";
json += "\"free_heap\":\"";
json += diagnostics.freeHeap;
json += "\",";
json += "\"minimum_free_heap\":\"";
json += diagnostics.minimumFreeHeap;
json += "\",";
json += "\"cpu_frequency\":\"";
json += diagnostics.cpuFrequency;
json += "\"";
json += "}"; // Clost diagnostic tag
// Final close bracket
json += "}";
Serial.println(json);
webSocket.broadcastTXT(json);
}