made index.html static - websocket everywhere

This commit is contained in:
Marcel Peterkau 2024-01-09 12:17:13 +01:00
parent e375fab048
commit 62cc2bf982
3 changed files with 107 additions and 384 deletions

View File

@ -12,7 +12,7 @@
<script src="static/js/bootstrap.min.js"></script> <script src="static/js/bootstrap.min.js"></script>
<script src="static/js/websocket.js"></script> <script src="static/js/websocket.js"></script>
<script src="static/js/dtc_table.js"></script> <script src="static/js/dtc_table.js"></script>
<script src="static/js/script.js" type="text/javascript"></script> <script src="static/js/script.js"></script>
<link rel="apple-touch-icon" sizes="180x180" href="static/img/apple-touch-icon.png"> <link rel="apple-touch-icon" sizes="180x180" href="static/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="static/img/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="32x32" href="static/img/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="static/img/favicon-16x16.png"> <link rel="icon" type="image/png" sizes="16x16" href="static/img/favicon-16x16.png">
@ -37,7 +37,6 @@
<li class="nav-item"><a class="nav-link active" role="tab" data-toggle="tab" href="#tab_home">Home</a></li> <li class="nav-item"><a class="nav-link active" role="tab" data-toggle="tab" href="#tab_home">Home</a></li>
<li class="nav-item"><a class="nav-link" role="tab" data-toggle="tab" href="#tab_maintenance">Wartung</a></li> <li class="nav-item"><a class="nav-link" role="tab" data-toggle="tab" href="#tab_maintenance">Wartung</a></li>
<li class="nav-item"><a class="nav-link" role="tab" data-toggle="tab" href="#tab_source">Einstellungen</a></li> <li class="nav-item"><a class="nav-link" role="tab" data-toggle="tab" href="#tab_source">Einstellungen</a></li>
<li class="nav-item"><a class="nav-link" role="tab" data-toggle="tab" href="#tab_sysinfo">Systeminfo</a></li>
<li class="nav-item"><a class="nav-link" role="tab" data-toggle="tab" href="#tab_fwupdate">Update</a></li> <li class="nav-item"><a class="nav-link" role="tab" data-toggle="tab" href="#tab_fwupdate">Update</a></li>
</ul> </ul>
@ -61,9 +60,9 @@
<p> <p>
<h4>Tankinhalt verbleibend</h4> <h4>Tankinhalt verbleibend</h4>
<div class="progress"> <div class="progress">
<div class="progress-bar text-light" role="progressbar" aria-valuenow="%TANK_REMAIN_CAPACITY%" <div id="tankremain" class="progress-bar text-light" role="progressbar" aria-valuenow="0"
aria-valuemin="0" aria-valuemax="100" style="width: %TANK_REMAIN_CAPACITY%&#37;"> aria-valuemin="0" aria-valuemax="100" style="width: 0%">
%TANK_REMAIN_CAPACITY%&#37; 0
</div> </div>
</div> </div>
</p> </p>
@ -159,7 +158,7 @@
<label for="measuredpulses" class="control-label col-4">erfasste Pulse</label> <label for="measuredpulses" class="control-label col-4">erfasste Pulse</label>
<div class="col-8"> <div class="col-8">
<div class="input-group"> <div class="input-group">
<input id="measuredpulses" name="measuredpulses" value="%MEASURED_PULSES%" type="text" readonly <input id="measuredpulses" name="measuredpulses" value="0" type="text" readonly
class="form-control"> class="form-control">
<div class="input-group-append"> <div class="input-group-append">
<span class="input-group-text">Pulse</span> <span class="input-group-text">Pulse</span>
@ -169,7 +168,7 @@
</div> </div>
<div class="form-group row"> <div class="form-group row">
<div class="col text-center"> <div class="col text-center">
<button name="measurestartstop" type="submit" class="btn btn-outline-primary">%MEASURE_BTN%</button> <button name="measurestartstop" type="submit" class="btn btn-outline-primary">Start</button>
<button name="measurereset" type="submit" class="btn btn-outline-primary ml-2">Reset</button> <button name="measurereset" type="submit" class="btn btn-outline-primary ml-2">Reset</button>
</div> </div>
</div> </div>
@ -217,6 +216,21 @@
</form> </form>
</p> </p>
<!-- Div Group EEPROM formatting --> <!-- Div Group EEPROM formatting -->
<!-- Div Group LiveDebug -->
<hr />
<p>
<h4>Live Debug</h4>
<div class="form-group row">
<textarea class="form-control" spellcheck="false" id="livedebug-out" rows="3" readonly></textarea>
</div>
<div class="form-group row">
<div class="col text-center">
<button id="btn-ws-start" class="btn btn-outline-primary">Start</button>
<button id="btn-ws-stop" class="btn btn-outline-primary ml-2">Stop</button>
</div>
</div>
</p>
<!-- Div Group LiveDebug -->
<!-- Div Group Device Reboot --> <!-- Div Group Device Reboot -->
<hr /> <hr />
<p> <p>
@ -244,8 +258,7 @@
<div class="form-group row"> <div class="form-group row">
<label for="sourceselect" class="control-label col-4">Schnittstelle</label> <label for="sourceselect" class="control-label col-4">Schnittstelle</label>
<div class="col-8"> <div class="col-8">
<select id="sourceselect" name="sourceselect" class="select form-control"> <select id="sourceselect" name="sourceselect" class="select form-control">
%SOURCE_SELECT_OPTIONS%
</select> </select>
</div> </div>
</div> </div>
@ -266,7 +279,7 @@
</p> </p>
<!-- Div Group Signal Source --> <!-- Div Group Signal Source -->
<!-- Div Group Source:Impulse Settings--> <!-- Div Group Source:Impulse Settings-->
<div %SHOW_IMPULSE_SETTINGS%> <div id="showimpulse" class="removeable">
<hr /> <hr />
<p> <p>
<h4>Einstellungen Impulseingang</h4> <h4>Einstellungen Impulseingang</h4>
@ -276,8 +289,7 @@
<label for="tirewidth" class="control-label col-4">Reifenbreite</label> <label for="tirewidth" class="control-label col-4">Reifenbreite</label>
<div class="col-8"> <div class="col-8">
<div class="input-group"> <div class="input-group">
<input id="tirewidth" name="tirewidth" type="text" required="required" class="form-control" <input id="tirewidth" name="tirewidth" type="text" required="required" class="form-control">
value="%TIRE_WIDTH_MM%">
<div class="input-group-append"> <div class="input-group-append">
<span class="input-group-text">mm</span> <span class="input-group-text">mm</span>
</div> </div>
@ -289,8 +301,7 @@
<label for="tireratio" class="control-label col-4">Höhe/Breite-Verhältniss</label> <label for="tireratio" class="control-label col-4">Höhe/Breite-Verhältniss</label>
<div class="col-8"> <div class="col-8">
<div class="input-group"> <div class="input-group">
<input id="tireratio" name="tireratio" type="text" required="required" class="form-control" <input id="tireratio" name="tireratio" type="text" required="required" class="form-control">
value="%TIRE_RATIO%">
<div class="input-group-append"> <div class="input-group-append">
<span class="input-group-text">mm</span> <span class="input-group-text">mm</span>
</div> </div>
@ -301,8 +312,7 @@
<label for="tiredia" class="control-label col-4">Felgendurchmesser</label> <label for="tiredia" class="control-label col-4">Felgendurchmesser</label>
<div class="col-8"> <div class="col-8">
<div class="input-group"> <div class="input-group">
<input id="tiredia" name="tiredia" type="text" required="required" class="form-control" <input id="tiredia" name="tiredia" type="text" required="required" class="form-control">
value="%RIM_DIAMETER%">
<div class="input-group-append"> <div class="input-group-append">
<span class="input-group-text">"</span> <span class="input-group-text">"</span>
</div> </div>
@ -313,8 +323,7 @@
<label for="pulserev" class="control-label col-4">Pulse pro Umdrehung</label> <label for="pulserev" class="control-label col-4">Pulse pro Umdrehung</label>
<div class="col-8"> <div class="col-8">
<div class="input-group"> <div class="input-group">
<input id="pulserev" name="pulserev" type="text" required="required" class="form-control" <input id="pulserev" name="pulserev" type="text" required="required" class="form-control">
value="%PULSE_PER_REV%">
<div class="input-group-addon"></div> <div class="input-group-addon"></div>
</div> </div>
</div> </div>
@ -329,7 +338,7 @@
</div> </div>
<!-- Div Group Source:Impulse Settings--> <!-- Div Group Source:Impulse Settings-->
<!-- Div Group Source:CAN Settings--> <!-- Div Group Source:CAN Settings-->
<div %SHOW_CAN_SETTINGS%> <div id="showcan" class="removeable">
<hr /> <hr />
<p> <p>
<h4>Einstellungen CAN-Bus</h4> <h4>Einstellungen CAN-Bus</h4>
@ -338,7 +347,6 @@
<label for="cansource" class="control-label col-4">Model</label> <label for="cansource" class="control-label col-4">Model</label>
<div class="col-8"> <div class="col-8">
<select id="cansource" name="cansource" class="select form-control"> <select id="cansource" name="cansource" class="select form-control">
%CANSOURCE_SELECT_OPTIONS%
</select> </select>
</div> </div>
</div> </div>
@ -352,7 +360,7 @@
</div> </div>
<!-- Div Group Source:CAN Settings--> <!-- Div Group Source:CAN Settings-->
<!-- Div Group Source:GPS Settings--> <!-- Div Group Source:GPS Settings-->
<div %SHOW_GPS_SETTINGS%> <div id="showgps" class="removeable">
<hr /> <hr />
<p> <p>
<h4>Einstellungen GPS</h4> <h4>Einstellungen GPS</h4>
@ -361,7 +369,6 @@
<label for="gpsbaud" class="control-label col-4">Baudrate</label> <label for="gpsbaud" class="control-label col-4">Baudrate</label>
<div class="col-8"> <div class="col-8">
<select id="gpsbaud" name="gpsbaud" class="select form-control"> <select id="gpsbaud" name="gpsbaud" class="select form-control">
%GPSBAUD_SELECT_OPTIONS%
</select> </select>
</div> </div>
</div> </div>
@ -383,7 +390,7 @@
<label for="lubedistancenormal" class="control-label col-4">Normal (gr&uuml;n)</label> <label for="lubedistancenormal" class="control-label col-4">Normal (gr&uuml;n)</label>
<div class="col-8"> <div class="col-8">
<div class="input-group"> <div class="input-group">
<input id="lubedistancenormal" name="lubedistancenormal" value="%LUBE_DISTANCE_NORMAL%" type="text" <input id="lubedistancenormal" name="lubedistancenormal" type="text"
class="form-control" required="required"> class="form-control" required="required">
<div class="input-group-append"> <div class="input-group-append">
<span class="input-group-text">m</span> <span class="input-group-text">m</span>
@ -395,7 +402,7 @@
<label for="lubedistancerain" class="control-label col-4">Regen (blau)</label> <label for="lubedistancerain" class="control-label col-4">Regen (blau)</label>
<div class="col-8"> <div class="col-8">
<div class="input-group"> <div class="input-group">
<input id="lubedistancerain" name="lubedistancerain" value="%LUBE_DISTANCE_RAIN%" type="text" <input id="lubedistancerain" name="lubedistancerain" type="text"
class="form-control" required="required"> class="form-control" required="required">
<div class="input-group-append"> <div class="input-group-append">
<span class="input-group-text">m</span> <span class="input-group-text">m</span>
@ -420,7 +427,7 @@
<label for="tankcap" class="control-label col-4">Tankkapazität</label> <label for="tankcap" class="control-label col-4">Tankkapazität</label>
<div class="col-8"> <div class="col-8">
<div class="input-group"> <div class="input-group">
<input id="tankcap" name="tankcap" value="%TANK_CAPACITY%" type="text" class="form-control" <input id="tankcap" name="tankcap" type="text" class="form-control"
required="required"> required="required">
<div class="input-group-append"> <div class="input-group-append">
<span class="input-group-text">ml</span> <span class="input-group-text">ml</span>
@ -432,7 +439,7 @@
<label for="tankwarn" class="control-label col-4">Leer-Warnung</label> <label for="tankwarn" class="control-label col-4">Leer-Warnung</label>
<div class="col-8"> <div class="col-8">
<div class="input-group"> <div class="input-group">
<input id="tankwarn" name="tankwarn" value="%TANK_REMIND%" type="text" class="form-control" <input id="tankwarn" name="tankwarn" type="text" class="form-control"
required="required"> required="required">
<div class="input-group-append"> <div class="input-group-append">
<span class="input-group-text">&#37;</span> <span class="input-group-text">&#37;</span>
@ -444,7 +451,7 @@
<label for="pumppulse" class="control-label col-4">Menge pro Puls</label> <label for="pumppulse" class="control-label col-4">Menge pro Puls</label>
<div class="col-8"> <div class="col-8">
<div class="input-group"> <div class="input-group">
<input id="pumppulse" name="pumppulse" value="%AMOUNT_PER_DOSE%" type="text" class="form-control" <input id="pumppulse" name="pumppulse" type="text" class="form-control"
required="required"> required="required">
<div class="input-group-append"> <div class="input-group-append">
<span class="input-group-text">µl</span> <span class="input-group-text">µl</span>
@ -469,7 +476,7 @@
<label for="ledmodeflash" class="control-label col-4">LED Modus blinken</label> <label for="ledmodeflash" class="control-label col-4">LED Modus blinken</label>
<div class="col-8"> <div class="col-8">
<div class="form-check"> <div class="form-check">
<input class="form-check-input" type="checkbox" name="ledmodeflash" id="ledmodeflash" %LEDFLASHCHECKED%> <input class="form-check-input" type="checkbox" name="ledmodeflash" id="ledmodeflash">
<label class="form-check-label" for="ledmodeflash"> <label class="form-check-label" for="ledmodeflash">
LED blinken LED blinken
</label> </label>
@ -480,7 +487,7 @@
<label for="ledmaxbrightness" class="control-label col-4">Max Helligkeit</label> <label for="ledmaxbrightness" class="control-label col-4">Max Helligkeit</label>
<div class="col-8"> <div class="col-8">
<div class="input-group"> <div class="input-group">
<input id="ledmaxbrightness" name="ledmaxbrightness" value="%LED_MAX_BRIGHTNESS%" type="text" <input id="ledmaxbrightness" name="ledmaxbrightness" type="text"
class="form-control" required="required"> class="form-control" required="required">
</div> </div>
</div> </div>
@ -489,7 +496,7 @@
<label for="ledminbrightness" class="control-label col-4">Min Helligkeit</label> <label for="ledminbrightness" class="control-label col-4">Min Helligkeit</label>
<div class="col-8"> <div class="col-8">
<div class="input-group"> <div class="input-group">
<input id="ledminbrightness" name="ledminbrightness" value="%LED_MIN_BRIGHTNESS%" type="text" <input id="ledminbrightness" name="ledminbrightness" type="text"
class="form-control" required="required"> class="form-control" required="required">
</div> </div>
</div> </div>
@ -505,171 +512,6 @@
</div> </div>
<!-- Div Tab Settings --> <!-- Div Tab Settings -->
<!-- Div Tab SystemInfo -->
<div id="tab_sysinfo" class="tab-pane fade" role="tabpanel">
<h3>Systeminfo</h3>
<!-- Div Group Sysinfo:Geraeteinfo -->
<hr />
<p>
<h4>Ger&auml;t</h4>
<table class="table">
<tbody>
<tr>
<th class="col-7" scope="col">Parameter</td>
<th class="col-5" scope="col">Value</td>
</tr>
<tr>
<td>Hostname</td>
<td>%HOSTNAME%</td>
</tr>
</table>
</p>
<!-- Div Group Sysinfo:Geraeteinfo -->
<!-- Div Group Sysinfo:Settings -->
<hr />
<p>
<h4>Einstellungen</h4>
<table class="table">
<tbody>
<tr>
<th class="col-7" scope="col">Parameter</td>
<th class="col-5" scope="col">Value</td>
</tr>
<tr>
<td>DistancePerLube_Default</td>
<td>%LUBE_DISTANCE_NORMAL%</td>
</tr>
<tr>
<td>DistancePerLube_Rain</td>
<td>%LUBE_DISTANCE_RAIN%</td>
</tr>
<tr>
<td>tankCapacity_ml</td>
<td>%TANK_CAPACITY%</td>
</tr>
<tr>
<td>amountPerDose_&micro;l</td>
<td>%AMOUNT_PER_DOSE%</td>
</tr>
<tr>
<td>TankRemindAtPercentage</td>
<td>%TANK_REMIND%</td>
</tr>
<tr>
<td>PulsePerRevolution</td>
<td>%PULSE_PER_REV%</td>
</tr>
<tr>
<td>TireWidth_mm</td>
<td>%TIRE_WIDTH_MM%</td>
</tr>
<tr>
<td>TireWidthHeight_Ratio</td>
<td>%TIRE_RATIO%</td>
</tr>
<tr>
<td>RimDiameter_Inch</td>
<td>%RIM_DIAMETER%</td>
</tr>
<tr>
<td>DistancePerRevolution_mm</td>
<td>%DISTANCE_PER_REV%</td>
</tr>
<tr>
<td>BleedingPulses</td>
<td>%BLEEDING_PULSES%</td>
</tr>
<tr>
<td>SpeedSource</td>
<td>%SPEED_SOURCE%</td>
</tr>
<tr>
<td>GPSBaudRate</td>
<td>%GPS_BAUD%</td>
</tr>
<tr>
<td>CANSource</td>
<td>%CAN_SOURCE%</td>
</tr>
<tr>
<td>LED Mode Flash</td>
<td>%LED_MODE_FLASH%</td>
</tr>
<tr>
<td>LED Max Brightness</td>
<td>%LED_MAX_BRIGHTNESS%</td>
</tr>
<tr>
<td>LED Min Brightness</td>
<td>%LED_MIN_BRIGHTNESS%</td>
</tr>
<tr>
<td>EEPROM Version</td>
<td>%EEPROM_VERSION%</td>
</tr>
<tr>
<td>Checksum</td>
<td>%CONFIG_CHECKSUM%</td>
</tr>
</tbody>
</table>
</p>
<!-- Div Group Sysinfo:Settings -->
<!-- Div Group Sysinfo:Persistance -->
<hr />
<p>
<h4>Betriebsdaten</h4>
<table class="table">
<tbody>
<tr>
<th class="col-7" scope="col">Parameter</td>
<th class="col-5" scope="col">Value</td>
</tr>
<tr>
<td>writeCycleCounter</td>
<td>%WRITE_CYCLE_COUNT%</td>
</tr>
<tr>
<td>PersistenceMarker</td>
<td>%PERSISTENCE_MARKER%</td>
</tr>
<tr>
<td>tankRemain_µl</td>
<td>%TANK_REMAIN_UL%</td>
</tr>
<tr>
<td>TravelDistance_highRes</td>
<td>%TRAVEL_DISTANCE_HIGHRES%</td>
</tr>
<tr>
<td>Odometer</td>
<td>%ODOMETER%,%ODOMETER_M%</td>
</tr>
<tr>
<td>checksum</td>
<td>%PERSISTANCE_CHECKSUM%</td>
</tr>
</table>
</p>
<!-- Div Group Sysinfo:Persistance -->
<!-- Div Group LiveDebug -->
<hr />
<p>
<h4>Live Debug</h4>
<div class="form-group row">
<textarea class="form-control" spellcheck="false" id="livedebug-out" rows="3" readonly></textarea>
</div>
<div class="form-group row">
<div class="col text-center">
<button id="btn-ws-start" class="btn btn-outline-primary">Start</button>
<button id="btn-ws-stop" class="btn btn-outline-primary ml-2">Stop</button>
</div>
</div>
</p>
<!-- Div Group LiveDebug -->
</div>
<!-- Div Tab SystemInfo -->
<!-- Div Tab Firmware Update--> <!-- Div Tab Firmware Update-->
<div id="tab_fwupdate" class="tab-pane fade" role="tabpanel"> <div id="tab_fwupdate" class="tab-pane fade" role="tabpanel">
<h3>Firmware</h3> <h3>Firmware</h3>

