NL=0 instant off bugfix attempt

added udpPort = 0 as off
implement all settings setters (notifyNightlight \n udpPort)
De-implement notification fwd and led_amount settings
descriptive text / title (server side + settings)
nightlight function different after brightness than 0
This commit is contained in:
cschwinne 2016-12-11 20:11:14 +01:00
parent a3a2c0448f
commit 945839e3d3
9 changed files with 116 additions and 58 deletions

View File

@ -1,8 +1,8 @@
color cycle color cycle
other vfx (fire...)
sequence sequence
simple slide transition simple slide transition
additional color picker field additional color picker field
implement all settings setters (notifyNightlight \n udpPort)
implement HSB slider option implement HSB slider option
implement ranges implement ranges
implement discrete range color setter implement discrete range color setter
@ -11,11 +11,32 @@ svg icons in html
add preferred colors to settings -> quickly t. UI, button select, add preferred colors to settings -> quickly t. UI, button select,
use iframe for settings, seperate tabs for wifi and application confg use iframe for settings, seperate tabs for wifi and application confg
use iframe for all adv. features? use iframe for all adv. features?
/dumpeeprom and /pusheeprom /dumpeeprom and /pusheeprom (ota lock!)
aux trigger pin aux trigger pin
descriptive text randomizer
clock functions:
analog clock on range (dots)
5 min lines
slider clock on range (track)
get time from ntp
time zones + dst
adjustable chimes
timed light activation
alarm clock
countdown (= NL with seq. trans)
more button functions (hold for bri select, double click, etc.):
hold
single click
double click
triple click
quad click
funcs: toggle on/off
toggle nightlight
toggle notifier
var. brightness
BUGS BUGS
static ip disables mdns static ip disables mdns
? authentification for security relevant areas ([/settings, /reset]) ? authentification for security relevant areas ([/settings, /reset])
(Unverified) led_amount does nothing (is always 16) because NeoPixelBus is initiated before EEPROM read

View File

