Finished implementing most time-related settings
Use wled default vendor zone for NTP server
This commit is contained in:
parent
bbb27dd70b
commit
37f91c4d50
Binary file not shown.
143
wled00/htmls01.h
143
wled00/htmls01.h
@ -37,7 +37,7 @@ const char PAGE_settings_wifi1[] PROGMEM = R"=====(
|
|||||||
<body onload="GetV()">
|
<body onload="GetV()">
|
||||||
<form id="form_s" name="Sf" method="post">
|
<form id="form_s" name="Sf" method="post">
|
||||||
<div class="helpB"><button type="button" onclick="H()">?</button></div>
|
<div class="helpB"><button type="button" onclick="H()">?</button></div>
|
||||||
<button type="button" onclick="B()">Back</button><button type="submit" name="SUBM">Save & Reboot</button><hr>
|
<button type="button" onclick="B()">Back</button><button type="submit">Save & Reboot</button><hr>
|
||||||
<h2>WiFi setup</h2>
|
<h2>WiFi setup</h2>
|
||||||
<h3>Connect to existing network</h3>
|
<h3>Connect to existing network</h3>
|
||||||
Network name (SSID, empty to not connect): <br><input name="CSSID" maxlength="32"> <br>
|
Network name (SSID, empty to not connect): <br><input name="CSSID" maxlength="32"> <br>
|
||||||
@ -67,7 +67,7 @@ Hide AP name: <input type="checkbox" name="APHSSID"> <br>
|
|||||||
AP password (leave empty for open): <br> <input type="password" name="APPASS" maxlength="63"> <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>
|
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 IP: <span class="sip"> Not active </span> <hr>
|
||||||
<button type="button" onclick="B()">Back</button><button type="submit" name="SUBM">Save & Reboot</button>
|
<button type="button" onclick="B()">Back</button><button type="submit">Save & Reboot</button>
|
||||||
</form>
|
</form>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@ -83,7 +83,7 @@ const char PAGE_settings_leds1[] PROGMEM = R"=====(
|
|||||||
<body onload="GetV()">
|
<body onload="GetV()">
|
||||||
<form id="form_s" name="Sf" method="post">
|
<form id="form_s" name="Sf" method="post">
|
||||||
<div class="helpB"><button type="button" onclick="H()">?</button></div>
|
<div class="helpB"><button type="button" onclick="H()">?</button></div>
|
||||||
<button type="button" onclick="B()">Back</button><button type="submit" name="SUBM">Save</button><hr>
|
<button type="button" onclick="B()">Back</button><button type="submit">Save</button><hr>
|
||||||
<h2>LED setup</h2>
|
<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="LEDCN" type="number" min="1" max="255" required> <br>
|
||||||
<i>The default boot color is always saved in preset slot 0.</i><br>
|
<i>The default boot color is always saved in preset slot 0.</i><br>
|
||||||
@ -118,7 +118,7 @@ Fade down: <input type="checkbox" name="TLFDE"><br>
|
|||||||
<h3>Advanced</h3>
|
<h3>Advanced</h3>
|
||||||
Reverse LED order (rotate 180): <input type="checkbox" name="LEDRV"><br>
|
Reverse LED order (rotate 180): <input type="checkbox" name="LEDRV"><br>
|
||||||
WARLS offset: <input name="WOFFS" type="number" min="-255" max="255" required><hr>
|
WARLS offset: <input name="WOFFS" type="number" min="-255" max="255" required><hr>
|
||||||
<button type="button" onclick="B()">Back</button><button type="submit" name="SUBM">Save</button>
|
<button type="button" onclick="B()">Back</button><button type="submit">Save</button>
|
||||||
</form>
|
</form>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@ -137,7 +137,7 @@ const char PAGE_settings_ui1[] PROGMEM = R"=====(
|
|||||||
<body onload="S()">
|
<body onload="S()">
|
||||||
<form id="form_s" name="Sf" method="post">
|
<form id="form_s" name="Sf" method="post">
|
||||||
<div class="helpB"><button type="button" onclick="H()">?</button></div>
|
<div class="helpB"><button type="button" onclick="H()">?</button></div>
|
||||||
<button type="button" onclick="B()">Back</button><button type="submit" name="SUBM">Save</button><hr>
|
<button type="button" onclick="B()">Back</button><button type="submit">Save</button><hr>
|
||||||
<h2>Web Setup</h2>
|
<h2>Web Setup</h2>
|
||||||
Server description: <input name="DESC" maxlength="32"><br>
|
Server description: <input name="DESC" maxlength="32"><br>
|
||||||
Use HSB sliders instead of RGB by default: <input type="checkbox" name="COLMD"><br>
|
Use HSB sliders instead of RGB by default: <input type="checkbox" name="COLMD"><br>
|
||||||
@ -170,7 +170,7 @@ Custom shadow: <input maxlength=9 name="CCOL4"><br>
|
|||||||
Custom text color: <input maxlength=9 name="CCOL5"><br></div>
|
Custom text color: <input maxlength=9 name="CCOL5"><br></div>
|
||||||
Use font: <input maxlength=32 name="CFONT"><br>
|
Use font: <input maxlength=32 name="CFONT"><br>
|
||||||
Make sure the font you use is installed on your system!<br>
|
Make sure the font you use is installed on your system!<br>
|
||||||
<hr><button type="button" onclick="B()">Back</button><button type="submit" name="SUBM">Save</button>
|
<hr><button type="button" onclick="B()">Back</button><button type="submit">Save</button>
|
||||||
</form>
|
</form>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@ -186,7 +186,7 @@ const char PAGE_settings_sync1[] PROGMEM = R"=====(
|
|||||||
<body onload="GetV()">
|
<body onload="GetV()">
|
||||||
<form id="form_s" name="Sf" method="post">
|
<form id="form_s" name="Sf" method="post">
|
||||||
<div class="helpB"><button type="button" onclick="H()">?</button></div>
|
<div class="helpB"><button type="button" onclick="H()">?</button></div>
|
||||||
<button type="button" onclick="B()">Back</button><button type="submit" name="SUBM">Save</button><hr>
|
<button type="button" onclick="B()">Back</button><button type="submit">Save</button><hr>
|
||||||
<h2>Sync setup</h2>
|
<h2>Sync setup</h2>
|
||||||
<h3>Button setup</h3>
|
<h3>Button setup</h3>
|
||||||
On/Off button enabled: <input type="checkbox" name="BTNON">
|
On/Off button enabled: <input type="checkbox" name="BTNON">
|
||||||
@ -217,7 +217,7 @@ Then, receive <input type="checkbox" name="HURIO"> On/Off, <input type="checkbox
|
|||||||
<!--After device color update, ignore Hue updates for <input name="HUELI" type="number" min="0" max="255" required> minutes<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>
|
Hue status: <span class="hms"> Internal ESP Error! </span>
|
||||||
<hr>
|
<hr>
|
||||||
<button type="button" onclick="B()">Back</button><button type="submit" name="SUBM">Save</button>
|
<button type="button" onclick="B()">Back</button><button type="submit">Save</button>
|
||||||
</form>
|
</form>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@ -226,77 +226,86 @@ Hue status: <span class="hms"> Internal ESP Error! </span>
|
|||||||
const char PAGE_settings_time0[] PROGMEM = R"=====(
|
const char PAGE_settings_time0[] PROGMEM = R"=====(
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html><head><title>Time Settings</title>
|
<html><head><title>Time Settings</title>
|
||||||
<script>function H(){window.open("https://github.com/Aircoookie/WLED/wiki/Settings#time-settings");}function B(){window.open("/settings","_self");}function GetV(){var d = document;
|
<script>function H(){window.open("https://github.com/Aircoookie/WLED/wiki/Settings#time-settings");}function B(){window.open("/settings","_self");}function S(){GetV();Cs();}function gId(s){return document.getElementById(s);}function Cs(){gId("cac").style.display="none";gId("coc").style.display="block";gId("ccc").style.display="none";if (gId("ca").selected){gId("cac").style.display="block";}if (gId("cc").selected){gId("coc").style.display="none";gId("ccc").style.display="block";}if (gId("cn").selected){gId("coc").style.display="none";}}function GetV(){var d = document;
|
||||||
)=====";
|
)=====";
|
||||||
const char PAGE_settings_time1[] PROGMEM = R"=====(
|
const char PAGE_settings_time1[] PROGMEM = R"=====(
|
||||||
</head>
|
</head>
|
||||||
<body onload="GetV()">
|
<body onload="S()">
|
||||||
<form id="form_s" name="Sf" method="post">
|
<form id="form_s" name="Sf" method="post">
|
||||||
<div class="helpB"><button type="button" onclick="H()">?</button></div>
|
<div class="helpB"><button type="button" onclick="H()">?</button></div>
|
||||||
<button type="button" onclick="B()">Back</button><button type="submit" name="SUBM">Save</button><hr>
|
<button type="button" onclick="B()">Back</button><button type="submit">Save</button><hr>
|
||||||
<h2>Time setup</h2>
|
<h2>Time setup</h2>
|
||||||
Get time from NTP server: <input type="checkbox" name="NTPON"><br>
|
Get time from NTP server: <input type="checkbox" name="NTPON"><br>
|
||||||
<!--NTP server: <input name="NTPSR" maxlength="32"><br>
|
Use 24h format: <input type="checkbox" name="CL24H"><br>
|
||||||
Time zone:
|
Time zone:
|
||||||
<select name="TZONE">
|
<select name="TZONE">
|
||||||
<option value="1" selected>GMT(UTC)</option>
|
<option value="0" selected>GMT(UTC)</option>
|
||||||
<!--<option value="2">GMT/BST</option>-->
|
<option value="1">GMT/BST</option>
|
||||||
<option value="3">CET/CEST</option>
|
<option value="2">CET/CEST</option>
|
||||||
<!--<option value="4">EET/EEST</option>
|
<option value="3">EET/EEST</option>
|
||||||
<option value="5">US-EST/EDT</option>
|
<option value="4">US-EST/EDT</option>
|
||||||
<option value="6">US-CST/CDT</option>
|
<option value="5">US-CST/CDT</option>
|
||||||
<option value="7">US-MST/MDT</option>
|
<option value="6">US-MST/MDT</option>
|
||||||
<option value="8">US-AZ</option>
|
<option value="7">US-AZ</option>
|
||||||
<option value="9">US-PST/PDT</option>
|
<option value="8">US-PST/PDT</option>
|
||||||
<option value="10">CST(AWST)</option>
|
<option value="9">CST(AWST)</option>
|
||||||
<option value="11">JST(KST)</option>
|
<option value="10">JST(KST)</option>
|
||||||
<option value="12">AEST/AEDT</option>
|
<option value="11">AEST/AEDT</option>
|
||||||
<option value="13">NZST/NZDT</option>-->
|
<option value="12">NZST/NZDT</option>
|
||||||
</select><br>
|
</select><br>
|
||||||
Hour/Min offset: <input name="TOFSH" type="number" min="-255" max="255" required> <input name="TOFSM" type="number" min="-255" max="255" required><br>-->
|
UTC offset: <input name="UTCOS" type="number" min="-65500" max="65500" required> seconds (max. 18 hours)<br>
|
||||||
Current local time is <span class="times">unknown</span>.
|
Current local time is <span class="times">unknown</span>.
|
||||||
<h3>Weather</h3>
|
<h3>Clock</h3>
|
||||||
Coming soon! Not yet implemented!
|
Clock Overlay:
|
||||||
<!--Get yours on open weather API.<br>
|
<select name="OLMDE" onchange="Cs()">
|
||||||
City code: <input name="WCITY" maxlength="32"><br>
|
<option value="0" id="cn" selected>None</option>
|
||||||
Change color depending on weather: <input type="checkbox" name="WCCOL"><br>
|
<option value="1">Static color</option>
|
||||||
Daylight Emulation: <input type="checkbox" name="WDAYL"><br>
|
<option value="2" id="ca">Analog Clock</option>
|
||||||
Reverse (turns on at sunset): <input type="checkbox" name="WREVL"><br>
|
<option value="3">Single Digit Clock</option>
|
||||||
Fade duration: <input name="WSDUR" type="number" min="0" max="255" required><br>
|
<option value="4" id="cc">Cronixie Clock</option>
|
||||||
Sunrise/Sunset Offset: <input name="WSOFS" type="number" min="-255" max="255" required>-->
|
</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>
|
||||||
|
<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>
|
||||||
|
</div>
|
||||||
|
<div id="ccc">
|
||||||
|
Cronixie Display: <input name="CRONX" maxlength="6"><br>
|
||||||
|
Cronixie Backlight: <input type="checkbox" name="CROBL"><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>
|
||||||
<h3>Advanced Macros</h3>
|
<h3>Advanced Macros</h3>
|
||||||
Coming soon! Not yet implemented!
|
Define API macros here:<br>
|
||||||
<!--Define API macros here:<br>
|
1: <input name="MC1" maxlength="64"><br>
|
||||||
0: <input name="MCR00" maxlength="64"><br>
|
2: <input name="MC2" maxlength="64"><br>
|
||||||
1: <input name="MCR01" maxlength="64"><br>
|
3: <input name="MC3" maxlength="64"><br>
|
||||||
2: <input name="MCR02" maxlength="64"><br>
|
4: <input name="MC4" maxlength="64"><br>
|
||||||
3: <input name="MCR03" maxlength="64"><br>
|
5: <input name="MC5" maxlength="64"><br>
|
||||||
4: <input name="MCR04" maxlength="64"><br>
|
6: <input name="MC6" maxlength="64"><br>
|
||||||
5: <input name="MCR05" maxlength="64"><br>
|
7: <input name="MC7" maxlength="64"><br>
|
||||||
6: <input name="MCR06" maxlength="64"><br>
|
8: <input name="MC8" maxlength="64"><br>
|
||||||
7: <input name="MCR07" maxlength="64"><br>
|
9: <input name="MC9" maxlength="64"><br>
|
||||||
8: <input name="MCR08" maxlength="64"><br>
|
10: <input name="MC10" maxlength="64"><br>
|
||||||
9: <input name="MCR09" maxlength="64"><br>
|
11: <input name="MC11" maxlength="64"><br>
|
||||||
10: <input name="MCR10" maxlength="64"><br>
|
12: <input name="MC12" maxlength="64"><br>
|
||||||
11: <input name="MCR11" maxlength="64"><br>
|
13: <input name="MC13" maxlength="64"><br>
|
||||||
12: <input name="MCR12" maxlength="64"><br>
|
14: <input name="MC14" maxlength="64"><br>
|
||||||
13: <input name="MCR13" maxlength="64"><br>
|
15: <input name="MC15" maxlength="64"><br>
|
||||||
14: <input name="MCR14" maxlength="64"><br>
|
16: <input name="MC16" maxlength="64"><br>
|
||||||
15: <input name="MCR15" maxlength="64"><br>
|
|
||||||
<br>
|
<br>
|
||||||
<i>Use -1 to use the default action instead of a macro</i><br>
|
<i>Use 0 for the default action instead of a macro</i><br>
|
||||||
<--1st Time-Controlled Macro:
|
Time controlled macros coming soon!<br>
|
||||||
Alexa On/Off Macros: <input name="MCA0I" type="number" min="-1" max="15" required> <input name="MCA0O" type="number" min="-1" max="15" required><br>
|
Boot Macro: <input name="MCRBT" type="number" min="0" max="16" required><br>
|
||||||
<--Emulate 2nd Alexa device:
|
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>
|
||||||
Emulate 3rd Alexa device:
|
Countdown-Over Macro: <input name="MCNTD" type="number" min="0" max="16" required><br>
|
||||||
Button Macro: <input name="MCBT0" type="number" min="-1" max="15" required><br>
|
Timed-Light-Over Macro: <input name="MCNLO" type="number" min="0" max="16" required><br>
|
||||||
Button Long Press Macro: <input name="MCBT1" type="number" min="-1" max="15" required><br>
|
|
||||||
<--Sunrise Macro
|
|
||||||
Sunset Macro
|
|
||||||
Countdown-Over Macro: <input name="MCNTD" type="number" min="-1" max="15" required><br>-->
|
|
||||||
<hr>
|
<hr>
|
||||||
<button type="button" onclick="B()">Back</button><button type="submit" name="SUBM">Save</button>
|
<button type="button" onclick="B()">Back</button><button type="submit">Save</button>
|
||||||
</form>
|
</form>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@ -313,7 +322,7 @@ const char PAGE_settings_sec1[] PROGMEM = R"=====(
|
|||||||
<body onload="GetV()">
|
<body onload="GetV()">
|
||||||
<form id="form_s" name="Sf" method="post">
|
<form id="form_s" name="Sf" method="post">
|
||||||
<div class="helpB"><button type="button" onclick="H()">?</button></div>
|
<div class="helpB"><button type="button" onclick="H()">?</button></div>
|
||||||
<button type="button" onclick="B()">Back</button><button type="submit" name="SUBM">Save & Reboot</button><hr>
|
<button type="button" onclick="B()">Back</button><button type="submit">Save & Reboot</button><hr>
|
||||||
<h2>Security & Update setup</h2>
|
<h2>Security & Update setup</h2>
|
||||||
Enable OTA lock: <input type="checkbox" name="NOOTA"><br>
|
Enable OTA lock: <input type="checkbox" name="NOOTA"><br>
|
||||||
Passphrase: <input type="password" name="OPASS" maxlength="32"><br>
|
Passphrase: <input type="password" name="OPASS" maxlength="32"><br>
|
||||||
@ -343,7 +352,7 @@ Enable ArduinoOTA: <input type="checkbox" name="AROTA"><br>
|
|||||||
<i><a href="https://github.com/Aircoookie/Espalexa">Espalexa</a> by Aircoookie (modified)</i><br><br>
|
<i><a href="https://github.com/Aircoookie/Espalexa">Espalexa</a> by Aircoookie (modified)</i><br><br>
|
||||||
<i>UI icons by <a href="https://linearicons.com">Linearicons</a> created by <a href="https://perxis.com">Perxis</a>! (CC-BY-SA 4.0)</i> <br><br>
|
<i>UI icons by <a href="https://linearicons.com">Linearicons</a> created by <a href="https://perxis.com">Perxis</a>! (CC-BY-SA 4.0)</i> <br><br>
|
||||||
Server message: <span class="msg"> Response error! </span><hr>
|
Server message: <span class="msg"> Response error! </span><hr>
|
||||||
<button type="button" onclick="B()">Back</button><button type="submit" name="SUBM">Save & Reboot</button>
|
<button type="button" onclick="B()">Back</button><button type="submit">Save & Reboot</button>
|
||||||
</form>
|
</form>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -120,7 +120,7 @@ int year(time_t t); // the year for the given time
|
|||||||
time_t now(); // return the current time as seconds since Jan 1 1970
|
time_t now(); // return the current time as seconds since Jan 1 1970
|
||||||
void setTime(time_t t);
|
void setTime(time_t t);
|
||||||
void setTime(int hr,int min,int sec,int day, int month, int yr);
|
void setTime(int hr,int min,int sec,int day, int month, int yr);
|
||||||
void getUnixTime(int hr,int min,int sec,int day, int month, int yr); //added by Aircoookie to get epoch time
|
time_t getUnixTime(int hr,int min,int sec,int day, int month, int yr); //added by Aircoookie to get epoch time
|
||||||
void adjustTime(long adjustment);
|
void adjustTime(long adjustment);
|
||||||
|
|
||||||
/* date strings */
|
/* date strings */
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
#include "WS2812FX.h"
|
#include "WS2812FX.h"
|
||||||
|
|
||||||
//version in format yymmddb (b = daily build)
|
//version in format yymmddb (b = daily build)
|
||||||
#define VERSION 1803061
|
#define VERSION 1803141
|
||||||
const String versionString = "0.6.0_dev";
|
const String versionString = "0.6.0_dev";
|
||||||
|
|
||||||
//AP and OTA default passwords (change them!)
|
//AP and OTA default passwords (change them!)
|
||||||
@ -100,7 +100,7 @@ uint8_t effectIntensityDefault = 128;
|
|||||||
//NTP stuff
|
//NTP stuff
|
||||||
boolean ntpEnabled = false;
|
boolean ntpEnabled = false;
|
||||||
IPAddress ntpServerIP;
|
IPAddress ntpServerIP;
|
||||||
const char* ntpServerName = "pool.ntp.org";
|
const char* ntpServerName = "0.wled.pool.ntp.org";
|
||||||
//custom chase
|
//custom chase
|
||||||
uint8_t cc_numPrimary = 2;
|
uint8_t cc_numPrimary = 2;
|
||||||
uint8_t cc_numSecondary = 4;
|
uint8_t cc_numSecondary = 4;
|
||||||
@ -113,9 +113,10 @@ uint8_t cc_start = 0;
|
|||||||
//alexa
|
//alexa
|
||||||
boolean alexaEnabled = true;
|
boolean alexaEnabled = true;
|
||||||
String alexaInvocationName = "Light";
|
String alexaInvocationName = "Light";
|
||||||
uint8_t alexaOnMacro = 0, alexaOffMacro = 0;
|
|
||||||
uint8_t buttonMacro = 0, countdownMacro = 0;
|
uint8_t macroBoot = 0, macroNl = 0;
|
||||||
uint8_t bootMacro = 0;
|
uint8_t macroAlexaOn = 0, macroAlexaOff = 0;
|
||||||
|
uint8_t macroButton = 0, macroCountdown = 0, macroLongPress = 0;
|
||||||
|
|
||||||
unsigned long countdownTime = 1514764800L;
|
unsigned long countdownTime = 1514764800L;
|
||||||
|
|
||||||
@ -186,8 +187,8 @@ int utcOffsetSecs = 0;
|
|||||||
//overlay stuff
|
//overlay stuff
|
||||||
uint8_t overlayDefault = 0;
|
uint8_t overlayDefault = 0;
|
||||||
uint8_t overlayCurrent = 0;
|
uint8_t overlayCurrent = 0;
|
||||||
int overlayMin = 0, overlayMax = 79; //bb: 35, 46, t: 0, 79
|
uint8_t overlayMin = 0, overlayMax = ledcount-1;
|
||||||
int analogClock12pixel = 25; //bb: 41, t: 25
|
uint8_t analogClock12pixel = 0;
|
||||||
boolean analogClockSecondsTrail = false;
|
boolean analogClockSecondsTrail = false;
|
||||||
boolean analogClock5MinuteMarks = false;
|
boolean analogClock5MinuteMarks = false;
|
||||||
uint8_t overlaySpeed = 200;
|
uint8_t overlaySpeed = 200;
|
||||||
@ -205,7 +206,7 @@ String cronixieDisplay = "HHMMSS";
|
|||||||
byte dP[]{0,0,0,0,0,0};
|
byte dP[]{0,0,0,0,0,0};
|
||||||
bool useAMPM = false;
|
bool useAMPM = false;
|
||||||
bool cronixieBacklight = true;
|
bool cronixieBacklight = true;
|
||||||
bool overlayCountdown = false;
|
bool countdownMode = false;
|
||||||
bool cronixieInit = false;
|
bool cronixieInit = false;
|
||||||
|
|
||||||
int arlsTimeoutMillis = 2500;
|
int arlsTimeoutMillis = 2500;
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
//4 -> 0.5.0 and up
|
//4 -> 0.5.0 and up
|
||||||
//5 -> 0.6.0_dev and up
|
//5 -> 0.6.0_dev and up
|
||||||
|
|
||||||
|
//todo add settings
|
||||||
void clearEEPROM()
|
void clearEEPROM()
|
||||||
{
|
{
|
||||||
for (int i = 0; i < EEPSIZE; i++)
|
for (int i = 0; i < EEPSIZE; i++)
|
||||||
@ -176,6 +177,35 @@ void saveSettingsToEEPROM()
|
|||||||
EEPROM.write(2105, hueApplyColor);
|
EEPROM.write(2105, hueApplyColor);
|
||||||
EEPROM.write(2106, huePollLightId);
|
EEPROM.write(2106, huePollLightId);
|
||||||
|
|
||||||
|
EEPROM.write(2150, overlayMin);
|
||||||
|
EEPROM.write(2151, overlayMax);
|
||||||
|
EEPROM.write(2152, analogClock12pixel);
|
||||||
|
EEPROM.write(2153, analogClock5MinuteMarks);
|
||||||
|
EEPROM.write(2154, analogClockSecondsTrail);
|
||||||
|
EEPROM.write(2155, countdownMode);
|
||||||
|
EEPROM.write(2156, countdownYear);
|
||||||
|
EEPROM.write(2157, countdownMonth);
|
||||||
|
EEPROM.write(2158, countdownDay);
|
||||||
|
EEPROM.write(2159, countdownHour);
|
||||||
|
EEPROM.write(2160, countdownMin);
|
||||||
|
EEPROM.write(2161, countdownSec);
|
||||||
|
setCountdown();
|
||||||
|
|
||||||
|
for (int i = 2165; i < 2171; ++i)
|
||||||
|
{
|
||||||
|
EEPROM.write(i, cronixieDisplay.charAt(i-2165));
|
||||||
|
}
|
||||||
|
EEPROM.write(2171, cronixieBacklight);
|
||||||
|
setCronixie();
|
||||||
|
|
||||||
|
EEPROM.write(2175, macroBoot);
|
||||||
|
EEPROM.write(2176, macroAlexaOn);
|
||||||
|
EEPROM.write(2177, macroAlexaOff);
|
||||||
|
EEPROM.write(2178, macroButton);
|
||||||
|
EEPROM.write(2179, macroLongPress);
|
||||||
|
EEPROM.write(2180, macroCountdown);
|
||||||
|
EEPROM.write(2181, macroNl);
|
||||||
|
|
||||||
EEPROM.commit();
|
EEPROM.commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -351,6 +381,35 @@ void loadSettingsFromEEPROM(bool first)
|
|||||||
hueApplyBri = EEPROM.read(2104);
|
hueApplyBri = EEPROM.read(2104);
|
||||||
hueApplyColor = EEPROM.read(2105);
|
hueApplyColor = EEPROM.read(2105);
|
||||||
huePollLightId = EEPROM.read(2106);
|
huePollLightId = EEPROM.read(2106);
|
||||||
|
overlayMin = EEPROM.read(2150);
|
||||||
|
overlayMax = EEPROM.read(2151);
|
||||||
|
analogClock12pixel = EEPROM.read(2152);
|
||||||
|
analogClock5MinuteMarks = EEPROM.read(2153);
|
||||||
|
analogClockSecondsTrail = EEPROM.read(2154);
|
||||||
|
countdownMode = EEPROM.read(2155);
|
||||||
|
countdownYear = EEPROM.read(2156);
|
||||||
|
countdownMonth = EEPROM.read(2157);
|
||||||
|
countdownDay = EEPROM.read(2158);
|
||||||
|
countdownHour = EEPROM.read(2159);
|
||||||
|
countdownMin = EEPROM.read(2160);
|
||||||
|
countdownSec = EEPROM.read(2161);
|
||||||
|
setCountdown();
|
||||||
|
|
||||||
|
cronixieDisplay = "";
|
||||||
|
for (int i = 2165; i < 2171; ++i)
|
||||||
|
{
|
||||||
|
if (EEPROM.read(i) == 0) break;
|
||||||
|
cronixieDisplay += char(EEPROM.read(i));
|
||||||
|
}
|
||||||
|
cronixieBacklight = EEPROM.read(2171);
|
||||||
|
|
||||||
|
macroBoot = EEPROM.read(2175);
|
||||||
|
macroAlexaOn = EEPROM.read(2176);
|
||||||
|
macroAlexaOff = EEPROM.read(2177);
|
||||||
|
macroButton = EEPROM.read(2178);
|
||||||
|
macroLongPress = EEPROM.read(2179);
|
||||||
|
macroCountdown = EEPROM.read(2180);
|
||||||
|
macroNl = EEPROM.read(2181);
|
||||||
}
|
}
|
||||||
|
|
||||||
bootPreset = EEPROM.read(389);
|
bootPreset = EEPROM.read(389);
|
||||||
@ -482,7 +541,7 @@ void applyMacro(uint8_t index)
|
|||||||
handleSet(mc);
|
handleSet(mc);
|
||||||
}
|
}
|
||||||
|
|
||||||
void saveMacro(uint8_t index, String mc)
|
void saveMacro(uint8_t index, String mc, bool sing=true) //only commit on single save, not in settings
|
||||||
{
|
{
|
||||||
index-=1;
|
index-=1;
|
||||||
if (index > 15) return;
|
if (index > 15) return;
|
||||||
@ -491,6 +550,6 @@ void saveMacro(uint8_t index, String mc)
|
|||||||
{
|
{
|
||||||
EEPROM.write(i, mc.charAt(i-s));
|
EEPROM.write(i, mc.charAt(i-s));
|
||||||
}
|
}
|
||||||
EEPROM.commit();
|
if (sing) EEPROM.commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -213,7 +213,7 @@ String getSettings(uint8_t subPage)
|
|||||||
resp += ds + "TZONE" + si + String(currentTimezone) + ";";
|
resp += ds + "TZONE" + si + String(currentTimezone) + ";";
|
||||||
resp += ds + "UTCOS" + v + utcOffsetSecs +";";
|
resp += ds + "UTCOS" + v + utcOffsetSecs +";";
|
||||||
resp += dg + "(\"times\")[0]" + ih + "\"" + getTimeString() + "\";";
|
resp += dg + "(\"times\")[0]" + ih + "\"" + getTimeString() + "\";";
|
||||||
resp += ds + "OLMDE" + si + String(currentOverlay) + ";";
|
resp += ds + "OLMDE" + si + String(overlayCurrent) + ";";
|
||||||
resp += ds + "OLIN1" + v + overlayMin +";";
|
resp += ds + "OLIN1" + v + overlayMin +";";
|
||||||
resp += ds + "OLIN2" + v + overlayMax +";";
|
resp += ds + "OLIN2" + v + overlayMax +";";
|
||||||
resp += ds + "OLINM" + v + analogClock12pixel +";";
|
resp += ds + "OLINM" + v + analogClock12pixel +";";
|
||||||
@ -221,11 +221,11 @@ String getSettings(uint8_t subPage)
|
|||||||
resp += ds + "OL5MI" + c + analogClock5MinuteMarks +";";
|
resp += ds + "OL5MI" + c + analogClock5MinuteMarks +";";
|
||||||
resp += ds + "CRONX" + v + "\"" + cronixieDisplay + "\";";
|
resp += ds + "CRONX" + v + "\"" + cronixieDisplay + "\";";
|
||||||
resp += ds + "CROBL" + c + cronixieBacklight +";";
|
resp += ds + "CROBL" + c + cronixieBacklight +";";
|
||||||
resp += ds + "CLCND" + c + overlayCountdown +";";
|
resp += ds + "CLCND" + c + countdownMode +";";
|
||||||
resp += ds + "CDGYR" + v + countdownYear +";";
|
resp += ds + "CDGYR" + v + countdownYear +";";
|
||||||
resp += ds + "CDGMN" + v + countdownMonth +";";
|
resp += ds + "CDGMN" + v + countdownMonth +";";
|
||||||
resp += ds + "CDGDY" + v + countdownDay +";";
|
resp += ds + "CDGDY" + v + countdownDay +";";
|
||||||
resp += ds + "CDGHR" + v + countdownHours +";";
|
resp += ds + "CDGHR" + v + countdownHour +";";
|
||||||
resp += ds + "CDGMI" + v + countdownMin +";";
|
resp += ds + "CDGMI" + v + countdownMin +";";
|
||||||
resp += ds + "CDGSC" + v + countdownSec +";";
|
resp += ds + "CDGSC" + v + countdownSec +";";
|
||||||
for (int i=1;i<17;i++)
|
for (int i=1;i<17;i++)
|
||||||
@ -238,7 +238,7 @@ String getSettings(uint8_t subPage)
|
|||||||
resp += ds + "MCB0D" + v + macroButton +";";
|
resp += ds + "MCB0D" + v + macroButton +";";
|
||||||
resp += ds + "MCB0L" + v + macroLongPress +";";
|
resp += ds + "MCB0L" + v + macroLongPress +";";
|
||||||
resp += ds + "MCNTD" + v + macroCountdown +";";
|
resp += ds + "MCNTD" + v + macroCountdown +";";
|
||||||
resp += ds + "MCLNO" + v + macroNightlight +";";
|
resp += ds + "MCNLO" + v + macroNl +";";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (subPage == 6)
|
if (subPage == 6)
|
||||||
|
@ -282,10 +282,7 @@ void handleSettingsSet(uint8_t subPage)
|
|||||||
for (int i=0;i<4;i++){
|
for (int i=0;i<4;i++){
|
||||||
String a = "HUIP"+String(i);
|
String a = "HUIP"+String(i);
|
||||||
if (server.hasArg(a))
|
if (server.hasArg(a))
|
||||||
{
|
hueIP[i] = server.arg(a).toInt();
|
||||||
int j = server.arg(a).toInt();
|
|
||||||
if (j >= 0 && j <= 255) hueIP[i] = j;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (server.hasArg("HUELI"))
|
if (server.hasArg("HUELI"))
|
||||||
{
|
{
|
||||||
@ -315,12 +312,49 @@ void handleSettingsSet(uint8_t subPage)
|
|||||||
if (subPage == 5)
|
if (subPage == 5)
|
||||||
{
|
{
|
||||||
ntpEnabled = server.hasArg("NTPON");
|
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();
|
||||||
if (ntpEnabled && WiFi.status() == WL_CONNECTED && !ntpConnected) ntpConnected = ntpUdp.begin(ntpLocalPort); //start if not already connected
|
if (ntpEnabled && WiFi.status() == WL_CONNECTED && !ntpConnected) ntpConnected = ntpUdp.begin(ntpLocalPort); //start if not already connected
|
||||||
if (server.hasArg("OLDEF"))
|
|
||||||
{
|
if (server.hasArg("OLMDE")){
|
||||||
int i = server.arg("OLDEF").toInt();
|
overlayDefault = server.arg("OLMDE").toInt();
|
||||||
if (i >= 0 && i <= 255) overlayDefault = i;
|
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("CRONX")) cronixieDisplay = server.arg("CRONX");
|
||||||
|
bool cbOld = cronixieBacklight;
|
||||||
|
cronixieBacklight = server.hasArg("CROBL");
|
||||||
|
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();
|
||||||
|
|
||||||
|
for (int i=1;i<17;i++)
|
||||||
|
{
|
||||||
|
String a = "MC"+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();
|
||||||
}
|
}
|
||||||
|
|
||||||
//SECURITY
|
//SECURITY
|
||||||
@ -723,10 +757,10 @@ boolean handleSet(String req)
|
|||||||
}
|
}
|
||||||
pos = req.indexOf("NM="); //mode, 1 countdown
|
pos = req.indexOf("NM="); //mode, 1 countdown
|
||||||
if (pos > 0) {
|
if (pos > 0) {
|
||||||
overlayCountdown = true;
|
countdownMode = true;
|
||||||
if (req.indexOf("NM=0") > 0)
|
if (req.indexOf("NM=0") > 0)
|
||||||
{
|
{
|
||||||
overlayCountdown = false;
|
countdownMode = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (req.indexOf("NB=") > 0) //sets backlight
|
if (req.indexOf("NB=") > 0) //sets backlight
|
||||||
|
@ -306,6 +306,7 @@ void wledInit()
|
|||||||
pinMode(buttonPin, INPUT_PULLUP);
|
pinMode(buttonPin, INPUT_PULLUP);
|
||||||
|
|
||||||
if (bootPreset>0) applyPreset(bootPreset, turnOnAtBoot, true, true);
|
if (bootPreset>0) applyPreset(bootPreset, turnOnAtBoot, true, true);
|
||||||
|
if (macroBoot>0) applyMacro(macroBoot);
|
||||||
colorUpdated(0);
|
colorUpdated(0);
|
||||||
if(digitalRead(buttonPin) == LOW) buttonEnabled = false; //disable button if it is "pressed" unintentionally
|
if(digitalRead(buttonPin) == LOW) buttonEnabled = false; //disable button if it is "pressed" unintentionally
|
||||||
}
|
}
|
||||||
|
@ -19,11 +19,11 @@ void handleButton()
|
|||||||
if (millis() - buttonPressedTime > 7000) {initAP();}
|
if (millis() - buttonPressedTime > 7000) {initAP();}
|
||||||
else if (millis() - buttonPressedTime > 700)
|
else if (millis() - buttonPressedTime > 700)
|
||||||
{
|
{
|
||||||
if (buttonLongPressMacro != 0) {applyMacro(buttonLongPressMacro);}
|
if (macroLongPress != 0) {applyMacro(macroLongPress);}
|
||||||
else _setRandomColor(false);
|
else _setRandomColor(false);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (buttonMacro == 0)
|
if (macroButton == 0)
|
||||||
{
|
{
|
||||||
if (bri == 0)
|
if (bri == 0)
|
||||||
{
|
{
|
||||||
@ -35,7 +35,7 @@ void handleButton()
|
|||||||
}
|
}
|
||||||
colorUpdated(2);
|
colorUpdated(2);
|
||||||
} else {
|
} else {
|
||||||
applyMacro(buttonMacro);
|
applyMacro(macroButton);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
buttonPressedBefore = false;
|
buttonPressedBefore = false;
|
||||||
|
@ -116,7 +116,7 @@ boolean checkNTPResponse()
|
|||||||
|
|
||||||
void updateLocalTime()
|
void updateLocalTime()
|
||||||
{
|
{
|
||||||
unsigned long tmc = now()+ (utcOffsetSign)? -utcOffsetSecs:utcOffsetSecs;
|
unsigned long tmc = now()+ utcOffsetSecs;
|
||||||
local = timezones[currentTimezone]->toLocal(tmc);
|
local = timezones[currentTimezone]->toLocal(tmc);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -152,11 +152,11 @@ void setCountdown()
|
|||||||
//returns true if countdown just over
|
//returns true if countdown just over
|
||||||
bool checkCountdown()
|
bool checkCountdown()
|
||||||
{
|
{
|
||||||
long diff = countdownTime - local;
|
long diff = countdownTime - now();
|
||||||
local = abs(diff);
|
local = abs(diff);
|
||||||
if (diff <0 && !countdownOverTriggered)
|
if (diff <0 && !countdownOverTriggered)
|
||||||
{
|
{
|
||||||
if (countdownMacro != 0) applyMacro(countdownMacro);
|
if (macroCountdown != 0) applyMacro(macroCountdown);
|
||||||
countdownOverTriggered = true;
|
countdownOverTriggered = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -3,20 +3,20 @@
|
|||||||
*/
|
*/
|
||||||
void initCronixie()
|
void initCronixie()
|
||||||
{
|
{
|
||||||
if (overlayCurrent == 7 && !cronixieInit)
|
if (overlayCurrent == 4 && !cronixieInit)
|
||||||
{
|
{
|
||||||
strip.driverModeCronixie(true);
|
strip.driverModeCronixie(true);
|
||||||
strip.setCronixieBacklight(cronixieBacklight);
|
strip.setCronixieBacklight(cronixieBacklight);
|
||||||
setCronixie(cronixieDefault);
|
setCronixie();
|
||||||
cronixieInit = true;
|
cronixieInit = true;
|
||||||
} else if (cronixieInit && overlayCurrent != 7)
|
} else if (cronixieInit && overlayCurrent != 4)
|
||||||
{
|
{
|
||||||
strip.driverModeCronixie(false);
|
strip.driverModeCronixie(false);
|
||||||
cronixieInit = false;
|
cronixieInit = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _nixieDisplay(int num[], int dur[], int pausedur[], int cnt)
|
void _nixieDisplay(int num[], uint16_t dur[], uint16_t pausedur[], uint8_t cnt)
|
||||||
{
|
{
|
||||||
strip.setRange(overlayMin, overlayMax, 0);
|
strip.setRange(overlayMin, overlayMax, 0);
|
||||||
if (num[nixieClockI] >= 0 && !nixiePause)
|
if (num[nixieClockI] >= 0 && !nixiePause)
|
||||||
@ -146,7 +146,7 @@ void _overlayAnalogClock()
|
|||||||
{
|
{
|
||||||
int overlaySize = overlayMax - overlayMin +1;
|
int overlaySize = overlayMax - overlayMin +1;
|
||||||
strip.unlockAll();
|
strip.unlockAll();
|
||||||
if (overlayCountdown)
|
if (countdownMode)
|
||||||
{
|
{
|
||||||
_overlayAnalogCountdown(); return;
|
_overlayAnalogCountdown(); return;
|
||||||
}
|
}
|
||||||
@ -192,7 +192,7 @@ void _overlayAnalogClock()
|
|||||||
|
|
||||||
void _overlayNixieClock()
|
void _overlayNixieClock()
|
||||||
{
|
{
|
||||||
if (overlayCountdown)
|
if (countdownMode)
|
||||||
{
|
{
|
||||||
_overlayNixieCountdown(); return;
|
_overlayNixieCountdown(); return;
|
||||||
}
|
}
|
||||||
|
@ -46,12 +46,12 @@ void handleAlexa()
|
|||||||
|
|
||||||
void alexaOn()
|
void alexaOn()
|
||||||
{
|
{
|
||||||
if (alexaOnMacro == 0)
|
if (macroAlexaOn == 0)
|
||||||
{
|
{
|
||||||
handleSet((alexaNotify)?"win&T=1&IN":"win&T=1&NN&IN");
|
handleSet((alexaNotify)?"win&T=1&IN":"win&T=1&NN&IN");
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
applyMacro(alexaOnMacro);
|
applyMacro(macroAlexaOn);
|
||||||
}
|
}
|
||||||
|
|
||||||
String body = "[{\"success\":{\"/lights/1/state/on\":true}}]";
|
String body = "[{\"success\":{\"/lights/1/state/on\":true}}]";
|
||||||
@ -64,12 +64,12 @@ void alexaOn()
|
|||||||
|
|
||||||
void alexaOff()
|
void alexaOff()
|
||||||
{
|
{
|
||||||
if (alexaOffMacro == 0)
|
if (macroAlexaOff == 0)
|
||||||
{
|
{
|
||||||
handleSet((alexaNotify)?"win&T=0&IN":"win&T=0&NN&IN");
|
handleSet((alexaNotify)?"win&T=0&IN":"win&T=0&NN&IN");
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
applyMacro(alexaOffMacro);
|
applyMacro(macroAlexaOff);
|
||||||
}
|
}
|
||||||
|
|
||||||
String body = "[{\"success\":{\"/lights/1/state/on\":false}}]";
|
String body = "[{\"success\":{\"/lights/1/state/on\":false}}]";
|
||||||
|
@ -19,7 +19,7 @@ uint8_t getSameCodeLength(char code, int index, char const digits[])
|
|||||||
|
|
||||||
void setCronixie()
|
void setCronixie()
|
||||||
{
|
{
|
||||||
char digits[] = cronixieDisplay.substring(0,6);
|
char digits[6]; for (int a=0;a<6;a++) digits[a]=cronixieDisplay.charAt(a);
|
||||||
/*
|
/*
|
||||||
* digit purpose index
|
* digit purpose index
|
||||||
* 0-9 | 0-9 (incl. random)
|
* 0-9 | 0-9 (incl. random)
|
||||||
@ -144,7 +144,7 @@ void setCronixie()
|
|||||||
|
|
||||||
void _overlayCronixie()
|
void _overlayCronixie()
|
||||||
{
|
{
|
||||||
if (overlayCountdown) checkCountdown();
|
if (countdownMode) checkCountdown();
|
||||||
uint8_t h = hour(local);
|
uint8_t h = hour(local);
|
||||||
uint8_t h0 = h;
|
uint8_t h0 = h;
|
||||||
uint8_t m = minute(local);
|
uint8_t m = minute(local);
|
||||||
@ -155,7 +155,7 @@ void _overlayCronixie()
|
|||||||
//this has to be changed in time for 22nd century
|
//this has to be changed in time for 22nd century
|
||||||
y -= 2000; if (y<0) y += 30; //makes countdown work
|
y -= 2000; if (y<0) y += 30; //makes countdown work
|
||||||
|
|
||||||
if (useAMPM && !overlayCountdown)
|
if (useAMPM && !countdownMode)
|
||||||
{
|
{
|
||||||
if (h>12) h-=12;
|
if (h>12) h-=12;
|
||||||
else if (h==0) h+=12;
|
else if (h==0) h+=12;
|
||||||
|
Loading…
Reference in New Issue
Block a user