From eeb17b417cd812c67b3c9190d833384b8f69586c Mon Sep 17 00:00:00 2001 From: cschwinne Date: Thu, 4 Oct 2018 16:50:12 +0200 Subject: [PATCH] Added MQTT Updated readme for 0.8.0 Fixed custom theme bug Bumped version codes to 0.8.0 --- readme.md | 28 ++++++++--------- wled00/data/index.htm | 2 +- wled00/data/index_mobile.htm | 2 +- wled00/data/settings_sec.htm | Bin 8878 -> 9120 bytes wled00/data/settings_sync.htm | Bin 9616 -> 10136 bytes wled00/htmls00.h | 4 +-- wled00/htmls01.h | 8 ++++- wled00/wled00.ino | 21 +++++++------ wled00/wled01_eeprom.ino | 53 +++++++++++++++++++++++++------- wled00/wled02_xml.ino | 4 ++- wled00/wled03_set.ino | 4 +++ wled00/wled05_init.ino | 2 +- wled00/wled08_led.ino | 28 +++++++++++++++-- wled00/wled17_mqtt.ino | 55 ++++++++++++++++++++++++---------- wled_logo.png | Bin 0 -> 47543 bytes 15 files changed, 153 insertions(+), 58 deletions(-) create mode 100644 wled_logo.png diff --git a/readme.md b/readme.md index 778be9d0..6e66a695 100644 --- a/readme.md +++ b/readme.md @@ -1,17 +1,20 @@ +![WLED logo](https://raw.githubusercontent.com/Aircoookie/WLED/master/wled_logo.png) + ## Welcome to my project WLED! -WLED is a fast and (relatively) secure implementation of an ESP8266/ESP32 webserver to control NeoPixel (WS2812B) LEDs! +WLED is a fast, advanced and (relatively) secure implementation of an ESP8266/ESP32 webserver to control NeoPixel (WS2812B) LEDs! -### Features: (V0.7.1) +### Features: (v0.8.0) - RGB, HSB, and brightness sliders - All new, mobile-friendly web UI! - Settings page - configuration over network - Access Point and station mode - automatic failsafe AP -- Support of Blynk IoT cloud -- WS2812FX library integrated for over 50 special effects (+Custom Theater Chase)! +- Support of Blynk IoT cloud and MQTT +- WS2812FX library integrated for over 70 special effects (with FastLED palettes)! - Secondary color support lets you use even more effect combinations - Alexa smart home device server (including dimming) - Beta syncronization to Philips hue lights +- Realtime UDP Packet Control (E1.31, Hyperion, WARLS, DRGB, DRGBW) - Support for RGBW strips - 25 user presets! Save colors and effects and apply them easily! Supports cycling through them. - HTTP request API for simple integration @@ -24,7 +27,6 @@ WLED is a fast and (relatively) secure implementation of an ESP8266/ESP32 webser - Password protected OTA page for added security (OTA lock) - NTP and configurable analog clock function - Support for the Cronixie Clock kit by Diamex -- Realtime UDP Packet Control (E1.31, Hyperion, WARLS, DRGB, DRGBW) ### Quick start guide and documentation: @@ -32,16 +34,14 @@ See the [wiki](https://github.com/Aircoookie/WLED/wiki)! ### Other -Licensed under the MIT license -Uses libraries: -ESP8266/ESP32 Arduino Core -NeoPixelBus by Makuna -[WS2812FX](https://github.com/kitesurfer1404/WS2812FX) by kitesurfer1404 (Aircoookie fork) -Time library -Timezone library by JChristensen -Alexa code based on arduino-esp8266-alexa-multiple-wemo-switch by kakopappa +Licensed under the MIT license +Credits in About page! -Uses Linearicons by Perxis! (link in settings page) +Uses Linearicons by Perxis! + +Join the Discord [server](https://discord.gg/KuqP7NE) to discuss everything about WLED! +You can also send me mails to [dev.aircoookie@gmail.com](mailto:dev.aircoookie@gmail.com). +If you insist that you just love WLED too much, you can [send me a gift](https://paypal.me/aircoookie) diff --git a/wled00/data/index.htm b/wled00/data/index.htm index 35349880..d35ee2b9 100644 --- a/wled00/data/index.htm +++ b/wled00/data/index.htm @@ -2,7 +2,7 @@ - WLED 0.8.0-a + WLED 0.8.0 )====="; diff --git a/wled00/htmls01.h b/wled00/htmls01.h index b9a2b8d2..b015bf58 100644 --- a/wled00/htmls01.h +++ b/wled00/htmls01.h @@ -250,6 +250,11 @@ Alexa invocation name:

Blynk

Device Auth token:
Clear the token field to disable. Setup info +

MQTT

+Broker:
+Device Topic:
+Group Topic:
+Reboot required to apply changes. MQTT info

Philips Hue

You can find the bridge IP and the light number in the 'About' section of the hue app.
Poll Hue light every ms:
@@ -406,7 +411,7 @@ HTTP traffic is unencrypted. An attacker in the same network can intercept form
Enable ArduinoOTA:

About

-WLED version 0.8.0-a

+WLED version 0.8.0

Contributors:
StormPie (Mobile HTML UI)

Thank you so much!

@@ -421,6 +426,7 @@ Thank you so much!

Timezone library by JChristensen
Blynk library (compacted)
E1.31 library by forkineye (modified)
+PubSubClient by knolleary (modified)
Espalexa by Aircoookie (modified)

UI icons by Linearicons created by Perxis! (CC-BY-SA 4.0)

Server message: Response error!
diff --git a/wled00/wled00.ino b/wled00/wled00.ino index 1eb429ea..cf212f01 100644 --- a/wled00/wled00.ino +++ b/wled00/wled00.ino @@ -3,7 +3,7 @@ */ /* * @title WLED project sketch - * @version 0.8.0-a + * @version 0.8.0 * @author Christian Schwinne */ @@ -45,8 +45,8 @@ //version code in format yymmddb (b = daily build) -#define VERSION 1810011 -char versionString[] = "0.8.0-a"; +#define VERSION 1810031 +char versionString[] = "0.8.0"; //AP and OTA default passwords (for maximum change them!) @@ -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) @@ -111,7 +111,7 @@ byte nightlightDelayMins = 60; bool nightlightFade = true; //if enabled, light will gradually dim towards the target bri. Otherwise, it will instantly set after delay over bool fadeTransition = true; //enable crossfading color transition bool enableSecTransition = true; //also enable transition for secondary color -uint16_t transitionDelay = 1200; //default crossfade duration in ms +uint16_t transitionDelay = 900; //default crossfade duration in ms bool reverseMode = false; //flip entire LED strip (reverses all effect directions) bool initLedsLast = false; //turn on LEDs only after WiFi connected/AP open @@ -161,9 +161,9 @@ bool e131Enabled = true; //settings for E1.31 (sACN) protoc uint16_t e131Universe = 1; bool e131Multicast = false; -char mqttTopic0[33] = ""; //main MQTT topic (individual per device, default is wled/mac) -char mqttTopic1[33] = "wled/all"; //second MQTT topic (for example to group devices) -char mqttServer[33] = "37.187.106.16"; //both domains and IPs should work (no SSL) 37.187.106.16 +char mqttDeviceTopic[33] = ""; //main MQTT topic (individual per device, default is wled/mac) +char mqttGroupTopic[33] = "wled/all"; //second MQTT topic (for example to group devices) +char mqttServer[33] = ""; //both domains and IPs should work (no SSL) bool huePollingEnabled = false; //poll hue bridge for light state uint16_t huePollIntervalMs = 2500; //low values (< 1sec) may cause lag but offer quicker response @@ -272,7 +272,7 @@ bool onlyAP = false; //only Access Point active, no con bool udpConnected = false, udpRgbConnected = false; //ui style -char cssCol[9][5]={"","","","","",""}; +char cssCol[6][9]={"","","","","",""}; String cssColorString=""; bool showWelcomePage = false; @@ -332,6 +332,9 @@ unsigned long realtimeTimeout = 0; //mqtt bool mqttInit = false; long lastMQTTReconnectAttempt = 0; +long lastInterfaceUpdate = 0; +byte interfaceUpdateCallMode = 0; +uint32_t mqttFailedConAttempts = 0; //auxiliary debug pin byte auxTime = 0; diff --git a/wled00/wled01_eeprom.ino b/wled00/wled01_eeprom.ino index f3c0459d..c5b2cfad 100644 --- a/wled00/wled01_eeprom.ino +++ b/wled00/wled01_eeprom.ino @@ -6,7 +6,7 @@ #define EEPSIZE 3072 //eeprom Version code, enables default settings instead of 0 init on update -#define EEPVER 8 +#define EEPVER 9 //0 -> old version, default //1 -> 0.4p 1711272 and up //2 -> 0.4p 1711302 and up @@ -15,7 +15,8 @@ //5 -> 0.5.1 and up //6 -> 0.6.0 and up //7 -> 0.7.1 and up -//8 -> 0.8.0 and up +//8 -> 0.8.0-a and up +//9 -> 0.8.0 /* * Erase all configuration data @@ -147,7 +148,7 @@ void saveSettingsToEEPROM() int in = 900+k*8; for (int i=in; i < in+8; ++i) { - EEPROM.write(i, cssCol[i-in][k]); + EEPROM.write(i, cssCol[k][i-in]); }} EEPROM.write(948,currentTheme); @@ -242,6 +243,19 @@ void saveSettingsToEEPROM() EEPROM.write(2280 + i, timerWeekday[i]); EEPROM.write(2290 + i, timerMacro[i] ); } + + for (int i = 2300; i < 2333; ++i) + { + EEPROM.write(i, mqttServer[i-2300]); + } + for (int i = 2333; i < 2366; ++i) + { + EEPROM.write(i, mqttDeviceTopic[i-2333]); + } + for (int i = 2366; i < 2399; ++i) + { + EEPROM.write(i, mqttGroupTopic[i-2366]); + } EEPROM.commit(); } @@ -468,6 +482,25 @@ void loadSettingsFromEEPROM(bool first) timerMacro[i] = EEPROM.read(2290 + i); } } + + if (lastEEPROMversion > 8) + { + for (int i = 2300; i < 2333; ++i) + { + mqttServer[i-2300] = EEPROM.read(i); + if (mqttServer[i-2300] == 0) break; + } + for (int i = 2333; i < 2366; ++i) + { + mqttDeviceTopic[i-2333] = EEPROM.read(i); + if (mqttDeviceTopic[i-2333] == 0) break; + } + for (int i = 2366; i < 2399; ++i) + { + mqttGroupTopic[i-2366] = EEPROM.read(i); + if (mqttGroupTopic[i-2366] == 0) break; + } + } receiveDirect = !EEPROM.read(2200); enableRealtimeUI = EEPROM.read(2201); @@ -491,12 +524,6 @@ void loadSettingsFromEEPROM(bool first) presetApplyCol = EEPROM.read(2211); presetApplyFx = EEPROM.read(2212); } - - for (int i = 2220; i < 2255; ++i) - { - blynkApiKey[i-2220] = EEPROM.read(i); - if (blynkApiKey[i-2220] == 0) break; - } bootPreset = EEPROM.read(389); wifiLock = EEPROM.read(393); @@ -514,12 +541,18 @@ void loadSettingsFromEEPROM(bool first) for (int i=in; i < in+8; ++i) { if (EEPROM.read(i) == 0) break; - cssCol[i-in][k] =EEPROM.read(i); + cssCol[k][i-in] =EEPROM.read(i); }} //custom macro memory (16 slots/ each 64byte) //1024-2047 reserved + for (int i = 2220; i < 2255; ++i) + { + blynkApiKey[i-2220] = EEPROM.read(i); + if (blynkApiKey[i-2220] == 0) break; + } + //user MOD memory //2944 - 3071 reserved diff --git a/wled00/wled02_xml.ino b/wled00/wled02_xml.ino index 8aaca563..07f55921 100644 --- a/wled00/wled02_xml.ino +++ b/wled00/wled02_xml.ino @@ -241,7 +241,9 @@ void getSettingsJS(byte subPage) //get values for settings form in javascript sappend('c',"AL",alexaEnabled); sappends('s',"AI",alexaInvocationName); sappend('c',"SA",notifyAlexa); - sappends('s',"BK",(char*)((blynkEnabled)?"Hidden":"")); + sappends('s',"MS",mqttServer); + sappends('s',"MD",mqttDeviceTopic); + sappends('s',"MG",mqttGroupTopic); sappend('v',"H0",hueIP[0]); sappend('v',"H1",hueIP[1]); sappend('v',"H2",hueIP[2]); diff --git a/wled00/wled03_set.ino b/wled00/wled03_set.ino index 487c6fa2..4d1fac9b 100644 --- a/wled00/wled03_set.ino +++ b/wled00/wled03_set.ino @@ -170,6 +170,10 @@ void handleSettingsSet(byte subPage) notifyAlexa = server.hasArg("SA"); if (server.hasArg("BK") && !server.arg("BK").equals("Hidden")) {strcpy(blynkApiKey,server.arg("BK").c_str()); initBlynk(blynkApiKey);} + + strcpy(mqttServer, server.arg("MS").c_str()); + strcpy(mqttDeviceTopic, server.arg("MD").c_str()); + strcpy(mqttGroupTopic, server.arg("MG").c_str()); notifyHue = server.hasArg("SH"); for (int i=0;i<4;i++){ diff --git a/wled00/wled05_init.ino b/wled00/wled05_init.ino index 6ca487b7..d29c1581 100644 --- a/wled00/wled05_init.ino +++ b/wled00/wled05_init.ino @@ -58,7 +58,7 @@ void wledInit() } prepareIds(); //UUID from MAC (for Alexa and MQTT) - if (mqttTopic0[0] == 0) strcpy(mqttTopic0, strcat("wled/", escapedMac.c_str())); + if (mqttDeviceTopic[0] == 0) strcpy(mqttDeviceTopic, strcat("wled/", escapedMac.c_str())); if (!onlyAP) mqttInit = initMQTT(); if (!initLedsLast) strip.service(); diff --git a/wled00/wled08_led.ino b/wled00/wled08_led.ino index c71deda1..f45e9b92 100644 --- a/wled00/wled08_led.ino +++ b/wled00/wled08_led.ino @@ -92,12 +92,14 @@ void colorUpdated(int callMode) whiteSecIT = whiteSec; briIT = bri; if (bri > 0) briLast = bri; + notify(callMode); + if (fadeTransition) { //set correct delay if not using notification delay if (callMode != 3) transitionDelayTemp = transitionDelay; - if (transitionDelayTemp == 0) {setLedsStandard();strip.trigger();return;} + if (transitionDelayTemp == 0) {setLedsStandard(); strip.trigger(); return;} if (transitionActive) { @@ -120,11 +122,33 @@ void colorUpdated(int callMode) setLedsStandard(); strip.trigger(); } - if (callMode != 9 && callMode != 5 && callMode != 8) updateBlynk(); + + if (callMode == 8) return; + //only update Blynk and mqtt every 2 seconds to reduce lag + if (millis() - lastInterfaceUpdate <= 2000) + { + interfaceUpdateCallMode = callMode; + return; + } + updateInterfaces(callMode); +} + +void updateInterfaces(uint8_t callMode) +{ + if (callMode != 9 && callMode != 5) updateBlynk(); + publishMQTT(); + lastInterfaceUpdate = millis(); } void handleTransitions() { + //handle still pending interface update + if (interfaceUpdateCallMode && millis() - lastInterfaceUpdate > 2000) + { + updateInterfaces(interfaceUpdateCallMode); + interfaceUpdateCallMode = 0; //disable + } + if (transitionActive && transitionDelayTemp > 0) { float tper = (millis() - transitionStartTime)/(float)transitionDelayTemp; diff --git a/wled00/wled17_mqtt.ino b/wled00/wled17_mqtt.ino index 82df40eb..93be98ed 100644 --- a/wled00/wled17_mqtt.ino +++ b/wled00/wled17_mqtt.ino @@ -28,23 +28,38 @@ void callbackMQTT(char* topic, byte* payload, unsigned int length) { colorUpdated(1); } else if (strstr(topic, "/api")) { - handleSet(String((char*)payload)); + String apireq = "win&"; + handleSet(apireq += (char*)payload)); } else { parseMQTTBriPayload((char*)payload); } } -void publishStatus() +void publishMQTT() { if (!mqtt.connected()) return; DEBUG_PRINTLN("Publish MQTT"); - char s[4]; - sprintf(s,"%ld", bri); - mqtt.publish(strcat(mqttTopic0, "/g") , s); - XML_response(false); - mqtt.publish(strcat(mqttTopic0, "/vs"), obuf); + char s[10]; + char subuf[38]; + + sprintf(s, "%ld", bri); + strcpy(subuf, mqttDeviceTopic); + strcat(subuf, "/g"); + mqtt.publish(subuf, s); + + sprintf(s, "#%X", white*16777216 + col[0]*65536 + col[1]*256 + col[2]); + strcpy(subuf, mqttDeviceTopic); + strcat(subuf, "/c"); + mqtt.publish(subuf, s); + + //if you want to use this, increase the MQTT buffer in PubSubClient.h to 350+ + //it will publish the API response to MQTT + /*XML_response(false); + strcpy(subuf, mqttDeviceTopic); + strcat(subuf, "/v"); + mqtt.publish(subuf, obuf);*/ } bool reconnectMQTT() @@ -53,26 +68,26 @@ bool reconnectMQTT() { //re-subscribe to required topics char subuf[38]; - strcpy(subuf, mqttTopic0); + strcpy(subuf, mqttDeviceTopic); - if (mqttTopic0[0] != 0) + if (mqttDeviceTopic[0] != 0) { - strcpy(subuf, mqttTopic0); + strcpy(subuf, mqttDeviceTopic); mqtt.subscribe(subuf); strcat(subuf, "/col"); mqtt.subscribe(subuf); - strcpy(subuf, mqttTopic0); + strcpy(subuf, mqttDeviceTopic); strcat(subuf, "/api"); mqtt.subscribe(subuf); } - if (mqttTopic1[0] != 0) + if (mqttGroupTopic[0] != 0) { - strcpy(subuf, mqttTopic1); + strcpy(subuf, mqttGroupTopic); mqtt.subscribe(subuf); strcat(subuf, "/col"); mqtt.subscribe(subuf); - strcpy(subuf, mqttTopic1); + strcpy(subuf, mqttGroupTopic); strcat(subuf, "/api"); mqtt.subscribe(subuf); } @@ -100,12 +115,20 @@ bool initMQTT() void handleMQTT() { if (WiFi.status() != WL_CONNECTED || !mqttInit) return; - if (!mqtt.connected() && millis() - lastMQTTReconnectAttempt > 5000) + + //every time connection is unsuccessful, the attempt interval is increased, since attempt will block program for 7 sec each time + if (!mqtt.connected() && millis() - lastMQTTReconnectAttempt > 5000 + (5000 * mqttFailedConAttempts * mqttFailedConAttempts)) { DEBUG_PRINTLN("Attempting to connect MQTT..."); lastMQTTReconnectAttempt = millis(); - if (!reconnectMQTT()) return; + if (!reconnectMQTT()) + { + //still attempt reconnect about once daily + if (mqttFailedConAttempts < 120) mqttFailedConAttempts++; + return; + } DEBUG_PRINTLN("MQTT con!"); + mqttFailedConAttempts = 0; } mqtt.loop(); } diff --git a/wled_logo.png b/wled_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..905c793f7040843ded56cdc2b90ae3757c5afb1b GIT binary patch literal 47543 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

-DOqULh=T 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 JnpEuL{twr1z83%h literal 0 HcmV?d00001