@ -31,18 +31,19 @@
document.S_form.APHSSID.checked = (this.responseXML.getElementsByTagName('aphssid')[0].innerHTML)!=0?true:false; document.S_form.APHSSID.checked = (this.responseXML.getElementsByTagName('aphssid')[0].innerHTML)!=0?true:false;
document.S_form.APPASS.value = this.responseXML.getElementsByTagName('appass')[0].innerHTML; //fake pass like ****** document.S_form.APPASS.value = this.responseXML.getElementsByTagName('appass')[0].innerHTML; //fake pass like ******
document.S_form.APCHAN.value = this.responseXML.getElementsByTagName('apchan')[0].innerHTML; document.S_form.APCHAN.value = this.responseXML.getElementsByTagName('apchan')[0].innerHTML;
document.S_form.LEDS.value = this.responseXML.getElementsByTagName('leds')[0].innerHTML; document.S_form.DESC.value = this.responseXML.getElementsByTagName('desc')[0].innerHTML;
document.S_form.BTNON.checked = (this.responseXML.getElementsByTagName('btnon')[0].innerHTML)!=0?true:false; document.S_form.BTNON.checked = (this.responseXML.getElementsByTagName('btnon')[0].innerHTML)!=0?true:false;
document.S_form.TFADE.checked = (this.responseXML.getElementsByTagName('tfade')[0].innerHTML)!=0?true:false; document.S_form.TFADE.checked = (this.responseXML.getElementsByTagName('tfade')[0].innerHTML)!=0?true:false;
document.S_form.TDLAY.value = this.responseXML.getElementsByTagName('tdlay')[0].innerHTML; document.S_form.TDLAY.value = this.responseXML.getElementsByTagName('tdlay')[0].innerHTML;
document.S_form.TLBRI.value = this.responseXML.getElementsByTagName('tlbri')[0].innerHTML;
document.S_form.TLDUR.value = this.responseXML.getElementsByTagName('tldur')[0].innerHTML; document.S_form.TLDUR.value = this.responseXML.getElementsByTagName('tldur')[0].innerHTML;
document.S_form.TLFDE.checked = (this.responseXML.getElementsByTagName('tlfde')[0].innerHTML)!=0?true:false; document.S_form.TLFDE.checked = (this.responseXML.getElementsByTagName('tlfde')[0].innerHTML)!=0?true:false;
document.S_form.NUDPP.value = this.responseXML.getElementsByTagName('nudpp')[0].innerHTML;
document.S_form.NRCVE.checked = (this.responseXML.getElementsByTagName('nrcve')[0].innerHTML)!=0?true:false; document.S_form.NRCVE.checked = (this.responseXML.getElementsByTagName('nrcve')[0].innerHTML)!=0?true:false;
document.S_form.NRBRI.value = this.responseXML.getElementsByTagName('nrbri')[0].innerHTML; document.S_form.NRBRI.value = this.responseXML.getElementsByTagName('nrbri')[0].innerHTML;
document.S_form.NSDIR.checked = (this.responseXML.getElementsByTagName('nsdir')[0].innerHTML)!=0?true:false; document.S_form.NSDIR.checked = (this.responseXML.getElementsByTagName('nsdir')[0].innerHTML)!=0?true:false;
document.S_form.NSBTN.checked = (this.responseXML.getElementsByTagName('nsbtn')[0].innerHTML)!=0?true:false; document.S_form.NSBTN.checked = (this.responseXML.getElementsByTagName('nsbtn')[0].innerHTML)!=0?true:false;
document.S_form.NSFWD.checked = (this.responseXML.getElementsByTagName('nsfwd')[0].innerHTML)!=0?true:false; document.S_form.NSFWD.checked = (this.responseXML.getElementsByTagName('nsfwd')[0].innerHTML)!=0?true:false;
document.S_form.NSIPS.innerHTML = this.responseXML.getElementsByTagName('nsips')[0].innerHTML;
document.S_form.NOOTA.checked = (this.responseXML.getElementsByTagName('noota')[0].innerHTML)!=0?true:false; document.S_form.NOOTA.checked = (this.responseXML.getElementsByTagName('noota')[0].innerHTML)!=0?true:false;
document.S_form.NORAP.checked = (this.responseXML.getElementsByTagName('norap')[0].innerHTML)!=0?true:false; document.S_form.NORAP.checked = (this.responseXML.getElementsByTagName('norap')[0].innerHTML)!=0?true:false;
document.getElementsByClassName("sip")[0].innerHTML = this.responseXML.getElementsByTagName('sip')[0].innerHTML; document.getElementsByClassName("sip")[0].innerHTML = this.responseXML.getElementsByTagName('sip')[0].innerHTML;
@ -102,25 +103,26 @@
AP IP: <span class="sip"> Not active </span> <br> AP IP: <span class="sip"> Not active </span> <br>
<h2>Application setup</h2> <h2>Application setup</h2>
<h3>Web setup</h3>
Server description: <input type="text" name="DESC" maxlength="32"> <br>
<h3>LED setup</h3> <h3>LED setup</h3>
The default boot LED color is the current color when settings are saved. <br> The default boot LED color is the current color when settings are saved. <br>
LED amount: <input type="text" name="LEDS" maxlength="3" size="2"> <br> Brightness factor: <input type="text" name="NRBRI" maxlength="3" size="2"> % <br>
<h3>Button setup</h3> <h3>Button setup</h3>
On/Off button enabled: <input type="checkbox" name="BTNON" value="0"> <br> On/Off button enabled: <input type="checkbox" name="BTNON" value="0"> <br>
<h3>Transitions</h3> <h3>Transitions</h3>
Fade: <input type="checkbox" name="TFADE" value="0"> <br> Fade: <input type="checkbox" name="TFADE" value="0"> <br>
Transition Delay: <input type="text" name="TDLAY" maxlength="5" size="2"> ms <br> Transition Delay: <input type="text" name="TDLAY" maxlength="5" size="2"> ms <br>
<h3>Timed light</h3> <h3>Timed light</h3>
Turn off after: <input type="text" name="TLDUR" maxlength="3" size="2"> min <br> Target brightness: <input type="text" name="TLBRI" maxlength="3" size="2"> (0-255) <br>
Fade down: <input type="checkbox" name="TLFDE" value="0"> <br> Change after: <input type="text" name="TLDUR" maxlength="3" size="2"> min <br>
Fade: <input type="checkbox" name="TLFDE" value="0"> <br>
<h3>Daisy chain</h3> <h3>Daisy chain</h3>
UDP Port: <input type="text" name="NUDPP" maxlength="5" size="2"><br>
Receive notifications: <input type="checkbox" name="NRCVE" value="0"> <br> Receive notifications: <input type="checkbox" name="NRCVE" value="0"> <br>
Received brightness factor: <input type="text" name="NRBRI" maxlength="3" size="2"> % <br><br>
Send notifications on direct change: <input type="checkbox" name="NSDIR" value="0"> <br> Send notifications on direct change: <input type="checkbox" name="NSDIR" value="0"> <br>
Send notifications on button press: <input type="checkbox" name="NSBTN" value="0"> <br> Send notifications on button press: <input type="checkbox" name="NSBTN" value="0"> <br>
Forward received notifications: <input type="checkbox" name="NSFWD" value="0"> <br> Send nightlight notifications: <input type="checkbox" name="NSFWD" value="0"> <br>
Hosts to send notifications to: (1 IP per line) <br>
<textarea name="NSIPS" rows="8" cols="16"></textarea>
<h3>Security</h3> <h3>Security</h3>
OTA locked: <input type="checkbox" name="NOOTA" value="0"> <br> OTA locked: <input type="checkbox" name="NOOTA" value="0"> <br>
Passphrase: <input type="password" name="OPASS" maxlength="32"> <br> Passphrase: <input type="password" name="OPASS" maxlength="32"> <br>

