Release of WLED 0.4 - the BLINKEN update

Added setting to change default boot preset
Changed default NTP server
Removed keywords.txt from dependencies because IDE would consider it as an (invalid) library
Updated readme
Updated binaries to 0.4
This commit is contained in:
cschwinne 2017-12-12 14:52:28 +01:00
parent 60530a2931
commit 973b8f62c8
16 changed files with 66 additions and 94 deletions

BIN
bin/wled04_1712121_RGBW.bin Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,17 +1,21 @@
## Welcome to my project WLED!
WLED is a basic, fast and (relatively) secure implementation of a ESP8266 webserver to control Neopixel (WS2812B) leds WLED is a basic, fast and (relatively) secure implementation of a ESP8266 webserver to control Neopixel (WS2812B) leds
Uses ESP arduino version 2.3.0 (latest as of October 2017). Uses ESP Arduino core version 2.3.0 (latest as of December 2017).
Contents in the /data directory may be uploaded to SPIFFS.
Features: (V0.4) ### Features: (V0.4)
- RGB, HSB, and brightness sliders - RGB, HSB, and brightness sliders
- Settings page - configuration over network - Settings page - configuration over network
- Access Point and station mode - automatic failsafe AP - Access Point and station mode - automatic failsafe AP
- WS2812FX library integrated for nearly 50 special effects! - WS2812FX library integrated for over 50 special effects!
- Secondary color support lets you use even more effect combinations
- Support for RGBW strips - Support for RGBW strips
- 25 user presets! Save your favorite colors and effects and apply them easily!
- Nightlight function (gradually dims down) - Nightlight function (gradually dims down)
- Notifier function (multiple ESPs sync color via UDP broadcast) - Notifier function (multiple ESPs sync color via UDP broadcast)
- Support for power pushbutton - Support for power pushbutton
- Custom Theater Chase
- Full OTA software update capability - Full OTA software update capability
- Password protected OTA page for added security (OTA lock) - Password protected OTA page for added security (OTA lock)
- Alexa smart home device server - Alexa smart home device server
@ -19,26 +23,24 @@ Features: (V0.4)
- client HTML controlled - client HTML controlled
- Edit page. Change html and other files via OTA. (needs to be enabled in source) - Edit page. Change html and other files via OTA. (needs to be enabled in source)
Compile settings: ### Compile settings:
Board: WeMos D1 mini (untested with other HW, should work though) - Board: WeMos D1 mini (untested with other HW, should work though)
CPU frequency: 80 MHz - CPU frequency: 80 MHz
Flash size : 4MB (3MB SPIFFS) - Flash size : 4MB (3MB SPIFFS)
Upload speed: 921600 - Upload speed: 921600
### Quick start guide:
Quick start guide: - If you do not plan to change the software, you can use the supplied binary files instead-
Just flash a [basic HTTP OTA updater](https://github.com/Aircoookie/ESP8266MinimalHTTPUpdater) sketch and upload the bin!
-If you do not plan to change the software, you can use the supplied binary files instead- 1. Connect a WS2812B RGB led strip to GPIO2. Optionally connect a NO-pushbutton to GPIO0 (internal pull-up) and ground.
Just flash a basic HTTP OTA updater sketch and upload the bin!
1. Make sure your ESP module has a min. 4MB SPI flash module. (SHOULD now support 1MB modules, untested)
Connect a WS2812B RGB led strip to GPIO2. Optionally connect a NO-pushbutton to GPIO0 (internal pull-up) and ground.
2. Follow a guide to setup your Arduino client (I am using version 1.8.1) with the ESP8266 libraries. 2. Follow a guide to setup your Arduino client (I am using version 1.8.1) with the ESP8266 libraries.
For current compiles I use version 2.3.0. For current compiles I use version 2.3.0.
3. In file "wled00.ino", you should change the access point and OTA update passphrases for added security (you can change them later, this is just the "factory default"). Flash the sketch. 3. In file "wled00.ino", you should change the access point and OTA update passphrases for added security (you can change them later, this is just the "factory default"). Flash the sketch.
You will need to install the NeoPixelBus library by Makuna. All other dependencies are included with WLED for convenience.
5. Connect to automatically started WiFi access point "WLED-AP" using default passwort "wled1234". Go to the IP "192.168.4.1". 5. Connect to automatically started WiFi access point "WLED-AP" using default passwort "wled1234". Go to the IP "192.168.4.1".
@ -46,35 +48,39 @@ For current compiles I use version 2.3.0.
7. Have fun with the software! 7. Have fun with the software!
### Advanced module control via HTTP requests API:
Advanced module control via HTTP requests:
Base URL scheme: "<moduleip>/win". This will return a XML file with some current values. Base URL scheme: "<moduleip>/win". This will return a XML file with some current values.
Add one or multiple of the following parameters after the base url to change values: Add one or multiple of the following parameters after the base url to change values:
"&A=<0-255>" set LED brightness (yellow slider) - "&A=<0-255>" set LED brightness (yellow slider)
"&R=<0-255>" set LED red value (red slider) - "&R=<0-255>" set LED red value (red slider)
"&G=<0-255>" set LED green value (green slider) - "&G=<0-255>" set LED green value (green slider)
"&B=<0-255>" set LED blue value (blue slider) - "&B=<0-255>" set LED blue value (blue slider)
"&W=<0-255>" set LED white value (white slider) (only when RGBW enabled) - "&W=<0-255>" set LED white value (white slider) (only when RGBW enabled)
"&T=<0 or 1 or 2-255>" 0: switch off, on, toggle - "&T=<0 or 1 or 2-255>" 0: switch off, on, toggle
"&FX=<0-47>" set LED effect (refer to WS2812FX library) - "&FX=<0-47>" set LED effect (refer to WS2812FX library)
"&SX=<0-255>" set LED effect speed (refer to WS2812FX library) - "&SX=<0-255>" set LED effect speed (refer to WS2812FX library)
"&RN=<0 or 1>" receive notifications on or off - "&RN=<0 or 1>" receive notifications on or off
"&SN=<0 or 1>" send (direct) notifications on or off - "&SN=<0 or 1>" send (direct) notifications on or off
"&NL=<0 or 1>" turns nightlight function on or off - "&NL=<0 or 1>" turns nightlight function on or off
"&MD=<0 or 1>" sets client color picker mode (RGB/HSB) - "&MD=<0 or 1>" sets client color picker mode (RGB/HSB)
("&OL=<0, 1, 3 or 5>" experimental clock overlays)
("&I=<0-255>" experimental individual LED control)
("&I=<0-255>&I2=<0-255>" experimental individual LED range control)
(this list is incomplete, will be available in wiki)
### Other
Licensed under the MIT license Licensed under the MIT license
Uses libraries: Uses libraries:
ESP8266 Arduino Core ESP8266 Arduino Core
WS2812FX by kitesurfer1404 (Aircoookie fork) NeoPixelBus by Makuna
[WS2812FX](https://github.com/kitesurfer1404/WS2812FX) by kitesurfer1404 (Aircoookie fork)
Time library
Timezone library by JChristensen Timezone library by JChristensen
arduino-esp8266-alexa-multiple-wemo-switch by kakopappa arduino-esp8266-alexa-multiple-wemo-switch by kakopappa
Uses Linearicons by Perxis! (link in settings page)
#### This information will be moved to the wiki soon:
Software update procedure: Software update procedure:
@ -84,7 +90,6 @@ Method 2: The software has an integrated OTA software update capability.
First you have to enable it by typing in the correct OTA passphrase (default: "wledota") in the settings menu. First you have to enable it by typing in the correct OTA passphrase (default: "wledota") in the settings menu.
Remove the tick in the checkbox "OTA locked". Then save settings and reboot the ESP. Remove the tick in the checkbox "OTA locked". Then save settings and reboot the ESP.
Now you can go to "<moduleip>/update" to update binary firmware. Now you can go to "<moduleip>/update" to update binary firmware.
To edit flash content (images and HTML), go to "<moduleip>/edit". (only if USEFS was uncommented in source)
After you are done, it is recommended to lock the OTA function again. After you are done, it is recommended to lock the OTA function again.
To do so, tick the checkbox again (you can change the passphrase by typing in a new one now). Reboot. To do so, tick the checkbox again (you can change the passphrase by typing in a new one now). Reboot.
If you try to access the update page now, you should see the message "OTA lock active". If you try to access the update page now, you should see the message "OTA lock active".
@ -104,9 +109,6 @@ You can adjust the position of the amplitude with the WARLS offset setting.
Note that there is currently an issue preventing you from accessing the control web page while the script is running. HTTP requests work. Note that there is currently an issue preventing you from accessing the control web page while the script is running. HTTP requests work.
Uses [WS2812FX](https://github.com/kitesurfer1404/WS2812FX)!

View File

@ -1,4 +1,4 @@
//#define RGBW #define RGBW
/* /*
WS2812FX.h - Library for WS2812 LED effects. WS2812FX.h - Library for WS2812 LED effects.

View File

@ -62,7 +62,8 @@
Use HSB sliders instead of RGB by default: <input type="checkbox" name="COLMD"> <br> Use HSB sliders instead of RGB by default: <input type="checkbox" name="COLMD"> <br>
<h3>LED setup</h3> <h3>LED setup</h3>
LED count (max. 255): <input name="LEDCN" type="number" min="0" max="255" required> <br> LED count (max. 255): <input name="LEDCN" type="number" min="0" max="255" required> <br>
<i>The default boot color is saved in preset slot 0.</i><br> <i>The default boot color is always saved in preset slot 0.</i><br>
Alternatively, apply preset <input name="BOOTP" type="number" min="0" max="25" required> at boot<br>
Default RGB color: Default RGB color:
<input name="CLDFR" type="number" min="0" max="255" required> <input name="CLDFR" type="number" min="0" max="255" required>
<input name="CLDFG" type="number" min="0" max="255" required> <input name="CLDFG" type="number" min="0" max="255" required>

File diff suppressed because one or more lines are too long

View File

@ -62,6 +62,7 @@ Use HSB sliders instead of RGB by default: <input type="checkbox" name="COLMD">
<h3>LED setup</h3> <h3>LED setup</h3>
LED count (max. 255): <input name="LEDCN" type="number" min="0" max="255" required> <br> LED count (max. 255): <input name="LEDCN" type="number" min="0" max="255" required> <br>
<i>The default boot color is saved in preset slot 0.</i><br> <i>The default boot color is saved in preset slot 0.</i><br>
Alternatively, apply preset <input name="BOOTP" type="number" min="0" max="25" required> at boot<br>
Default RGB color: Default RGB color:
<input name="CLDFR" type="number" min="0" max="255" required> <input name="CLDFR" type="number" min="0" max="255" required>
<input name="CLDFG" type="number" min="0" max="255" required> <input name="CLDFG" type="number" min="0" max="255" required>

View File

@ -1,34 +0,0 @@
#######################################
# Syntax Coloring Map For Time
#######################################
#######################################
# Datatypes (KEYWORD1)
#######################################
time_t KEYWORD1
#######################################
# Methods and Functions (KEYWORD2)
#######################################
now KEYWORD2
second KEYWORD2
minute KEYWORD2
hour KEYWORD2
day KEYWORD2
month KEYWORD2
year KEYWORD2
isAM KEYWORD2
isPM KEYWORD2
weekday KEYWORD2
setTime KEYWORD2
adjustTime KEYWORD2
setSyncProvider KEYWORD2
setSyncInterval KEYWORD2
timeStatus KEYWORD2
TimeLib KEYWORD2
#######################################
# Instances (KEYWORD2)
#######################################
#######################################
# Constants (LITERAL1)
#######################################

View File

@ -1,8 +0,0 @@
TimeChangeRule KEYWORD1
Timezone KEYWORD1
toLocal KEYWORD2
toUTC KEYWORD2
utcIsDST KEYWORD2
locIsDST KEYWORD2
readRules KEYWORD2
writeRules KEYWORD2

View File

@ -20,7 +20,7 @@
#include "WS2812FX.h" #include "WS2812FX.h"
//version in format yymmddb (b = daily build) //version in format yymmddb (b = daily build)
#define VERSION 1712111 #define VERSION 1712121
//If you have an RGBW strip, uncomment first line in WS2812FX.h! //If you have an RGBW strip, uncomment first line in WS2812FX.h!
@ -48,19 +48,20 @@
#endif #endif
//eeprom Version code, enables default settings instead of 0 init on update //eeprom Version code, enables default settings instead of 0 init on update
#define EEPVER 2 #define EEPVER 3
//0 -> old version, default //0 -> old version, default
//1 -> 0.4p 1711272 and up //1 -> 0.4p 1711272 and up
//2 -> 0.4p 1711302 and up //2 -> 0.4p 1711302 and up
//3 -> 0.4 1712121 and up
/* /*
* @title WLED project sketch * @title WLED project sketch
* @version 0.4p * @version 0.4
* @author Christian Schwinne * @author Christian Schwinne
*/ */
//Hardware-settings (only changeble via code) //Hardware-settings (only changeble via code)
#define LEDCOUNT 93 //maximum, exact count set-able via settings #define LEDCOUNT 255 //maximum, exact count set-able via settings
#define MAXDIRECT 93 //for direct access like arls, should be >= LEDCOUNT #define MAXDIRECT 255 //for direct access like arls, should be >= LEDCOUNT
uint8_t buttonPin = 0; //needs pull-up uint8_t buttonPin = 0; //needs pull-up
uint8_t auxPin = 15; //use e.g. for external relay uint8_t auxPin = 15; //use e.g. for external relay
uint8_t auxDefaultState = 0; //0: input 1: high 2: low uint8_t auxDefaultState = 0; //0: input 1: high 2: low
@ -78,7 +79,7 @@ time_t local;
//Default CONFIG //Default CONFIG
uint8_t ledcount = 93; uint8_t ledcount = 93;
String serverDescription = "WLED 0.4p"; String serverDescription = "WLED 0.4";
String clientssid = "Your_Network_Here"; String clientssid = "Your_Network_Here";
String clientpass = "Dummy_Pass"; String clientpass = "Dummy_Pass";
String cmdns = "led"; String cmdns = "led";
@ -92,9 +93,10 @@ IPAddress staticgateway(0, 0, 0, 0);
IPAddress staticsubnet(255, 255, 255, 0); IPAddress staticsubnet(255, 255, 255, 0);
boolean useHSB = false, useHSBDefault = false; boolean useHSB = false, useHSBDefault = false;
boolean turnOnAtBoot = true; boolean turnOnAtBoot = true;
uint8_t bootPreset = 0;
byte col_s[]{255, 159, 0}; byte col_s[]{255, 159, 0};
byte col_sec_s[]{0, 0, 0}; byte col_sec_s[]{0, 0, 0};
boolean useRGBW = false; boolean useRGBW = true;
byte white_s = 0; byte white_s = 0;
byte white_sec_s = 0; byte white_sec_s = 0;
byte bri_s = 127; byte bri_s = 127;
@ -116,7 +118,7 @@ uint8_t effectSpeedDefault = 75;
//NTP stuff //NTP stuff
boolean ntpEnabled = false; boolean ntpEnabled = false;
IPAddress ntpServerIP; IPAddress ntpServerIP;
const char* ntpServerName = "time.nist.gov"; const char* ntpServerName = "pool.ntp.org";
//custom chase //custom chase
uint8_t cc_numPrimary = 2; uint8_t cc_numPrimary = 2;
uint8_t cc_numSecondary = 4; uint8_t cc_numSecondary = 4;

View File

@ -120,6 +120,7 @@ void saveSettingsToEEPROM()
EEPROM.write(386, cc_fromStart); EEPROM.write(386, cc_fromStart);
EEPROM.write(387, cc_fromEnd); EEPROM.write(387, cc_fromEnd);
EEPROM.write(388, cc_step); EEPROM.write(388, cc_step);
EEPROM.write(389, bootPreset);
EEPROM.commit(); EEPROM.commit();
} }
@ -256,7 +257,7 @@ void loadSettingsFromEEPROM(bool first)
cc_step = EEPROM.read(388); cc_step = EEPROM.read(388);
strip.setCustomChase(cc_index1, cc_index2, cc_start, cc_numPrimary, cc_numSecondary, cc_step, cc_fromStart, cc_fromEnd); strip.setCustomChase(cc_index1, cc_index2, cc_start, cc_numPrimary, cc_numSecondary, cc_step, cc_fromStart, cc_fromEnd);
} }
bootPreset = EEPROM.read(389);
//favorite setting memory (25 slots/ each 20byte) //favorite setting memory (25 slots/ each 20byte)
//400 - 899 reserved //400 - 899 reserved

