LED-Clock/iotwebconf.ino
2022-11-10 20:03:13 +01:00

145 lines
5.1 KiB
C++

/**
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 += "</tr><td><tr><td>Current Timezone:</td><td>";
s += (getenv("TZ") ? : "(none)");
s += "</td></tr>";
s += "</table><table>";
s += "<tr></tr><tr><td>NTP Server:</td><td>";
s += currentNTP;
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()
{
setTimeZone();
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(&timezoneParam);
//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);
iotWebConf.setWifiConnectionCallback(&ntpReachableCheckCallback);
//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();
}