diff --git a/ampel-firmware/web_server.cpp b/ampel-firmware/web_server.cpp index fd0213cfbc861376a8cafc50f355ced282a254e5..759fa5c57941c269ce3060cf5885b10e2115c2ca 100644 --- a/ampel-firmware/web_server.cpp +++ b/ampel-firmware/web_server.cpp @@ -24,6 +24,7 @@ # include "lorawan.h" #endif #include <IotWebConf.h> +#include <IotWebConfUsing.h> // This loads aliases for easier class names. namespace config { // Values should be defined in config.h @@ -64,12 +65,41 @@ namespace web_server { IotWebConf *iotWebConf; +#define STRING_LEN 128 +#define NUMBER_LEN 32 + +// -- Configuration specific key. The value should be modified if config structure was changed. +#define CONFIG_VERSION "dem2" + + char stringParamValue[STRING_LEN]; + char intParamValue[NUMBER_LEN]; + char floatParamValue[NUMBER_LEN]; + char checkboxParamValue[STRING_LEN]; + char chooserParamValue[STRING_LEN]; + + static char chooserValues[][STRING_LEN] = { "red", "blue", "darkYellow" }; + static char chooserNames[][STRING_LEN] = { "Red", "Blue", "Dark yellow" }; + + IotWebConfTextParameter stringParam = IotWebConfTextParameter("String param", "stringParam", stringParamValue, + STRING_LEN); + IotWebConfParameterGroup group1 = IotWebConfParameterGroup("group1", ""); + IotWebConfNumberParameter intParam = IotWebConfNumberParameter("Int param", "intParam", intParamValue, NUMBER_LEN, + "20", "1..100", "min='1' max='100' step='1'"); +// -- We can add a legend to the separator + IotWebConfParameterGroup group2 = IotWebConfParameterGroup("c_factor", "Calibration factor"); + IotWebConfNumberParameter floatParam = IotWebConfNumberParameter("Float param", "floatParam", floatParamValue, + NUMBER_LEN, NULL, "e.g. 23.4", "step='0.1'"); + IotWebConfCheckboxParameter checkboxParam = IotWebConfCheckboxParameter("Check param", "checkParam", + checkboxParamValue, STRING_LEN, true); + IotWebConfSelectParameter chooserParam = IotWebConfSelectParameter("Choose param", "chooseParam", chooserParamValue, + STRING_LEN, (char*) chooserValues, (char*) chooserNames, sizeof(chooserValues) / STRING_LEN, STRING_LEN); + void update() { iotWebConf->doLoop(); // Listen for HTTP requests from clients } void initialize() { - iotWebConf = new IotWebConf(ampel.sensorId, &dnsServer, &http, HTTP_PASSWORD); // So that sensorId is defined. + iotWebConf = new IotWebConf(ampel.sensorId, &dnsServer, &http, HTTP_PASSWORD, "ampel_test_v1"); const int ONBOARD_LED_PIN = 2; # ifdef ESP8266 @@ -79,7 +109,20 @@ namespace web_server { # endif iotWebConf->setWifiConnectionTimeoutMs(1000UL * WIFI_TIMEOUT); +#if defined(ESP8266) + WiFi.hostname(ampel.sensorId); +#elif defined(ESP32) WiFi.setHostname(ampel.sensorId); +#endif + + group1.addItem(&intParam); + group2.addItem(&floatParam); + group2.addItem(&checkboxParam); + group2.addItem(&chooserParam); + + iotWebConf->addSystemParameter(&stringParam); + iotWebConf->addParameterGroup(&group1); + iotWebConf->addParameterGroup(&group2); iotWebConf->setWifiConnectionCallback([]() { led_effects::showKITTWheel(color::green);