Refactored settings names to save bandwidth and heap

Fixed update page back button
This commit is contained in:
cschwinne 2018-03-14 19:05:51 +01:00
parent c93b185f54
commit 8d7a066680
12 changed files with 386 additions and 393 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -40,33 +40,33 @@ const char PAGE_settings_wifi1[] PROGMEM = R"=====(
<button type="button" onclick="B()">Back</button><button type="submit">Save & Reboot</button><hr>
<h2>WiFi setup</h2>
<h3>Connect to existing network</h3>
Network name (SSID, empty to not connect): <br><input name="CSSID" maxlength="32"> <br>
Network password: <br> <input type="password" name="CPASS" maxlength="63"> <br>
Static IP (leave at 0.0.0.0 for DHCP): <br>
<input name="CSIP0" type="number" min="0" max="255" required> .
<input name="CSIP1" type="number" min="0" max="255" required> .
<input name="CSIP2" type="number" min="0" max="255" required> .
<input name="CSIP3" type="number" min="0" max="255" required> <br>
Static gateway: <br>
<input name="CSGW0" type="number" min="0" max="255" required> .
<input name="CSGW1" type="number" min="0" max="255" required> .
<input name="CSGW2" type="number" min="0" max="255" required> .
<input name="CSGW3" type="number" min="0" max="255" required> <br>
Static subnet mask: <br>
<input name="CSSN0" type="number" min="0" max="255" required> .
<input name="CSSN1" type="number" min="0" max="255" required> .
<input name="CSSN2" type="number" min="0" max="255" required> .
<input name="CSSN3" type="number" min="0" max="255" required> <br>
mDNS address (leave empty for no mDNS): <br/>
http:// <input name="CMDNS" maxlength="32"> .local <br>
Try connecting before opening AP for: <input name="APWTM" type="number" min="0" max="255" required> s <br>
Client IP: <span class="sip"> Not connected </span> <br>
Network name (SSID, empty to not connect): <br><input name="CS" maxlength="32"><br>
Network password: <br> <input type="password" name="CP" maxlength="63"><br>
Static IP (leave at 0.0.0.0 for DHCP):<br>
<input name="I0" type="number" min="0" max="255" required> .
<input name="I1" type="number" min="0" max="255" required> .
<input name="I2" type="number" min="0" max="255" required> .
<input name="I3" type="number" min="0" max="255" required><br>
Static gateway:<br>
<input name="G0" type="number" min="0" max="255" required> .
<input name="G1" type="number" min="0" max="255" required> .
<input name="G2" type="number" min="0" max="255" required> .
<input name="G3" type="number" min="0" max="255" required><br>
Static subnet mask:<br>
<input name="S0" type="number" min="0" max="255" required> .
<input name="S1" type="number" min="0" max="255" required> .
<input name="S2" type="number" min="0" max="255" required> .
<input name="S3" type="number" min="0" max="255" required><br>
mDNS address (leave empty for no mDNS):<br/>
http:// <input name="CM" maxlength="32"> .local<br>
Try connecting before opening AP for: <input name="AT" type="number" min="0" max="255" required> s <br>
Client IP: <span class="sip"> Not connected </span><br>
<h3>Configure Access Point</h3>
AP SSID (leave empty for no AP): <br> <input name="APSSID" maxlength="32"> <br>
Hide AP name: <input type="checkbox" name="APHSSID"> <br>
AP password (leave empty for open): <br> <input type="password" name="APPASS" maxlength="63"> <br>
Access Point WiFi channel: <input name="APCHAN" type="number" min="1" max="13" required> <br>
AP IP: <span class="sip"> Not active </span> <hr>
AP SSID (leave empty for no AP):<br> <input name="AS" maxlength="32"><br>
Hide AP name: <input type="checkbox" name="AH"><br>
AP password (leave empty for open):<br> <input type="password" name="AP" maxlength="63"> <br>
Access Point WiFi channel: <input name="AC" type="number" min="1" max="13" required><br>
AP IP: <span class="sip"> Not active </span><hr>
<button type="button" onclick="B()">Back</button><button type="submit">Save & Reboot</button>
</form>
</body>
@ -85,44 +85,43 @@ const char PAGE_settings_leds1[] PROGMEM = R"=====(
<div class="helpB"><button type="button" onclick="H()">?</button></div>
<button type="button" onclick="B()">Back</button><button type="submit">Save</button><hr>
<h2>LED setup</h2>
LED count (max. 255): <input name="LEDCN" type="number" min="1" max="255" required> <br>
LED count (max. 255): <input name="LC" type="number" min="1" max="255" required><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>
Alternatively, apply preset <input name="BP" type="number" min="0" max="25" required> at boot<br>
Default RGB color:
<input name="CLDFR" type="number" min="0" max="255" required>
<input name="CLDFG" type="number" min="0" max="255" required>
<input name="CLDFB" type="number" min="0" max="255" required> <br>
Default brightness: <input name="CLDFA" type="number" min="0" max="255" required> (0-255) <br>
Default white value (only RGBW, -1 to disable): <input name="CLDFW" type="number" min="-1" max="255" required> <br>
Default effect ID: <input name="FXDEF" type="number" min="0" max="57" required> <br>
Default effect speed: <input name="SXDEF" type="number" min="0" max="255" required> <br>
Default effect intensity: <input name="IXDEF" type="number" min="0" max="255" required> <br>
<input name="CR" type="number" min="0" max="255" required>
<input name="CG" type="number" min="0" max="255" required>
<input name="CB" type="number" min="0" max="255" required><br>
Default brightness: <input name="CA" type="number" min="0" max="255" required> (0-255)<br>
Default white value (only RGBW, -1 to disable): <input name="CW" type="number" min="-1" max="255" required><br>
Default effect ID: <input name="FX" type="number" min="0" max="57" required> <br>
Default effect speed: <input name="SX" type="number" min="0" max="255" required> <br>
Default effect intensity: <input name="IX" type="number" min="0" max="255" required> <br>
Default secondary RGB(W):<br>
<input name="CSECR" type="number" min="0" max="255" required>
<input name="CSECG" type="number" min="0" max="255" required>
<input name="CSECB" type="number" min="0" max="255" required>
<input name="CSECW" type="number" min="0" max="255" required><br>
Ignore and use current color, brightness and effects: <input type="checkbox" name="CBEOR"> <br>
Turn on after power up/reset: <input type="checkbox" name="BOOTN"> <br>
Use Gamma correction for brightness: <input type="checkbox" name="GCBRI"> <br>
Use Gamma correction for color: <input type="checkbox" name="GCRGB"> <br>
Brightness factor: <input name="NRBRI" type="number" min="0" max="255" required> %
<input name="SR" type="number" min="0" max="255" required>
<input name="SG" type="number" min="0" max="255" required>
<input name="SB" type="number" min="0" max="255" required>
<input name="SW" type="number" min="0" max="255" required><br>
Ignore and use current color, brightness and effects: <input type="checkbox" name="IS"><br>
Turn on after power up/reset: <input type="checkbox" name="BO"><br>
Use Gamma correction for brightness: <input type="checkbox" name="GB"><br>
Use Gamma correction for color: <input type="checkbox" name="GC"><br>
Brightness factor: <input name="BF" type="number" min="0" max="255" required> %
<h3>Transitions</h3>
Fade: <input type="checkbox" name="TFADE"><br>
Sweep: <input type="checkbox" name="TSWEE"> Invert direction: <input type="checkbox" name="TSDIR"><br>
Transition Delay: <input name="TDLAY" maxlength="5" size="2"> ms
Fade: <input type="checkbox" name="TF"><br>
Sweep: <input type="checkbox" name="TS"> Invert direction: <input type="checkbox" name="TI"><br>
Transition Delay: <input name="TD" maxlength="5" size="2"> ms
<h3>Timed light</h3>
Default Duration: <input name="TLDUR" type="number" min="1" max="255" required> min<br>
Default Target brightness: <input name="TLBRI" type="number" min="0" max="255" required><br>
Fade down: <input type="checkbox" name="TLFDE"><br>
Default Duration: <input name="TL" type="number" min="1" max="255" required> min<br>
Default Target brightness: <input name="TB" type="number" min="0" max="255" required><br>
Fade down: <input type="checkbox" name="TW"><br>
<h3>Advanced</h3>
Reverse LED order (rotate 180): <input type="checkbox" name="LEDRV"><br>
WARLS offset: <input name="WOFFS" type="number" min="-255" max="255" required><hr>
Reverse LED order (rotate 180): <input type="checkbox" name="RV"><br>
WARLS offset: <input name="WO" type="number" min="-255" max="255" required><hr>
<button type="button" onclick="B()">Back</button><button type="submit">Save</button>
</form>
</body>
</html>
)=====";
const char PAGE_settings_ui0[] PROGMEM = R"=====(
@ -139,10 +138,10 @@ const char PAGE_settings_ui1[] PROGMEM = R"=====(
<div class="helpB"><button type="button" onclick="H()">?</button></div>
<button type="button" onclick="B()">Back</button><button type="submit">Save</button><hr>
<h2>Web Setup</h2>
Server description: <input name="DESC" maxlength="32"><br>
Use HSB sliders instead of RGB by default: <input type="checkbox" name="COLMD"><br>
Server description: <input name="DS" maxlength="32"><br>
Use HSB sliders instead of RGB by default: <input type="checkbox" name="MD"><br>
Color Theme:
<select name="THEME" onchange="Ct()">
<select name="TH" onchange="Ct()">
<option value="0" selected>Night</option>
<option value="1">Modern</option>
<option value="2">Bright</option>
@ -162,13 +161,13 @@ Color Theme:
</select><br>
<div id="cth">
Please specify your custom hex colors (e.g. FF0000 for red)<br>
Custom accent color: <input maxlength=9 name="CCOL0"><br>
Custom background: <input maxlength=9 name="CCOL1"><br>
Custom panel color: <input maxlength=9 name="CCOL2"><br>
Custom icon color: <input maxlength=9 name="CCOL3"><br>
Custom shadow: <input maxlength=9 name="CCOL4"><br>
Custom text color: <input maxlength=9 name="CCOL5"><br></div>
Use font: <input maxlength=32 name="CFONT"><br>
Custom accent color: <input maxlength=9 name="C0"><br>
Custom background: <input maxlength=9 name="C1"><br>
Custom panel color: <input maxlength=9 name="C2"><br>
Custom icon color: <input maxlength=9 name="C3"><br>
Custom shadow: <input maxlength=9 name="C4"><br>
Custom text color: <input maxlength=9 name="C5"><br></div>
Use font: <input maxlength=32 name="CF"><br>
Make sure the font you use is installed on your system!<br>
<hr><button type="button" onclick="B()">Back</button><button type="submit">Save</button>
</form>
@ -189,34 +188,30 @@ const char PAGE_settings_sync1[] PROGMEM = R"=====(
<button type="button" onclick="B()">Back</button><button type="submit">Save</button><hr>
<h2>Sync setup</h2>
<h3>Button setup</h3>
On/Off button enabled: <input type="checkbox" name="BTNON">
On/Off button enabled: <input type="checkbox" name="BT">
<h3>WLED Broadcast</h3>
UDP Port: <input name="NUDPP" maxlength="5" size="4"><br>
Receive <input type="checkbox" name="NRCBR">Brightness, <input type="checkbox" name="NRCCL">Color, and <input type="checkbox" name="NRCFX">Effects<br>
Send notifications on direct change: <input type="checkbox" name="NSDIR"><br>
Send notifications on button press: <input type="checkbox" name="NSBTN"><br>
Send Alexa notifications: <input type="checkbox" name="NSALX"><br>
Send Philips Hue change notifications: <input type="checkbox" name="NSHUE">
Send notifications twice: <input type="checkbox" name="NS2XS">
UDP Port: <input name="UP" maxlength="5" size="4"><br>
Receive <input type="checkbox" name="RB">Brightness, <input type="checkbox" name="RC">Color, and <input type="checkbox" name="RX">Effects<br>
Send notifications on direct change: <input type="checkbox" name="SD"><br>
Send notifications on button press: <input type="checkbox" name="SB"><br>
Send Alexa notifications: <input type="checkbox" name="SA"><br>
Send Philips Hue change notifications: <input type="checkbox" name="SH"><br>
Send notifications twice: <input type="checkbox" name="S2">
<h3>Alexa Voice Assistant</h3>
Emulate Alexa device: <input type="checkbox" name="ALEXA"><br>
Alexa invocation name: <input name="AINVN" maxlength="32"><br>
Emulate Alexa device: <input type="checkbox" name="AL"><br>
Alexa invocation name: <input name="AI" maxlength="32"><br>
<h3>Philips Hue</h3>
<i>You can find the bridge IP and the light number in the 'About' section of the hue app.</i><br>
Hue Bridge IP:<br>
<input name="HUIP0" type="number" min="0" max="255" required> .
<input name="HUIP1" type="number" min="0" max="255" required> .
<input name="HUIP2" type="number" min="0" max="255" required> .
<input name="HUIP3" type="number" min="0" max="255" required> <br>
<input name="H0" type="number" min="0" max="255" required> .
<input name="H1" type="number" min="0" max="255" required> .
<input name="H2" type="number" min="0" max="255" required> .
<input name="H3" type="number" min="0" max="255" required><br>
<b>Press the pushlink button on the bridge, after that save this page!</b><br>
(when first connecting)<br>
<!--Update Hue group <input name="HUEGR" type="number" min="0" max="99" required> <br>
Send <input type="checkbox" name="HUEIO"> On/Off, <input type="checkbox" name="HUEBR"> Brightness, and <input type="checkbox" name="HUECL"> Color<br>-->
Poll Hue light <input name="HUELI" type="number" min="1" max="99" required> every <input name="HUEPI" type="number" min="100" max="65000" required> ms: <input type="checkbox" name="HUEPL"><br>
Then, receive <input type="checkbox" name="HURIO"> On/Off, <input type="checkbox" name="HURBR"> Brightness, and <input type="checkbox" name="HURCL"> Color<br>
<!--After device color update, ignore Hue updates for <input name="HUELI" type="number" min="0" max="255" required> minutes<br>-->
Hue status: <span class="hms"> Internal ESP Error! </span>
<hr>
Poll Hue light <input name="HL" type="number" min="1" max="99" required> every <input name="HI" type="number" min="100" max="65000" required> ms: <input type="checkbox" name="HP"><br>
Then, receive <input type="checkbox" name="HO"> On/Off, <input type="checkbox" name="HB"> Brightness, and <input type="checkbox" name="HC"> Color<br>
Hue status: <span class="hms"> Internal ESP Error! </span><hr>
<button type="button" onclick="B()">Back</button><button type="submit">Save</button>
</form>
</body>
@ -235,10 +230,10 @@ const char PAGE_settings_time1[] PROGMEM = R"=====(
<div class="helpB"><button type="button" onclick="H()">?</button></div>
<button type="button" onclick="B()">Back</button><button type="submit">Save</button><hr>
<h2>Time setup</h2>
Get time from NTP server: <input type="checkbox" name="NTPON"><br>
Use 24h format: <input type="checkbox" name="CL24H"><br>
Get time from NTP server: <input type="checkbox" name="NT"><br>
Use 24h format: <input type="checkbox" name="CF"><br>
Time zone:
<select name="TZONE">
<select name="TZ">
<option value="0" selected>GMT(UTC)</option>
<option value="1">GMT/BST</option>
<option value="2">CET/CEST</option>
@ -253,11 +248,11 @@ Time zone:
<option value="11">AEST/AEDT</option>
<option value="12">NZST/NZDT</option>
</select><br>
UTC offset: <input name="UTCOS" type="number" min="-65500" max="65500" required> seconds (max. 18 hours)<br>
UTC offset: <input name="UO" type="number" min="-65500" max="65500" required> seconds (max. 18 hours)<br>
Current local time is <span class="times">unknown</span>.
<h3>Clock</h3>
Clock Overlay:
<select name="OLMDE" onchange="Cs()">
<select name="OL" onchange="Cs()">
<option value="0" id="cn" selected>None</option>
<option value="1">Static color</option>
<option value="2" id="ca">Analog Clock</option>
@ -265,46 +260,44 @@ Clock Overlay:
<option value="4" id="cc">Cronixie Clock</option>
</select><br>
<div id="coc">
First LED: <input name="OLIN1" type="number" min="0" max="255" required> Last LED: <input name="OLIN2" type="number" min="0" max="255" required><br>
First LED: <input name="O1" type="number" min="0" max="255" required> Last LED: <input name="O2" type="number" min="0" max="255" required><br>
<div id="cac">
12h LED: <input name="OLINM" type="number" min="0" max="255" required><br>
Show 5min marks: <input type="checkbox" name="OL5MI"><br></div>
Seconds (as trail): <input type="checkbox" name="OLSTR"><br>
12h LED: <input name="OM" type="number" min="0" max="255" required><br>
Show 5min marks: <input type="checkbox" name="O5"><br></div>
Seconds (as trail): <input type="checkbox" name="OS"><br>
</div>
<div id="ccc">
Cronixie Display: <input name="CRONX" maxlength="6"><br>
Cronixie Backlight: <input type="checkbox" name="CROBL"><br>
Cronixie Display: <input name="CX" maxlength="6"><br>
Cronixie Backlight: <input type="checkbox" name="CB"><br>
</div>
Countdown Mode: <input type="checkbox" name="CLCND"><br>
Countdown Goal: Year: 20 <input name="CDGYR" type="number" min="0" max="99" required> Month: <input name="CDGMN" type="number" min="1" max="12" required> Day: <input name="CDGDY" type="number" min="1" max="31" required><br>
Hour: <input name="CDGHR" type="number" min="0" max="23" required> Minute: <input name="CDGMI" type="number" min="0" max="59" required> Second: <input name="CDGSC" type="number" min="0" max="59" required><br>
Countdown Mode: <input type="checkbox" name="CE"><br>
Countdown Goal: Year: 20 <input name="CY" type="number" min="0" max="99" required> Month: <input name="CI" type="number" min="1" max="12" required> Day: <input name="CD" type="number" min="1" max="31" required><br>
Hour: <input name="CH" type="number" min="0" max="23" required> Minute: <input name="CM" type="number" min="0" max="59" required> Second: <input name="CS" type="number" min="0" max="59" required><br>
<h3>Advanced Macros</h3>
Define API macros here:<br>
1: <input name="MC1" maxlength="64"><br>
2: <input name="MC2" maxlength="64"><br>
3: <input name="MC3" maxlength="64"><br>
4: <input name="MC4" maxlength="64"><br>
5: <input name="MC5" maxlength="64"><br>
6: <input name="MC6" maxlength="64"><br>
7: <input name="MC7" maxlength="64"><br>
8: <input name="MC8" maxlength="64"><br>
9: <input name="MC9" maxlength="64"><br>
10: <input name="MC10" maxlength="64"><br>
11: <input name="MC11" maxlength="64"><br>
12: <input name="MC12" maxlength="64"><br>
13: <input name="MC13" maxlength="64"><br>
14: <input name="MC14" maxlength="64"><br>
15: <input name="MC15" maxlength="64"><br>
16: <input name="MC16" maxlength="64"><br>
<br>
1: <input name="M1" maxlength="64"><br>
2: <input name="M2" maxlength="64"><br>
3: <input name="M3" maxlength="64"><br>
4: <input name="M4" maxlength="64"><br>
5: <input name="M5" maxlength="64"><br>
6: <input name="M6" maxlength="64"><br>
7: <input name="M7" maxlength="64"><br>
8: <input name="M8" maxlength="64"><br>
9: <input name="M9" maxlength="64"><br>
10: <input name="M10" maxlength="64"><br>
11: <input name="M11" maxlength="64"><br>
12: <input name="M12" maxlength="64"><br>
13: <input name="M13" maxlength="64"><br>
14: <input name="M14" maxlength="64"><br>
15: <input name="M15" maxlength="64"><br>
16: <input name="M16" maxlength="64"><br><br>
<i>Use 0 for the default action instead of a macro</i><br>
Time controlled macros coming soon!<br>
Boot Macro: <input name="MCRBT" type="number" min="0" max="16" required><br>
Alexa On/Off Macros: <input name="MCA0I" type="number" min="0" max="16" required> <input name="MCA0O" type="number" min="0" max="16" required><br>
Button Macro: <input name="MCB0D" type="number" min="0" max="16" required> Long Press: <input name="MCB0L" type="number" min="0" max="16" required><br>
Countdown-Over Macro: <input name="MCNTD" type="number" min="0" max="16" required><br>
Timed-Light-Over Macro: <input name="MCNLO" type="number" min="0" max="16" required><br>
<hr>
Boot Macro: <input name="MB" type="number" min="0" max="16" required><br>
Alexa On/Off Macros: <input name="A0" type="number" min="0" max="16" required> <input name="A1" type="number" min="0" max="16" required><br>
Button Macro: <input name="MP" type="number" min="0" max="16" required> Long Press: <input name="ML" type="number" min="0" max="16" required><br>
Countdown-Over Macro: <input name="MC" type="number" min="0" max="16" required><br>
Timed-Light-Over Macro: <input name="MN" type="number" min="0" max="16" required><hr>
<button type="button" onclick="B()">Back</button><button type="submit">Save</button>
</form>
</body>
@ -324,22 +317,22 @@ const char PAGE_settings_sec1[] PROGMEM = R"=====(
<div class="helpB"><button type="button" onclick="H()">?</button></div>
<button type="button" onclick="B()">Back</button><button type="submit">Save & Reboot</button><hr>
<h2>Security & Update setup</h2>
Enable OTA lock: <input type="checkbox" name="NOOTA"><br>
Passphrase: <input type="password" name="OPASS" maxlength="32"><br>
Enable OTA lock: <input type="checkbox" name="NO"><br>
Passphrase: <input type="password" name="OP" maxlength="32"><br>
To enable OTA, for security reasons you need to also enter the correct password!<br>
The password may/should be changed when OTA is enabled.<br>
<b>Disable OTA when not in use, otherwise an attacker could reflash device software!</b><br>
The password should be changed when OTA is enabled.<br>
<b>Disable OTA when not in use, otherwise an attacker can reflash device software!</b><br>
<i>Settings on this page are only changable if OTA lock is disabled!</i><br>
Deny access to WiFi settings if locked: <input type="checkbox" name="OWIFI"><br><br>
Disable recovery AP: <input type="checkbox" name="NORAP"><br>
In case of a connection error there will be no wireless recovery possible!<br>
Deny access to WiFi settings if locked: <input type="checkbox" name="OW"><br><br>
Disable recovery AP: <input type="checkbox" name="NA"><br>
In case of an error there will be no wireless recovery possible!<br>
Completely disables all Access Point functions.<br><br>
Factory reset: <input type="checkbox" name="RESET"><br>
Factory reset: <input type="checkbox" name="RS"><br>
All EEPROM content (settings) will be erased.<br><br>
HTTP traffic is not encrypted. An attacker in the same network could intercept form data!
HTTP traffic is unencrypted. An attacker in the same network can intercept form data!
<h3>Software Update</h3>
<button type="button" onclick="U()">Manual OTA Update</button><br>
Enable ArduinoOTA: <input type="checkbox" name="AROTA"><br>
Enable ArduinoOTA: <input type="checkbox" name="AO"><br>
<h3>About</h3>
<a href="https://github.com/Aircoookie/WLED">WLED</a> version 0.6.0<br>
(c) 2016-2018 Christian Schwinne <br>