View File

@ -14,7 +14,11 @@
* @version 0.3pd * @version 0.3pd
* @author Christian Schwinne * @author Christian Schwinne
*/ */
//Hardware-settings (only changeble via code)
uint8_t led_amount = 16;
uint8_t buttonPin = 0; //needs pull-up
//Default CONFIG //Default CONFIG
String serverDescription = "WLED 0.3pd";
String clientssid = "Your_Network_Here"; String clientssid = "Your_Network_Here";
String clientpass = "Dummy_Pass"; String clientpass = "Dummy_Pass";
String cmdns = "led"; String cmdns = "led";
@ -27,21 +31,20 @@ IPAddress staticip(0, 0, 0, 0);
IPAddress staticgateway(0, 0, 0, 0); IPAddress staticgateway(0, 0, 0, 0);
IPAddress staticsubnet(255, 255, 255, 0); IPAddress staticsubnet(255, 255, 255, 0);
byte col[]{255, 127, 0}; byte col[]{255, 127, 0};
uint8_t bri_nl = 0;
boolean fadeTransition = true; boolean fadeTransition = true;
boolean seqTransition = false; boolean seqTransition = false;
uint16_t transitionDelay = 1500; uint16_t transitionDelay = 1500;
boolean ota_lock = true; boolean ota_lock = true;
String otapass = "wledota"; String otapass = "wledota";
boolean only_ap = false; boolean only_ap = false;
uint8_t led_amount = 16;
uint8_t buttonPin = 3; //needs pull-up
boolean buttonEnabled = true; boolean buttonEnabled = true;
boolean notifyDirect = true, notifyButton = true, notifyForward = true, notifyNightlight = false; boolean notifyDirect = true, notifyButton = true, notifyNightlight = false;
boolean receiveNotifications = true; boolean receiveNotifications = true;
uint8_t bri_n = 100; uint8_t bri_n = 100;
uint8_t nightlightDelayMins = 60; uint8_t nightlightDelayMins = 60;
boolean nightlightFade = true; boolean nightlightFade = true;
unsigned int udpPort = 21324; uint16_t udpPort = 21324;
double transitionResolution = 0.011; double transitionResolution = 0.011;
@ -62,7 +65,6 @@ boolean buttonPressedBefore = false;
boolean nightlightActive = false; boolean nightlightActive = false;
boolean nightlightActive_old = false; boolean nightlightActive_old = false;
int transitionDelay_old; int transitionDelay_old;
long nightlightPassedTime = 0;
int nightlightDelayMs; int nightlightDelayMs;
boolean udpConnected = false; boolean udpConnected = false;
byte notifierBuffer[16]; byte notifierBuffer[16];

View File

