diff --git a/Software/data_src/index.htm b/Software/data_src/index.htm index 04c33ea..a02d35c 100644 --- a/Software/data_src/index.htm +++ b/Software/data_src/index.htm @@ -12,7 +12,7 @@ - + @@ -37,7 +37,6 @@ - @@ -61,9 +60,9 @@

Tankinhalt verbleibend

-
- %TANK_REMAIN_CAPACITY%% +
+ 0

@@ -159,7 +158,7 @@
-
Pulse @@ -169,7 +168,7 @@
- +
@@ -217,6 +216,21 @@

+ +
+

+

Live Debug

+
+ +
+
+
+ + +
+
+

+

@@ -244,8 +258,7 @@

-
@@ -266,7 +279,7 @@

-
+

Einstellungen Impulseingang

@@ -276,8 +289,7 @@
- +
mm
@@ -289,8 +301,7 @@
- +
mm
@@ -301,8 +312,7 @@
- +
"
@@ -313,8 +323,7 @@
- +
@@ -329,7 +338,7 @@
-
+

Einstellungen CAN-Bus

@@ -338,7 +347,6 @@
@@ -352,7 +360,7 @@
-
+

Einstellungen GPS

@@ -361,7 +369,6 @@
@@ -383,7 +390,7 @@
-
m @@ -395,7 +402,7 @@
-
m @@ -420,7 +427,7 @@
-
ml @@ -432,7 +439,7 @@
-
% @@ -444,7 +451,7 @@
-
µl @@ -469,7 +476,7 @@
- + @@ -480,7 +487,7 @@
-
@@ -489,7 +496,7 @@
-
@@ -505,171 +512,6 @@
- -
-

Systeminfo

- -
-

-

Gerät

- - - - - - - - -
Parameter - Value -
Hostname%HOSTNAME%
-

- - -
-

-

Einstellungen

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Parameter - Value -
DistancePerLube_Default%LUBE_DISTANCE_NORMAL%
DistancePerLube_Rain%LUBE_DISTANCE_RAIN%
tankCapacity_ml%TANK_CAPACITY%
amountPerDose_µl%AMOUNT_PER_DOSE%
TankRemindAtPercentage%TANK_REMIND%
PulsePerRevolution%PULSE_PER_REV%
TireWidth_mm%TIRE_WIDTH_MM%
TireWidthHeight_Ratio%TIRE_RATIO%
RimDiameter_Inch%RIM_DIAMETER%
DistancePerRevolution_mm%DISTANCE_PER_REV%
BleedingPulses%BLEEDING_PULSES%
SpeedSource%SPEED_SOURCE%
GPSBaudRate%GPS_BAUD%
CANSource%CAN_SOURCE%
LED Mode Flash%LED_MODE_FLASH%
LED Max Brightness%LED_MAX_BRIGHTNESS%
LED Min Brightness%LED_MIN_BRIGHTNESS%
EEPROM Version%EEPROM_VERSION%
Checksum%CONFIG_CHECKSUM%
-

- - -
-

-

Betriebsdaten

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Parameter - Value -
writeCycleCounter%WRITE_CYCLE_COUNT%
PersistenceMarker%PERSISTENCE_MARKER%
tankRemain_µl%TANK_REMAIN_UL%
TravelDistance_highRes%TRAVEL_DISTANCE_HIGHRES%
Odometer%ODOMETER%,%ODOMETER_M%
checksum%PERSISTANCE_CHECKSUM%
-

- - -
-

-

Live Debug

-
- -
-
-
- - -
-
-

- -
- -

Firmware