View File

@ -104,6 +104,7 @@ String getSettings()
resp += ds + "CLDFW" + v + "-1;"; resp += ds + "CLDFW" + v + "-1;";
} }
resp += ds + "BOOTN" + c + turnOnAtBoot +";"; resp += ds + "BOOTN" + c + turnOnAtBoot +";";
resp += ds + "BOOTP" + v + bootPreset +";";
resp += ds + "FXDEF" + v + effectDefault +";"; resp += ds + "FXDEF" + v + effectDefault +";";
resp += ds + "SXDEF" + v + effectSpeedDefault +";"; resp += ds + "SXDEF" + v + effectSpeedDefault +";";
resp += ds + "GCBRI" + c + useGammaCorrectionBri +";"; resp += ds + "GCBRI" + c + useGammaCorrectionBri +";";
@ -161,7 +162,7 @@ String getSettings()
resp += "Not active"; resp += "Not active";
} }
resp += "\";"; resp += "\";";
resp += dg + "(\"msg\")[0]" + ih + "\"WLED 0.4p (build " + VERSION + ") OK\";"; resp += dg + "(\"msg\")[0]" + ih + "\"WLED 0.4 (build " + VERSION + ") OK\";";
return resp; return resp;
} }

View File

@ -164,6 +164,11 @@ void handleSettingsSet()
if (i >= 0 && i <= 255) bri_s = i; if (i >= 0 && i <= 255) bri_s = i;
} }
turnOnAtBoot = server.hasArg("BOOTN"); turnOnAtBoot = server.hasArg("BOOTN");
if (server.hasArg("BOOTP"))
{
int i = server.arg("BOOTP").toInt();
if (i >= 0 && i <= 25) bootPreset = i;
}
if (server.hasArg("FXDEF")) if (server.hasArg("FXDEF"))
{ {
int i = server.arg("FXDEF").toInt(); int i = server.arg("FXDEF").toInt();

View File

@ -161,6 +161,7 @@ void wledInit()
strip.setSpeed(effectSpeed); strip.setSpeed(effectSpeed);
strip.setBrightness(255); strip.setBrightness(255);
strip.start(); strip.start();
if (bootPreset>0) applyPreset(bootPreset, turnOnAtBoot, true, true);
colorUpdated(0); colorUpdated(0);
pinMode(buttonPin, INPUT_PULLUP); pinMode(buttonPin, INPUT_PULLUP);
} }