View File

@ -71,7 +71,7 @@ function onMessage(event) {
const result = processDataString(data_sliced, statusMapping); const result = processDataString(data_sliced, statusMapping);
console.log("STATUS:"); console.log("STATUS:");
console.log(JSON.stringify(result, null, 2)); console.log(JSON.stringify(result, null, 2));
fillValuestoHTML(result); fillValuesToHTML(result);
return; return;
} }
@ -80,7 +80,7 @@ function onMessage(event) {
const result = processDataString(data_sliced, staticMapping); const result = processDataString(data_sliced, staticMapping);
console.log("STATIC:"); console.log("STATIC:");
console.log(JSON.stringify(result, null, 2)); console.log(JSON.stringify(result, null, 2));
fillValuestoHTML(result); fillValuesToHTML(result);
return; return;
} }
} }
@ -139,11 +139,47 @@ function do_resize(textbox) {
else textbox.rows = rows; else textbox.rows = rows;
} }
function fillValuestoHTML(dataset) { function fillValuesToHTML(dataset) {
for (var key in dataset) { for (var key in dataset) {
var inputElement = document.getElementById(key); var element = document.getElementById(key);
if (inputElement) {
inputElement.value = dataset[key]; if (element) {
if (element.type === "checkbox") {
// Wenn das Element ein Kontrollkästchen ist
element.checked = dataset[key] == 1 ? true : false;
} else if (element.tagName === "SELECT") {
// Wenn das Element ein Dropdown ist
setDropdownValue(element, dataset[key]);
} else if (element.classList.contains("progress-bar")) {
// Wenn das Element eine Fortschrittsleiste ist
updateProgressBar(element, dataset[key]);
} else if (element.classList.contains("removeable")) {
// Wenn das Element ein Settingsabschnitt-div ist
if (dataset[key] == 0) element.remove();
} else {
// Standardmäßig für Textfelder und andere Elemente
element.value = dataset[key];
}
} }
} }
} }
// Funktion zum Setzen des ausgewählten Werts für Dropdowns
function setDropdownValue(selectElement, value) {
for (var i = 0; i < selectElement.options.length; i++) {
if (selectElement.options[i].value === value) {
selectElement.selectedIndex = i;
break;
}
}
}
// Funktion zum Aktualisieren der Fortschrittsleiste
function updateProgressBar(progressBar, value) {
// Wert in das aria-valuenow-Attribut einfügen
progressBar.setAttribute("aria-valuenow", value);
// Breite des Fortschrittsbalkens und inneren Text aktualisieren
progressBar.style.width = value + "%";
progressBar.textContent = value + "%";
}

