WLED/wled00/wled05_init.ino

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(200, "text/html", PAGE_settings);
});
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(200, "text/html", PAGE_index);
});
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(200, "text/html", PAGE_settingssaved);
});
if (!ota_lock){
server.on("/edit", HTTP_GET, [](){
if(!handleFileRead("/edit.htm")) server.send(200, "text/html", PAGE_edit);
});
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;
}
}
}