affb99507e
version bump minor tweaks compressed HTMLs changed SN behavior to control direct notifications removed nightlight notification due to severe uselessness removed unnecessary bool2int function Updated binary
185 lines
4.9 KiB
C++
185 lines
4.9 KiB
C++
/*
|
|
* Setup code
|
|
*/
|
|
|
|
void wledInit()
|
|
{
|
|
Serial.begin(115200);
|
|
|
|
#ifdef USEFS
|
|
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");
|
|
}
|
|
#endif
|
|
|
|
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 != ntpLocalPort && WiFi.status() == WL_CONNECTED)
|
|
{
|
|
udpConnected = notifierUdp.begin(udpPort);
|
|
}
|
|
if (ntpEnabled && WiFi.status() == WL_CONNECTED)
|
|
ntpConnected = ntpUdp.begin(ntpLocalPort);
|
|
|
|
//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(200, "image/x-icon", favicon);
|
|
});
|
|
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... Please wait a few seconds and refresh page.");
|
|
reset();
|
|
});
|
|
server.on("/set-settings", HTTP_POST, [](){
|
|
handleSettingsSet();
|
|
if(!handleFileRead("/settingssaved.htm")) server.send(200, "text/html", PAGE_settingssaved);
|
|
});
|
|
server.on("/version", HTTP_GET, [](){
|
|
server.send(200, "text/plain", (String)VERSION);
|
|
});
|
|
if (!ota_lock){
|
|
server.on("/edit", HTTP_GET, [](){
|
|
if(!handleFileRead("/edit.htm")) server.send(200, "text/html", PAGE_edit);
|
|
});
|
|
#ifdef USEFS
|
|
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("/list", HTTP_GET, handleFileList);
|
|
#endif
|
|
server.on("/down", HTTP_GET, down);
|
|
server.on("/cleareeprom", HTTP_GET, clearEEPROM);
|
|
//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);
|
|
//Init alexa service
|
|
alexaInit();
|
|
|
|
overlayCurrent = overlayDefault;
|
|
// Initialize NeoPixel Strip
|
|
strip.init();
|
|
strip.setLedCount(ledcount);
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
|