View File

@ -15,7 +15,7 @@ const char* ESP8266HTTPUpdateServer::_serverIndex =
R"(<html><head><script>function B(){window.history.back()}</script></head><body><h2>WLED Software Update</h2><br>Get the latest binaries on the <a href="https://github.com/Aircoookie/WLED/tree/master/bin">project GitHub page</a>!<br>
<i>Unsure which binary is correct? Go to the <a href="./build">/build subpage</a> for the details of this version.</i><br>
<b>Be sure to upload a valid .bin file for your ESP! Otherwise you'll need USB recovery!</b><br>
<br><br><button onclick="B()\">Back</button><br><br>
<br><br><button onclick='B()'>Back</button><br><br>
<form method='POST' action='' enctype='multipart/form-data'>
<input type='file' name='update'>
<input type='submit' value='Update!'>

View File

@ -33,7 +33,7 @@
#include "WS2812FX.h"
//version in format yymmddb (b = daily build)
#define VERSION 1803143
#define VERSION 1803144
const String versionString = "0.6.0";
//AP and OTA default passwords (change them!)

View File

@ -7,7 +7,7 @@ void XML_response()
String resp;
resp = resp + "<?xml version = \"1.0\" ?>";
resp = resp + "<vs>";
resp = resp + "<act>";
resp = resp + "<ac>";
if (nightlightActive && nightlightFade)
{
resp = resp + briT;
@ -15,7 +15,7 @@ void XML_response()
{
resp = resp + bri;
}
resp = resp + "</act>";
resp = resp + "</ac>";
for (int i = 0; i < 3; i++)
{
@ -49,9 +49,9 @@ void XML_response()
}
resp = resp + "</wv><md>";
resp = resp + useHSB;
resp = resp + "</md><desc>";
resp = resp + "</md><ds>";
resp = resp + serverDescription;
resp = resp + "</desc>";
resp = resp + "</ds>";
resp = resp + "</vs>";
server.send(200, "text/xml", resp);
}
@ -73,36 +73,36 @@ String getSettings(byte subPage)
String si = ".selectedIndex=";
if (subPage == 1) {
resp += ds + "CSSID" + v + "\"" + clientSSID + "\";";
resp += ds + "CPASS" + v + "\"";
resp += ds + "CS" + v + "\"" + clientSSID + "\";";
resp += ds + "CP" + v + "\"";
for (int i = 0; i < clientPass.length(); i++)
{
resp += "*";
}
resp += "\";";
resp += ds + "CSIP0" + v + staticIP[0] +";";
resp += ds + "CSIP1" + v + staticIP[1] +";";
resp += ds + "CSIP2" + v + staticIP[2] +";";
resp += ds + "CSIP3" + v + staticIP[3] +";";
resp += ds + "CSGW0" + v + staticGateway[0] +";";
resp += ds + "CSGW1" + v + staticGateway[1] +";";
resp += ds + "CSGW2" + v + staticGateway[2] +";";
resp += ds + "CSGW3" + v + staticGateway[3] +";";
resp += ds + "CSSN0" + v + staticSubnet[0] +";";
resp += ds + "CSSN1" + v + staticSubnet[1] +";";
resp += ds + "CSSN2" + v + staticSubnet[2] +";";
resp += ds + "CSSN3" + v + staticSubnet[3] +";";
resp += ds + "CMDNS" + v + "\"" + cmDNS + "\";";
resp += ds + "APWTM" + v + apWaitTimeSecs +";";
resp += ds + "APSSID" + v + "\"" + apSSID + "\";";
resp += ds + "APHSSID" + c + apHide + ";";
resp += ds + "APPASS" + v + "\"";
resp += ds + "I0" + v + staticIP[0] +";";
resp += ds + "I1" + v + staticIP[1] +";";
resp += ds + "I2" + v + staticIP[2] +";";
resp += ds + "I3" + v + staticIP[3] +";";
resp += ds + "G0" + v + staticGateway[0] +";";
resp += ds + "G1" + v + staticGateway[1] +";";
resp += ds + "G2" + v + staticGateway[2] +";";
resp += ds + "G3" + v + staticGateway[3] +";";
resp += ds + "S0" + v + staticSubnet[0] +";";
resp += ds + "S1" + v + staticSubnet[1] +";";
resp += ds + "S2" + v + staticSubnet[2] +";";
resp += ds + "S3" + v + staticSubnet[3] +";";
resp += ds + "CM" + v + "\"" + cmDNS + "\";";
resp += ds + "AT" + v + apWaitTimeSecs +";";
resp += ds + "AS" + v + "\"" + apSSID + "\";";
resp += ds + "AH" + c + apHide + ";";
resp += ds + "AP" + v + "\"";
for (int i = 0; i < apPass.length(); i++)
{
resp += "*";
}
resp += "\";";
resp += ds + "APCHAN" + v + apChannel +";";
resp += ds + "AC" + v + apChannel +";";
resp += dg + "(\"sip\")[0]" + ih + "\"";
if (!WiFi.localIP()[0] == 0)
{
@ -136,117 +136,117 @@ String getSettings(byte subPage)
}
if (subPage == 2) {
resp += ds + "LEDCN" + v + ledCount +";";
resp += ds + "CLDFR" + v + colS[0] +";";
resp += ds + "CLDFG" + v + colS[1] +";";
resp += ds + "CLDFB" + v + colS[2] +";";
resp += ds + "CLDFA" + v + briS +";";
resp += ds + "LC" + v + ledCount +";";
resp += ds + "CR" + v + colS[0] +";";
resp += ds + "CG" + v + colS[1] +";";
resp += ds + "CB" + v + colS[2] +";";
resp += ds + "CA" + v + briS +";";
if (useRGBW) {
resp += ds + "CLDFW" + v + whiteS +";";
resp += ds + "CW" + v + whiteS +";";
} else {
resp += ds + "CLDFW" + v + "-1;";
resp += ds + "CW" + v + "-1;";
}
resp += ds + "CSECR" + v + colSecS[0] +";";
resp += ds + "CSECG" + v + colSecS[1] +";";
resp += ds + "CSECB" + v + colSecS[2] +";";
resp += ds + "CSECW" + v + whiteSecS +";";
resp += ds + "BOOTN" + c + turnOnAtBoot +";";
resp += ds + "BOOTP" + v + bootPreset +";";
resp += ds + "FXDEF" + v + effectDefault +";";
resp += ds + "SXDEF" + v + effectSpeedDefault +";";
resp += ds + "IXDEF" + v + effectIntensityDefault +";";
resp += ds + "GCBRI" + c + useGammaCorrectionBri +";";
resp += ds + "GCRGB" + c + useGammaCorrectionRGB +";";
resp += ds + "TFADE" + c + fadeTransition +";";
resp += ds + "TSWEE" + c + sweepTransition +";";
resp += ds + "TSDIR" + c + !sweepDirection +";";
resp += ds + "TDLAY" + v + transitionDelay +";";
resp += ds + "NRBRI" + v + briMultiplier +";";
resp += ds + "TLBRI" + v + nightlightTargetBri +";";
resp += ds + "TLDUR" + v + nightlightDelayMins +";";
resp += ds + "TLFDE" + c + nightlightFade +";";
resp += ds + "LEDRV" + c + reverseMode +";";
resp += ds + "WOFFS" + v + arlsOffset +";";
resp += ds + "SR" + v + colSecS[0] +";";
resp += ds + "SG" + v + colSecS[1] +";";
resp += ds + "SB" + v + colSecS[2] +";";
resp += ds + "SW" + v + whiteSecS +";";
resp += ds + "BO" + c + turnOnAtBoot +";";
resp += ds + "BP" + v + bootPreset +";";
resp += ds + "FX" + v + effectDefault +";";
resp += ds + "SX" + v + effectSpeedDefault +";";
resp += ds + "IX" + v + effectIntensityDefault +";";
resp += ds + "GB" + c + useGammaCorrectionBri +";";
resp += ds + "GC" + c + useGammaCorrectionRGB +";";
resp += ds + "TF" + c + fadeTransition +";";
resp += ds + "TS" + c + sweepTransition +";";
resp += ds + "TI" + c + !sweepDirection +";";
resp += ds + "TD" + v + transitionDelay +";";
resp += ds + "BF" + v + briMultiplier +";";
resp += ds + "TB" + v + nightlightTargetBri +";";
resp += ds + "TL" + v + nightlightDelayMins +";";
resp += ds + "TW" + c + nightlightFade +";";
resp += ds + "RV" + c + reverseMode +";";
resp += ds + "WO" + v + arlsOffset +";";
}
if (subPage == 3)
{
resp += ds + "DESC" + v + "\"" + serverDescription + "\";";
resp += ds + "COLMD" + c + useHSBDefault + ";";
resp += ds + "THEME" + si + String(currentTheme) + ";";
resp += ds + "DS" + v + "\"" + serverDescription + "\";";
resp += ds + "MD" + c + useHSBDefault + ";";
resp += ds + "TH" + si + String(currentTheme) + ";";
for(int i=0;i<6;i++)
resp += ds + "CCOL" + i + v + "\"" + cssCol[i] + "\";";
resp += ds + "CFONT" + v + "\"" + cssFont + "\";";
resp += ds + "C" + i + v + "\"" + cssCol[i] + "\";";
resp += ds + "CF" + v + "\"" + cssFont + "\";";
}
if (subPage == 4)
{
resp += ds + "BTNON" + c + buttonEnabled +";";
resp += ds + "NUDPP" + v + udpPort +";";
resp += ds + "NRCBR" + c + receiveNotificationBrightness +";";
resp += ds + "NRCCL" + c + receiveNotificationColor +";";
resp += ds + "NRCFX" + c + receiveNotificationEffects +";";
resp += ds + "NSDIR" + c + notifyDirectDefault +";";
resp += ds + "NSBTN" + c + notifyButton +";";
resp += ds + "NSHUE" + c + notifyHue +";";
resp += ds + "NS2XS" + c + notifyTwice +";";
resp += ds + "ALEXA" + c + alexaEnabled +";";
resp += ds + "AINVN" + v + "\"" + alexaInvocationName + "\";";
resp += ds + "NSALX" + c + alexaNotify +";";
resp += ds + "HUIP0" + v + hueIP[0] +";";
resp += ds + "HUIP1" + v + hueIP[1] +";";
resp += ds + "HUIP2" + v + hueIP[2] +";";
resp += ds + "HUIP3" + v + hueIP[3] +";";
resp += ds + "HUELI" + v + huePollLightId +";";
resp += ds + "HUEPI" + v + huePollIntervalMs +";";
resp += ds + "HUEPL" + c + huePollingEnabled +";";
resp += ds + "HURIO" + c + hueApplyOnOff +";";
resp += ds + "HURBR" + c + hueApplyBri +";";
resp += ds + "HURCL" + c + hueApplyColor +";";
resp += ds + "BT" + c + buttonEnabled +";";
resp += ds + "UP" + v + udpPort +";";
resp += ds + "RB" + c + receiveNotificationBrightness +";";
resp += ds + "RC" + c + receiveNotificationColor +";";
resp += ds + "RX" + c + receiveNotificationEffects +";";
resp += ds + "SD" + c + notifyDirectDefault +";";
resp += ds + "SB" + c + notifyButton +";";
resp += ds + "SH" + c + notifyHue +";";
resp += ds + "S2" + c + notifyTwice +";";
resp += ds + "AL" + c + alexaEnabled +";";
resp += ds + "AI" + v + "\"" + alexaInvocationName + "\";";
resp += ds + "SA" + c + alexaNotify +";";
resp += ds + "H0" + v + hueIP[0] +";";
resp += ds + "H1" + v + hueIP[1] +";";
resp += ds + "H2" + v + hueIP[2] +";";
resp += ds + "H3" + v + hueIP[3] +";";
resp += ds + "HL" + v + huePollLightId +";";
resp += ds + "HI" + v + huePollIntervalMs +";";
resp += ds + "HP" + c + huePollingEnabled +";";
resp += ds + "HO" + c + hueApplyOnOff +";";
resp += ds + "HB" + c + hueApplyBri +";";
resp += ds + "HC" + c + hueApplyColor +";";
resp += dg + "(\"hms\")[0]" + ih + "\"" + hueError + "\";";
}
if (subPage == 5)
{
resp += ds + "NTPON" + c + ntpEnabled +";";
resp += ds + "CL24H" + c + !useAMPM +";";
resp += ds + "TZONE" + si + String(currentTimezone) + ";";
resp += ds + "UTCOS" + v + utcOffsetSecs +";";
resp += ds + "NT" + c + ntpEnabled +";";
resp += ds + "CF" + c + !useAMPM +";";
resp += ds + "TZ" + si + String(currentTimezone) + ";";
resp += ds + "UO" + v + utcOffsetSecs +";";
resp += dg + "(\"times\")[0]" + ih + "\"" + getTimeString() + "\";";
resp += ds + "OLMDE" + si + String(overlayCurrent) + ";";
resp += ds + "OLIN1" + v + overlayMin +";";
resp += ds + "OLIN2" + v + overlayMax +";";
resp += ds + "OLINM" + v + analogClock12pixel +";";
resp += ds + "OLSTR" + c + analogClockSecondsTrail +";";
resp += ds + "OL5MI" + c + analogClock5MinuteMarks +";";
resp += ds + "CRONX" + v + "\"" + cronixieDisplay + "\";";
resp += ds + "CROBL" + c + cronixieBacklight +";";
resp += ds + "CLCND" + c + countdownMode +";";
resp += ds + "CDGYR" + v + countdownYear +";";
resp += ds + "CDGMN" + v + countdownMonth +";";
resp += ds + "CDGDY" + v + countdownDay +";";
resp += ds + "CDGHR" + v + countdownHour +";";
resp += ds + "CDGMI" + v + countdownMin +";";
resp += ds + "CDGSC" + v + countdownSec +";";
resp += ds + "OL" + si + String(overlayCurrent) + ";";
resp += ds + "O1" + v + overlayMin +";";
resp += ds + "O2" + v + overlayMax +";";
resp += ds + "OM" + v + analogClock12pixel +";";
resp += ds + "OS" + c + analogClockSecondsTrail +";";
resp += ds + "O5" + c + analogClock5MinuteMarks +";";
resp += ds + "CX" + v + "\"" + cronixieDisplay + "\";";
resp += ds + "CB" + c + cronixieBacklight +";";
resp += ds + "CE" + c + countdownMode +";";
resp += ds + "CY" + v + countdownYear +";";
resp += ds + "CI" + v + countdownMonth +";";
resp += ds + "CD" + v + countdownDay +";";
resp += ds + "CH" + v + countdownHour +";";
resp += ds + "CM" + v + countdownMin +";";
resp += ds + "CS" + v + countdownSec +";";
for (int i=1;i<17;i++)
{
resp += ds + "MC" + String(i) + v + "\"" + loadMacro(i) + "\";";
resp += ds + "M" + String(i) + v + "\"" + loadMacro(i) + "\";";
}
resp += ds + "MCRBT" + v + macroBoot +";";
resp += ds + "MCA0I" + v + macroAlexaOn +";";
resp += ds + "MCA0O" + v + macroAlexaOff +";";
resp += ds + "MCB0D" + v + macroButton +";";
resp += ds + "MCB0L" + v + macroLongPress +";";
resp += ds + "MCNTD" + v + macroCountdown +";";
resp += ds + "MCNLO" + v + macroNl +";";
resp += ds + "MB" + v + macroBoot +";";
resp += ds + "A0" + v + macroAlexaOn +";";
resp += ds + "A1" + v + macroAlexaOff +";";
resp += ds + "MP" + v + macroButton +";";
resp += ds + "ML" + v + macroLongPress +";";
resp += ds + "MC" + v + macroCountdown +";";
resp += ds + "MN" + v + macroNl +";";
}
if (subPage == 6)
{
resp += ds + "NOOTA" + c + otaLock +";";
resp += ds + "OWIFI" + c + wifiLock +";";
resp += ds + "AROTA" + c + aOtaEnabled +";";
resp += ds + "NORAP" + c + recoveryAPDisabled +";";
resp += ds + "NO" + c + otaLock +";";
resp += ds + "OW" + c + wifiLock +";";
resp += ds + "AO" + c + aOtaEnabled +";";
resp += ds + "NA" + c + recoveryAPDisabled +";";
resp += dg + "(\"msg\")[0]" + ih + "\"WLED "+ versionString +" (build " + VERSION + ") OK\";";
}
resp += "}</script>";

View File

@ -27,90 +27,90 @@ void handleSettingsSet(byte subPage)
//WIFI SETTINGS
if (subPage == 1)
{
if (server.hasArg("CSSID")) clientSSID = server.arg("CSSID");
if (server.hasArg("CPASS"))
if (server.hasArg("CS")) clientSSID = server.arg("CS");
if (server.hasArg("CP"))
{
if (!server.arg("CPASS").indexOf('*') == 0)
if (!server.arg("CP").indexOf('*') == 0)
{
DEBUG_PRINTLN("Setting pass");
clientPass = server.arg("CPASS");
clientPass = server.arg("CP");
}
}
if (server.hasArg("CMDNS")) cmDNS = server.arg("CMDNS");
if (server.hasArg("APWTM"))
if (server.hasArg("CM")) cmDNS = server.arg("CM");
if (server.hasArg("AT"))
{
int i = server.arg("APWTM").toInt();
int i = server.arg("AT").toInt();
if (i >= 0 && i <= 255) apWaitTimeSecs = i;
}
if (server.hasArg("APSSID")) apSSID = server.arg("APSSID");
apHide = server.hasArg("APHSSID");
if (server.hasArg("APPASS"))
if (server.hasArg("AS")) apSSID = server.arg("AS");
apHide = server.hasArg("AH");
if (server.hasArg("AP"))
{
if (!server.arg("APPASS").indexOf('*') == 0) apPass = server.arg("APPASS");
if (!server.arg("AP").indexOf('*') == 0) apPass = server.arg("AP");
}
if (server.hasArg("APCHAN"))
if (server.hasArg("AC"))
{
int chan = server.arg("APCHAN").toInt();
int chan = server.arg("AC").toInt();
if (chan > 0 && chan < 14) apChannel = chan;
}
if (server.hasArg("CSIP0"))
if (server.hasArg("I0"))
{
int i = server.arg("CSIP0").toInt();
int i = server.arg("I0").toInt();
if (i >= 0 && i <= 255) staticIP[0] = i;
}
if (server.hasArg("CSIP1"))
if (server.hasArg("I1"))
{
int i = server.arg("CSIP1").toInt();
int i = server.arg("I1").toInt();
if (i >= 0 && i <= 255) staticIP[1] = i;
}
if (server.hasArg("CSIP2"))
if (server.hasArg("I2"))
{
int i = server.arg("CSIP2").toInt();
int i = server.arg("I2").toInt();
if (i >= 0 && i <= 255) staticIP[2] = i;
}
if (server.hasArg("CSIP3"))
if (server.hasArg("I3"))
{
int i = server.arg("CSIP3").toInt();
int i = server.arg("I3").toInt();
if (i >= 0 && i <= 255) staticIP[3] = i;
}
if (server.hasArg("CSGW0"))
if (server.hasArg("G0"))
{
int i = server.arg("CSGW0").toInt();
int i = server.arg("G0").toInt();
if (i >= 0 && i <= 255) staticGateway[0] = i;
}
if (server.hasArg("CSGW1"))
if (server.hasArg("G1"))
{
int i = server.arg("CSGW1").toInt();
int i = server.arg("G1").toInt();
if (i >= 0 && i <= 255) staticGateway[1] = i;
}
if (server.hasArg("CSGW2"))
if (server.hasArg("G2"))
{
int i = server.arg("CSGW2").toInt();
int i = server.arg("G2").toInt();
if (i >= 0 && i <= 255) staticGateway[2] = i;
}
if (server.hasArg("CSGW3"))
if (server.hasArg("G3"))
{
int i = server.arg("CSGW3").toInt();
int i = server.arg("G3").toInt();
if (i >= 0 && i <= 255) staticGateway[3] = i;
}
if (server.hasArg("CSSN0"))
if (server.hasArg("S0"))
{
int i = server.arg("CSSN0").toInt();
int i = server.arg("S0").toInt();
if (i >= 0 && i <= 255) staticSubnet[0] = i;
}
if (server.hasArg("CSSN1"))
if (server.hasArg("S1"))
{
int i = server.arg("CSSN1").toInt();
int i = server.arg("S1").toInt();
if (i >= 0 && i <= 255) staticSubnet[1] = i;
}
if (server.hasArg("CSSN2"))
if (server.hasArg("S2"))
{
int i = server.arg("CSSN2").toInt();
int i = server.arg("S2").toInt();
if (i >= 0 && i <= 255) staticSubnet[2] = i;
}
if (server.hasArg("CSSN3"))
if (server.hasArg("S3"))
{
int i = server.arg("CSSN3").toInt();
int i = server.arg("S3").toInt();
if (i >= 0 && i <= 255) staticSubnet[3] = i;
}
}
@ -118,13 +118,13 @@ void handleSettingsSet(byte subPage)
//LED SETTINGS
if (subPage == 2)
{
if (server.hasArg("LEDCN"))
if (server.hasArg("LC"))
{
int i = server.arg("LEDCN").toInt();
int i = server.arg("LC").toInt();
if (i >= 0 && i <= LEDCOUNT) ledCount = i;
strip.setLedCount(ledCount);
}
if (server.hasArg("CBEOR")) //ignore settings and save current brightness, colors and fx as default
if (server.hasArg("IS")) //ignore settings and save current brightness, colors and fx as default
{
colS[0] = col[0];
colS[1] = col[1];
@ -134,44 +134,44 @@ void handleSettingsSet(byte subPage)
effectDefault = effectCurrent;
effectSpeedDefault = effectSpeed;
} else {
if (server.hasArg("CLDFR"))
if (server.hasArg("CR"))
{
int i = server.arg("CLDFR").toInt();
int i = server.arg("CR").toInt();
if (i >= 0 && i <= 255) colS[0] = i;
}
if (server.hasArg("CLDFG"))
if (server.hasArg("CG"))
{
int i = server.arg("CLDFG").toInt();
int i = server.arg("CG").toInt();
if (i >= 0 && i <= 255) colS[1] = i;
}
if (server.hasArg("CLDFB"))
if (server.hasArg("CB"))
{
int i = server.arg("CLDFB").toInt();
int i = server.arg("CB").toInt();
if (i >= 0 && i <= 255) colS[2] = i;
}
if (server.hasArg("CSECR"))
if (server.hasArg("SR"))
{
int i = server.arg("CSECR").toInt();
int i = server.arg("SR").toInt();
if (i >= 0 && i <= 255) colSecS[0] = i;
}
if (server.hasArg("CSECG"))
if (server.hasArg("SG"))
{
int i = server.arg("CSECG").toInt();
int i = server.arg("SG").toInt();
if (i >= 0 && i <= 255) colSecS[1] = i;
}
if (server.hasArg("CSECB"))
if (server.hasArg("SB"))
{
int i = server.arg("CSECB").toInt();
int i = server.arg("SB").toInt();
if (i >= 0 && i <= 255) colSecS[2] = i;
}
if (server.hasArg("CSECW"))
if (server.hasArg("SW"))
{
int i = server.arg("CSECW").toInt();
int i = server.arg("SW").toInt();
if (i >= 0 && i <= 255) whiteSecS = i;
}
if (server.hasArg("CLDFW"))
if (server.hasArg("CW"))
{
int i = server.arg("CLDFW").toInt();
int i = server.arg("CW").toInt();
if (i >= 0 && i <= 255)
{
useRGBW = true;
@ -181,65 +181,65 @@ void handleSettingsSet(byte subPage)
whiteS = 0;
}
}
if (server.hasArg("CLDFA"))
if (server.hasArg("CA"))
{
int i = server.arg("CLDFA").toInt();
int i = server.arg("CA").toInt();
if (i >= 0 && i <= 255) briS = i;
}
if (server.hasArg("FXDEF"))
if (server.hasArg("FX"))
{
int i = server.arg("FXDEF").toInt();
int i = server.arg("FX").toInt();
if (i >= 0 && i <= 255) effectDefault = i;
}
if (server.hasArg("SXDEF"))
if (server.hasArg("SX"))
{
int i = server.arg("SXDEF").toInt();
int i = server.arg("SX").toInt();
if (i >= 0 && i <= 255) effectSpeedDefault = i;
}
if (server.hasArg("IXDEF"))
if (server.hasArg("IX"))
{
int i = server.arg("IXDEF").toInt();
int i = server.arg("IX").toInt();
if (i >= 0 && i <= 255) effectIntensityDefault = i;
}
}
turnOnAtBoot = server.hasArg("BOOTN");
if (server.hasArg("BOOTP"))
turnOnAtBoot = server.hasArg("BO");
if (server.hasArg("BP"))
{
int i = server.arg("BOOTP").toInt();
int i = server.arg("BP").toInt();
if (i >= 0 && i <= 25) bootPreset = i;
}
useGammaCorrectionBri = server.hasArg("GCBRI");
useGammaCorrectionRGB = server.hasArg("GCRGB");
fadeTransition = server.hasArg("TFADE");
sweepTransition = server.hasArg("TSWEE");
sweepDirection = !server.hasArg("TSDIR");
if (server.hasArg("TDLAY"))
useGammaCorrectionBri = server.hasArg("GB");
useGammaCorrectionRGB = server.hasArg("GC");
fadeTransition = server.hasArg("TF");
sweepTransition = server.hasArg("TS");
sweepDirection = !server.hasArg("TI");
if (server.hasArg("TD"))
{
int i = server.arg("TDLAY").toInt();
int i = server.arg("TD").toInt();
if (i > 0){
transitionDelay = i;
}
}
if (server.hasArg("TLBRI"))
if (server.hasArg("TB"))
{
nightlightTargetBri = server.arg("TLBRI").toInt();
nightlightTargetBri = server.arg("TB").toInt();
}
if (server.hasArg("TLDUR"))
if (server.hasArg("TL"))
{
int i = server.arg("TLDUR").toInt();
int i = server.arg("TL").toInt();
if (i > 0) nightlightDelayMins = i;
}
nightlightFade = server.hasArg("TLFDE");
reverseMode = server.hasArg("LEDRV");
nightlightFade = server.hasArg("TW");
reverseMode = server.hasArg("RV");
strip.setReverseMode(reverseMode);
if (server.hasArg("WOFFS"))
if (server.hasArg("WO"))
{
int i = server.arg("WOFFS").toInt();
int i = server.arg("WO").toInt();
if (i >= -255 && i <= 255) arlsOffset = i;
}
if (server.hasArg("NRBRI"))
if (server.hasArg("BF"))
{
int i = server.arg("NRBRI").toInt();
int i = server.arg("BF").toInt();
if (i > 0) briMultiplier = i;
}
}
@ -247,57 +247,57 @@ void handleSettingsSet(byte subPage)
//UI
if (subPage == 3)
{
if (server.hasArg("DESC")) serverDescription = server.arg("DESC");
useHSBDefault = server.hasArg("COLMD");
if (server.hasArg("DS")) serverDescription = server.arg("DS");
useHSBDefault = server.hasArg("MD");
useHSB = useHSBDefault;
if (server.hasArg("THEME")) currentTheme = server.arg("THEME").toInt();
if (server.hasArg("TH")) currentTheme = server.arg("TH").toInt();
for(int i=0;i<6;i++)
{
if (server.hasArg("CCOL"+String(i))) cssCol[i] = server.arg("CCOL"+String(i));
if (server.hasArg("C"+String(i))) cssCol[i] = server.arg("C"+String(i));
}
if (server.hasArg("CFONT")) cssFont = server.arg("CFONT");
if (server.hasArg("CF")) cssFont = server.arg("CF");
buildCssColorString();
}
//SYNC
if (subPage == 4)
{
buttonEnabled = server.hasArg("BTNON");
if (server.hasArg("NUDPP"))
buttonEnabled = server.hasArg("BT");
if (server.hasArg("UP"))
{
udpPort = server.arg("NUDPP").toInt();
udpPort = server.arg("UP").toInt();
}
receiveNotificationBrightness = server.hasArg("NRCBR");
receiveNotificationColor = server.hasArg("NRCCL");
receiveNotificationEffects = server.hasArg("NRCFX");
receiveNotificationBrightness = server.hasArg("RB");
receiveNotificationColor = server.hasArg("RC");
receiveNotificationEffects = server.hasArg("RX");
receiveNotifications = (receiveNotificationBrightness || receiveNotificationColor || receiveNotificationEffects);
notifyDirectDefault = server.hasArg("NSDIR");
notifyDirectDefault = server.hasArg("SD");
notifyDirect = notifyDirectDefault;
notifyButton = server.hasArg("NSBTN");
notifyTwice = server.hasArg("NS2XS");
alexaEnabled = server.hasArg("ALEXA");
if (server.hasArg("AINVN")) alexaInvocationName = server.arg("AINVN");
alexaNotify = server.hasArg("NSALX");
notifyHue = server.hasArg("NSHUE");
notifyButton = server.hasArg("SB");
notifyTwice = server.hasArg("S2");
alexaEnabled = server.hasArg("AL");
if (server.hasArg("AI")) alexaInvocationName = server.arg("AI");
alexaNotify = server.hasArg("SA");
notifyHue = server.hasArg("SH");
for (int i=0;i<4;i++){
String a = "HUIP"+String(i);
String a = "H"+String(i);
if (server.hasArg(a))
hueIP[i] = server.arg(a).toInt();
}
if (server.hasArg("HUELI"))
if (server.hasArg("HL"))
{
int i = server.arg("HUELI").toInt();
int i = server.arg("HL").toInt();
if (i > 0) huePollLightId = i;
}
if (server.hasArg("HUEPI"))
if (server.hasArg("HI"))
{
int i = server.arg("HUEPI").toInt();
int i = server.arg("HI").toInt();
if (i > 50) huePollIntervalMs = i;
}
hueApplyOnOff = server.hasArg("HURIO");
hueApplyBri = server.hasArg("HURBR");
hueApplyColor = server.hasArg("HURCL");
if (server.hasArg("HUEPL"))
hueApplyOnOff = server.hasArg("HO");
hueApplyBri = server.hasArg("HB");
hueApplyColor = server.hasArg("HC");
if (server.hasArg("HP"))
{
if (!huePollingEnabled) hueAttempt = true;
if (!setupHue()) hueAttempt = true;
@ -311,56 +311,56 @@ void handleSettingsSet(byte subPage)
//TIME
if (subPage == 5)
{
ntpEnabled = server.hasArg("NTPON");
useAMPM = !server.hasArg("CL24H");
if (server.hasArg("TZONE")) currentTimezone = server.arg("TZONE").toInt();
if (server.hasArg("UTCOS")) utcOffsetSecs = server.arg("UTCOS").toInt();
ntpEnabled = server.hasArg("NT");
useAMPM = !server.hasArg("CF");
if (server.hasArg("TZ")) currentTimezone = server.arg("TZ").toInt();
if (server.hasArg("UO")) utcOffsetSecs = server.arg("UO").toInt();
if (ntpEnabled && WiFi.status() == WL_CONNECTED && !ntpConnected) ntpConnected = ntpUdp.begin(ntpLocalPort); //start if not already connected
if (server.hasArg("OLMDE")){
overlayDefault = server.arg("OLMDE").toInt();
if (server.hasArg("OL")){
overlayDefault = server.arg("OL").toInt();
overlayCurrent = overlayDefault;
strip.unlockAll();
}
if (server.hasArg("OLIN1")) overlayMin = server.arg("OLIN1").toInt();
if (server.hasArg("OLIN2")) overlayMax = server.arg("OLIN2").toInt();
if (server.hasArg("OLINM")) analogClock12pixel = server.arg("OLINM").toInt();
analogClock5MinuteMarks = server.hasArg("OL5MI");
analogClockSecondsTrail = server.hasArg("OLSTR");
if (server.hasArg("O1")) overlayMin = server.arg("O1").toInt();
if (server.hasArg("O2")) overlayMax = server.arg("O2").toInt();
if (server.hasArg("OM")) analogClock12pixel = server.arg("OM").toInt();
analogClock5MinuteMarks = server.hasArg("O5");
analogClockSecondsTrail = server.hasArg("OS");
if (server.hasArg("CRONX")) cronixieDisplay = server.arg("CRONX");
if (server.hasArg("CX")) cronixieDisplay = server.arg("CX");
bool cbOld = cronixieBacklight;
cronixieBacklight = server.hasArg("CROBL");
cronixieBacklight = server.hasArg("CB");
if (cbOld != cronixieBacklight && overlayCurrent == 4)
{
strip.setCronixieBacklight(cronixieBacklight); overlayRefreshedTime = 0;
}
countdownMode = server.hasArg("CLCND");
if (server.hasArg("CDGYR")) countdownYear = server.arg("CDGYR").toInt();
if (server.hasArg("CDGMN")) countdownMonth = server.arg("CDGMN").toInt();
if (server.hasArg("CDGDY")) countdownDay = server.arg("CDGDY").toInt();
if (server.hasArg("CDGHR")) countdownHour = server.arg("CDGHR").toInt();
if (server.hasArg("CDGMI")) countdownMin = server.arg("CDGMI").toInt();
if (server.hasArg("CDGSC")) countdownSec = server.arg("CDGSC").toInt();
countdownMode = server.hasArg("CE");
if (server.hasArg("CY")) countdownYear = server.arg("CY").toInt();
if (server.hasArg("CI")) countdownMonth = server.arg("CI").toInt();
if (server.hasArg("CD")) countdownDay = server.arg("CD").toInt();
if (server.hasArg("CH")) countdownHour = server.arg("CH").toInt();
if (server.hasArg("CM")) countdownMin = server.arg("CM").toInt();
if (server.hasArg("CS")) countdownSec = server.arg("CS").toInt();
for (int i=1;i<17;i++)
{
String a = "MC"+String(i);
String a = "M"+String(i);
if (server.hasArg(a)) saveMacro(i,server.arg(a),false);
}
if (server.hasArg("MCRBT")) macroBoot = server.arg("MCRBT").toInt();
if (server.hasArg("MCA0I")) macroAlexaOn = server.arg("MCA0I").toInt();
if (server.hasArg("MCA0O")) macroAlexaOff = server.arg("MCA0O").toInt();
if (server.hasArg("MCB0D")) macroButton = server.arg("MCB0D").toInt();
if (server.hasArg("MCB0L")) macroLongPress = server.arg("MCB0L").toInt();
if (server.hasArg("MCNTD")) macroCountdown = server.arg("MCNTD").toInt();
if (server.hasArg("MCNLO")) macroNl = server.arg("MCNLO").toInt();
if (server.hasArg("MB")) macroBoot = server.arg("MB").toInt();
if (server.hasArg("A0")) macroAlexaOn = server.arg("A0").toInt();
if (server.hasArg("A1")) macroAlexaOff = server.arg("A1").toInt();
if (server.hasArg("MP")) macroButton = server.arg("MP").toInt();
if (server.hasArg("ML")) macroLongPress = server.arg("ML").toInt();
if (server.hasArg("MC")) macroCountdown = server.arg("MC").toInt();
if (server.hasArg("MN")) macroNl = server.arg("MN").toInt();
}
//SECURITY
if (subPage == 6)
{
if (server.hasArg("RESET"))
if (server.hasArg("RS"))
{
clearEEPROM();
serveMessage(200, "All Settings erased.", "Connect to WLED-AP to setup again...",255);
@ -368,24 +368,24 @@ void handleSettingsSet(byte subPage)
}
bool pwdCorrect = !otaLock; //always allow access if ota not locked
if (server.hasArg("OPASS"))
if (server.hasArg("OP"))
{
if (otaLock && otaPass.equals(server.arg("OPASS")))
if (otaLock && otaPass.equals(server.arg("OP")))
{
pwdCorrect = true;
}
if (!otaLock && server.arg("OPASS").length() > 0)
if (!otaLock && server.arg("OP").length() > 0)
{
otaPass = server.arg("OPASS");
otaPass = server.arg("OP");
}
}
if (pwdCorrect) //allow changes if correct pwd or no ota active
{
otaLock = server.hasArg("NOOTA");
wifiLock = server.hasArg("OWIFI");
recoveryAPDisabled = server.hasArg("NORAP");
aOtaEnabled = server.hasArg("AROTA");
otaLock = server.hasArg("NO");
wifiLock = server.hasArg("OW");
recoveryAPDisabled = server.hasArg("NA");
aOtaEnabled = server.hasArg("AO");
}
}