2022-01-30 11:45:00 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
Handle web requests to "/" path.
|
|
|
|
*/
|
|
|
|
void iotWebConfHandleRoot() {
|
|
|
|
// -- Let IotWebConf test and handle captive portal requests.
|
|
|
|
if (iotWebConf.handleCaptivePortal())
|
|
|
|
{
|
|
|
|
// -- Captive portal request were already served.
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
//char sTemp[12];
|
|
|
|
String s = "<!DOCTYPE html><html lang=\"en\"><head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1, user-scalable=no\"/>";
|
|
|
|
s += "<meta http-equiv=\"refresh\" content=\"30\">";
|
|
|
|
//s += CUSTOMHTML_BODY_INNER;
|
|
|
|
s += "<title>RGB LED Clock</title></head><body>";
|
|
|
|
s += "RGB LED Clock";
|
|
|
|
s += "<p>";
|
|
|
|
s += "<table>";
|
|
|
|
s += "<tr><td>Current Time:</td><td>";
|
|
|
|
s += printLocalTime();
|
|
|
|
s += "</td></tr></table><table>";
|
|
|
|
s += "<tr></tr><tr><td>NTP Server:</td><td>";
|
|
|
|
s += ntpServerParam.value();
|
|
|
|
s += "</td><tr><tr><td>Current Brightness value: </td><td>";
|
|
|
|
s += String(strip.GetBrightness());
|
|
|
|
s += "</td><tr><tr><td>Max Brightness value: </td><td>";
|
|
|
|
s += maxBrightnessParam.value();
|
|
|
|
s += "</td></tr><tr><td>Show Seconds: </td><td>";
|
|
|
|
s += (singleSecondParam.isChecked() ? "Yes" : "No");
|
|
|
|
s += "</td></tr><tr><td>All Dots On: </td><td>";
|
|
|
|
s += (allDotsOnParam.isChecked() ? "Yes" : "No");
|
|
|
|
s += "</td></tr><tr><td>Following Hour: </td><td>";
|
|
|
|
s += (followingHourParam.isChecked() ? "Yes" : "No");
|
|
|
|
s += "</td></tr><tr><td>";
|
|
|
|
s += "<tr><td>High noon: </td><td style=\"border: 1px solid #000000; background-color:";
|
|
|
|
s += highnoonColorParam.value();
|
|
|
|
s += ";\"><td></tr>";
|
|
|
|
s += "<tr><td>Hour color: </td><td style=\"border: 1px solid #000000; background-color:";
|
|
|
|
s += hourColorParam.value();
|
|
|
|
s += ";\"><td></tr>";
|
|
|
|
s += "<tr><td>Minute color: </td><td style=\"border: 1px solid #000000; background-color:";
|
|
|
|
s += minuteColorParam.value();
|
|
|
|
s += ";\"><td></tr>";
|
|
|
|
if (singleSecond) {
|
|
|
|
s += "<tr><td>Seconds color: </td><td style=\"border: 1px solid #000000; background-color:";
|
|
|
|
s += secondsColorParam.value();
|
|
|
|
s += ";\"><td></tr>";
|
|
|
|
}
|
|
|
|
if (allDotsOn) {
|
|
|
|
s += "<tr><td>Backlight: </td><td style=\"border: 1px solid #000000; background-color:";
|
|
|
|
s += backlightColorParam.value();
|
|
|
|
s += ";\"><td></tr>";
|
|
|
|
}
|
|
|
|
s += "<tr><td>Hour Marking: </td><td style=\"border: 1px solid #000000; background-color:";
|
|
|
|
s += hourMarkingColorParam.value();
|
|
|
|
s += ";\"><td></tr></table>";
|
|
|
|
s += "<p>";
|
|
|
|
s += "Go to <a href='config'>configure page</a> to change values.";
|
|
|
|
s += "</body></html>\n";
|
|
|
|
|
|
|
|
server.send(200, "text/html; charset=UTF-8", s);
|
|
|
|
}
|
|
|
|
|
|
|
|
void iotWebConfConfigSaved()
|
|
|
|
{
|
|
|
|
//ToDo ntpServerParamValue;
|
|
|
|
MAX_BRIGHTNESS = maxBrightnessParam.value();
|
|
|
|
singleSecond = singleSecondParam.isChecked() ? true : false;
|
|
|
|
//Serial.println(singleSecondParam.isChecked() ? "true" : "false");
|
|
|
|
allDotsOn = allDotsOnParam.isChecked() ? true : false;
|
|
|
|
//Serial.println(allDotsOnParam.isChecked() ? "true" : "false");
|
|
|
|
#if NUM_LEDS == 60
|
|
|
|
followingHour = followingHourParam.isChecked() ? true : false;
|
|
|
|
if (!followingHour) {
|
|
|
|
hourOffset = 0 ;
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
//Serial.println(followingHourParam.isChecked() ? "true" : "false");
|
|
|
|
|
|
|
|
transformHtmltoStrip(&highnoonColor, (char*)&highnoonColorParam.value());
|
|
|
|
transformHtmltoStrip(&hourColor, (char*)&hourColorParam.value());
|
|
|
|
transformHtmltoStrip(&minuteColor, (char*)&minuteColorParam.value());
|
|
|
|
transformHtmltoStrip(&secondsColor, (char*)&secondsColorParam.value());
|
|
|
|
transformHtmltoStrip(&backlightColor, (char*)&backlightColorParam.value());
|
|
|
|
transformHtmltoStrip(&hourMarkingColor, (char*)&hourMarkingColorParam.value());
|
|
|
|
Serial.println("Configuration was updated.");
|
|
|
|
}
|
|
|
|
|
|
|
|
void iotWebConf_Setup() {
|
|
|
|
|
|
|
|
timeGroup.addItem(&ntpServerParam);
|
|
|
|
|
|
|
|
ledGroup.addItem(&maxBrightnessParam);
|
|
|
|
ledGroup.addItem(&singleSecondParam);
|
|
|
|
ledGroup.addItem(&allDotsOnParam);
|
|
|
|
#if NUM_LEDS == 60
|
|
|
|
ledGroup.addItem(&followingHourParam);
|
|
|
|
#endif
|
|
|
|
ledGroup.addItem(&hourColorParam);
|
|
|
|
ledGroup.addItem(&minuteColorParam);
|
|
|
|
ledGroup.addItem(&secondsColorParam);
|
|
|
|
ledGroup.addItem(&highnoonColorParam);
|
|
|
|
ledGroup.addItem(&backlightColorParam);
|
|
|
|
ledGroup.addItem(&hourMarkingColorParam);
|
|
|
|
|
|
|
|
iotWebConf.addParameterGroup(&timeGroup);
|
|
|
|
iotWebConf.addParameterGroup(&ledGroup);
|
|
|
|
|
|
|
|
iotWebConf.setConfigSavedCallback(&iotWebConfConfigSaved);
|
|
|
|
//iotWebConf.setWifiConnectionTimeoutMs(60000);
|
2022-08-19 19:29:43 +00:00
|
|
|
iotWebConf.setWifiConnectionCallback(&setNTP); //setNTP call after connection established
|
2022-01-30 11:45:00 +00:00
|
|
|
//iotWebConf.setFormValidator(&iotWebConfFormValidator);
|
|
|
|
iotWebConf.getApTimeoutParameter()->visible = true;
|
|
|
|
iotWebConf.setupUpdateServer(
|
|
|
|
[](const char* updatePath) {
|
|
|
|
httpUpdater.setup(&server, updatePath);
|
|
|
|
},
|
|
|
|
[](const char* userName, char* password) {
|
|
|
|
httpUpdater.updateCredentials(userName, password);
|
|
|
|
});
|
|
|
|
|
|
|
|
iotWebConf.setHtmlFormatProvider(&customHtmlFormatProvider);
|
|
|
|
// -- Initializing the configuration.
|
|
|
|
iotWebConf.init();
|
|
|
|
|
|
|
|
// -- Set up required URL handlers on the web server.
|
|
|
|
server.on("/", iotWebConfHandleRoot);
|
|
|
|
server.on("/config", [] { iotWebConf.handleConfig(); });
|
|
|
|
server.onNotFound([]() {
|
|
|
|
iotWebConf.handleNotFound();
|
|
|
|
});
|
|
|
|
|
|
|
|
Serial.println("Ready.");
|
|
|
|
Serial.flush();
|
|
|
|
}
|
|
|
|
|
|
|
|
void iotWebConfLoopCallback() {
|
|
|
|
iotWebConf.doLoop();
|
|
|
|
}
|