Live updates on the webinterface
This commit is contained in:
parent
830a066fe4
commit
782692eaa3
|
@ -2,28 +2,25 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>BME680-Wetterstation</title>
|
||||
<title>SensorCube</title>
|
||||
<script type="text/javascript" src="utils.js"></script>
|
||||
<script type="text/javascript">
|
||||
function updateWeatherTable(bme680data)
|
||||
function updateSensorTable(sensordata)
|
||||
{
|
||||
elements = ['temperature', 'humidity', 'pressure', 'gas_resistance'];
|
||||
elements = ['temperature', 'humidity', 'co2'];
|
||||
|
||||
|
||||
elements.forEach(function(item, index) {
|
||||
elem = document.getElementById(item);
|
||||
val = bme680data[item].value;
|
||||
if(item == "gas_resistance") {
|
||||
val /= 1000.0;
|
||||
}
|
||||
elem = document.getElementById('scd30_' + item);
|
||||
val = sensordata['scd30'][item];
|
||||
elem.textContent = val.toFixed(2);
|
||||
});
|
||||
}
|
||||
|
||||
function setup()
|
||||
{
|
||||
getBME680Data(updateWeatherTable);
|
||||
setInterval(function() { getBME680Data(updateWeatherTable) }, 60000);
|
||||
getSensorData(updateSensorTable);
|
||||
setInterval(function() { getSensorData(updateSensorTable) }, 60000);
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
|
@ -42,33 +39,28 @@
|
|||
</style>
|
||||
</head>
|
||||
<body onLoad="setup()">
|
||||
<h1>BME680-Wetterstation</h1>
|
||||
<h1>SensorCube</h1>
|
||||
<table>
|
||||
<tr>
|
||||
<th>Beschreibung</th>
|
||||
<th>Sensor</th>
|
||||
<th>Messwert</th>
|
||||
<th>Einheit</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Temperatur</td>
|
||||
<td class="value" id="temperature">-,--</td>
|
||||
<td>SCD30 CO₂</td>
|
||||
<td class="value" id="scd30_co2">----,--</td>
|
||||
<td>ppm</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>SCD30 Temperatur</td>
|
||||
<td class="value" id="scd30_temperature">-,--</td>
|
||||
<td>°C</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Luftfeuchtigkeit</td>
|
||||
<td class="value" id="humidity">-,--</td>
|
||||
<td>SCD30 Luftfeuchtigkeit</td>
|
||||
<td class="value" id="scd30_humidity">-,--</td>
|
||||
<td>%rH</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Luftdruck</td>
|
||||
<td class="value" id="pressure">----,--</td>
|
||||
<td>hPa</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Gaswiderstand</td>
|
||||
<td class="value" id="gas_resistance">-,--</td>
|
||||
<td>kΩ</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -19,7 +19,7 @@ function getjson(url, handler_func)
|
|||
xmlhttp.send();
|
||||
}
|
||||
|
||||
function getBME680Data(handler_func)
|
||||
function getSensorData(handler_func)
|
||||
{
|
||||
return getjson("/bme680.json", handler_func);
|
||||
return getjson("/api/readout", handler_func);
|
||||
}
|
||||
|
|
|
@ -34,5 +34,6 @@ class WebServer
|
|||
// handlers
|
||||
static void handleRoot(httpsserver::HTTPRequest *req, httpsserver::HTTPResponse *res);
|
||||
static void handleCalibrate(httpsserver::HTTPRequest *req, httpsserver::HTTPResponse *res);
|
||||
static void handleReadout(httpsserver::HTTPRequest *req, httpsserver::HTTPResponse *res);
|
||||
static void handleStatic(httpsserver::HTTPRequest *req, httpsserver::HTTPResponse *res);
|
||||
};
|
||||
|
|
|
@ -60,6 +60,20 @@ static void error400(httpsserver::HTTPResponse *res, const std::string &reason)
|
|||
res->setStatusCode(400);
|
||||
}
|
||||
|
||||
void WebServer::handleReadout(httpsserver::HTTPRequest *req, httpsserver::HTTPResponse *res)
|
||||
{
|
||||
res->setHeader("Content-Type", "application/json");
|
||||
|
||||
res->setStatusCode(200);
|
||||
res->print("{\"scd30\": {\"co2\": ");
|
||||
res->print(instance().m_scd30->CO2);
|
||||
res->print(", \"humidity\": ");
|
||||
res->print(instance().m_scd30->relative_humidity);
|
||||
res->print(", \"temperature\": ");
|
||||
res->print(instance().m_scd30->temperature);
|
||||
res->println("}}");
|
||||
}
|
||||
|
||||
void WebServer::handleCalibrate(httpsserver::HTTPRequest *req, httpsserver::HTTPResponse *res)
|
||||
{
|
||||
res->setHeader("Content-Type", "text/plain");
|
||||
|
@ -111,6 +125,8 @@ void WebServer::serverTask(void *arg)
|
|||
new httpsserver::ResourceNode("/", "GET", WebServer::handleRoot);
|
||||
httpsserver::ResourceNode *nodeAPICalibrate =
|
||||
new httpsserver::ResourceNode("/api/calibrate", "GET", WebServer::handleCalibrate);
|
||||
httpsserver::ResourceNode *nodeAPIReadout =
|
||||
new httpsserver::ResourceNode("/api/readout", "GET", WebServer::handleReadout);
|
||||
|
||||
// handle all remaining requests by trying to serve static files. If no file is found, 404 is generated.
|
||||
httpsserver::ResourceNode *nodeStatic =
|
||||
|
@ -119,6 +135,7 @@ void WebServer::serverTask(void *arg)
|
|||
WebServer &server = WebServer::instance();
|
||||
|
||||
server.m_server->registerNode(nodeRoot);
|
||||
server.m_server->registerNode(nodeAPIReadout);
|
||||
server.m_server->registerNode(nodeAPICalibrate);
|
||||
server.m_server->setDefaultNode(nodeStatic);
|
||||
|
||||
|
|
Loading…
Reference in a new issue