Implemented power control

This commit is contained in:
2019-05-04 11:45:24 +02:00
committed by 0xFEEDC0DE64
parent dbfae0cdcc
commit 9e1d88db16
2 changed files with 59 additions and 11 deletions

View File

@@ -44,7 +44,11 @@ public:
void run()
{
(*iter)->run();
FastLED.show();
}
void poweroff()
{
fill_solid(&leds[0], NUM_LEDS, CRGB::Black);
}
private:

View File

@@ -15,6 +15,7 @@ LedController ledController;
ESP8266WebServer server(80);
bool power = true;
bool rotatePattern = true;
void setup()
@@ -48,8 +49,10 @@ void setup()
"<div class=\"container\">"
"<h1>Hello, world!</h1>"
"<p>"
"<a href=\"nextPattern\" class=\"softLink\">Next pattern</a>"
"<a href=\"setPatternRotate?val=true\" id=\"enableRotate\" class=\"softLink\">Enable automatic pattern rotate</a>"
"<a href=\"setPower?val=true\" id=\"enablePower\" class=\"softLink\">Turn LEDs on</a> "
"<a href=\"setPower?val=false\" id=\"disablePower\" class=\"softLink\">Turn LEDs off</a> "
"<a href=\"nextPattern\" id=\"nextPattern\" class=\"softLink\">Next pattern</a> "
"<a href=\"setPatternRotate?val=true\" id=\"enableRotate\" class=\"softLink\">Enable automatic pattern rotate</a> "
"<a href=\"setPatternRotate?val=false\" id=\"disableRotate\" class=\"softLink\">Disable automatic pattern rotate</a>"
"</p>"
@@ -87,14 +90,22 @@ void setup()
"xhr.onload = function() {"
"var parsed = JSON.parse(xhr.responseText);"
"if (parsed.autoRotate) {"
"$('#enableRotate').addClass('hidden');"
"$('#disableRotate').removeClass('hidden');"
"} else {"
"$('#enableRotate').removeClass('hidden');"
"$('#disableRotate').addClass('hidden');"
"function setHidden(element, hidden) {"
"if (hidden) {"
"element.addClass('hidden');"
"} else {"
"element.removeClass('hidden');"
"}"
"}"
"setHidden($('#enablePower'), parsed.power);"
"setHidden($('#disablePower'), !parsed.power);"
"setHidden($('#nextPattern'), !parsed.power);"
"setHidden($('#enableRotate'), !parsed.power || parsed.autoRotate);"
"setHidden($('#disableRotate'), !parsed.power || !parsed.autoRotate);"
"setHidden($('#patternSelect'), !parsed.power);"
"setHidden($('#brightness'), !parsed.power);"
"var select = $('#patternSelect');"
"select.empty();"
"select.attr('size', parsed.patterns.length);"
@@ -145,6 +156,10 @@ void setup()
}
str += "],";
str += "\"power\":";
str += power ? "true" : "false";
str += ",";
str += "\"autoRotate\":";
str += rotatePattern ? "true" : "false";
str += ",";
@@ -189,6 +204,31 @@ void setup()
server.send(200, "text/html", "ok");
});
server.on("/setPower", HTTP_GET, []()
{
const String *val = nullptr;
for (int i = 0; i < server.args(); i++)
if (server.argName(i) == "val")
val = &server.arg(i);
if (!val)
{
server.send(400, "text/html", "val missing");
return;
}
if (*val != "true" && *val != "false")
{
server.send(400, "text/html", "invalid val");
return;
}
power = *val == "true";
server.send(200, "text/html", "ok");
});
server.on("/setPatternRotate", HTTP_GET, []()
{
const String *val = nullptr;
@@ -247,10 +287,14 @@ void loop()
{
EVERY_N_MILLISECONDS(20)
{
ledController.run();
if (power)
ledController.run();
else
ledController.poweroff();
FastLED.show();
}
if (rotatePattern)
if (power && rotatePattern)
{
EVERY_N_SECONDS(10)
{