e9ae7c34c7
Added timezones library (CET for now, you can easily adapt it to your timezone however) Added overlays to support both digital and analog clockfaces, basic countdown Improved serial debug Included license notes in settings file Added a bit of guides to readme file Warning! Using NTP usually results in a complete system crash after 1-48 hours. Please only enable it if you are willing to experiment with it. To get a proper WLED experience, make sure the checkbox for NTP is disabled in settings!
174 lines
4.5 KiB
C++
174 lines
4.5 KiB
C++
/*
|
|
* Setup code
|
|
*/
|
|
|
|
void wledInit()
|
|
{
|
|
Serial.begin(115200);
|
|
|
|
SPIFFS.begin();
|
|
{
|
|
Dir dir = SPIFFS.openDir("/");
|
|
while (dir.next()) {
|
|
String fileName = dir.fileName();
|
|
size_t fileSize = dir.fileSize();
|
|
#ifdef DEBUG
|
|
Serial.printf("FS File: %s, size: %s\n", fileName.c_str(), formatBytes(fileSize).c_str());
|
|
#endif
|
|
}
|
|
DEBUG_PRINTF("\n");
|
|
}
|
|
DEBUG_PRINTLN("Init EEPROM");
|
|
EEPROM.begin(1024);
|
|
loadSettingsFromEEPROM();
|
|
DEBUG_PRINT("CC: SSID: ");
|
|
DEBUG_PRINT(clientssid);
|
|
|
|
WiFi.disconnect(); //close old connections
|
|
|
|
if (staticip[0] != 0)
|
|
{
|
|
WiFi.config(staticip, staticgateway, staticsubnet);
|
|
} else
|
|
{
|
|
WiFi.config(0U, 0U, 0U);
|
|
}
|
|
|
|
if (apssid.length()>0)
|
|
{
|
|
DEBUG_PRINT("USING AP");
|
|
DEBUG_PRINTLN(apssid.length());
|
|
initAP();
|
|
} else
|
|
{
|
|
DEBUG_PRINTLN("NO AP");
|
|
WiFi.softAPdisconnect(true);
|
|
}
|
|
|
|
initCon();
|
|
|
|
DEBUG_PRINTLN("");
|
|
DEBUG_PRINT("Connected! IP address: ");
|
|
DEBUG_PRINTLN(WiFi.localIP());
|
|
|
|
// Set up mDNS responder:
|
|
if (cmdns != NULL && !only_ap && !MDNS.begin(cmdns.c_str())) {
|
|
DEBUG_PRINTLN("Error setting up MDNS responder!");
|
|
down();
|
|
}
|
|
DEBUG_PRINTLN("mDNS responder started");
|
|
|
|
if (udpPort > 0 && udpPort != 123)
|
|
{
|
|
udpConnected = notifierUdp.begin(udpPort);
|
|
}
|
|
if (ntpEnabled && !only_ap)
|
|
{
|
|
ntpConnected = ntpUdp.begin(123);
|
|
}
|
|
|
|
//SERVER INIT
|
|
//settings page
|
|
server.on("/settings", HTTP_GET, [](){
|
|
if(!handleFileRead("/settings.htm")) server.send(404, "text/plain", "FileNotFound");
|
|
});
|
|
server.on("/button.png", HTTP_GET, [](){
|
|
if(!handleFileRead("/button.png")) server.send(404, "text/plain", "FileNotFound");
|
|
});
|
|
server.on("/moon.png", HTTP_GET, [](){
|
|
if(!handleFileRead("/moon.png")) server.send(404, "text/plain", "FileNotFound");
|
|
});
|
|
server.on("/favicon.ico", HTTP_GET, [](){
|
|
if(!handleFileRead("/favicon.ico")) server.send(404, "text/plain", "FileNotFound");
|
|
});
|
|
server.on("/", HTTP_GET, [](){
|
|
if(!handleFileRead("/index.htm")) server.send(404, "text/plain", "FileNotFound");
|
|
});
|
|
server.on("/reset", HTTP_GET, [](){
|
|
server.send(200, "text/plain", "Rebooting... Go to main page when lights turn on.");
|
|
reset();
|
|
});
|
|
server.on("/set-settings", HTTP_POST, [](){
|
|
handleSettingsSet();
|
|
if(!handleFileRead("/settingssaved.htm")) server.send(404, "text/plain", "SettingsSaved");
|
|
});
|
|
if (!ota_lock){
|
|
server.on("/edit", HTTP_GET, [](){
|
|
if(!handleFileRead("/edit.htm")) server.send(404, "text/plain", "FileNotFound");
|
|
});
|
|
server.on("/edit", HTTP_PUT, handleFileCreate);
|
|
server.on("/edit", HTTP_DELETE, handleFileDelete);
|
|
server.on("/edit", HTTP_POST, [](){ server.send(200, "text/plain", ""); }, handleFileUpload);
|
|
server.on("/down", HTTP_GET, down);
|
|
server.on("/cleareeprom", HTTP_GET, clearEEPROM);
|
|
server.on("/list", HTTP_GET, handleFileList);
|
|
//init ota page
|
|
httpUpdater.setup(&server);
|
|
} else
|
|
{
|
|
server.on("/edit", HTTP_GET, [](){
|
|
server.send(500, "text/plain", "OTA lock active");
|
|
});
|
|
server.on("/down", HTTP_GET, [](){
|
|
server.send(500, "text/plain", "OTA lock active");
|
|
});
|
|
server.on("/cleareeprom", HTTP_GET, [](){
|
|
server.send(500, "text/plain", "OTA lock active");
|
|
});
|
|
server.on("/update", HTTP_GET, [](){
|
|
server.send(500, "text/plain", "OTA lock active");
|
|
});
|
|
server.on("/list", HTTP_GET, [](){
|
|
server.send(500, "text/plain", "OTA lock active");
|
|
});
|
|
}
|
|
//called when the url is not defined here, ajax-in; get-settings
|
|
server.onNotFound([](){
|
|
if(!handleSet(server.uri())){
|
|
server.send(404, "text/plain", "FileNotFound");
|
|
}
|
|
});
|
|
|
|
server.begin();
|
|
DEBUG_PRINTLN("HTTP server started");
|
|
// Add service to MDNS
|
|
MDNS.addService("http", "tcp", 80);
|
|
// Initialize NeoPixel Strip
|
|
strip.init();
|
|
strip.setMode(effectCurrent);
|
|
strip.setColor(0);
|
|
strip.setSpeed(effectSpeed);
|
|
strip.setBrightness(255);
|
|
strip.start();
|
|
colorUpdated(0);
|
|
pinMode(buttonPin, INPUT_PULLUP);
|
|
}
|
|
|
|
void initAP(){
|
|
WiFi.softAP(apssid.c_str(), appass.c_str(), apchannel, aphide);
|
|
}
|
|
|
|
void initCon()
|
|
{
|
|
int fail_count = 0;
|
|
if (clientssid.length() <1) fail_count = 33;
|
|
WiFi.begin(clientssid.c_str(), clientpass.c_str());
|
|
while(WiFi.status() != WL_CONNECTED) {
|
|
delay(500);
|
|
DEBUG_PRINTLN("C_NC");
|
|
fail_count++;
|
|
if (fail_count > 32)
|
|
{
|
|
WiFi.disconnect();
|
|
DEBUG_PRINTLN("Can't connect to network. Opening AP...");
|
|
String save = apssid;
|
|
only_ap = true;
|
|
if (apssid.length() <1) apssid = "WLED-AP";
|
|
initAP();
|
|
apssid = save;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|