diff --git a/Software/data_src/static/js/websocket.js b/Software/data_src/static/js/websocket.js index 1efe75f..b716116 100644 --- a/Software/data_src/static/js/websocket.js +++ b/Software/data_src/static/js/websocket.js @@ -71,7 +71,7 @@ function onMessage(event) { const result = processDataString(data_sliced, statusMapping); console.log("STATUS:"); console.log(JSON.stringify(result, null, 2)); - fillValuestoHTML(result); + fillValuesToHTML(result); return; } @@ -80,7 +80,7 @@ function onMessage(event) { const result = processDataString(data_sliced, staticMapping); console.log("STATIC:"); console.log(JSON.stringify(result, null, 2)); - fillValuestoHTML(result); + fillValuesToHTML(result); return; } } @@ -139,11 +139,47 @@ function do_resize(textbox) { else textbox.rows = rows; } -function fillValuestoHTML(dataset) { +function fillValuesToHTML(dataset) { for (var key in dataset) { - var inputElement = document.getElementById(key); - if (inputElement) { - inputElement.value = dataset[key]; + var element = document.getElementById(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 + "%"; +} diff --git a/Software/src/webui.cpp b/Software/src/webui.cpp index 5d4068f..25fe640 100644 --- a/Software/src/webui.cpp +++ b/Software/src/webui.cpp @@ -7,7 +7,6 @@ const char *PARAM_MESSAGE = "message"; String processor(const String &var); void WebserverPOST_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 WebserverEERestore_Callback(AsyncWebServerRequest *request, const String &filename, size_t index, uint8_t *data, size_t len, bool final); void WebServerEEJSON_Callback(AsyncWebServerRequest *request); @@ -46,11 +45,10 @@ void initWebUI() webServer.addHandler(&webSocket); 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) { request->redirect("/index.htm"); }); 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( "/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 + ""; - } - 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 + ""; - } - 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 + ""; - } - 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) { 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:" "SystemStatus;" - "TankRemain;" - "TravelDistance_hr;" - "Odometer;" - "Odometer_mm;" - "writeCycleCounter;" - "BleedingPulses;" - "TankPercent;"; + "tankremain;" + "Odometer;"; if (client_id > 0) webSocket.text(client_id, mapping); @@ -664,13 +516,8 @@ void Websocket_RefreshClientData_Status(uint32_t client_id, bool send_mapping) String temp = "STATUS:"; 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.odometer + (PersistenceData.odometer_mm / 1000)) + ";"); if (client_id > 0) { @@ -688,27 +535,26 @@ void Websocket_RefreshClientData_Static(uint32_t client_id, bool send_mapping) if (send_mapping) { const char mapping[] = "MAPPING_STATIC:" - "DeviceName;" - "EEPROM_Version;" - "ConfigChecksum;" - "DistanceDefault;" - "DistanceRain;" - "tankCapacity;" - "amountPerDose;" - "TankRemindAtPercentage;" - "PulsePerRevolution;" - "TireWidth_mm;" - "TireWidthHeight_Ratio;" - "RimDiameter_Inch;" + "lubedistancenormal;" + "lubedistancerain;" + "tankcap;" + "pumppulse;" + "tankwarn;" + "pulserev;" + "tirewidth;" + "tireratio;" + "tiredia;" "DistancePerRevolution_mm;" - "SpeedSourceString;" - "GPSBaudRateString;" - "CANSourceString;" - "LED_Mode_Flash;" - "LED_Max;" - "LED_Min;" - "eePersistanceAdress;" - "PersisChecksum"; + "sourceselect;" + "gpsbaud;" + "cansource;" + "ledmodeflash;" + "ledmaxbrightness;" + "ledminbrightness;" + "showimpulse;" + "showgps;" + "showcan;" + "BleedingPulses;"; if (client_id > 0) webSocket.text(client_id, mapping); @@ -718,9 +564,6 @@ void Websocket_RefreshClientData_Static(uint32_t client_id, bool send_mapping) 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_Rain) + ";"); 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(GPSBaudRateString[LubeConfig.GPSBaudRate]) + ";"); 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_Min_Brightness) + ";"); - temp.concat(String(globals.eePersistanceAdress) + ";"); - temp.concat(String(PersistenceData.checksum) + ";"); + temp.concat(String(LubeConfig.SpeedSource == SOURCE_IMPULSE ? "1" : "0") + ";"); + 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++) {