Converted to ESP8266

This commit is contained in:
2019-05-04 08:28:44 +02:00
committed by 0xFEEDC0DE64
parent ee710e10b4
commit a49d20da89
12 changed files with 260 additions and 223 deletions

View File

@@ -8,7 +8,7 @@
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html
[env:esp32dev]
platform = espressif32
board = esp32dev
[env:esp01]
platform = espressif8266
board = esp01
framework = arduino

View File

@@ -5,114 +5,72 @@ else {
HOMEDIR += $$(HOME)
}
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/config"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/app_trace"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/app_update"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/asio"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/bootloader_support"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/bt"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/coap"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/console"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/driver"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp-tls"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp32"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_adc_cal"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_event"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_http_client"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_http_server"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_https_ota"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_https_server"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_ringbuf"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/ethernet"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/expat"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/fatfs"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/freemodbus"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/heap"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/idf_test"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/jsmn"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/json"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/libsodium"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/log"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/lwip"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/mbedtls"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/mdns"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/micro-ecc"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/mqtt"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/newlib"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/nghttp"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/nvs_flash"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/openssl"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/protobuf-c"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/protocomm"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/pthread"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/sdmmc"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/smartconfig_ack"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/soc"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/spi_flash"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/spiffs"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/tcp_transport"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/tcpip_adapter"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/ulp"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/unity"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/vfs"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/wear_levelling"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/wifi_provisioning"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/wpa_supplicant"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/xtensa-debug-module"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp32-camera"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp-face"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/fb_gfx"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/cores/esp32"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/variants/esp32"
INCLUDEPATH += "$${HOMEDIR}/test/lib/FastLED"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/ArduinoOTA/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/AsyncUDP/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/AzureIoT/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/BLE/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/BluetoothSerial/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/DNSServer/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/EEPROM"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/ESP32/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/ESPmDNS/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/FFat/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/FS/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/HTTPClient/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/HTTPUpdate/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/NetBIOS/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/Preferences/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/SD/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/SD_MMC/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/SPI/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/SPIFFS/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/SimpleBLE/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/Ticker/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/Update/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/WebServer/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/WiFi/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/WiFiClientSecure/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/Wire/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa32/xtensa-esp32-elf/include"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa32/xtensa-esp32-elf/include/c++/5.2.0"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa32/xtensa-esp32-elf/include/c++/5.2.0/xtensa-esp32-elf"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa32/lib/gcc/xtensa-esp32-elf/5.2.0/include"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa32/lib/gcc/xtensa-esp32-elf/5.2.0/include-fixed"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/tools/sdk/include"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/tools/sdk/libc/xtensa-lx106-elf/include"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/cores/esp8266"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/tools/sdk/lwip2/include"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/variants/generic"
INCLUDEPATH += "$${HOMEDIR}/LedController/lib/FastLED"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/SoftwareSerial"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WebServer/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ArduinoOTA"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/DNSServer/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/EEPROM"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266AVRISP/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266HTTPClient/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266HTTPUpdateServer/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266LLMNR"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266NetBIOS"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266SSDP"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFiMesh/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266httpUpdate/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266mDNS/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/Ethernet/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/GDBStub/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/Hash/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/SD/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/SPI"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/SPISlave/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/Servo/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/TFT_Touch_Shield_V2"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/Ticker"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/Wire"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/esp8266/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/4.8.2"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/4.8.2/xtensa-lx106-elf"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa/lib/gcc/xtensa-lx106-elf/4.8.2/include-fixed"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa/lib/gcc/xtensa-lx106-elf/4.8.2/include"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/tool-unity"
INCLUDEPATH += "$${HOMEDIR}/test/include"
INCLUDEPATH += "$${HOMEDIR}/test/src"
INCLUDEPATH += "$${HOMEDIR}/LedController/include"
INCLUDEPATH += "$${HOMEDIR}/LedController/src"
DEFINES += "PLATFORMIO=30603"
DEFINES += "ARDUINO_ESP32_DEV"
DEFINES += "ESP32"
DEFINES += "ESP_PLATFORM"
DEFINES += "F_CPU=240000000L"
DEFINES += "HAVE_CONFIG_H"
DEFINES += "MBEDTLS_CONFIG_FILE="mbedtls/esp_config.h""
DEFINES += "ESP8266"
DEFINES += "ARDUINO_ARCH_ESP8266"
DEFINES += "ARDUINO_ESP8266_ESP01"
DEFINES += "F_CPU=80000000L"
DEFINES += "__ets__"
DEFINES += "ICACHE_FLASH"
DEFINES += "ARDUINO=10805"
DEFINES += "ARDUINO_ARCH_ESP32"
DEFINES += "ARDUINO_VARIANT="esp32""
DEFINES += "ARDUINO_BOARD="Espressif ESP32 Dev Module""
DEFINES += "ARDUINO_BOARD="PLATFORMIO_ESP01""
DEFINES += "FLASHMODE_QIO"
DEFINES += "LWIP_OPEN_SRC"
DEFINES += "TCP_MSS=536"
DEFINES += "LWIP_FEATURES=1"
DEFINES += "LWIP_IPV6=0"
DEFINES += "VTABLES_IN_FLASH"
OTHER_FILES += platformio.ini
SOURCES += src/main.cpp
HEADERS += src/ledcontroller.h
HEADERS += src/pattern.h
HEADERS += src/patterns/rainbowpattern.h
HEADERS += src/patterns/rainbowwithglitterpattern.h
HEADERS += src/patterns/confettipattern.h
HEADERS += src/patterns/sineleonpattern.h
HEADERS += src/patterns/jugglepattern.h
HEADERS += src/patterns/bpmpattern.h
HEADERS += src/patterns/fire2012pattern.h