@ -41,7 +41,7 @@ void saveSettingsToEEPROM()
EEPROM.write(228, aphide); EEPROM.write(228, aphide);
EEPROM.write(229, led_amount); EEPROM.write(229, led_amount);
EEPROM.write(230, notifyButton); EEPROM.write(230, notifyButton);
EEPROM.write(231, notifyForward); EEPROM.write(231, notifyNightlight);
EEPROM.write(232, buttonEnabled); EEPROM.write(232, buttonEnabled);
//233 reserved for first boot flag //233 reserved for first boot flag
EEPROM.write(234, staticip[0]); EEPROM.write(234, staticip[0]);
@ -70,7 +70,14 @@ void saveSettingsToEEPROM()
{ {
EEPROM.write(i, otapass.charAt(i-256)); EEPROM.write(i, otapass.charAt(i-256));
} }
EEPROM.write(288, bri_nl);
EEPROM.write(289, ota_lock); EEPROM.write(289, ota_lock);
EEPROM.write(290, (udpPort >> 0) & 0xFF);
EEPROM.write(291, (udpPort >> 8) & 0xFF);
for (int i = 292; i < 324; ++i)
{
EEPROM.write(i, serverDescription.charAt(i-292));
}
EEPROM.commit(); EEPROM.commit();
} }
@ -120,7 +127,7 @@ void loadSettingsFromEEPROM()
if (aphide > 1) aphide = 1; if (aphide > 1) aphide = 1;
led_amount = EEPROM.read(229); led_amount = EEPROM.read(229);
notifyButton = EEPROM.read(230); notifyButton = EEPROM.read(230);
notifyForward = EEPROM.read(231); notifyNightlight = EEPROM.read(231);
buttonEnabled = EEPROM.read(232); buttonEnabled = EEPROM.read(232);
staticip[0] = EEPROM.read(234); staticip[0] = EEPROM.read(234);
staticip[1] = EEPROM.read(235); staticip[1] = EEPROM.read(235);
@ -149,5 +156,13 @@ void loadSettingsFromEEPROM()
if (EEPROM.read(i) == 0) break; if (EEPROM.read(i) == 0) break;
otapass += char(EEPROM.read(i)); otapass += char(EEPROM.read(i));
} }
bri_nl = EEPROM.read(288);
ota_lock = EEPROM.read(289); ota_lock = EEPROM.read(289);
udpPort = ((EEPROM.read(290) << 0) & 0xFF) + ((EEPROM.read(291) << 8) & 0xFF00);
serverDescription = "";
for (int i = 292; i < 324; ++i)
{
if (EEPROM.read(i) == 0) break;
serverDescription += char(EEPROM.read(i));
}
} }

View File

@ -19,6 +19,12 @@ void XML_response()
resp = resp + col[i]; resp = resp + col[i];
resp = resp + "</cl>"; resp = resp + "</cl>";
} }
resp = resp + "<nl>";
resp = resp + nightlightActive;
resp = resp + "</nl>";
resp = resp + "<desc>";
resp = resp + serverDescription;
resp = resp + "</desc>";
//enable toolbar here //enable toolbar here
resp = resp + "</vs>"; resp = resp + "</vs>";
server.send(200, "text/xml", resp); server.send(200, "text/xml", resp);
@ -75,9 +81,9 @@ void XML_response_settings()
resp = resp + "<apchan>"; resp = resp + "<apchan>";
resp = resp + apchannel; resp = resp + apchannel;
resp = resp + "</apchan>"; resp = resp + "</apchan>";
resp = resp + "<leds>"; resp = resp + "<desc>";
resp = resp + led_amount; resp = resp + serverDescription;
resp = resp + "</leds>"; resp = resp + "</desc>";
resp = resp + "<btnon>"; resp = resp + "<btnon>";
resp = resp + bool2int(buttonEnabled); resp = resp + bool2int(buttonEnabled);
resp = resp + "</btnon><tfade>"; resp = resp + "</btnon><tfade>";
@ -85,12 +91,18 @@ void XML_response_settings()
resp = resp + "</tfade><tdlay>"; resp = resp + "</tfade><tdlay>";
resp = resp + transitionDelay; resp = resp + transitionDelay;
resp = resp + "</tdlay>"; resp = resp + "</tdlay>";
resp = resp + "<tlbri>";
resp = resp + bri_nl;
resp = resp + "</tlbri>";
resp = resp + "<tldur>"; resp = resp + "<tldur>";
resp = resp + nightlightDelayMins; resp = resp + nightlightDelayMins;
resp = resp + "</tldur>"; resp = resp + "</tldur>";
resp = resp + "<tlfde>"; resp = resp + "<tlfde>";
resp = resp + bool2int(nightlightFade); resp = resp + bool2int(nightlightFade);
resp = resp + "</tlfde>"; resp = resp + "</tlfde>";
resp = resp + "<nudpp>";
resp = resp + udpPort;
resp = resp + "</nudpp>";
resp = resp + "<nrcve>"; resp = resp + "<nrcve>";
resp = resp + bool2int(receiveNotifications); resp = resp + bool2int(receiveNotifications);
resp = resp + "</nrcve><nrbri>"; resp = resp + "</nrcve><nrbri>";
@ -100,8 +112,8 @@ void XML_response_settings()
resp = resp + "</nsdir><nsbtn>"; resp = resp + "</nsdir><nsbtn>";
resp = resp + bool2int(notifyButton); resp = resp + bool2int(notifyButton);
resp = resp + "</nsbtn><nsfwd>"; resp = resp + "</nsbtn><nsfwd>";
resp = resp + bool2int(notifyForward); resp = resp + bool2int(notifyNightlight);
resp = resp + "</nsfwd><nsips>Legacy</nsips>"; resp = resp + "</nsfwd>";
resp = resp + "<noota>"; resp = resp + "<noota>";
resp = resp + bool2int(ota_lock); resp = resp + bool2int(ota_lock);
resp = resp +"</noota>"; resp = resp +"</noota>";
@ -134,7 +146,7 @@ void XML_response_settings()
{ {
resp = resp + "Not active"; resp = resp + "Not active";
} }
resp = resp + "</sip><otastat>LS</otastat>"; resp = resp + "</sip>";
resp = resp + "<msg>WLED 0.3pd OK</msg>"; resp = resp + "<msg>WLED 0.3pd OK</msg>";
resp = resp + "</vs>"; resp = resp + "</vs>";
Serial.println(resp); Serial.println(resp);

