From 92b4b69b3fe205a3ab0e4ba2551309c943a91d5f Mon Sep 17 00:00:00 2001 From: cschwinne Date: Sun, 30 Sep 2018 20:24:57 +0200 Subject: [PATCH] Split Server init code from wled05_init.ino to improve readability Added MQTT logic --- .../pubsubclient/PubSubClient.cpp | 2 +- .../dependencies/pubsubclient/PubSubClient.h | 4 +- wled00/wled00.ino | 4 +- wled00/wled05_init.ino | 360 +---------------- wled00/wled17_mqtt.ino | 71 ++-- wled00/wled18_server.ino | 374 ++++++++++++++++++ 6 files changed, 426 insertions(+), 389 deletions(-) create mode 100644 wled00/wled18_server.ino diff --git a/wled00/src/dependencies/pubsubclient/PubSubClient.cpp b/wled00/src/dependencies/pubsubclient/PubSubClient.cpp index 6ea7e055..d3e5ca5f 100644 --- a/wled00/src/dependencies/pubsubclient/PubSubClient.cpp +++ b/wled00/src/dependencies/pubsubclient/PubSubClient.cpp @@ -318,7 +318,7 @@ boolean PubSubClient::loop() { char *topic = (char*) buffer+llen+2; // make sure payload can be interpreted as 'C' string - buffer[(len < MQTT_MAX_PACKET_SIZE) ? len -1 : MQTT_MAX_PACKET_SIZE -1] = 0; + buffer[(len < MQTT_MAX_PACKET_SIZE) ? len : MQTT_MAX_PACKET_SIZE -1] = 0; // msgId only present for QOS>0 if ((buffer[0]&0x06) == MQTTQOS1) { diff --git a/wled00/src/dependencies/pubsubclient/PubSubClient.h b/wled00/src/dependencies/pubsubclient/PubSubClient.h index be4bd674..9eaa3296 100644 --- a/wled00/src/dependencies/pubsubclient/PubSubClient.h +++ b/wled00/src/dependencies/pubsubclient/PubSubClient.h @@ -28,12 +28,12 @@ // MQTT_KEEPALIVE : keepAlive interval in Seconds #ifndef MQTT_KEEPALIVE -#define MQTT_KEEPALIVE 15 +#define MQTT_KEEPALIVE 60 #endif // MQTT_SOCKET_TIMEOUT: socket timeout interval in Seconds #ifndef MQTT_SOCKET_TIMEOUT -#define MQTT_SOCKET_TIMEOUT 15 +#define MQTT_SOCKET_TIMEOUT 62 #endif // MQTT_MAX_TRANSFER_SIZE : limit how much data is passed to the network client diff --git a/wled00/wled00.ino b/wled00/wled00.ino index e04bffea..1af0e10c 100644 --- a/wled00/wled00.ino +++ b/wled00/wled00.ino @@ -45,7 +45,7 @@ //version code in format yymmddb (b = daily build) -#define VERSION 1809281 +#define VERSION 1809292 char versionString[] = "0.8.0-a"; @@ -59,7 +59,7 @@ char otaPass[33] = "wledota"; //to toggle usb serial debug (un)comment following line(s) -//#define DEBUG +#define DEBUG //Hardware CONFIG (only changeble HERE, not at runtime) diff --git a/wled00/wled05_init.ino b/wled00/wled05_init.ino index ac20e2ee..6ca487b7 100644 --- a/wled00/wled05_init.ino +++ b/wled00/wled05_init.ino @@ -59,180 +59,12 @@ void wledInit() prepareIds(); //UUID from MAC (for Alexa and MQTT) if (mqttTopic0[0] == 0) strcpy(mqttTopic0, strcat("wled/", escapedMac.c_str())); + if (!onlyAP) mqttInit = initMQTT(); if (!initLedsLast) strip.service(); - //SERVER INIT - //settings page - server.on("/settings", HTTP_GET, [](){ - serveSettings(0); - }); - server.on("/settings/wifi", HTTP_GET, [](){ - if (!(wifiLock && otaLock)) - { - serveSettings(1); - }else{ - serveMessage(500, "Access Denied", txd, 254); - } - }); - server.on("/settings/leds", HTTP_GET, [](){ - serveSettings(2); - }); - server.on("/settings/ui", HTTP_GET, [](){ - serveSettings(3); - }); - server.on("/settings/sync", HTTP_GET, [](){ - serveSettings(4); - }); - server.on("/settings/time", HTTP_GET, [](){ - serveSettings(5); - }); - server.on("/settings/sec", HTTP_GET, [](){ - serveSettings(6); - }); - - server.on("/favicon.ico", HTTP_GET, [](){ - if(!handleFileRead("/favicon.ico")) - { - server.send_P(200, "image/x-icon", favicon, 156); - } - }); - - server.on("/", HTTP_GET, [](){ - serveIndexOrWelcome(); - }); - server.on("/generate_204", HTTP_GET, [](){ - serveIndex(); - }); - - server.on("/fwlink", HTTP_GET, [](){ - serveIndex(); - }); - - server.on("/sliders", HTTP_GET, serveIndex); - - server.on("/welcome", HTTP_GET, [](){ - serveSettings(255); - }); - - server.on("/reset", HTTP_GET, [](){ - serveMessage(200,"Rebooting now...","(takes ~20 seconds, wait for auto-redirect)",79); - reset(); - }); - - server.on("/settings/wifi", HTTP_POST, [](){ - if (!(wifiLock && otaLock)) handleSettingsSet(1); - serveMessage(200,"WiFi settings saved.","Rebooting now...",255); - reset(); - }); - - server.on("/settings/leds", HTTP_POST, [](){ - handleSettingsSet(2); - serveMessage(200,"LED settings saved.","Redirecting...",1); - }); - - server.on("/settings/ui", HTTP_POST, [](){ - handleSettingsSet(3); - serveMessage(200,"UI settings saved.","Reloading to apply theme...",122); - }); - - server.on("/settings/sync", HTTP_POST, [](){ - handleSettingsSet(4); - if (hueAttempt) - { - serveMessage(200,"Hue setup result",hueError,253); - } else { - serveMessage(200,"Sync settings saved.","Redirecting...",1); - } - hueAttempt = false; - }); - - server.on("/settings/time", HTTP_POST, [](){ - handleSettingsSet(5); - serveMessage(200,"Time settings saved.","Redirecting...",1); - }); - - server.on("/settings/sec", HTTP_POST, [](){ - handleSettingsSet(6); - serveMessage(200,"Security settings saved.","Rebooting now... (takes ~20 seconds, wait for auto-redirect)",139); - reset(); - }); - - server.on("/version", HTTP_GET, [](){ - server.send(200, "text/plain", (String)VERSION); - }); - - server.on("/uptime", HTTP_GET, [](){ - server.send(200, "text/plain", (String)millis()); - }); - - server.on("/freeheap", HTTP_GET, [](){ - server.send(200, "text/plain", (String)ESP.getFreeHeap()); - }); - - server.on("/power", HTTP_GET, [](){ - String val = (String)(int)strip.getPowerEstimate(ledCount,strip.getColor(),strip.getBrightness()); - val += "mA currently"; - serveMessage(200,val,"This is just an estimate (does not take into account several factors like effects and wire resistance). It is NOT an accurate measurement!",254); - }); - - server.on("/u", HTTP_GET, [](){ - server.setContentLength(strlen_P(PAGE_usermod)); - server.send(200, "text/html", ""); - server.sendContent_P(PAGE_usermod); - }); - - server.on("/teapot", HTTP_GET, [](){ - serveMessage(418, "418. I'm a teapot.","(Tangible Embedded Advanced Project Of Twinkling)",254); - }); - - server.on("/build", HTTP_GET, [](){ - getBuildInfo(); - server.send(200, "text/plain", obuf); - }); - //if OTA is allowed - if (!otaLock){ - server.on("/edit", HTTP_GET, [](){ - 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 - //init ota page - httpUpdater.setup(&server); - } else - { - server.on("/edit", HTTP_GET, [](){ - serveMessage(500, "Access Denied", txd, 254); - }); - server.on("/update", HTTP_GET, [](){ - serveMessage(500, "Access Denied", txd, 254); - }); - server.on("/list", HTTP_GET, [](){ - serveMessage(500, "Access Denied", txd, 254); - }); - } - //called when the url is not defined here, ajax-in; get-settings - server.onNotFound([](){ - DEBUG_PRINTLN("Not-Found HTTP call:"); - DEBUG_PRINTLN("URI: " + server.uri()); - DEBUG_PRINTLN("Body: " + server.arg(0)); - if(!handleSet(server.uri())){ - if(!handleAlexaApiCall(server.uri(),server.arg(0))) - server.send(404, "text/plain", "Not Found"); - } - }); - - #ifndef ARDUINO_ARCH_ESP32 - const char * headerkeys[] = {"User-Agent"}; - server.collectHeaders(headerkeys,sizeof(headerkeys)/sizeof(char*)); - #else - String ua = "User-Agent"; - server.collectHeaders(ua); - #endif + //HTTP server page init + initServer(); if (!initLedsLast) strip.service(); //init Alexa hue emulation @@ -268,7 +100,6 @@ void wledInit() { initBlynk(blynkApiKey); initE131(); - mqttInit = initMQTT(); } if (initLedsLast) initStrip(); @@ -361,190 +192,6 @@ void initCon() } } -void buildCssColorString() -{ - String cs[]={"","","","","",""}; - switch (currentTheme) - { - default: cs[0]="D9B310"; cs[1]="0B3C5D"; cs[2]="1D2731"; cs[3]="328CC1"; cs[4]="000"; cs[5]="328CC1"; break; //night - case 1: cs[0]="eee"; cs[1]="ddd"; cs[2]="b9b9b9"; cs[3]="049"; cs[4]="777"; cs[5]="049"; break; //modern - case 2: cs[0]="abc"; cs[1]="fff"; cs[2]="ddd"; cs[3]="000"; cs[4]="0004"; cs[5]="000"; break; //bright - case 3: cs[0]="c09f80"; cs[1]="d7cec7"; cs[2]="76323f"; cs[3]="888"; cs[4]="3334"; cs[5]="888"; break; //wine - case 4: cs[0]="3cc47c"; cs[1]="828081"; cs[2]="d9a803"; cs[3]="1e392a"; cs[4]="000a"; cs[5]="1e392a"; break; //electric - case 5: cs[0]="57bc90"; cs[1]="a5a5af"; cs[2]="015249"; cs[3]="88c9d4"; cs[4]="0004"; cs[5]="88c9d4"; break; //mint - case 6: cs[0]="f7c331"; cs[1]="dcc7aa"; cs[2]="6b7a8f"; cs[3]="f7882f"; cs[4]="0007"; cs[5]="f7882f"; break; //amber - case 7: cs[0]="fc3"; cs[1]="124"; cs[2]="334"; cs[3]="f1d"; cs[4]="f00"; cs[5]="f1d"; break;//club - case 8: cs[0]="0ac"; cs[1]="124"; cs[2]="224"; cs[3]="003eff"; cs[4]="003eff"; cs[5]="003eff"; break;//air - case 9: cs[0]="f70"; cs[1]="421"; cs[2]="221"; cs[3]="a50"; cs[4]="f70"; cs[5]="f70"; break;//nixie - case 10: cs[0]="2d2"; cs[1]="010"; cs[2]="121"; cs[3]="060"; cs[4]="040"; cs[5]="3f3"; break; //terminal - case 11: cs[0]="867ADE"; cs[1]="4033A3"; cs[2]="483AAA"; cs[3]="483AAA"; cs[4]=""; cs[5]="867ADE"; break; //c64 - case 12: cs[0]="fbe8a6"; cs[1]="d2fdff"; cs[2]="b4dfe5"; cs[3]="f4976c"; cs[4]=""; cs[5]="303c6c"; break; //c64 - case 14: cs[0]="fc7"; cs[1]="49274a"; cs[2]="94618e"; cs[3]="f4decb"; cs[4]="0008"; cs[5]="f4decb"; break; //end - case 15: for (int i=0;i<6;i++)cs[i]=cssCol[i];//custom - } - cssColorString="