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:
parent
60530a2931
commit
973b8f62c8
Binary file not shown.
BIN
bin/wled04_1712121_RGBW.bin
Normal file
BIN
bin/wled04_1712121_RGBW.bin
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
76
readme.md
76
readme.md
@ -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-
|
- If you do not plan to change the software, you can use the supplied binary files instead-
|
||||||
Just flash a basic HTTP OTA updater sketch and upload the bin!
|
Just flash a [basic HTTP OTA updater](https://github.com/Aircoookie/ESP8266MinimalHTTPUpdater) sketch and upload the bin!
|
||||||
|
|
||||||
|
1. Connect a WS2812B RGB led strip to GPIO2. Optionally connect a NO-pushbutton to GPIO0 (internal pull-up) and ground.
|
||||||
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)!
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
//#define RGBW
|
#define RGBW
|
||||||
|
|
||||||
/*
|
/*
|
||||||
WS2812FX.h - Library for WS2812 LED effects.
|
WS2812FX.h - Library for WS2812 LED effects.
|
||||||
|
@ -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
@ -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>
|
||||||
|
@ -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)
|
|
||||||
#######################################
|
|
@ -1,8 +0,0 @@
|
|||||||
TimeChangeRule KEYWORD1
|
|
||||||
Timezone KEYWORD1
|
|
||||||
toLocal KEYWORD2
|
|
||||||
toUTC KEYWORD2
|
|
||||||
utcIsDST KEYWORD2
|
|
||||||
locIsDST KEYWORD2
|
|
||||||
readRules KEYWORD2
|
|
||||||
writeRules KEYWORD2
|
|
@ -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;
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user