WLED/wled00/html_settings.h

409 lines
45 KiB
C
Raw Normal View History

/*
* More web UI HTML source arrays.
* This file is auto generated, please don't make any changes manually.
* Instead, see https://github.com/Aircoookie/WLED/wiki/Add-own-functionality#web-ui
* to find out how to easily modify the web UI source!
*/
2019-08-17 12:27:06 +02:00
2020-05-17 20:09:39 +02:00
// Autogenerated from wled00/data/style.css, do not edit!!
const char PAGE_settingsCss[] PROGMEM = R"=====(<style>body{font-family:Verdana,sans-serif;text-align:center;background:#222;color:#fff;line-height:200%;margin:0}hr{border-color:#666}button{background:#333;color:#fff;font-family:Verdana,sans-serif;border:.3ch solid #333;border-radius:24px;display:inline-block;font-size:20px;margin:12px 8px 8px;padding:8px 12px;min-width:48px;cursor:pointer}.toprow{top:0;position:sticky;background-color:#222;z-index:1}.helpB{text-align:left;position:absolute;width:60px}input{background:#333;color:#fff;font-family:Verdana,sans-serif;border:.5ch solid #333}input[type=number]{width:4em;font-size:medium;margin:2px}input[type=number].big{width:80px}input[type=number].small{width:40px}select{margin:2px;font-size:medium}input[type=checkbox]{-ms-transform:scale(2);-moz-transform:scale(2);-webkit-transform:scale(2);-o-transform:scale(2);transform:scale(2);margin-right:10px}select{background:#333;color:#fff;font-family:Verdana,sans-serif;border:.5ch solid #333}td{padding:2px}.d5{width:4.5em!important}</style>)=====";
2020-05-17 20:09:39 +02:00
// Autogenerated from wled00/data/settings.htm, do not edit!!
2020-12-20 15:16:22 +01:00
const char PAGE_settings[] PROGMEM = R"=====(<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>WLED Settings
</title><style>
body{text-align:center;background:#222;height:100px;margin:0}html{--h:10.55vh}button{background:#333;color:#fff;font-family:Verdana,Helvetica,sans-serif;border:.3ch solid #333;display:inline-block;font-size:6vmin;height:var(--h);width:95%%;margin-top:2.4vh}
2020-05-17 20:09:39 +02:00
</style><script>
function BB(){window.frameElement&&(document.getElementById("b").style.display="none",document.documentElement.style.setProperty("--h","13.86vh"))}
</script></head><body onload="BB()"><form action="/"><button type="submit"
id="b">Back</button></form><form action="/settings/wifi"><button type="submit">
WiFi Setup</button></form><form action="/settings/leds"><button type="submit">
LED Preferences</button></form><form action="/settings/ui"><button
type="submit">User Interface</button></form>%DMXMENU%<form action="/settings/sync">
2020-05-17 20:09:39 +02:00
<button type="submit">Sync Interfaces</button></form><form
action="/settings/time"><button type="submit">Time & Macros</button></form><form
action="/settings/um"><button type="submit">Usermods</button></form><form
action="/settings/sec"><button type="submit">Security & Updates</button></form>
2019-02-16 00:21:22 +01:00
</body></html>)=====";
2018-02-20 22:29:48 +01:00
2018-09-17 11:15:08 +02:00
2020-05-17 20:09:39 +02:00
// Autogenerated from wled00/data/settings_wifi.htm, do not edit!!
const char PAGE_settings_wifi[] PROGMEM = R"=====(<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=500"><title>WiFi Settings</title><script>
function H(){window.open("https://github.com/Aircoookie/WLED/wiki/Settings#wifi-settings")}function B(){window.open("/settings","_self")}function GetV() {var d=document;
%CSS%%SCSS%</head><body onload="GetV()">
2021-03-05 09:50:59 +01:00
<form id="form_s" name="Sf" method="post"><div class="toprow"><div
class="helpB"><button type="button" onclick="H()">?</button></div><button
type="button" onclick="B()">Back</button><button type="submit">Save & Connect
</button><hr></div><h2>WiFi setup</h2><h3>Connect to existing network</h3>
2020-05-17 20:09:39 +02:00
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>Client IP: <span class="sip">Not connected</span><br>
<h3>Configure Access Point</h3>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" pattern="(.{8,63})|()" title="Empty or min. 8 characters"><br>
Access Point WiFi channel: <input name="AC" type="number" min="1" max="13"
required><br>AP opens: <select name="AB"><option value="0">
2020-05-17 20:09:39 +02:00
No connection after boot</option><option value="1">Disconnected</option><option
value="2">Always</option><option value="3">Never (not recommended)</option>
</select><br>AP IP: <span class="sip">Not active</span><br><h3>Experimental</h3>
2020-05-17 21:39:57 +02:00
Disable WiFi sleep: <input type="checkbox" name="WS"><br><i>
Can help with connectivity issues.<br>
Do not enable if WiFi is working correctly, increases power consumption.</i><div
id="ethd"><h3>Ethernet Type</h3><select name="ETH"><option value="0">None
</option><option value="2">ESP32-POE</option><option value="4">QuinLED-ESP32
</option><option value="3">WESP32</option><option value="1">WT32-ETH01</option>
</select><br><br></div><hr><button type="button" onclick="B()">Back</button>
<button type="submit">Save & Connect</button></form></body></html>)=====";
2018-09-17 11:15:08 +02:00
2020-05-17 20:09:39 +02:00
// Autogenerated from wled00/data/settings_leds.htm, do not edit!!
const char PAGE_settings_leds[] PROGMEM = R"=====(<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta
name="viewport" content="width=500"><title>LED Settings</title><script>
2021-04-25 21:15:57 +02:00
var d=document,laprev=55,maxB=1,maxM=5e3,maxPB=4096,bquot=0;function H(){window.open("https://github.com/Aircoookie/WLED/wiki/Settings#led-settings")}function B(){window.open("/settings","_self")}function off(e){d.getElementsByName(e)[0].value=-1}function bLimits(e,n,t){maxB=e,maxM=t,maxPB=n}function pinsOK(){var e=d.getElementsByTagName("input");for(i=0;i<e.length;i++){var n=e[i].name.substring(0,2);if(("L0"==n||"L1"==n||"L2"==n||"L3"==n||"L4"==n||"RL"==n||"BT"==n||"IR"==n||"AX"==n)&&""!=e[i].value&&"-1"!=e[i].value){if(d.um_p&&d.um_p.some(n=>n==parseInt(e[i].value,10)))return alert(`Sorry, pins ${JSON.stringify(d.um_p)} can't be used.`),e[i].value="",e[i].focus(),!1;if(e[i].value>5&&e[i].value<12)return alert("Sorry, pins 6-11 can not be used."),e[i].value="",e[i].focus(),!1;for(j=i+1;j<e.length;j++){var t=e[j].name.substring(0,2);if(("L0"==t||"L1"==t||"L2"==t||"L3"==t||"L4"==t||"RL"==t||"BT"==t||"IR"==t||"AX"==t)&&""!=e[j].value&&e[i].value==e[j].value)return alert(`Pin conflict between ${n}/${t}!`),e[j].value="",e[j].focus(),!1}}}return!0}function trySubmit(e){if(e.preventDefault(),!pinsOK())return e.stopPropagation(),!1;if(bquot>100){var n="Too many LEDs for me to handle!";maxM<1e4&&(n+="\n\rConsider using an ESP32."),alert(n)}d.Sf.checkValidity()&&d.Sf.submit()}function S(){GetV(),setABL()}function enABL(){var e=d.getElementById("able").checked;d.Sf.LA.value=e?laprev:0,d.getElementById("abl").style.display=e?"inline":"none",d.getElementById("psu2").style.display=e?"inline":"none",d.Sf.LA.value>0&&setABL()}function enLA(){var e=d.Sf.LAsel.value;d.Sf.LA.value=e,d.getElementById("LAdis").style.display=50==e?"inline":"none",UI()}function setABL(){switch(d.getElementById("able").checked=!0,d.Sf.LAsel.value=50,parseInt(d.Sf.LA.value)){case 0:d.getElementById("able").checked=!1,enABL();break;case 30:d.Sf.LAsel.value=30;break;case 35:d.Sf.LAsel.value=35;break;case 55:d.Sf.LAsel.value=55;break;case 255:d.Sf.LAsel.value=255;break;default:d.getElementById("LAdis").style.display="inline"}d.getElementById("m1").innerHTML=maxM,d.getElementsByName("Sf")[0].addEventListener("submit",trySubmit),UI()}function getMem(e,n,t){return e<32?maxM<1e4&&3==t?e>29?20*n:15*n:maxM>=1e4?e>29?8*n:6*n:e>29?4*n:3*n:e>31&&e<48?5:44==e||45==e?4*n:3*n}function UI(e=!1){var n=!1,t=0;d.getElementById("ampwarning").style.display=d.Sf.MA.value>7200?"inline":"none",255==d.Sf.LA.value?laprev=12:d.Sf.LA.value>0&&(laprev=d.Sf.LA.value);var a=d.getElementsByTagName("select");for(B=0;B<a.length;B++)if("LT"==a[B].name.substring(0,2)){g=a[B].name.substring(2);var i=parseInt(a[B].value,10);d.getElementById("p0d"+g).innerHTML=i>49?"Data:":i>41?"Pins:":"Pin:",d.getElementById("p1d"+g).innerHTML=i>49?"Clk:":"";var l=d.getElementsByName("L1"+g)[0];for(t+=getMem(i,d.getElementsByName("LC"+g)[0].value,d.getElementsByName("L0"+g)[0].value),y=1;y<5;y++){(l=d.getElementsByName("L"+y+g)[0])&&(i>49&&1==y||i>41&&i<50&&y+40<i?(l.style.display="inline",l.required=!0):(l.style.display="none",l.required=!1,l.value=""))}d.getElementById("ls"+g).readOnly=!(i>31&&i<48),d.getElementById("LC").readOnly=!(i>31&&i<48),e&&(d.getElementById("ls"+g).value=g+1),n|=30==i||31==i||44==i||45==i,d.getElementById("dig"+g).style.display=i>31&&i<48?"none":"inline",d.getElementById("psd"+g).innerHTML=i>31&&i<48?"Index:":"Start:"}var s=d.querySelectorAll(".wc"),o=s.length;for(B=0;B<o;B++)s[B].style.display=n?"inline":"none";var u=d.getElementsByTagName("input"),r=0,m=0;for(B=0;B<u.length;B++){var p=u[B].name.substring(0,2);if("LC"!=p||"LC"===u[B].name){if("L0"==p||"L1"==p)d.getElementsByName("LC"+u[B].name.substring(2))[0].max=maxPB;if(("L0"==p||"L1"==p||"L2"==p||"L3"==p||"L4"==p||"RL"==p||"BT"==p||"IR"==p||"AX"==p)&&""!=u[B].value&&"-1"!=u[B].value){var y=[];if(d.um_p&&Array.isArray(d.um_p))for(k=0;k<d.um_p.length;k++)y.push(d.um_p[k]);for(j=0;j<u.length;j++)if(B!=j){var v=u[j].name.substring(0,2);"L0"!=v&&"L1"!=v&&"L2"!=v&&"L3"!=v&&"L4"!=v&&"RL"!=v&&"BT"!=v&&"IR"!=v&&"AX"!=v||""!=u[j].value&&"-1"!=u[j].value&&y.push(parseInt(u[j].value,10))}y.some(e=>e==parseInt(u[B].value,10))?u[B].style.color="r
%CSS%%SCSS%</head><body onload="S()"><form
2021-03-05 09:50:59 +01:00
id="form_s" name="Sf" method="post"><div class="toprow"><div class="helpB">
<button type="button" onclick="H()">?</button></div><button type="button"
onclick="B()">Back</button><button type="submit">Save</button><hr></div><h2>
LED &amp; Hardware setup</h2>Total LED count: <input name="LC" id="LC"
type="number" min="1" max="8192" oninput="UI()" required readonly="readonly">
<br><i>Recommended power supply for brightest white:</i><br><b><span id="psu">?
</span></b><br><span id="psu2"><br></span><br>
2021-02-24 20:23:32 +01:00
Enable automatic brightness limiter: <input type="checkbox" name="ABen"
onchange="enABL()" id="able"><br><div id="abl">Maximum Current: <input
name="MA" type="number" min="250" max="65000" oninput="UI()" required> mA<br>
<div id="ampwarning" style="color:orange;display:none">
&#9888; Your power supply provides high current.<br>
2020-05-17 20:09:39 +02:00
To improve the safety of your setup,<br>please use thick cables,<br>
multiple power injection points and a fuse!<br></div><i>
Automatically limits brightness to stay close to the limit.<br>
Keep at &lt;1A if powering LEDs directly from the ESP 5V pin!<br>
If you are using an external power supply, enter its rating.<br>
2020-05-17 20:09:39 +02:00
(Current estimated usage: <span class="pow">unknown</span>)</i><br><br>
LED voltage (Max. current for a single LED):<br><select name="LAsel"
onchange="enLA()"><option value="55" selected="selected">5V default (55mA)
</option><option value="35">5V efficient (35mA)</option><option value="30">
12V (30mA)</option><option value="255">WS2815 (12mA)</option><option value="50">
Custom</option></select><br><span id="LAdis" style="display:none">
Custom max. current per LED: <input name="LA" type="number" min="0" max="255"
id="la" oninput="UI()" required> mA<br></span><i>
Keep at default if you are unsure about your type of LEDs.</i><br></div><h3>
Hardware setup</h3><div id="mLC">LED outputs:</div><button type="button" id="+"
2021-02-24 20:23:32 +01:00
onclick="addLEDs(1)">+</button> <button type="button" id="-"
onclick="addLEDs(-1)">-</button><br>LED Memory Usage: <span id="m0">0</span> /
<span id="m1">?</span> B<br><div id="dbar"
style="display:inline-block;width:100px;height:10px;border-radius:20px"></div>
<br><div id="ledwarning" style="color:orange;display:none">
&#9888; You might run into stability or lag issues.<br>Use less than <span
id="wreason">800 LEDs per pin</span> for the best experience!<br></div><hr
style="width:260px">Button pin: <input type="number" min="-1" max="40"
name="BT" onchange="UI()"><span style="cursor:pointer" onclick='off("BT")'>
&nbsp;&#215;</span><br>IR pin: <input type="number" min="-1" max="40" name="IR"
onchange="UI()"><span style="cursor:pointer" onclick='off("IR")'>&nbsp;&#215;
</span><br>Relay pin: <input type="number" min="-1" max="40" name="RL"
onchange="UI()"><span style="cursor:pointer" onclick='off("RL")'>&nbsp;&#215;
</span><br>Active high <input type="checkbox" name="RM"><hr style="width:260px">
<h3>Defaults</h3>Turn LEDs on after power up/reset: <input type="checkbox"
name="BO"><br>Default brightness: <input name="CA" type="number" min="0"
max="255" required> (0-255)<br><br>Apply preset <input name="BP" type="number"
min="0" max="250" required> at boot (0 uses defaults)<br>- <i>or</i> -<br>
Set current preset cycle setting as boot default: <input type="checkbox"
name="PC"><br><br>Use Gamma correction for color: <input type="checkbox"
name="GC"> (strongly recommended)<br>Use Gamma correction for brightness: <input
type="checkbox" name="GB"> (not recommended)<br><br>Brightness factor: <input
name="BF" type="number" min="1" max="255" required> %<h3>Transitions</h3>
Crossfade: <input type="checkbox" name="TF"><br>Transition Time: <input
name="TD" maxlength="5" size="2"> ms<br>Enable Palette transitions: <input
type="checkbox" name="PF"><h3>Timed light</h3>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>Mode: <select name="TW"><option value="0">Wait and set</option>
<option value="1">Fade</option><option value="2">Fade Color</option><option
value="3">Sunrise</option></select><h3>Advanced</h3>Palette blending: <select
name="PB"><option value="0">Linear (wrap if moving)</option><option value="1">
Linear (always wrap)</option><option value="2">Linear (never wrap)</option>
<option value="3">None (not recommended)</option></select><br><span class="wc">
Auto-calculate white channel from RGB:<br><select name="AW"><option value="0">
None</option><option value="1">Brighter</option><option value="2">Accurate
</option><option value="3">Dual</option><option value="4">Legacy</option>
</select><br></span><hr><button type="button" onclick="B()">Back</button><button
type="submit">Save</button></form></body></html>)=====";
2018-09-17 11:15:08 +02:00
#ifdef WLED_ENABLE_DMX
2020-05-17 20:09:39 +02:00
// Autogenerated from wled00/data/settings_dmx.htm, do not edit!!
const char PAGE_settings_dmx[] PROGMEM = R"=====(<!DOCTYPE html><html lang="en"><head><meta name="viewport" content="width=500">
<meta charset="utf-8"><title>DMX Settings</title><script>
function GCH(n){for(d=document,d.getElementById("dmxchannels").innerHTML+="",i=0;i<n;i++)d.getElementById("dmxchannels").innerHTML+="<span id=CH"+(i+1)+"s >Channel "+(i+1)+": <select name=CH"+(i+1)+' id="CH'+(i+1)+'"><option value=0>Set to 0</option><option value=1>Red</option><option value=2>Green</option><option value=3>Blue</option><option value=4>White</option><option value=5>Shutter (Brightness)</option><option value=6>Set to 255</option></select></span><br />\n'}function mMap(){for(d=document,numCh=document.Sf.CN.value,numGap=document.Sf.CG.value,parseInt(numCh)>parseInt(numGap)?d.getElementById("gapwarning").style.display="block":d.getElementById("gapwarning").style.display="none",i=0;i<15;i++)i>=numCh?(d.getElementById("CH"+(i+1)+"s").style.opacity="0.5",d.getElementById("CH"+(i+1)).disabled=!0):(d.getElementById("CH"+(i+1)+"s").style.opacity="1",d.getElementById("CH"+(i+1)).disabled=!1)}function S(){GCH(15),GetV(),mMap()}function H(){window.open("https://github.com/Aircoookie/WLED/wiki/DMX")}function B(){window.history.back()}function GetV() {var d=document;
%CSS%%SCSS%</head><body onload="S()"><form
2021-03-05 09:50:59 +01:00
id="form_s" name="Sf" method="post"><div class="toprow"><div class="helpB">
<button type="button" onclick="H()">?</button></div><button type="button"
onclick="B()">Back</button><button type="submit">Save</button><hr></div><h2>
Imma firin ma lazer (if it has DMX support)</h2>Proxy Universe <input name="PU"
type="number" min="0" max="63999" required> from E1.31 to DMX (0=disabled)<br>
<i>This will disable the LED data output to DMX configurable below</i><br><br>
<i>Number of fixtures is taken from LED config page</i><br>
2020-05-17 20:09:39 +02:00
Channels per fixture (15 max): <input type="number" min="1" max="15" name="CN"
maxlength="2" onchange="mMap()"><br>Start channel: <input type="number" min="1"
max="512" name="CS" maxlength="2"><br>Spacing between start channels: <input
type="number" min="1" max="512" name="CG" maxlength="2" onchange="mMap()"> [ <a
href="javascript:alert('if set to 10, first fixture will start at 10,\nsecond will start at 20 etc.\nRegardless of the channel count.\nMakes memorizing channel numbers easier.');">
info</a> ]<br><div id="gapwarning" style="color:orange;display:none">
WARNING: Channel gap is lower than channels per fixture.<br>
This will cause overlap.</div><button type="button"
onclick='location.href="/dmxmap"'>DMX Map</button><br>DMX fixtures start LED:
<input type="number" min="0" max="1500" name="SL"><h3>Channel functions</h3><div
2020-05-17 20:09:39 +02:00
id="dmxchannels"></div><hr><button type="button" onclick="B()">Back</button>
<button type="submit">Save</button></form></body></html>)=====";
#else
const char PAGE_settings_dmx[] PROGMEM = R"=====()=====";
#endif
2020-05-17 20:09:39 +02:00
// Autogenerated from wled00/data/settings_ui.htm, do not edit!!
const char PAGE_settings_ui[] PROGMEM = R"=====(<!DOCTYPE html><html><head lang="en"><meta charset="utf-8"><meta
name="viewport" content="width=500"><title>UI Settings</title><script>
var initial_ds,initial_st,d=document,sett=null,l={comp:{labels:"Show button labels",colors:{LABEL:"Color selection methods",picker:"Color Wheel",rgb:"RGB sliders",quick:"Quick color selectors",hex:"HEX color input"},pcmbot:"Show bottom tab bar in PC mode",pid:"Show preset IDs",seglen:"Use LED Count instead of Stop LED on segments"},theme:{alpha:{bg:"Background opacity",tab:"Button opacity"},bg:{url:"BG image URL",random:"Random BG image"},color:{bg:"BG HEX color"}}};function gId(e){return d.getElementById(e)}function isObject(e){return e&&"object"==typeof e&&!Array.isArray(e)}function set(e,t,i){for(var n=t,l=e.split("_"),o=l.length,s=0;s<o-1;s++){var d=l[s];n[d]||(n[d]={}),n=n[d]}n[l[o-1]]=i}function addRec(e,t="",n=null){var l="";for(i in e){var o=t+(t?"_":"")+i;if(isObject(e[i]))n&&n[i]&&n[i].LABEL&&(l+=`<h3>${n[i].LABEL}</h3>`),l+=addRec(e[i],o,n?n[i]:null);else{var s=o;if(n&&n[i]?s=n[i]:e[i+"LABEL"]&&(s=e[i+"LABEL"]),i.indexOf("LABEL")>0)continue;var d=typeof e[i];gId(o)?("boolean"===d?gId(o).checked=e[i]:gId(o).value=e[i],gId(o).previousElementSibling.matches(".l")&&(gId(o).previousElementSibling.innerHTML=s)):"boolean"===d?l+=`${s}: <input class="agi cb" type="checkbox" id=${o} ${e[i]?"checked":""}><br>`:"number"===d?l+=`${s}: <input class="agi" type="number" id=${o} value=${e[i]}><br>`:"string"===d&&(l+=`${s}:<br><input class="agi" id=${o} value=${e[i]}><br>`)}}return l}function genForm(e){var t;t=addRec(e,"",l),gId("gen").innerHTML=t}function GetLS(){(sett=localStorage.getItem("wledUiCfg"))||(gId("lserr").style.display="inline");try{sett=JSON.parse(sett)}catch(e){sett={},gId("lserr").style.display="inline",gId("lserr").innerHTML="&#9888; Settings JSON parsing failed. ("+e+")"}genForm(sett),gId("dm").checked="light"===gId("theme_base").value}function SetLS(){for(var e=d.querySelectorAll(".agi"),t=0;t<e.length;t++){var i=e[t],n=i.classList.contains("cb")?i.checked:i.value;set(i.id,sett,n),console.log(`${i.id} set to ${n}`)}try{localStorage.setItem("wledUiCfg",JSON.stringify(sett)),gId("lssuc").style.display="inline"}catch(i){gId("lssuc").style.display="none",gId("lserr").style.display="inline",gId("lserr").innerHTML="&#9888; Settings JSON saving failed. ("+i+")"}}function Save(){SetLS(),d.Sf.DS.value==initial_ds&&d.Sf.ST.checked==initial_st||d.Sf.submit()}function S(){GetV(),initial_ds=d.Sf.DS.value,initial_st=d.Sf.ST.checked,GetLS()}function H(){window.open("https://github.com/Aircoookie/WLED/wiki/Settings#user-interface-settings")}function B(){window.open("/settings","_self")}function UI(){gId("idonthateyou").style.display=gId("dm").checked?"inline":"none";var e=gId("theme_base");e&&(e.value=gId("dm").checked?"light":"dark")}function setRandomBg(){gId("theme_bg_random").checked?gId("theme_bg_url").value="https://picsum.photos/1920/1080":gId("theme_bg_url").value=""}function checkRandomBg(){"https://picsum.photos/1920/1080"===gId("theme_bg_url").value?gId("theme_bg_random").checked=!0:gId("theme_bg_random").checked=!1}function GetV() {var d=document;
2020-10-29 10:14:21 +01:00
%CSS%%SCSS%</head><body onload="S()"><form
2021-03-05 09:50:59 +01:00
id="form_s" name="Sf" method="post"><div class="toprow"><div class="helpB">
<button type="button" onclick="H()">?</button></div><button type="button"
onclick="B()">Back</button><button type="button" onclick="Save()">Save</button>
<br><span id="lssuc" style="color:green;display:none">
2021-02-26 22:43:57 +01:00
&#10004; Local UI settings saved!</span> <span id="lserr"
style="color:red;display:none">
2020-08-30 23:31:58 +02:00
&#9888; Could not access local storage. Make sure it is enabled in your browser.
</span><hr></div><h2>Web Setup</h2>Server description: <input name="DS"
maxlength="32"><br>Sync button toggles both send and receive: <input
type="checkbox" name="ST"><br><i>
The following UI customization settings are unique both to the WLED device and this browser.
<br>
You will need to set them again if using a different browser, device or WLED IP address.
<br>Refresh the main UI to apply changes.</i><br><div id="gen">
Loading settings...</div><h3>UI Appearance</h3><span class="l"></span>: <input
type="checkbox" id="comp_labels" class="agi cb"><br><span class="l"></span>:
2020-12-14 23:32:57 +01:00
<input type="checkbox" id="comp_pcmbot" class="agi cb"><br><span class="l">
</span>: <input type="checkbox" id="comp_pid" class="agi cb"><br><span
class="l"></span>: <input type="checkbox" id="comp_seglen" class="agi cb"><br>
2020-12-14 23:32:57 +01:00
I hate dark mode: <input type="checkbox" id="dm" onchange="UI()"><br><span
id="idonthateyou" style="display:none"><i>Why would you? </i>&#x1F97A;<br>
</span><span class="l"></span>: <input type="number" min="0.0" max="1.0"
step="0.01" id="theme_alpha_tab" class="agi"><br><span class="l"></span>: <input
type="number" min="0.0" max="1.0" step="0.01" id="theme_alpha_bg" class="agi">
2020-08-30 23:31:58 +02:00
<br><span class="l"></span>: <input id="theme_color_bg" maxlength="9"
class="agi"><br><span class="l">BG image URL</span>: <input id="theme_bg_url"
2020-12-21 21:12:07 +01:00
class="agi" oninput="checkRandomBg()"><br><span class="l">Random BG image</span>
: <input type="checkbox" id="theme_bg_random" class="agi cb"
onchange="setRandomBg()"><br><input id="theme_base" class="agi"
style="display:none"><hr><button type="button" onclick="B()">Back</button>
<button type="button" onclick="Save()">Save</button></form></body></html>)=====";
2018-09-17 11:15:08 +02:00
2020-05-17 20:09:39 +02:00
// Autogenerated from wled00/data/settings_sync.htm, do not edit!!
const char PAGE_settings_sync[] PROGMEM = R"=====(<!DOCTYPE html><html lang="en"><head><meta name="viewport" content="width=500">
<meta charset="utf-8"><title>Sync Settings</title><script>
2020-10-29 10:14:21 +01:00
var d=document;function H(){window.open("https://github.com/Aircoookie/WLED/wiki/Settings#sync-settings")}function B(){window.open("/settings","_self")}function adj(){6454==d.Sf.DI.value?(1==d.Sf.DA.value&&(d.Sf.DA.value=0),1==d.Sf.EU.value&&(d.Sf.EU.value=0)):5568==d.Sf.DI.value&&(0==d.Sf.DA.value&&(d.Sf.DA.value=1),0==d.Sf.EU.value&&(d.Sf.EU.value=1))}function SP(){var e=d.Sf.DI.value;d.getElementById("xp").style.display=e>0?"none":"block",e>0&&(d.Sf.EP.value=e)}function SetVal(){switch(parseInt(d.Sf.EP.value)){case 5568:d.Sf.DI.value=5568;break;case 6454:d.Sf.DI.value=6454;break;case 4048:d.Sf.DI.value=4048}SP()}function S(){GetV(),SetVal()}function GetV() {
%CSS%%SCSS%</head><body onload="S()"><form
2021-03-05 09:50:59 +01:00
id="form_s" name="Sf" method="post"><div class="toprow"><div class="helpB">
<button type="button" onclick="H()">?</button></div><button type="button"
onclick="B()">Back</button><button type="submit">Save</button><hr></div><h2>
Sync setup</h2><h3>Button setup</h3>Button type: <select name="BT"><option
value="0">Disabled</option><option value="2">Pushbutton</option><option
value="4">Switch</option></select><br>Infrared remote: <select name="IR"><option
value="0">Disabled</option><option value="1">24-key RGB</option><option
2021-03-05 09:50:59 +01:00
value="2">24-key with CT</option><option value="3">40-key blue</option><option
value="4">44-key RGB</option><option value="5">21-key RGB</option><option
value="6">6-key black</option><option value="7">9-key red</option></select><br>
<a href="https://github.com/Aircoookie/WLED/wiki/Infrared-Control"
target="_blank">IR info</a><h3>WLED Broadcast</h3>UDP Port: <input name="UP"
type="number" min="1" max="65535" class="d5" required><br>2nd Port: <input
name="U2" type="number" min="1" max="65535" class="d5" required><br>Receive:
2021-03-05 09:50:59 +01:00
<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>
2020-12-14 23:32:57 +01:00
Send notifications on button press or IR: <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 Macro notifications: <input type="checkbox" name="SM"><br>
Send notifications twice: <input type="checkbox" name="S2"><br><i>
Reboot required to apply changes.</i><h3>Instance List</h3>
Enable instance list: <input type="checkbox" name="NL"><br>
Make this instance discoverable: <input type="checkbox" name="NB"><br><h3>
Realtime</h3>Receive UDP realtime: <input type="checkbox" name="RD"><br><br><i>
Network DMX input</i><br>Type: <select name="DI" onchange="SP(),adj()"><option
value="5568">E1.31 (sACN)</option><option value="6454">Art-Net</option><option
value="4048">DDP</option><option value="0" selected="selected">Custom port
</option></select><br><div id="xp">Port: <input name="EP" type="number" min="1"
max="65535" value="5568" class="d5" required><br></div>Multicast: <input
type="checkbox" name="EM"><br>Start universe: <input name="EU" type="number"
min="0" max="63999" required><br><i>Reboot required.</i> Check out <a
href="https://github.com/LedFx/LedFx" target="_blank">LedFx</a>!<br>
Skip out-of-sequence packets: <input type="checkbox" name="ES"><br>
DMX start address: <input name="DA" type="number" min="0" max="510" required>
<br>DMX mode: <select name="DM"><option value="0">Disabled</option><option
value="1">Single RGB</option><option value="2">Single DRGB</option><option
value="3">Effect</option><option value="4">Multi RGB</option><option value="5">
Dimmer + Multi RGB</option><option value="6">Multi RGBW</option></select><br><a
2020-05-17 20:09:39 +02:00
href="https://github.com/Aircoookie/WLED/wiki/E1.31-DMX" target="_blank">
E1.31 info</a><br>Timeout: <input name="ET" type="number" min="1" max="65000"
required> ms<br>Force max brightness: <input type="checkbox" name="FB"><br>
Disable realtime gamma correction: <input type="checkbox" name="RG"><br>
Realtime LED offset: <input name="WO" type="number" min="-255" max="255"
required><h3>Alexa Voice Assistant</h3>Emulate Alexa device: <input
type="checkbox" name="AL"><br>Alexa invocation name: <input name="AI"
maxlength="32"><h3>Blynk</h3><b>
Blynk, MQTT and Hue sync all connect to external hosts!<br>
This may impact the responsiveness of the ESP8266.</b><br>
For best results, only use one of these services at a time.<br>
(alternatively, connect a second ESP to them and use the UDP sync)<br><br>Host:
<input name="BH" maxlength="32"> Port: <input name="BP" type="number" min="1"
max="65535" value="80" class="d5"><br>Device Auth token: <input name="BK"
maxlength="33"><br><i>Clear the token field to disable. </i><a
2020-05-17 20:09:39 +02:00
href="https://github.com/Aircoookie/WLED/wiki/Blynk" target="_blank">Setup info
</a><h3>MQTT</h3>Enable MQTT: <input type="checkbox" name="MQ"><br>Broker:
<input name="MS" maxlength="32"> Port: <input name="MQPORT" type="number"
min="1" max="65535" class="d5"><br><b>
The MQTT credentials are sent over an unsecured connection.<br>
Never use the MQTT password for another service!</b><br>Username: <input
2020-12-23 21:58:38 +01:00
name="MQUSER" maxlength="40"><br>Password: <input type="password" name="MQPASS"
maxlength="40"><br>Client ID: <input name="MQCID" maxlength="40"><br>
Device Topic: <input name="MD" maxlength="32"><br>Group Topic: <input name="MG"
maxlength="32"><br><i>Reboot required to apply changes. </i><a
2020-05-17 20:09:39 +02:00
href="https://github.com/Aircoookie/WLED/wiki/MQTT" target="_blank">MQTT info
</a><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>Poll Hue light <input name="HL" type="number" min="1" max="99"> every
<input name="HI" type="number" min="100" max="65000"> 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 Bridge IP:<br><input name="H0"
type="number" min="0" max="255"> . <input name="H1" type="number" min="0"
max="255"> . <input name="H2" type="number" min="0" max="255"> . <input
name="H3" type="number" min="0" max="255"><br><b>
Press the pushlink button on the bridge, after that save this page!</b><br>
2020-05-17 21:39:57 +02:00
(when first connecting)<br>Hue status: <span class="sip">Disabled in this build
2020-05-17 20:09:39 +02:00
</span><hr><button type="button" onclick="B()">Back</button><button
type="submit">Save</button></form></body></html>)=====";
2018-02-20 22:29:48 +01:00
2018-09-17 11:15:08 +02:00
2020-05-17 20:09:39 +02:00
// Autogenerated from wled00/data/settings_time.htm, do not edit!!
const char PAGE_settings_time[] PROGMEM = R"=====(<!DOCTYPE html><html lang="en"><head><meta name="viewport" content="width=500">
<meta charset="utf-8"><title>Time Settings</title><script>
var d=document;function H(){window.open("https://github.com/Aircoookie/WLED/wiki/Settings#time-settings")}function B(){window.open("/settings","_self")}function S(){BTa(),GetV(),Cs(),FC()}function gId(t){return d.getElementById(t)}function Cs(){gId("cac").style.display="none",gId("coc").style.display="block",gId("ccc").style.display="none",gId("ca").selected&&(gId("cac").style.display="block"),gId("cc").selected&&(gId("coc").style.display="none",gId("ccc").style.display="block"),gId("cn").selected&&(gId("coc").style.display="none")}function BTa(){var t="<tr><th>Active</th><th>Hour</th><th>Minute</th><th>Preset</th><th>M</th><th>T</th><th>W</th><th>T</th><th>F</th><th>S</th><th>S</th></tr>";for(i=0;i<8;i++)for(t+='<tr><td><input name="W'+i+'" id="W'+i+'" type="number" style="display:none"><input id="W'+i+'0" type="checkbox"></td><td><input name="H'+i+'" class="small" type="number" min="0" max="24"></td><td><input name="N'+i+'" class="small" type="number" min="0" max="59"></td><td><input name="T'+i+'" class="small" type="number" min="0" max="250"></td>',j=1;j<8;j++)t+='<td><input id="W'+i+j+'" type="checkbox"></td>';for(t+='<tr><td><input name="W8" id="W8" type="number" style="display:none"><input id="W80" type="checkbox"></td><td>Sunrise<input name="H8" class="small" value="255" type="hidden"></td><td><input name="N8" class="small" type="number" min="-59" max="59"></td><td><input name="T8" class="small" type="number" min="0" max="250"></td>',j=1;j<8;j++)t+='<td><input id="W8'+j+'" type="checkbox"></td>';for(t+='<tr><td><input name="W9" id="W9" type="number" style="display:none"><input id="W90" type="checkbox"></td><td>Sunset<input name="H9" class="small" value="255" type="hidden"></td><td><input name="N9" class="small" type="number" min="-59" max="59"><td><input name="T9" class="small" type="number" min="0" max="250"></td>',j=1;j<8;j++)t+='<td><input id="W9'+j+'" type="checkbox"></td>';gId("TMT").innerHTML=t}function FC(){for(j=0;j<8;j++)for(i=0;i<10;i++)gId("W"+i+j).checked=gId("W"+i).value>>j&1}function Wd(){for(a=[0,0,0,0,0,0,0,0,0,0],i=0;i<10;i++){for(m=1,j=0;j<8;j++)a[i]+=gId("W"+i+j).checked*m,m*=2;gId("W"+i).value=a[i]}}function GetV() {
%CSS%%SCSS%</head><body onload="S()"><form
2021-03-05 09:50:59 +01:00
id="form_s" name="Sf" method="post" onsubmit="Wd()"><div class="toprow"><div
class="helpB"><button type="button" onclick="H()">?</button></div><button
type="button" onclick="B()">Back</button><button type="submit">Save</button><hr>
</div><h2>Time setup</h2>Get time from NTP server: <input type="checkbox"
name="NT"><br><input name="NS" maxlength="32"><br>Use 24h format: <input
type="checkbox" name="CF"><br>Time zone: <select name="TZ"><option value="0"
selected="selected">GMT(UTC)</option><option value="1">GMT/BST</option><option
value="2">CET/CEST</option><option value="3">EET/EEST</option><option value="4">
US-EST/EDT</option><option value="5">US-CST/CDT</option><option value="6">
US-MST/MDT</option><option value="7">US-AZ</option><option value="8">US-PST/PDT
</option><option value="9">CST(AWST)</option><option value="10">JST(KST)
</option><option value="11">AEST/AEDT</option><option value="12">NZST/NZDT
</option><option value="13">North Korea</option><option value="14">IST (India)
</option><option value="15">CA-Saskatchewan</option><option value="16">ACST
</option><option value="17">ACST/ACDT</option><option value="18">HST (Hawaii)
</option></select><br>UTC offset: <input name="UO" type="number" min="-65500"
max="65500" required> seconds (max. 18 hours)<br>Current local time is <span
2021-03-08 06:27:00 +01:00
class="times">unknown</span>.<br>Latitude (N): <input name="LT" type="number"
min="-66.6" max="66.6" step="0.01"> Longitude (E): <input name="LN"
type="number" min="-180" max="180" step="0.01"><div id="sun" class="times">
</div><h3>Clock</h3>Clock Overlay: <select name="OL" onchange="Cs()"><option
value="0" id="cn" selected="selected">None</option><option value="1" id="ca">
Analog Clock</option><option value="2">Single Digit Clock</option><option
value="3" id="cc">Cronixie Clock</option></select><br><div id="coc">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="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="CX" maxlength="6"><br>Cronixie Backlight: <input type="checkbox"
name="CB"><br></div>Countdown Mode: <input type="checkbox" name="CE"><br>
Countdown Goal:<br>Year: 20 <input name="CY" class="small" type="number"
min="0" max="99" required> Month: <input name="CI" class="small" type="number"
min="1" max="12" required> Day: <input name="CD" class="small" type="number"
min="1" max="31" required><br>Hour: <input name="CH" class="small"
type="number" min="0" max="23" required> Minute: <input name="CM" class="small"
type="number" min="0" max="59" required> Second: <input name="CS" class="small"
type="number" min="0" max="59" required><br><h3>Macro presets</h3><b>
Macros have moved!</b><br><i>
2020-11-08 23:44:10 +01:00
Presets now also can be used as macros to save both JSON and HTTP API commands.
<br>Just enter the preset id below!</i> <i>
Use 0 for the default action instead of a preset</i><br>Alexa On/Off Preset:
<input name="A0" type="number" min="0" max="250" required> <input name="A1"
2020-11-15 22:52:59 +01:00
type="number" min="0" max="250" required><br>Button short press Preset: <input
name="MP" type="number" min="0" max="250" required><br>Long Press: <input
name="ML" type="number" min="0" max="250" required> Double press: <input
2020-11-08 23:44:10 +01:00
name="MD" type="number" min="0" max="250" required><br>Countdown-Over Preset:
<input name="MC" type="number" min="0" max="250" required><br>
Timed-Light-Over Presets: <input name="MN" type="number" min="0" max="250"
required><br><h3>Time-controlled presets</h3><div style="display:inline-block">
<table id="TMT"></table></div><hr><button type="button" onclick="B()">Back
</button><button type="submit">Save</button></form></body></html>)=====";
2018-02-20 22:29:48 +01:00
2018-09-17 11:15:08 +02:00
2020-05-17 20:09:39 +02:00
// Autogenerated from wled00/data/settings_sec.htm, do not edit!!
const char PAGE_settings_sec[] PROGMEM = R"=====(<!DOCTYPE html><html lang="en"><head><meta name="viewport" content="width=500">
<meta charset="utf-8"><title>Misc Settings</title><script>
function H(){window.open("https://github.com/Aircoookie/WLED/wiki/Settings#security-settings")}function B(){window.open("/settings","_self")}function U(){window.open("/update","_self")}function GetV() {var d=document;
%CSS%%SCSS%</head><body onload="GetV()">
2021-03-05 09:50:59 +01:00
<form id="form_s" name="Sf" method="post"><div class="toprow"><div
class="helpB"><button type="button" onclick="H()">?</button></div><button
type="button" onclick="B()">Back</button><button type="submit">Save & Reboot
</button><hr></div><h2>Security & Update setup</h2>
Lock wireless (OTA) software update: <input type="checkbox" name="NO"><br>
Passphrase: <input type="password" name="OP" maxlength="32"><br>
2020-05-17 20:09:39 +02:00
To enable OTA, for security reasons you need to also enter the correct password!
<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="OW">
<br><br>Factory reset: <input type="checkbox" name="RS"><br>
All settings and presets will be erased.<br><br>
HTTP traffic is unencrypted. An attacker in the same network can intercept form data!
2020-05-17 20:09:39 +02:00
<h3>Software Update</h3><button type="button" onclick="U()">Manual OTA Update
</button><br>Enable ArduinoOTA: <input type="checkbox" name="AO"><br><h3>About
</h3><a href="https://github.com/Aircoookie/WLED/" target="_blank">WLED</a>
2021-05-01 19:38:13 +02:00
version 0.12.2-bl2<br><br><a
href="https://github.com/Aircoookie/WLED/wiki/Contributors-and-credits"
2020-05-17 20:09:39 +02:00
target="_blank">Contributors, dependencies and special thanks</a><br>
A huge thank you to everyone who helped me create WLED!<br><br>
(c) 2016-2021 Christian Schwinne<br><i>Licensed under the <a
2020-11-15 12:41:51 +01:00
href="https://github.com/Aircoookie/WLED/blob/master/LICENSE" target="_blank">
MIT license</a></i><br><br>Server message: <span class="sip">Response error!
</span><hr><button type="button" onclick="B()">Back</button><button
type="submit">Save & Reboot</button></form></body></html>)=====";
2020-05-17 20:09:39 +02:00
// Autogenerated from wled00/data/settings_um.htm, do not edit!!
const char PAGE_settings_um[] PROGMEM = R"=====(<!DOCTYPE html><html><head lang="en"><meta charset="utf-8"><meta
name="viewport" content="width=500"><title>UI Settings</title><script>
2021-05-01 19:38:13 +02:00
var owner,locip,urows,d=document,umCfg={},pins=[6,7,8,9,10,11],pinO=["reserved","reserved","reserved","reserved","reserved","reserved"],loc=!1;function gId(e){return d.getElementById(e)}function isO(e){return e&&"object"==typeof e&&!Array.isArray(e)}function H(){window.open("https://github.com/Aircoookie/WLED/wiki/Settings#usermod-settings")}function B(){window.open("/settings","_self")}function S(){"file:"==window.location.protocol&&(loc=!0,(locip=localStorage.getItem("locIp"))||(locip=prompt("File Mode. Please enter WLED IP!"),localStorage.setItem("locIp",locip))),ldS()}function check(e,n){var o=e.name.replace("[]","").substr(-3);if("number"==e.type&&"pin"==o.substr(0,3))for(var i=0;i<pins.length;i++)if(n!=pinO[i]){if(e.value==pins[i]||e.value<-1||e.value>39){e.style.color="red";break}e.style.color=e.value>33?"orange":"#fff"}}function getPins(e){if(isO(e))for(const[o,i]of Object.entries(e))if(isO(i))owner=o,getPins(i);else if("pin"==o.replace("[]","").substr(-3))if(Array.isArray(i))for(var n=0;n<i.length;n++)i[n]>=0&&(pins.push(i[n]),pinO.push(owner));else i>=0&&(pins.push(i),pinO.push(owner));else if(Array.isArray(i))for(n=0;n<i.length;n++)getPins(i[n]);console.log(pins)}function addField(e,n,o,i=!1){if(isO(o))for(const[n,i]of Object.entries(o))addField(e,n,i);else if(Array.isArray(o))for(var r=0;r<o.length;r++)addField(e,n,o[r],!0);else{var t,s;switch(typeof o){case"boolean":t="checkbox",s=o?'checked value="on"':"";break;case"number":t="number",s=`value="${parseInt(o,10)}"`;break;case"string":default:t="text",s=`value="${o}"`}"checkbox"==t&&(urows+=`<input type="hidden" name="${e}_${n}${i?"[]":""}" value="off">`),urows+=`${n}: <input type="${t}" name="${e}_${n}${i?"[]":""}" ${s} oninput="check(this,'${e}')"><br>`}}function ldS(){fetch((loc?"http://"+locip:"")+"/cfg.json",{method:"get"}).then(e=>(e.ok||(gId("lserr").style.display="inline"),e.json())).then(e=>{if(umCfg=e.um,getPins(e),urows="",isO(umCfg)){for(const[e,n]of Object.entries(umCfg))urows+=`<hr><h3>${e}</h3>`,addField(e,"unknown",n);gId("um").innerHTML=urows}}).catch((function(e){gId("lserr").style.display="inline",console.log(e)}))}function svS(e){e.preventDefault(),console.log(d.Sf),d.Sf.checkValidity()&&d.Sf.submit()}function GetV(){}
</script>%CSS%%SCSS%</head><body onload="S()"><form
id="form_s" name="Sf" method="post" onsubmit="svS(event)"><div class="toprow">
<div class="helpB"><button type="button" onclick="H()">?</button></div><button
type="button" onclick="B()">Back</button><button type="submit">Save</button><br>
<span id="lssuc" style="color:green;display:none">&#10004; Configuration saved!
</span> <span id="lserr" style="color:red;display:none">
&#9888; Could not load configuration.</span><hr></div><h2>Usermod Setup</h2><div
id="um">Loading settings...</div><hr><button type="button" onclick="B()">Back
</button><button type="submit">Save</button></form></body></html>)=====";