diff --git a/Arduino/McLighting/McLighting.ino b/Arduino/McLighting/McLighting.ino index b600257..e3d8efa 100644 --- a/Arduino/McLighting/McLighting.ino +++ b/Arduino/McLighting/McLighting.ino @@ -1071,7 +1071,7 @@ void loop() { if (mode == SET_MODE) { DBG_OUTPUT_PORT.printf("SET_MODE: %d %d\n", ws2812fx_mode, mode); strip.setMode(ws2812fx_mode); - strip.trigger(); + //strip.trigger(); // is done later anyway, why do it more than once? prevmode = SET_MODE; mode = SETCOLOR; } @@ -1081,23 +1081,22 @@ void loop() { } if (mode == SETCOLOR) { strip.setColor(main_color.red, main_color.green, main_color.blue, main_color.white); - strip.trigger(); mode = (prevmode == SET_MODE) ? SETSPEED : prevmode; + if (mode == HOLD) strip.trigger(); } if (mode == SETSPEED) { strip.setSpeed(convertSpeed(ws2812fx_speed)); - strip.trigger(); mode = (prevmode == SET_MODE) ? BRIGHTNESS : prevmode; + if (mode == HOLD) strip.trigger(); } if (mode == BRIGHTNESS) { strip.setBrightness(brightness); - strip.trigger(); - if (prevmode == SET_MODE) prevmode = HOLD; - mode = prevmode; + mode = (prevmode == SET_MODE) ? HOLD : prevmode; + if (mode == HOLD) strip.trigger(); } #ifdef ENABLE_LEGACY_ANIMATIONS if (mode == WIPE) { - strip.setColor(main_color.red, main_color.green, main_color.blue, main_color.white); + //strip.setColor(main_color.red, main_color.green, main_color.blue, main_color.white); strip.setMode(FX_MODE_COLOR_WIPE); strip.trigger(); mode = HOLD; @@ -1113,13 +1112,13 @@ void loop() { mode = HOLD; } if (mode == THEATERCHASE) { - strip.setColor(main_color.red, main_color.green, main_color.blue, main_color.white); + //strip.setColor(main_color.red, main_color.green, main_color.blue, main_color.white); strip.setMode(FX_MODE_THEATER_CHASE); strip.trigger(); mode = HOLD; } if (mode == TWINKLERANDOM) { - strip.setColor(main_color.red, main_color.green, main_color.blue, main_color.white); + //strip.setColor(main_color.red, main_color.green, main_color.blue, main_color.white); strip.setMode(FX_MODE_TWINKLE_RANDOM); strip.trigger(); mode = HOLD; diff --git a/Arduino/McLighting/definitions.h b/Arduino/McLighting/definitions.h index e643cb0..ad0ce10 100644 --- a/Arduino/McLighting/definitions.h +++ b/Arduino/McLighting/definitions.h @@ -16,7 +16,7 @@ const char HOSTNAME[] = "McLightingRGBW"; // Friedly hostname //#define ENABLE_OTA // If defined, enable Arduino OTA code. #define ENABLE_AMQTT // If defined, enable Async MQTT code, see: https://github.com/marvinroger/async-mqtt-client //#define ENABLE_MQTT // If defined, enable MQTT client code, see: https://github.com/toblum/McLighting/wiki/MQTT-API -#define ENABLE_HOMEASSISTANT // If defined, enable Homeassistant integration, ENABLE_MQTT or ENABLE_AMQTT must be active +//#define ENABLE_HOMEASSISTANT // If defined, enable Homeassistant integration, ENABLE_MQTT or ENABLE_AMQTT must be active #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 @@ -115,7 +115,7 @@ 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 }; + 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 diff --git a/Arduino/McLighting/request_handlers.h b/Arduino/McLighting/request_handlers.h index 596df82..67dfeae 100644 --- a/Arduino/McLighting/request_handlers.h +++ b/Arduino/McLighting/request_handlers.h @@ -894,6 +894,7 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t lenght main_color.red = (uint8_t) color["r"]; main_color.green = (uint8_t) color["g"]; main_color.blue = (uint8_t) color["b"]; + prevmode = mode; mode = SETCOLOR; } @@ -901,7 +902,9 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t lenght uint8_t json_speed = constrain((uint8_t) root["speed"], 0, 255); if (json_speed != ws2812fx_speed) { ws2812fx_speed = json_speed; - if(stateOn) mode = SETSPEED; + //if(stateOn) mode = SETSPEED; + prevmode = mode; + mode = SETSPEED; } } @@ -910,12 +913,16 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t lenght color_temp = (uint16_t) root["color_temp"]; unsigned int kelvin = 1000000 / color_temp; main_color = temp2rgb(kelvin); + prevmode = mode; mode = SETCOLOR; } if (root.containsKey("brightness")) { - brightness = constrain((uint8_t) root["brightness"], 0, 255); //fix #224 - mode = BRIGHTNESS; + uint8_t json_brightness = constrain((uint8_t) root["brightness"], 0, 255); //fix #224 + if (json_brightness != brightness) { + prevmode = mode; + mode = BRIGHTNESS; + } } if (root.containsKey("effect")) {