Added Sunrise nightlight mode and more UI features
- Added Sunrise nightlight mode - Added Chunchun effect - Added `LO` (live override) command to HTTP API - Added `mode` to `nl` object of JSON state API, deprecating `fade` - Added light color scheme support to web UI (click sun next to brightness slider) - Added option to hide labels in web UI (click flame icon next to intensity slider) - Added hex color input (click palette icon next to palette select) (resolves #506) - Added support for RGB sliders (need to set in localstorage) - Added support for custom background color or image (need to set in localstorage) - Added option to hide bottom tab bar in PC mode (need to set in localstorage) - Fixed transition lag with multiple segments (fixes #985) - Changed Nightlight wording (resolves #940)
This commit is contained in:
@@ -114,7 +114,7 @@ void colorUpdated(int callMode)
|
||||
|
||||
if (!colChanged) return; //following code is for e.g. initiating transitions
|
||||
|
||||
if (callMode != NOTIFIER_CALL_MODE_NO_NOTIFY && nightlightActive && nightlightFade)
|
||||
if (callMode != NOTIFIER_CALL_MODE_NO_NOTIFY && nightlightActive && (nightlightMode == NL_MODE_FADE || nightlightMode == NL_MODE_COLORFADE))
|
||||
{
|
||||
briNlT = bri;
|
||||
nightlightDelayMs -= (millis() - nightlightStartTime);
|
||||
@@ -133,6 +133,9 @@ void colorUpdated(int callMode)
|
||||
|
||||
briIT = bri;
|
||||
if (bri > 0) briLast = bri;
|
||||
|
||||
//deactivate nightlight if target brightness is reached
|
||||
if (bri == nightlightTargetBri && callMode != NOTIFIER_CALL_MODE_NO_NOTIFY) nightlightActive = false;
|
||||
|
||||
if (fadeTransition)
|
||||
{
|
||||
@@ -223,30 +226,65 @@ void handleNightlight()
|
||||
nightlightActiveOld = true;
|
||||
briNlT = bri;
|
||||
for (byte i=0; i<4; i++) colNlT[i] = col[i]; // remember starting color
|
||||
if (nightlightMode == NL_MODE_SUN)
|
||||
{
|
||||
//save current
|
||||
colNlT[0] = effectCurrent;
|
||||
colNlT[1] = effectSpeed;
|
||||
colNlT[2] = effectPalette;
|
||||
|
||||
effectCurrent = FX_MODE_SUNRISE;
|
||||
effectSpeed = nightlightDelayMins;
|
||||
effectPalette = 0;
|
||||
if (effectSpeed > 60) effectSpeed = 60; //currently limited to 60 minutes
|
||||
if (bri) effectSpeed += 60; //sunset if currently on
|
||||
briNlT = !bri; //true == sunrise, false == sunset
|
||||
if (!bri) bri = briLast;
|
||||
colorUpdated(NOTIFIER_CALL_MODE_NO_NOTIFY);
|
||||
}
|
||||
}
|
||||
float nper = (millis() - nightlightStartTime)/((float)nightlightDelayMs);
|
||||
if (nightlightFade)
|
||||
if (nightlightMode == NL_MODE_FADE || nightlightMode == NL_MODE_COLORFADE)
|
||||
{
|
||||
bri = briNlT + ((nightlightTargetBri - briNlT)*nper);
|
||||
if (nightlightColorFade) // color fading only is enabled with "NF=2"
|
||||
if (nightlightMode == NL_MODE_COLORFADE) // color fading only is enabled with "NF=2"
|
||||
{
|
||||
for (byte i=0; i<4; i++) col[i] = colNlT[i]+ ((colSec[i] - colNlT[i])*nper); // fading from actual color to secondary color
|
||||
}
|
||||
colorUpdated(NOTIFIER_CALL_MODE_NO_NOTIFY);
|
||||
}
|
||||
if (nper >= 1)
|
||||
if (nper >= 1) //nightlight duration over
|
||||
{
|
||||
nightlightActive = false;
|
||||
if (!nightlightFade)
|
||||
if (nightlightMode == NL_MODE_SET)
|
||||
{
|
||||
bri = nightlightTargetBri;
|
||||
colorUpdated(NOTIFIER_CALL_MODE_NO_NOTIFY);
|
||||
}
|
||||
updateBlynk();
|
||||
if (bri == 0) briLast = briNlT;
|
||||
if (nightlightMode == NL_MODE_SUN)
|
||||
{
|
||||
if (!briNlT) { //turn off if sunset
|
||||
effectCurrent = colNlT[0];
|
||||
effectSpeed = colNlT[1];
|
||||
effectPalette = colNlT[2];
|
||||
toggleOnOff();
|
||||
setLedsStandard();
|
||||
}
|
||||
}
|
||||
updateBlynk();
|
||||
if (macroNl > 0)
|
||||
applyMacro(macroNl);
|
||||
nightlightActiveOld = false;
|
||||
}
|
||||
} else if (nightlightActiveOld) //early de-init
|
||||
{
|
||||
if (nightlightMode == NL_MODE_SUN) { //restore previous effect
|
||||
effectCurrent = colNlT[0];
|
||||
effectSpeed = colNlT[1];
|
||||
effectPalette = colNlT[2];
|
||||
colorUpdated(NOTIFIER_CALL_MODE_NO_NOTIFY);
|
||||
}
|
||||
nightlightActiveOld = false;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user