View File

@ -93,11 +93,7 @@ void handleSettingsSet()
int i = server.arg("CSSN3").toInt(); int i = server.arg("CSSN3").toInt();
if (i >= 0 && i <= 255) staticsubnet[3] = i; if (i >= 0 && i <= 255) staticsubnet[3] = i;
} }
if (server.hasArg("LEDS")) if (server.hasArg("DESC")) serverDescription = server.arg("DESC");
{
int i = server.arg("LEDS").toInt();
if (i > 0) led_amount = i;
}
buttonEnabled = server.hasArg("BTNON"); buttonEnabled = server.hasArg("BTNON");
fadeTransition = server.hasArg("TFADE"); fadeTransition = server.hasArg("TFADE");
if (server.hasArg("TDLAY")) if (server.hasArg("TDLAY"))
@ -108,12 +104,20 @@ void handleSettingsSet()
transitionDelay_old = transitionDelay; transitionDelay_old = transitionDelay;
} }
} }
if (server.hasArg("TLBRI"))
{
bri_nl = server.arg("TLBRI").toInt();
}
if (server.hasArg("TLDUR")) if (server.hasArg("TLDUR"))
{ {
int i = server.arg("TLDUR").toInt(); int i = server.arg("TLDUR").toInt();
if (i > 0) nightlightDelayMins = i; if (i > 0) nightlightDelayMins = i;
} }
nightlightFade = server.hasArg("TLFDE"); nightlightFade = server.hasArg("TLFDE");
if (server.hasArg("NUDPP"))
{
udpPort = server.arg("NUDPP").toInt();
}
receiveNotifications = server.hasArg("NRCVE"); receiveNotifications = server.hasArg("NRCVE");
if (server.hasArg("NRBRI")) if (server.hasArg("NRBRI"))
{ {
@ -122,7 +126,7 @@ void handleSettingsSet()
} }
notifyDirect = server.hasArg("NSDIR"); notifyDirect = server.hasArg("NSDIR");
notifyButton = server.hasArg("NSBTN"); notifyButton = server.hasArg("NSBTN");
notifyForward = server.hasArg("NSFWD"); notifyNightlight = server.hasArg("NSFWD");
if (server.hasArg("OPASS")) if (server.hasArg("OPASS"))
{ {
if (!ota_lock) if (!ota_lock)
@ -173,6 +177,7 @@ boolean handleSet(String req)
if (req.indexOf("NL=0") > 0) if (req.indexOf("NL=0") > 0)
{ {
nightlightActive = false; nightlightActive = false;
bri = bri_t;
} else { } else {
nightlightActive = true; nightlightActive = true;
nightlightStartTime = millis(); nightlightStartTime = millis();

View File

@ -59,7 +59,10 @@ void wledInit()
} }
Serial.println("mDNS responder started"); Serial.println("mDNS responder started");
udpConnected = notifierUdp.begin(udpPort); if (udpPort > 0)
{
udpConnected = notifierUdp.begin(udpPort);
}
//SERVER INIT //SERVER INIT
//settings page //settings page

View File

@ -1,15 +1,16 @@
void notify(uint8_t callMode) void notify(uint8_t callMode)
{ {
if (!udpConnected) return;
switch (callMode) switch (callMode)
{ {
case 1: if (!notifyDirect) return; break; case 1: if (!notifyDirect) return; break;
case 2: if (!notifyButton) return; break; case 2: if (!notifyButton) return; break;
case 3: if (!notifyForward) return; break; case 3: return;
case 4: if (!notifyNightlight) return; break; case 4: if (!notifyNightlight) return; break;
default: return; default: return;
} }
byte udpOut[16]; byte udpOut[16];
udpOut[0] = 0; //reserved for future "port" feature udpOut[0] = 0; //reserved
udpOut[1] = callMode; udpOut[1] = callMode;
udpOut[2] = bri; udpOut[2] = bri;
udpOut[3] = col[0]; udpOut[3] = col[0];
@ -32,21 +33,13 @@ void handleNotifications()
if(packetSize && notifierUdp.remoteIP() != WiFi.localIP()) if(packetSize && notifierUdp.remoteIP() != WiFi.localIP())
{ {
notifierUdp.read(notifierBuffer, 16); notifierUdp.read(notifierBuffer, 16);
int bri_r = notifierBuffer[2]*(((float)bri_n)/100); col[0] = notifierBuffer[3];
if (bri_r < 256)
{
bri_n = bri_r;
} else
{
bri_n = 255;
}
col[0] = notifierBuffer[3]
col[1] = notifierBuffer[4]; col[1] = notifierBuffer[4];
col[2] = notifierBuffer[5]; col[2] = notifierBuffer[5];
if (notifierBuffer[6]) nightlightActive = notifierBuffer[6];
if (!notifierBuffer[6])
{ {
nightlightActive = true; bri = notifierBuffer[2];
} else {
colorUpdated(3); colorUpdated(3);
} }
} }

View File

@ -1,6 +1,10 @@
void setAllLeds() { void setAllLeds() {
double d = bri_t; double d = bri_t*bri_n;
double val = d /256; double val = d/25600;
if (val > 1.0)
{
val = 1.0;
}
int r = col_t[0]*val; int r = col_t[0]*val;
int g = col_t[1]*val; int g = col_t[1]*val;
int b = col_t[2]*val; int b = col_t[2]*val;
@ -25,7 +29,7 @@ void setLedsStandard()
void colorUpdated(int callMode) void colorUpdated(int callMode)
{ {
//call for notifier -> 0: init 1: direct change 2: button 3: notification 4: nightlight //call for notifier -> 0: init 1: direct change 2: button 3: notification 4: nightlight 5: other (no not.)
if (col[0] == col_it[0] && col[1] == col_it[1] && col[2] == col_it[2] && bri == bri_it) if (col[0] == col_it[0] && col[1] == col_it[1] && col[2] == col_it[2] && bri == bri_it)
{ {
return; //no change return; //no change
@ -97,8 +101,8 @@ void initNightlightFade()
{ {
return; return;
} }
bri = 0; bri = bri_nl;
bri_it = 0; bri_it = bri_nl;
transitionDelay = (int)(nightlightDelayMins*60000); transitionDelay = (int)(nightlightDelayMins*60000);
transitionStartTime = nightlightStartTime; transitionStartTime = nightlightStartTime;
transitionActive = true; transitionActive = true;
@ -111,6 +115,7 @@ void handleNightlight()
{ {
if (!nightlightActive_old) //init if (!nightlightActive_old) //init
{ {
nightlightStartTime = millis();
notify(4); notify(4);
nightlightDelayMs = (int)(nightlightDelayMins*60000); nightlightDelayMs = (int)(nightlightDelayMins*60000);
nightlightActive_old = true; nightlightActive_old = true;
@ -123,19 +128,19 @@ void handleNightlight()
if (nper >= 1) if (nper >= 1)
{ {
nightlightActive = false; nightlightActive = false;
if (!nightlightFade)
{
bri = bri_nl;
colorUpdated(5);
}
} }
} else if (nightlightActive_old) //de-init } else if (nightlightActive_old) //early de-init
{ {
nightlightPassedTime = 0;
nightlightActive_old = false; nightlightActive_old = false;
if (nightlightFade) if (nightlightFade)
{ {
transitionDelay = transitionDelay_old; transitionDelay = transitionDelay_old;
transitionActive = false; transitionActive = false;
} else
{
bri = 0;
colorUpdated(4);
} }
} }
} }