33
src/ledcontroller.h Normal file
View File

@@ -0,0 +1,33 @@
#pragma once
#include <array>
#include <functional>
#include <FastLED.h>
#include "patterns/rainbowpattern.h"
#include "patterns/rainbowwithglitterpattern.h"
#include "patterns/confettipattern.h"
#include "patterns/sineleonpattern.h"
#include "patterns/jugglepattern.h"
#include "patterns/bpmpattern.h"
#include "patterns/fire2012pattern.h"
class LedController {
public:
private:
static constexpr auto NUM_LEDS = 100;
std::array<CRGB, NUM_LEDS> leds;
RainbowPattern m_rainbow;
RainbowWithGlitterPattern m_rainbowWithGlitter;
ConfettiPattern m_confetti;
SineleonPattern m_sineleon;
JugglePattern m_juggle;
BpmPattern m_bpm;
Fire2012Pattern m_fire2012;
using PatternContainer = std::array<Pattern*, 7>;
};

View File

@@ -3,26 +3,38 @@
#include <Arduino.h>
#include <WiFi.h>
#include <esp_http_server.h>
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <FastLED.h>
#include "ledcontroller.h"
FASTLED_USING_NAMESPACE
static constexpr auto NUM_LEDS = 100;
constexpr auto WIFI_SSID = "McDonalds Free WiFi 2.4GHz";
constexpr auto WIFI_PASSWD = "Passwort_123";
LedController ledController;
constexpr auto pin = 0;
constexpr auto NUM_LEDS = 100;
std::array<CRGB, NUM_LEDS> leds;
ESP8266WebServer server(80);
uint8_t gHue = 0;
bool rotatePattern = true;
void addGlitter(fract8 chanceOfGlitter)
{
if(random8() < chanceOfGlitter)
leds[random16(leds.size())] += CRGB::White;
}
static uint8_t gHue = 0;
static const std::array<std::function<void()>, 7> patterns {
const std::array<std::function<void()>, 7> patterns {
[]()
{
fill_rainbow(&leds[0], leds.size(), gHue, 7);
@@ -100,9 +112,7 @@ static const std::array<std::function<void()>, 7> patterns {
}
};
static auto iter = patterns.begin();
static bool rotatePattern = true;
auto iter = patterns.begin();
void nextPattern()
{
@@ -111,141 +121,121 @@ void nextPattern()
iter = patterns.begin();
}
static esp_err_t index_handler(httpd_req_t *req)
void index_handler()
{
static const char *index1 = "<html>"
String str = "<html>"
"<head>"
"</head>"
"<body>"
"<h1>Total Entchen-Control 1.0</h1>"
"<p>"
"<a href=\"cmd?var=nextPattern&val=\">Next pattern</a> ";
if (rotatePattern)
str += "<a href=\"cmd?var=rotatePattern&val=false\">Disable pattern rotate</a>";
else
str += "<a href=\"cmd?var=rotatePattern&val=true\">Enable pattern rotate</a> ";
static const char *turnOn = "<a href=\"cmd?var=rotatePattern&val=true\">Enable pattern rotate</a> ";
static const char *turnOff = "<a href=\"cmd?var=rotatePattern&val=false\">Disable pattern rotate</a>";
const auto index = std::distance(patterns.begin(), iter);
static const char *index2 = "</p>"
str += "</p>"
"<form action=\"cmd\" method=\"GET\">"
"<input type=\"hidden\" name=\"var\" value=\"setPattern\" />"
"<select name=\"val\" size=\"7\">"
"<option value=\"0\">rainbow</option>"
"<option value=\"1\">rainbowWithGlitter</option>"
"<option value=\"2\">confetti</option>"
"<option value=\"3\">sinelon</option>"
"<option value=\"4\">juggle</option>"
"<option value=\"5\">bpm</option>"
"<option value=\"6\">Fire2012</option>"
"<option value=\"0\"";
if (index == 0)
str += " selected";
str += ">rainbow</option>"
"<option value=\"1\"";
if (index == 1)
str += " selected";
str += ">rainbowWithGlitter</option>"
"<option value=\"2\"";
if (index == 2)
str += " selected";
str += ">confetti</option>"
"<option value=\"3\"";
if (index == 3)
str += " selected";
str += ">sinelon</option>"
"<option value=\"4\"";
if (index == 4)
str += " selected";
str += ">juggle</option>"
"<option value=\"5\"";
if (index == 5)
str += " selected";
str += ">bpm</option>"
"<option value=\"6\"";
if (index == 6)
str += " selected";
str += ">Fire2012</option>"
"</select>"
"<button type=\"submit\">submit</button>"
"</form>"
"</body>"
"</html>";
String str = index1;
if (rotatePattern)
str += turnOff;
else
str += turnOn;
str += index2;
return httpd_resp_send(req, str.c_str(), str.length());
server.sendHeader("Connection", "close");
server.send(200, "text/html", str.c_str());
}
static esp_err_t status_handler(httpd_req_t *req)
void cmd_handler()
{
return httpd_resp_send(req, "statu2", 6);
}
server.sendHeader("Connection", "close");
static esp_err_t cmd_handler(httpd_req_t *req)
{
char* buf;
size_t buf_len;
char variable[32] = {0,};
char value[32] = {0,};
const String *var = nullptr;
const String *val = nullptr;
buf_len = httpd_req_get_url_query_len(req) + 1;
if (buf_len > 1) {
buf = (char*)malloc(buf_len);
if(!buf){
httpd_resp_send_500(req);
return ESP_FAIL;
}
if (httpd_req_get_url_query_str(req, buf, buf_len) == ESP_OK) {
if (httpd_query_key_value(buf, "var", variable, sizeof(variable)) == ESP_OK &&
httpd_query_key_value(buf, "val", value, sizeof(value)) == ESP_OK) {
} else {
free(buf);
httpd_resp_send_404(req);
return ESP_FAIL;
}
} else {
free(buf);
httpd_resp_send_404(req);
return ESP_FAIL;
}
free(buf);
} else {
httpd_resp_send_404(req);
return ESP_FAIL;
for (int i = 0; i < server.args(); i++)
{
if (server.argName(i) == "var")
var = &server.arg(i);
else if (server.argName(i) == "val")
val = &server.arg(i);
}
if (!strcmp(variable, "nextPattern"))
if (var == nullptr || val == nullptr)
server.send(400, "text/html", "var or val missing");
if (*var == "nextPattern")
{
nextPattern();
return httpd_resp_send(req, "ok1", 3);
server.send(200, "text/html", "ok");
return;
}
else if (!strcmp(variable, "setPattern"))
else if (*var == "setPattern")
{
const auto val = atoi(value);
if (val >= patterns.size())
return httpd_resp_send_500(req);
iter = patterns.begin() + val;
return httpd_resp_send(req, "ok2", 3);
}
else if (!strcmp(variable, "rotatePattern"))
const auto index = atoi(val->c_str());
if (index < 0 || index >= patterns.size())
{
rotatePattern = !strcmp(value, "true");
return httpd_resp_send(req, "ok3", 3);
server.send(500, "text/html", "out of range");
return;
}
return httpd_resp_send_500(req);
iter = patterns.begin() + index;
server.send(200, "text/html", "ok");
return;
}
else if (*var == "rotatePattern")
{
rotatePattern = *val == "true";
server.send(200, "text/html", "ok");
return;
}
server.send(500, "text/html", "unknown var");
}
void setup()
{
WiFi.begin("realraum", "r3alraum");
WiFi.begin(WIFI_SSID, WIFI_PASSWD);
FastLED.addLeds<WS2811, 16, RGB>(&leds[0], leds.size()).setCorrection(TypicalLEDStrip);
FastLED.addLeds<WS2812, pin, RGB>(&leds[0], leds.size()).setCorrection(TypicalLEDStrip);
httpd_config_t config = HTTPD_DEFAULT_CONFIG();
httpd_handle_t webserver;
{
const esp_err_t error = httpd_start(&webserver, &config);
if (error != ESP_OK)
{
Serial.println("could not start webserver");
Serial.println(error);
}
}
for (const httpd_uri_t &uri : {
httpd_uri_t { "/", HTTP_GET, index_handler, NULL },
httpd_uri_t { "/status", HTTP_GET, status_handler, NULL },
httpd_uri_t { "/cmd", HTTP_GET, cmd_handler, NULL }
})
{
const esp_err_t error = httpd_register_uri_handler(webserver, &uri);
if (error != ESP_OK)
{
Serial.print("error registering uri ");
Serial.println(uri.uri);
Serial.println(error);
}
}
server.on("/", HTTP_GET, index_handler);
server.on("/cmd", HTTP_GET, cmd_handler);
server.begin();
}
void loop()
@@ -263,5 +253,7 @@ void loop()
nextPattern();
}
}
server.handleClient();
}

5
src/pattern.h Normal file
View File

@@ -0,0 +1,5 @@
#pragma once
class Pattern {
};

View File

@@ -0,0 +1,7 @@
#pragma once
#include "pattern.h"
class BpmPattern : public Pattern {
};

View File

@@ -0,0 +1,7 @@
#pragma once
#include "pattern.h"
class ConfettiPattern : public Pattern {
};

View File

@@ -0,0 +1,7 @@
#pragma once
#include "pattern.h"
class Fire2012Pattern : public Pattern {
};

View File

@@ -0,0 +1,7 @@
#pragma once
#include "pattern.h"
class JugglePattern : public Pattern {
};

View File

@@ -0,0 +1,7 @@
#pragma once
#include "pattern.h"
class RainbowPattern : public Pattern {
};

View File

@@ -0,0 +1,7 @@
#pragma once
#include "rainbowpattern.h"
class RainbowWithGlitterPattern : public RainbowPattern {
};

View File

@@ -0,0 +1,7 @@
#pragma once
#include "pattern.h"
class SineleonPattern : public Pattern {
};