Start to get rid of Legacy Animations

Start to get rid of Legacy Animations:
tv mode is now selectable on its own (ENABLE_TV)
off mode is now no legacy animation
e131 mode is now no legacy animation
This commit is contained in:
BPoH_Voodoo
2019-02-03 17:13:17 +01:00
parent 6596ce34fa
commit a1ac9f2701
5 changed files with 82 additions and 38 deletions
+46 -14
View File
@@ -253,7 +253,7 @@ void saveConfigCallback () {
// ***************************************************************************
// Include: Color modes
// ***************************************************************************
#ifdef ENABLE_LEGACY_ANIMATIONS
#ifdef ENABLE_TV
#include "colormodes.h"
#endif
@@ -403,7 +403,8 @@ DBG_OUTPUT_PORT.println("Starting....");
//save the custom parameters to FS
#if defined(ENABLE_STATE_SAVE_SPIFFS) and (defined(ENABLE_MQTT) or defined(ENABLE_AMQTT))
(writeConfigFS(shouldSaveConfig)) ? DBG_OUTPUT_PORT.println("WiFiManager config FS Save success!"): DBG_OUTPUT_PORT.println("WiFiManager config FS Save failure!");
#else if defined(ENABLE_STATE_SAVE_EEPROM)
#endif
#if defined(ENABLE_STATE_SAVE_EEPROM)
if (shouldSaveConfig) {
DBG_OUTPUT_PORT.println("Saving WiFiManager config");
@@ -601,6 +602,16 @@ DBG_OUTPUT_PORT.println("Starting....");
#else
json["legacy_animations"] = "OFF";
#endif
#ifdef ENABLE_TV
json["tv_animation"] = "ON";
#else
json["tv_animation"] = "OFF";
#endif
#ifdef ENABLE_E131
json["e131_animations"] = "ON";
#else
json["e131_animations"] = "OFF";
#endif
#ifdef HTTP_OTA
json["esp8266_http_updateserver"] = "ON";
#endif
@@ -738,7 +749,7 @@ DBG_OUTPUT_PORT.println("Starting....");
});
server.on("/off", []() {
#ifdef ENABLE_LEGACY_ANIMATIONS
#ifdef ENABLE_TV
exit_func = true;
#endif
mode = OFF;
@@ -759,10 +770,10 @@ DBG_OUTPUT_PORT.println("Starting....");
});
server.on("/auto", []() {
#ifdef ENABLE_LEGACY_ANIMATIONS
#ifdef ENABLE_TV
exit_func = true;
#endif
mode = OFF;
mode = AUTO;
getArgs();
getStatusJSON();
#ifdef ENABLE_MQTT
@@ -780,7 +791,7 @@ DBG_OUTPUT_PORT.println("Starting....");
});
server.on("/all", []() {
#ifdef ENABLE_LEGACY_ANIMATIONS
#ifdef ENABLE_TV
exit_func = true;
#endif
ws2812fx_mode = FX_MODE_STATIC;
@@ -804,7 +815,9 @@ DBG_OUTPUT_PORT.println("Starting....");
#ifdef ENABLE_LEGACY_ANIMATIONS
server.on("/wipe", []() {
#ifdef ENABLE_TV
exit_func = true;
#endif
mode = WIPE;
getArgs();
getStatusJSON();
@@ -823,7 +836,9 @@ DBG_OUTPUT_PORT.println("Starting....");
});
server.on("/rainbow", []() {
#ifdef ENABLE_TV
exit_func = true;
#endif
mode = RAINBOW;
getArgs();
getStatusJSON();
@@ -842,7 +857,9 @@ DBG_OUTPUT_PORT.println("Starting....");
});
server.on("/rainbowCycle", []() {
#ifdef ENABLE_TV
exit_func = true;
#endif
mode = RAINBOWCYCLE;
getArgs();
getStatusJSON();
@@ -861,7 +878,9 @@ DBG_OUTPUT_PORT.println("Starting....");
});
server.on("/theaterchase", []() {
#ifdef ENABLE_TV
exit_func = true;
#endif
mode = THEATERCHASE;
getArgs();
getStatusJSON();
@@ -880,7 +899,9 @@ DBG_OUTPUT_PORT.println("Starting....");
});
server.on("/twinkleRandom", []() {
#ifdef ENABLE_TV
exit_func = true;
#endif
mode = TWINKLERANDOM;
getArgs();
getStatusJSON();
@@ -899,7 +920,9 @@ DBG_OUTPUT_PORT.println("Starting....");
});
server.on("/theaterchaseRainbow", []() {
#ifdef ENABLE_TV
exit_func = true;
#endif
mode = THEATERCHASERAINBOW;
getArgs();
getStatusJSON();
@@ -916,17 +939,20 @@ DBG_OUTPUT_PORT.println("Starting....");
if(!spiffs_save_state.active()) spiffs_save_state.once(3, tickerSpiffsSaveState);
#endif
});
#endif
#ifdef ENABLE_E131
#ifdef ENABLE_E131
server.on("/e131", []() {
#ifdef ENABLE_TV
exit_func = true;
#endif
mode = E131;
getStatusJSON();
#ifdef ENABLE_MQTT
mqtt_client.publish(mqtt_outtopic, String("OK =e131").c_str());
#endif
#ifdef ENABLE_AMQTT
amqttClient.publish(mqtt_outtopic.c_str(), qospub, false, String("OK =131").c_str());
amqttClient.publish(mqtt_outtopic.c_str(), qospub, false, String("OK =e131").c_str());
#endif
#ifdef ENABLE_HOMEASSISTANT
stateOn = true;
@@ -935,8 +961,9 @@ DBG_OUTPUT_PORT.println("Starting....");
if(!spiffs_save_state.active()) spiffs_save_state.once(3, tickerSpiffsSaveState);
#endif
});
#endif
#endif
#ifdef ENABLE_TV
server.on("/tv", []() {
exit_func = true;
mode = TV;
@@ -1000,9 +1027,11 @@ DBG_OUTPUT_PORT.println("Starting....");
else
Serial.println(F("*** e131.begin failed ***"));
#endif
#ifdef ENABLE_STATE_SAVE_SPIFFS
(readStateFS()) ? DBG_OUTPUT_PORT.println(" Success!") : DBG_OUTPUT_PORT.println(" Failure!");
#endif
#ifdef ENABLE_STATE_SAVE_EEPROM
// Load state string from EEPROM
String saved_state_string = readEEPROM(256, 36);
@@ -1128,22 +1157,25 @@ void loop() {
strip.trigger();
mode = HOLD;
}
#ifdef ENABLE_E131
#endif
#ifdef ENABLE_E131
if (mode == E131) {
handleE131();
}
#endif
#endif
if (mode == HOLD || mode == CUSTOM) {
if(!strip.isRunning()) strip.start();
#ifdef ENABLE_LEGACY_ANIMATIONS
#ifdef ENABLE_TV
if (exit_func) {
exit_func = false;
}
#endif
if (prevmode == SET_MODE) prevmode = HOLD;
}
#ifdef ENABLE_LEGACY_ANIMATIONS
#ifdef ENABLE_TV
if (mode == TV) {
if(!strip.isRunning()) strip.start();
tv();
@@ -1151,7 +1183,7 @@ void loop() {
#endif
// Only for modes with WS2812FX functionality
#ifdef ENABLE_LEGACY_ANIMATIONS
#ifdef ENABLE_TV
if (mode != TV && mode != CUSTOM) {
#else
if (mode != CUSTOM) {
+12 -14
View File
@@ -20,8 +20,9 @@ const char HOSTNAME[] = "McLightingRGBW"; // Friedly hostname
#define ENABLE_BUTTON // If defined, enable button handling code, see: https://github.com/toblum/McLighting/wiki/Button-control
//#define ENABLE_BUTTON_GY33 // If defined, enable button handling code for GY-33 color sensor to scan color
//#define MQTT_HOME_ASSISTANT_SUPPORT // If defined, use AMQTT and select Tools -> IwIP Variant -> Higher Bandwidth
#define ENABLE_LEGACY_ANIMATIONS // Dont disbale this for now
#define ENABLE_LEGACY_ANIMATIONS // Enable Legacy Animations
#define ENABLE_E131 // E1.31 implementation You have to uncomment #define USE_WS2812FX_DMA
#define ENABLE_TV // Enable TV Animation
#ifdef ENABLE_E131
#define START_UNIVERSE 1 // First DMX Universe to listen for
@@ -56,10 +57,10 @@ const char HOSTNAME[] = "McLightingRGBW"; // Friedly hostname
// parameters for automatically cycling favorite patterns
uint32_t autoParams[][4] = { // color, speed, mode, duration (seconds)
{0xff000000, 120, 1, 5.0}, // blink red for 5 seconds
{0x00ff0000, 120, 3, 10.0}, // wipe green for 10 seconds
{0x0000ff00, 196, 14, 5.0}, // dual scan blue for 5 seconds
{0x0000ff00, 196, 46, 15.0} // fireworks for 15 seconds
{0xff000000, 120, 1, 5}, // blink red for 5 seconds
{0x00ff0000, 120, 3, 10}, // wipe green for 10 seconds
{0x0000ff00, 196, 14, 5}, // dual scan blue for 5 seconds
{0x0000ff00, 196, 46, 15} // fireworks for 15 seconds
};
#if defined(ENABLE_MQTT) or defined(ENABLE_AMQTT)
@@ -114,18 +115,15 @@ uint32_t autoParams[][4] = { // color, speed, mode, duration (seconds)
// List of all color modes
#ifdef ENABLE_LEGACY_ANIMATIONS
#ifdef ENABLE_E131
enum MODE { SET_MODE, HOLD, AUTO, OFF, TV, CUSTOM, SETCOLOR, SETSPEED, BRIGHTNESS, WIPE, RAINBOW, RAINBOWCYCLE, THEATERCHASE, TWINKLERANDOM, THEATERCHASERAINBOW, E131};
#else
enum MODE { SET_MODE, HOLD, AUTO, OFF, TV, CUSTOM, SETCOLOR, SETSPEED, BRIGHTNESS, WIPE, RAINBOW, RAINBOWCYCLE, THEATERCHASE, TWINKLERANDOM, THEATERCHASERAINBOW};
#endif
enum MODE {OFF, AUTO, TV, E131, SET_MODE, HOLD, CUSTOM, SETCOLOR, SETSPEED, BRIGHTNESS, WIPE, RAINBOW, RAINBOWCYCLE, THEATERCHASE, TWINKLERANDOM, THEATERCHASERAINBOW};
MODE mode = RAINBOW; // Standard mode that is active when software starts
bool exit_func = false; // Global helper variable to get out of the color modes when mode changes
#else
enum MODE { SET_MODE, HOLD, AUTO, OFF, TV, CUSTOM, SETCOLOR, SETSPEED, BRIGHTNESS};
enum MODE {OFF, AUTO, TV, E131, SET_MODE, HOLD, CUSTOM, SETCOLOR, SETSPEED, BRIGHTNESS};
MODE mode = SET_MODE; // Standard mode that is active when software starts
#endif
#ifdef ENABLE_TV
bool exit_func = false; // Global helper variable to get out of the color modes when mode changes
#endif
MODE prevmode = mode;
int ws2812fx_speed = 196; // Global variable for storing the delay between color changes --> smaller == faster
@@ -164,7 +162,7 @@ char beforeauto_state[36]; // Keeps the state representation before a
#endif
// Button handling
#ifdef ENABLE_BUTTON || ENABLE_BUTTON_GY33
#if defined(ENABLE_BUTTON) || defined(ENABLE_BUTTON_GY33)
boolean buttonState = false;
#endif
+16 -5
View File
@@ -143,7 +143,7 @@ void handleSetAllMode(uint8_t * mypayload) {
main_color.blue = ((rgb >> 0) & 0xFF);
DBG_OUTPUT_PORT.printf("WS: Set all leds to main color: R: [%u] G: [%u] B: [%u] W: [%u]\n", main_color.red, main_color.green, main_color.blue, main_color.white);
#ifdef ENABLE_LEGACY_ANIMATIONS
#ifdef ENABLE_TV
exit_func = true;
#endif
ws2812fx_mode = FX_MODE_STATIC;
@@ -178,7 +178,7 @@ void handleSetSingleLED(uint8_t * mypayload, uint8_t firstChar = 0) {
strip.setPixelColor(led, ledstates[led].red, ledstates[led].green, ledstates[led].blue, ledstates[led].white);
strip.show();
}
#ifdef ENABLE_LEGACY_ANIMATIONS
#ifdef ENABLE_TV
exit_func = true;
#endif
mode = CUSTOM;
@@ -263,7 +263,9 @@ void setModeByStateString(String saved_state_string) {
}
void handleSetNamedMode(String str_mode) {
#ifdef ENABLE_TV
exit_func = true;
#endif
if (str_mode.startsWith("=off") or str_mode.startsWith("/off")) {
mode = OFF;
@@ -271,12 +273,17 @@ void handleSetNamedMode(String str_mode) {
stateOn = false;
#endif
}
#ifdef ENABLE_TV
if (str_mode.startsWith("=tv") or str_mode.startsWith("/tv")) {
mode = TV;
#ifdef ENABLE_HOMEASSISTANT
stateOn = true;
#endif
}
#endif
#ifdef ENABLE_E131
if (str_mode.startsWith("=e131") or str_mode.startsWith("/e131")) {
if(strip.isRunning()) strip.stop();
mode = E131;
@@ -284,6 +291,8 @@ void handleSetNamedMode(String str_mode) {
stateOn = true;
#endif
}
#endif
#ifdef ENABLE_LEGACY_ANIMATIONS
if (str_mode.startsWith("=auto")) {
mode = AUTO;
@@ -377,9 +386,11 @@ String listModesJSON(void) {
JsonObject objectoff = json.createNestedObject();
objectoff["mode"] = "off";
objectoff["name"] = "OFF";
#ifdef ENABLE_TV
JsonObject objecttv = json.createNestedObject();
objecttv["mode"] = "tv";
objecttv["name"] = "TV";
#endif
#ifdef ENABLE_E131
JsonObject objecte131 = json.createNestedObject();
objecte131["mode"] = "e131";
@@ -742,7 +753,7 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t lenght
}
}
#ifdef ENABLE_LEGACY_ANIMATIONS
#if defined(ENABLE_TV) || defined(ENABLE_E131)
void checkForRequests() {
webSocket.loop();
server.handleClient();
@@ -955,7 +966,7 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t lenght
// DBG_OUTPUT_PORT.print("]: "); DBG_OUTPUT_PORT.println(payload_in);
uint8_t * payload = (uint8_t *) malloc(length + 1);
memcpy(payload, payload_in, length);
payload[length] = NULL;
payload[length] = 0;
DBG_OUTPUT_PORT.printf("]: %s\n", payload);
#endif
@@ -963,7 +974,7 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t lenght
void mqtt_callback(char* topic, byte* payload_in, unsigned int length) {
uint8_t * payload = (uint8_t *)malloc(length + 1);
memcpy(payload, payload_in, length);
payload[length] = NULL;
payload[length] = 0;
DBG_OUTPUT_PORT.printf("MQTT: Message arrived [%s]\n", payload);
#endif
#ifdef ENABLE_HOMEASSISTANT
+5 -2
View File
@@ -197,6 +197,9 @@ $(function(){
$.getJSON("http://" + host + "/status", function(data) {
console.log("status", data);
mode = data.mode;
if (mode == "1") {
// set autoswitch $("#autoSwitch").val('checked');
}
ws2812fx_mode = data.ws2812fx_mode;
$("#rng_delay").val(data.speed);
$("#rng_brightness").val(data.brightness);
@@ -211,14 +214,14 @@ $(function(){
// Load modes async
// List of all color modes
// enum MODE { SET_MODE, HOLD, AUTO, OFF, TV, CUSTOM, SETCOLOR, SETSPEED, BRIGHTNESS, WIPE, RAINBOW, RAINBOWCYCLE, THEATERCHASE, TWINKLERANDOM, THEATERCHASERAINBOW};
// enum MODE {OFF, AUTO, TV, E131, SET_MODE, HOLD, CUSTOM, SETCOLOR, SETSPEED, BRIGHTNESS, WIPE, RAINBOW, RAINBOWCYCLE, THEATERCHASE, TWINKLERANDOM, THEATERCHASERAINBOW};
$.getJSON("http://" + host + "/get_modes", function(data) {
console.log("modes", data);
var modes_html = "";
data.forEach(function(current_mode){
if (current_mode.mode !== undefined) {
modes_html += '<div class="col s12 m6 l6 btn_grid">';
if ((mode == "1" && current_mode.mode == ws2812fx_mode) || (mode == "3" && current_mode.mode == "off") || (mode == "4" && current_mode.mode == "tv") || (mode == "15" && current_mode.mode == "e131")){
if ((mode == "5" && current_mode.mode == ws2812fx_mode) || (mode == "0" && current_mode.mode == "off") || (mode == "2" && current_mode.mode == "tv") || (mode == "3" && current_mode.mode == "e131")){
modes_html += '<a class="btn waves-effect waves-light btn_mode red" name="action" data-mode="' + current_mode.mode + '">(' + current_mode.mode +') '+ current_mode.name;
} else {
modes_html += '<a class="btn waves-effect waves-light btn_mode blue" name="action" data-mode="' + current_mode.mode + '">(' + current_mode.mode +') '+ current_mode.name;
+2 -2
View File
@@ -56,14 +56,14 @@ $(function(){
// Load modes async
// List of all color modes
// enum MODE { SET_MODE, HOLD, AUTO, OFF, TV, CUSTOM, SETCOLOR, SETSPEED, BRIGHTNESS, WIPE, RAINBOW, RAINBOWCYCLE, THEATERCHASE, TWINKLERANDOM, THEATERCHASERAINBOW};
// enum MODE {OFF, AUTO, TV, E131, SET_MODE, HOLD, CUSTOM, SETCOLOR, SETSPEED, BRIGHTNESS, WIPE, RAINBOW, RAINBOWCYCLE, THEATERCHASE, TWINKLERANDOM, THEATERCHASERAINBOW};
$.getJSON("http://" + host + "/get_modes", function(data) {
console.log("modes", data);
var modes_html = "";
data.forEach(function(current_mode){
if (current_mode.mode !== undefined) {
modes_html += '<div class="col s12 m6 l6 btn_grid">';
if ((mode == "1" && current_mode.mode == ws2812fx_mode) || (mode == "3" && current_mode.mode == "off") || (mode == "4" && current_mode.mode == "tv") || (mode == "15" && current_mode.mode == "e131")){
if ((mode == "5" && current_mode.mode == ws2812fx_mode) || (mode == "0" && current_mode.mode == "off") || (mode == "2" && current_mode.mode == "tv") || (mode == "3" && current_mode.mode == "e131")){
modes_html += '<a class="btn waves-effect waves-light btn_mode red" name="action" data-mode="' + current_mode.mode + '">(' + current_mode.mode +') '+ current_mode.name;
} else {
modes_html += '<a class="btn waves-effect waves-light btn_mode blue" name="action" data-mode="' + current_mode.mode + '">(' + current_mode.mode +') '+ current_mode.name;