View File

@ -7,7 +7,6 @@ const char *PARAM_MESSAGE = "message";
String processor(const String &var); String processor(const String &var);
void WebserverPOST_Callback(AsyncWebServerRequest *request); void WebserverPOST_Callback(AsyncWebServerRequest *request);
void WebserverNotFound_Callback(AsyncWebServerRequest *request); void WebserverNotFound_Callback(AsyncWebServerRequest *request);
void Webserver_Callback(AsyncWebServerRequest *request);
void WebserverFirmwareUpdate_Callback(AsyncWebServerRequest *request, const String &filename, size_t index, uint8_t *data, size_t len, bool final); void WebserverFirmwareUpdate_Callback(AsyncWebServerRequest *request, const String &filename, size_t index, uint8_t *data, size_t len, bool final);
void WebserverEERestore_Callback(AsyncWebServerRequest *request, const String &filename, size_t index, uint8_t *data, size_t len, bool final); void WebserverEERestore_Callback(AsyncWebServerRequest *request, const String &filename, size_t index, uint8_t *data, size_t len, bool final);
void WebServerEEJSON_Callback(AsyncWebServerRequest *request); void WebServerEEJSON_Callback(AsyncWebServerRequest *request);
@ -46,11 +45,10 @@ void initWebUI()
webServer.addHandler(&webSocket); webServer.addHandler(&webSocket);
webServer.serveStatic("/static/", LittleFS, "/static/").setCacheControl("max-age=360000"); webServer.serveStatic("/static/", LittleFS, "/static/").setCacheControl("max-age=360000");
webServer.serveStatic("/index.htm", LittleFS, "/index.htm").setCacheControl("max-age=360000");
webServer.on("/", HTTP_GET, [](AsyncWebServerRequest *request) webServer.on("/", HTTP_GET, [](AsyncWebServerRequest *request)
{ request->redirect("/index.htm"); }); { request->redirect("/index.htm"); });
webServer.onNotFound(WebserverNotFound_Callback); webServer.onNotFound(WebserverNotFound_Callback);
webServer.on("/index.htm", HTTP_GET, Webserver_Callback);
webServer.on("/post.htm", HTTP_POST, WebserverPOST_Callback);
webServer.on("/eejson", HTTP_GET, WebServerEEJSON_Callback); webServer.on("/eejson", HTTP_GET, WebServerEEJSON_Callback);
webServer.on( webServer.on(
"/doUpdate", HTTP_POST, [](AsyncWebServerRequest *request) {}, WebserverFirmwareUpdate_Callback); "/doUpdate", HTTP_POST, [](AsyncWebServerRequest *request) {}, WebserverFirmwareUpdate_Callback);
@ -74,147 +72,6 @@ void Webserver_Process()
} }
} }
String processor(const String &var)
{
if (var == "HOSTNAME")
return String(globals.DeviceName);
if (var == "TANK_REMAIN_CAPACITY")
return String((PersistenceData.tankRemain_microL / 10) / LubeConfig.tankCapacity_ml);
if (var == "LUBE_DISTANCE_NORMAL")
return String(LubeConfig.DistancePerLube_Default);
if (var == "LUBE_DISTANCE_RAIN")
return String(LubeConfig.DistancePerLube_Rain);
if (var == "TANK_CAPACITY")
return String(LubeConfig.tankCapacity_ml);
if (var == "AMOUNT_PER_DOSE")
return String(LubeConfig.amountPerDose_microL);
if (var == "TANK_REMIND")
return String(LubeConfig.TankRemindAtPercentage);
if (var == "PULSE_PER_REV")
return String(LubeConfig.PulsePerRevolution);
if (var == "TIRE_WIDTH_MM")
return String(LubeConfig.TireWidth_mm);
if (var == "TIRE_RATIO")
return String(LubeConfig.TireWidthHeight_Ratio);
if (var == "RIM_DIAMETER")
return String(LubeConfig.RimDiameter_Inch);
if (var == "DISTANCE_PER_REV")
return String(LubeConfig.DistancePerRevolution_mm);
if (var == "BLEEDING_PULSES")
return String(LubeConfig.BleedingPulses);
if (var == "SPEED_SOURCE")
return String(SpeedSourceString[LubeConfig.SpeedSource]);
if (var == "GPS_BAUD")
return String(GPSBaudRateString[LubeConfig.GPSBaudRate]);
if (var == "CAN_SOURCE")
return String(CANSourceString[LubeConfig.CANSource]);
if (var == "LED_MODE_FLASH")
return String(LubeConfig.LED_Mode_Flash);
if (var == "LEDFLASHCHECKED")
return String(LubeConfig.LED_Mode_Flash == true ? "checked" : "");
if (var == "LED_MAX_BRIGHTNESS")
return String(LubeConfig.LED_Max_Brightness);
if (var == "LED_MIN_BRIGHTNESS")
return String(LubeConfig.LED_Min_Brightness);
if (var == "EEPROM_VERSION")
return String(LubeConfig.EEPROM_Version);
if (var == "CONFIG_CHECKSUM")
{
char buffer[7];
sprintf(buffer, "0x%04X", LubeConfig.checksum);
return String(buffer);
}
if (var == "WRITE_CYCLE_COUNT")
return String(PersistenceData.writeCycleCounter);
if (var == "PERSISTENCE_MARKER")
return String(globals.eePersistanceAdress);
if (var == "TANK_REMAIN_UL")
return String(PersistenceData.tankRemain_microL);
if (var == "TRAVEL_DISTANCE_HIGHRES")
return String(PersistenceData.TravelDistance_highRes_mm);
if (var == "ODOMETER")
return String(PersistenceData.odometer);
if (var == "ODOMETER_M")
return String(PersistenceData.odometer_mm / 1000);
if (var == "PERSISTANCE_CHECKSUM")
{
char buffer[7];
sprintf(buffer, "0x%04X", PersistenceData.checksum);
return String(buffer);
}
if (var == "SHOW_IMPULSE_SETTINGS")
return LubeConfig.SpeedSource == SOURCE_IMPULSE ? "" : "hidden";
if (var == "SHOW_CAN_SETTINGS")
return LubeConfig.SpeedSource == SOURCE_CAN ? "" : "hidden";
if (var == "SHOW_GPS_SETTINGS")
return LubeConfig.SpeedSource == SOURCE_GPS ? "" : "hidden";
if (var == "SOURCE_SELECT_OPTIONS")
{
String temp;
for (uint32_t i = 0; i < SpeedSourceString_Elements; i++)
{
String selected = LubeConfig.SpeedSource == i ? " selected " : "";
temp = temp + "<option value=\"" + i + "\"" + selected + ">" + SpeedSourceString[i] + "</option>";
}
return temp;
}
if (var == "CANSOURCE_SELECT_OPTIONS")
{
String temp;
for (uint32_t i = 0; i < CANSourceString_Elements; i++)
{
String selected = LubeConfig.CANSource == i ? " selected " : "";
temp = temp + "<option value=\"" + i + "\"" + selected + ">" + CANSourceString[i] + "</option>";
}
return temp;
}
if (var == "GPSBAUD_SELECT_OPTIONS")
{
String temp;
for (uint32_t i = 0; i < GPSBaudRateString_Elements; i++)
{
String selected = LubeConfig.GPSBaudRate == i ? " selected " : "";
temp = temp + "<option value=\"" + i + "\"" + selected + ">" + GPSBaudRateString[i] + "</option>";
}
return temp;
}
if (var == "SYSTEM_STATUS")
return String(globals.systemStatustxt);
if (var == "SW_VERSION")
{
char buffer[6];
snprintf(buffer, sizeof(buffer), "%d.%02d", constants.FW_Version_major, constants.FW_Version_minor);
return String(buffer);
}
if (var == "FS_VERSION")
return String(globals.FlashVersion);
if (var == "GIT_REV")
return String(constants.GitHash);
if (var == "MEASURED_PULSES")
return String(globals.measuredPulses);
if (var == "MEASURE_BTN")
return String(globals.measurementActive == true ? "Stop" : "Start");
if (var == "PLACEHOLDER")
return "placeholder";
return String();
}
void Webserver_Callback(AsyncWebServerRequest *request)
{
request->send(LittleFS, "/index.htm", "text/html", false, processor);
}
void WebserverPOST_Callback(AsyncWebServerRequest *request) void WebserverPOST_Callback(AsyncWebServerRequest *request)
{ {
request->send(LittleFS, "/post.htm", "text/html", false, processor); request->send(LittleFS, "/post.htm", "text/html", false, processor);
@ -647,13 +504,8 @@ void Websocket_RefreshClientData_Status(uint32_t client_id, bool send_mapping)
{ {
const char mapping[] = "MAPPING_STATUS:" const char mapping[] = "MAPPING_STATUS:"
"SystemStatus;" "SystemStatus;"
"TankRemain;" "tankremain;"
"TravelDistance_hr;" "Odometer;";
"Odometer;"
"Odometer_mm;"
"writeCycleCounter;"
"BleedingPulses;"
"TankPercent;";
if (client_id > 0) if (client_id > 0)
webSocket.text(client_id, mapping); webSocket.text(client_id, mapping);
@ -664,13 +516,8 @@ void Websocket_RefreshClientData_Status(uint32_t client_id, bool send_mapping)
String temp = "STATUS:"; String temp = "STATUS:";
temp.concat(String(globals.systemStatustxt) + ";"); temp.concat(String(globals.systemStatustxt) + ";");
temp.concat(String(PersistenceData.tankRemain_microL) + ";");
temp.concat(String(PersistenceData.TravelDistance_highRes_mm) + ";");
temp.concat(String(PersistenceData.odometer) + ";");
temp.concat(String(PersistenceData.odometer_mm / 1000) + ";");
temp.concat(String(PersistenceData.writeCycleCounter) + ";");
temp.concat(String(LubeConfig.BleedingPulses) + ";");
temp.concat(String((PersistenceData.tankRemain_microL / 10) / LubeConfig.tankCapacity_ml) + ";"); temp.concat(String((PersistenceData.tankRemain_microL / 10) / LubeConfig.tankCapacity_ml) + ";");
temp.concat(String(PersistenceData.odometer + (PersistenceData.odometer_mm / 1000)) + ";");
if (client_id > 0) if (client_id > 0)
{ {
@ -688,27 +535,26 @@ void Websocket_RefreshClientData_Static(uint32_t client_id, bool send_mapping)
if (send_mapping) if (send_mapping)
{ {
const char mapping[] = "MAPPING_STATIC:" const char mapping[] = "MAPPING_STATIC:"
"DeviceName;" "lubedistancenormal;"
"EEPROM_Version;" "lubedistancerain;"
"ConfigChecksum;" "tankcap;"
"DistanceDefault;" "pumppulse;"
"DistanceRain;" "tankwarn;"
"tankCapacity;" "pulserev;"
"amountPerDose;" "tirewidth;"
"TankRemindAtPercentage;" "tireratio;"
"PulsePerRevolution;" "tiredia;"
"TireWidth_mm;"
"TireWidthHeight_Ratio;"
"RimDiameter_Inch;"
"DistancePerRevolution_mm;" "DistancePerRevolution_mm;"
"SpeedSourceString;" "sourceselect;"
"GPSBaudRateString;" "gpsbaud;"
"CANSourceString;" "cansource;"
"LED_Mode_Flash;" "ledmodeflash;"
"LED_Max;" "ledmaxbrightness;"
"LED_Min;" "ledminbrightness;"
"eePersistanceAdress;" "showimpulse;"
"PersisChecksum"; "showgps;"
"showcan;"
"BleedingPulses;";
if (client_id > 0) if (client_id > 0)
webSocket.text(client_id, mapping); webSocket.text(client_id, mapping);
@ -718,9 +564,6 @@ void Websocket_RefreshClientData_Static(uint32_t client_id, bool send_mapping)
String temp = "STATIC:"; String temp = "STATIC:";
temp.concat(String(globals.DeviceName) + ";");
temp.concat(String(LubeConfig.EEPROM_Version) + ";");
temp.concat(String(LubeConfig.checksum) + ";");
temp.concat(String(LubeConfig.DistancePerLube_Default) + ";"); temp.concat(String(LubeConfig.DistancePerLube_Default) + ";");
temp.concat(String(LubeConfig.DistancePerLube_Rain) + ";"); temp.concat(String(LubeConfig.DistancePerLube_Rain) + ";");
temp.concat(String(LubeConfig.tankCapacity_ml) + ";"); temp.concat(String(LubeConfig.tankCapacity_ml) + ";");
@ -734,11 +577,13 @@ void Websocket_RefreshClientData_Static(uint32_t client_id, bool send_mapping)
temp.concat(String(SpeedSourceString[LubeConfig.SpeedSource]) + ";"); temp.concat(String(SpeedSourceString[LubeConfig.SpeedSource]) + ";");
temp.concat(String(GPSBaudRateString[LubeConfig.GPSBaudRate]) + ";"); temp.concat(String(GPSBaudRateString[LubeConfig.GPSBaudRate]) + ";");
temp.concat(String(CANSourceString[LubeConfig.CANSource]) + ";"); temp.concat(String(CANSourceString[LubeConfig.CANSource]) + ";");
temp.concat(String(LubeConfig.LED_Mode_Flash) + ";"); temp.concat(String(LubeConfig.LED_Mode_Flash == true ? "1" : "0") + ";");
temp.concat(String(LubeConfig.LED_Max_Brightness) + ";"); temp.concat(String(LubeConfig.LED_Max_Brightness) + ";");
temp.concat(String(LubeConfig.LED_Min_Brightness) + ";"); temp.concat(String(LubeConfig.LED_Min_Brightness) + ";");
temp.concat(String(globals.eePersistanceAdress) + ";"); temp.concat(String(LubeConfig.SpeedSource == SOURCE_IMPULSE ? "1" : "0") + ";");
temp.concat(String(PersistenceData.checksum) + ";"); temp.concat(String(LubeConfig.SpeedSource == SOURCE_GPS ? "1" : "0") + ";");
temp.concat(String(LubeConfig.SpeedSource == SOURCE_CAN ? "1" : "0") + ";");
temp.concat(String(LubeConfig.BleedingPulses) + ";");
for (uint32_t i = 0; i < SpeedSourceString_Elements; i++) for (uint32_t i = 0; i < SpeedSourceString_Elements; i++)
{ {