+
+
+
+
\ No newline at end of file
diff --git a/Arduino/McLighting/definitions.h b/Arduino/McLighting/definitions.h
index 285fff9..60fdbc3 100644
--- a/Arduino/McLighting/definitions.h
+++ b/Arduino/McLighting/definitions.h
@@ -1,236 +1,236 @@
-#define USE_WS2812FX_DMA 0 // 0 = Used PIN is ignored & set to RX/GPIO3; 1 = Used PIN is ignored & set to TX/GPIO1; 2 = Used PIN is ignored & set to D4/GPIO2; Uses WS2812FX, see: https://github.com/kitesurfer1404/WS2812FX
- // or comment it out
-#if defined(USE_WS2812FX_DMA)
- #define MAXLEDS 384 // due to memory limit of esp8266 at the moment only 384 leds are supported in DMA Mode. More can crash if mqtt is used.
-#else
- #define MAXLEDS 4096
-#endif
-// Neopixel
-#define LED_PIN 3 // PIN (15 / D8) where neopixel / WS2811 strip is attached; is configurable, if USE_WS2812FX_DMA is not defined. Just for the start
-#define NUMLEDS 50 // Number of leds in the; is configurable just for the start
-#define RGBORDER "GRBW" // RGBOrder; is configurable just for the start
-#define FX_OPTIONS 48 // ws2812fx Options 48 = SIZE_SMALL + FADE_MEDIUM is configurable just for the start; for WS2812FX setSegment OPTIONS, see: https://github.com/kitesurfer1404/WS2812FX/blob/master/extras/WS2812FX%20Users%20Guide.md
-//#define LED_TYPE_WS2811 // Uncomment, if LED type uses 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
-#define LED_BUILTIN 2 // ESP-12F has the built in LED on GPIO2, see https://github.com/esp8266/Arduino/issues/2192
-char HOSTNAME[65] = "McLightingRGBW"; // Friedly hostname is configurable just for the start. Hostname should not contain spaces as this can break Home Assistant discovery if used.
-
-#define ENABLE_OTA 1 // If defined, enable Arduino OTA code. If set to 0 enable Arduino OTA code, if set to 1 enable ESP8266HTTPUpdateServer OTA code.
-#define ENABLE_MQTT 1 // If defined use MQTT OR AMQTT, if set to 0 enable MQTT client code, see: https://github.com/toblum/McLighting/wiki/MQTT-API, if set to 1, enable Async MQTT code, see: https://github.com/marvinroger/async-mqtt-client
-//#define ENABLE_MQTT_HOSTNAME_CHIPID // Uncomment/comment to add ESPChipID to end of MQTT hostname
-//#define ENABLE_MQTT_INCLUDE_IP // uncomment/comment to add the IP-adress to the MQTT message
-#define ENABLE_HOMEASSISTANT // If defined, enable Homeassistant integration, ENABLE_MQTT must be active
-#define MQTT_HOME_ASSISTANT_SUPPORT // If defined, use AMQTT and select Tools -> IwIP Variant -> Higher Bandwidth
-//#define DISABLE_MQTT_OUT_ON_MQTT_IN // If defined, McLighting will not send back MQTT-out on MQTT-in regarding issue #67, does not change anything at the moment
-
-//#define ENABLE_BUTTON 14 // If defined, enable button handling code, see: https://github.com/toblum/McLighting/wiki/Button-control, the value defines the input pin (14 / D5) for switching the LED strip on / off, connect this PIN to ground to trigger button.
-//#define ENABLE_BUTTON_GY33 12 // If defined, enable button handling code for GY-33 color sensor to scan color. The value defines the input pin (12 / D6) for read color data with RGB sensor, connect this PIN to ground to trigger button.
-//#define POWER_SUPPLY 12 // PIN (12 / D6) If defined, enable output to control external power supply
-#if defined(POWER_SUPPLY)
- #define POWER_ON HIGH // Define the output state to turn on the power supply, either HIGH or LOW. Opposite will be uses for power off.
-#endif
-#define ENABLE_REMOTE 13 // If defined, enable Remote Control via TSOP31238. The value defines the input pin (13 / D7) for TSOP31238 Out
-
-#if defined(ENABLE_BUTTON_GY33)
- #define GAMMA 2.5 // Gamma correction for GY-33 sensor
-#endif
-
-#define ENABLE_STATE_SAVE // If defined, load saved state on reboot and save state on SPIFFS
-
-#define CUSTOM_WS2812FX_ANIMATIONS // uncomment and put animations in "custom_ws2812fx_animations.h"
-#define USE_HTML_MIN_GZ // uncomment for using index.htm & edit.htm from PROGMEM instead of SPIFFS
-
-#define TRANS_COLOR_DELAY 5 // Delay for color transition
-#define TRANS_DELAY 10 // Delay for brightness and speed transition
-
- // Experimental: Enable transitions of color, brightness and speed. It does not work properly for all effects.
-bool transEffectOverride = false;
-uint8_t trans_cnt = 0;
-int trans_cnt_max = 0;
-unsigned long colorFadeDelay = 0;
-unsigned long brightnessFadeDelay = 0;
-unsigned long speedFadeDelay = 0;
-
-#if defined(CUSTOM_WS2812FX_ANIMATIONS)
- #define MULTICAST false
- #define START_UNIVERSE 1 // First DMX Universe to listen for
- uint8_t END_UNIVERSE = START_UNIVERSE; // Total number of Universes to listen for, starting at UNIVERSE
-
-#endif
-uint8_t prevsegment = 0;
-
-#if defined(ENABLE_REMOTE)
- uint8_t selected_color = 1;
- uint64_t last_remote_cmd;
- enum RMT_BTN {ON_OFF, MODE_UP, MODE_DOWN, RED_UP, RED_DOWN, GREEN_UP, GREEN_DOWN, BLUE_UP, BLUE_DOWN, WHITE_UP, WHITE_DOWN, BRIGHTNESS_UP, BRIGHTNESS_DOWN, SPEED_UP, SPEED_DOWN, COL_M, COL_B, COL_X, AUTOMODE, CUST_1, CUST_2, CUST_3, SEG_UP, SEG_DOWN, REPEATCMD, BTN_CNT};
- // Change your IR Commands here. You can see them in console, after you pressed a button on the remote
- uint64_t rmt_commands[BTN_CNT] = {0xF7C03F, 0xF7708F, 0xF7F00F, 0xF720DF, 0xF710EF, 0xF7A05F, 0xF7906F, 0xF7609F, 0xF750AF, 0xF7E01F, 0xF7D02F, 0xF730CF, 0xF7B04F, 0xF748B7, 0xF7C837, 0xF700FF, 0xF7807F, 0xF740BF, 0xF708F7, 0xF78877, 0xF728D7, 0xF7A857, 0xF76897, 0xF7E817, 0xFFFFFFFFFFFFFFFF};
-#endif
-#define WIFIMGR_PORTAL_TIMEOUT 180
-//#define WIFIMGR_SET_MANUAL_IP
-
-#if defined(WIFIMGR_SET_MANUAL_IP)
- uint8_t _ip[4] = {192,168,0,128};
- uint8_t _gw[4] = {192,168,0,1};
- uint8_t _sn[4] = {255,255,255,0};
-#endif
-
-#if defined(MQTT_HOME_ASSISTANT_SUPPORT)
- #define MQTT_HOME_ASSISTANT_0_87_SUPPORT // Comment if using HA version < 0.87
-#endif
-
-#if defined(USE_WS2812FX_DMA) && (USE_WS2812FX_DMA < 0 || USE_WS2812FX_DMA > 2)
-#error "Definition of USE_WS2812FX_DMA is wrong!"
-#endif
-
-#if defined(ENABLE_MQTT) and ENABLE_MQTT < 0 and ENABLE_MQTT > 1
-#error "Definition of ENABLE_MQTT is wrong!"
-#endif
-
-#if defined(ENABLE_MQTT) and ENABLE_MQTT < 0 and ENABLE_MQTT > 1
-#error "Definition of ENABLE_MQTT is wrong!"
-#endif
-
-#if defined(ENABLE_HOMEASSISTANT) and !defined(ENABLE_MQTT)
-#error "To use HA, you have to either enable PubCubClient or AsyncMQTT"
-#endif
-#if !defined(ENABLE_HOMEASSISTANT) and defined(MQTT_HOME_ASSISTANT_SUPPORT)
-#error "To use HA support, you have to either enable Homeassistant component"
-#endif
-
-// parameters for automatically cycling favorite patterns
-uint32_t autoParams[][6] = { // main_color, back_color, xtra_color, speed, mode, duration (milliseconds)
- {0x00ff0000, 0x0000ff00, 0x00000000, 200, 1, 5000}, // blink red/geen for 5 seconds
- {0x0000ff00, 0x000000ff, 0x00000000, 180, 3, 10000}, // wipe green/blue for 10 seconds
- {0x000000ff, 0x00ff0000, 0x00000000, 100, 14, 10000}, // dual scan blue on red for 10 seconds
- {0x000000ff, 0x00ff0000, 0x00000000, 100, 45, 15000}, // fireworks blue/red for 15 seconds
- {0x00ff0000, 0x0000ff00, 0x000000ff, 40, 54, 15000} // tricolor chase red/green/blue for 15 seconds
-};
-
-#if defined(ENABLE_MQTT)
- char mqtt_buf[80];
- char mqtt_will_topic[sizeof(HOSTNAME) + 7]; // Topic 'will' will be:HOSTNAME "/status";
- const char mqtt_will_payload[] = "OFFLINE";
- char mqtt_intopic[sizeof(HOSTNAME) + 3]; // Topic 'in' will be: /in
- char mqtt_outtopic[sizeof(HOSTNAME) + 4]; // Topic 'out' will be: /out
- bool mqtt_lwt_boot_flag = true;
- #if ENABLE_MQTT == 0
- #define MQTT_MAX_PACKET_SIZE 512
- #define MQTT_MAX_RECONNECT_TRIES 4
- uint8_t mqtt_reconnect_retries = 0;
- uint8_t qossub = 0; // PubSubClient can sub qos 0 or 1
- #endif
-
- #if ENABLE_MQTT == 1
- uint8_t qossub = 0; // AMQTT can sub qos 0 or 1 or 2
- uint8_t qospub = 0; // AMQTT can pub qos 0 or 1 or 2
- #endif
-
- #if defined(ENABLE_HOMEASSISTANT)
- char mqtt_ha_config[20 + sizeof(HOSTNAME) + 7]; // Topic config will be: "homeassistant/light//config"
- char mqtt_ha_state_in[5 + sizeof(HOSTNAME) + 12]; // Topic in will be: "home/_ha/state/in"
- char mqtt_ha_state_out[5 + sizeof(HOSTNAME) + 13]; // Topic in will be: "home/_ha/state/out"
- const char* on_cmd = "ON";
- const char* off_cmd = "OFF";
- bool new_ha_mqtt_msg = false;
- uint16_t color_temp = 327; // min is 154 and max is 500
- #endif
-
- char mqtt_clientid[sizeof(HOSTNAME) + 9];
- char mqtt_host[65] = ""; //is configurable just for the start
- uint16_t mqtt_port = 1883; //is configurable just for the start
- char mqtt_user[33] = ""; //is configurable just for the start
- char mqtt_pass[33] = ""; //is configurable just for the start
-#endif
-
-
-// ***************************************************************************
-// Global variables / definitions
-// ***************************************************************************
-#define DBG_OUTPUT_PORT Serial // Set debug output port
-
-uint8_t autoCount[10] = {}; // Global variable for storing the counter for automated playback for each segment
-unsigned long autoDelay[10] = {}; // Global variable for storing the time to next auto effect for each segment
-struct {
- uint16_t start = 0;
- uint16_t stop = NUMLEDS - 1;
- uint8_t mode[10] = {}; // Global variable for storing the WS2812FX mode to set for each segment
- uint8_t speed[10] = {}; // Global variable for storing the speed for effects --> smaller == slower
- uint32_t colors[10][3] = {}; // 2 dim. Color array for setting colors of WS2812FX
- uint8_t options = FX_OPTIONS;
-} segState;
-
-// List of all color modes
-enum MODE {OFF, HOLD, SET};
-MODE prevmode = HOLD; // Do not change
-
-struct {
- uint8_t segment = 0; // Actual selected segment
- MODE mode = SET; // Standard mode that is active when software starts
- uint8_t brightness = 196; // Global variable for storing the brightness (255 == 100%)
-} State;
-
-struct {
- uint8_t segments = 1;
- uint16_t stripSize = NUMLEDS;
- char RGBOrder[5] = RGBORDER;
- #if defined(USE_WS2812FX_DMA)
- #if USE_WS2812FX_DMA == 0
- uint8_t pin = 3;
- #endif
- #if USE_WS2812FX_DMA == 1
- uint8_t pin = 2;
- #endif
- #if USE_WS2812FX_DMA == 2
- uint8_t pin = 1;
- #endif
- #else
- uint8_t pin = LED_PIN;
- #endif
- bool transEffect = false;
-} Config;
-
-uint8_t fx_speed = 196; // Global variable for storing the speed for effects while fading --> smaller == slower
-uint8_t fx_mode = 0;
-uint8_t brightness_trans = 0; // Global variable for storing the brightness before change
-uint32_t hexcolors_trans[3] = {}; // Color array of colors of WS2812FX before fading
-struct ledstate // Data structure to store a state of a single led
-{
- uint8_t red;
- uint8_t green;
- uint8_t blue;
- uint8_t white;
-};
-
-typedef struct ledstate LEDState; // Define the datatype LEDState
-uint8_t* ledstates; // Set a pointer to get an array of led states to store the state of the whole strip
-LEDState main_color = { 255, 0, 0, 0 }; // Store the "main color" of the strip used in single color modes
-LEDState back_color = { 0, 0, 0, 0 }; // Store the "2nd color" of the strip used in single color modes
-LEDState xtra_color = { 0, 0, 0, 0 }; // Store the "3rd color" of the strip used in single color modes
-
-bool updateConfig = false; // For WiFiManger custom config and config
-
-// Button handling
-
-#if defined(ENABLE_BUTTON) || defined(ENABLE_BUTTON_GY33)
- const unsigned long keySampleIntervalMs = 25;
-#endif
-
-#if defined(ENABLE_BUTTON)
-//#define BTN_MODE_SHORT "STA|mo|fxm| s| b| r1| g1| b1| w1| r2| g2| b2| w2| r3| g3| b3| w3" // Example
- #define BTN_MODE_SHORT "STA| 5| 0|196|255| 0| 0| 0|255| 0| 0| 0| 0| 0| 0| 0| 0" // Static white
- #define BTN_MODE_MEDIUM "STA| 5| 48|196|200|255|102| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0" // Fire flicker
- #define BTN_MODE_LONG "STA| 5| 46|196|200|255|102| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0" // Fireworks random
- unsigned long keyPrevMillis = 0;
- byte longKeyPressCountMax = 80; // 80 * 25 = 2000 ms
- byte mediumKeyPressCountMin = 20; // 20 * 25 = 500 ms
- byte KeyPressCount = 0;
- byte prevKeyState = HIGH; // button is active low
-#endif
-
-#if defined(ENABLE_BUTTON_GY33)
- unsigned long keyPrevMillis_gy33 = 0;
- byte longKeyPressCountMax_gy33 = 80; // 80 * 25 = 2000 ms
- byte mediumKeyPressCountMin_gy33 = 20; // 20 * 25 = 500 ms
- byte KeyPressCount_gy33 = 0;
- byte prevKeyState_gy33 = HIGH; // button is active low
-#endif
+#define USE_WS2812FX_DMA 0 // 0 = Used PIN is ignored & set to RX/GPIO3; 1 = Used PIN is ignored & set to TX/GPIO1; 2 = Used PIN is ignored & set to D4/GPIO2; Uses WS2812FX, see: https://github.com/kitesurfer1404/WS2812FX
+ // or comment it out
+#if defined(USE_WS2812FX_DMA)
+ #define MAXLEDS 384 // due to memory limit of esp8266 at the moment only 384 leds are supported in DMA Mode. More can crash if mqtt is used.
+#else
+ #define MAXLEDS 4096
+#endif
+// Neopixel
+#define LED_PIN 3 // PIN (15 / D8) where neopixel / WS2811 strip is attached; is configurable, if USE_WS2812FX_DMA is not defined. Just for the start
+#define NUMLEDS 50 // Number of leds in the; is configurable just for the start
+#define RGBORDER "GRBW" // RGBOrder; is configurable just for the start
+#define FX_OPTIONS 48 // ws2812fx Options 48 = SIZE_SMALL + FADE_MEDIUM is configurable just for the start; for WS2812FX setSegment OPTIONS, see: https://github.com/kitesurfer1404/WS2812FX/blob/master/extras/WS2812FX%20Users%20Guide.md
+//#define LED_TYPE_WS2811 // Uncomment, if LED type uses 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
+#define LED_BUILTIN 2 // ESP-12F has the built in LED on GPIO2, see https://github.com/esp8266/Arduino/issues/2192
+char HOSTNAME[65] = "McLightingRGBW"; // Friedly hostname is configurable just for the start. Hostname should not contain spaces as this can break Home Assistant discovery if used.
+
+#define ENABLE_OTA 1 // If defined, enable Arduino OTA code. If set to 0 enable Arduino OTA code, if set to 1 enable ESP8266HTTPUpdateServer OTA code.
+#define ENABLE_MQTT 1 // If defined use MQTT OR AMQTT, if set to 0 enable MQTT client code, see: https://github.com/toblum/McLighting/wiki/MQTT-API, if set to 1, enable Async MQTT code, see: https://github.com/marvinroger/async-mqtt-client
+//#define ENABLE_MQTT_HOSTNAME_CHIPID // Uncomment/comment to add ESPChipID to end of MQTT hostname
+//#define ENABLE_MQTT_INCLUDE_IP // uncomment/comment to add the IP-adress to the MQTT message
+#define ENABLE_HOMEASSISTANT // If defined, enable Homeassistant integration, ENABLE_MQTT must be active
+#define MQTT_HOME_ASSISTANT_SUPPORT // If defined, use AMQTT and select Tools -> IwIP Variant -> Higher Bandwidth
+#define DELAY_MQTT_HA_MESSAGE 5 // HA Status is send after DELAY_MQTT_HA_MESSAGE seconds, to save bandwith
+
+//#define ENABLE_BUTTON 14 // If defined, enable button handling code, see: https://github.com/toblum/McLighting/wiki/Button-control, the value defines the input pin (14 / D5) for switching the LED strip on / off, connect this PIN to ground to trigger button.
+//#define ENABLE_BUTTON_GY33 12 // If defined, enable button handling code for GY-33 color sensor to scan color. The value defines the input pin (12 / D6) for read color data with RGB sensor, connect this PIN to ground to trigger button.
+//#define POWER_SUPPLY 12 // PIN (12 / D6) If defined, enable output to control external power supply
+#if defined(POWER_SUPPLY)
+ #define POWER_ON HIGH // Define the output state to turn on the power supply, either HIGH or LOW. Opposite will be uses for power off.
+#endif
+#define ENABLE_REMOTE 13 // If defined, enable Remote Control via TSOP31238. The value defines the input pin (13 / D7) for TSOP31238 Out
+
+#if defined(ENABLE_BUTTON_GY33)
+ #define GAMMA 2.5 // Gamma correction for GY-33 sensor
+#endif
+
+#define ENABLE_STATE_SAVE // If defined, load saved state on reboot and save state on SPIFFS
+
+#define CUSTOM_WS2812FX_ANIMATIONS // uncomment and put animations in "custom_ws2812fx_animations.h"
+#define USE_HTML_MIN_GZ // uncomment for using index.htm & edit.htm from PROGMEM instead of SPIFFS
+
+#define TRANS_COLOR_DELAY 5 // Delay for color transition
+#define TRANS_DELAY 10 // Delay for brightness and speed transition
+
+ // Experimental: Enable transitions of color, brightness and speed. It does not work properly for all effects.
+bool transEffectOverride = false;
+uint8_t trans_cnt = 0;
+int trans_cnt_max = 0;
+unsigned long colorFadeDelay = 0;
+unsigned long brightnessFadeDelay = 0;
+unsigned long speedFadeDelay = 0;
+
+#if defined(CUSTOM_WS2812FX_ANIMATIONS)
+ #define MULTICAST false
+ #define START_UNIVERSE 1 // First DMX Universe to listen for
+ uint8_t END_UNIVERSE = START_UNIVERSE; // Total number of Universes to listen for, starting at UNIVERSE
+
+#endif
+uint8_t prevsegment = 0;
+
+#if defined(ENABLE_REMOTE)
+ uint8_t selected_color = 1;
+ uint64_t last_remote_cmd;
+ enum RMT_BTN {ON_OFF, MODE_UP, MODE_DOWN, RED_UP, RED_DOWN, GREEN_UP, GREEN_DOWN, BLUE_UP, BLUE_DOWN, WHITE_UP, WHITE_DOWN, BRIGHTNESS_UP, BRIGHTNESS_DOWN, SPEED_UP, SPEED_DOWN, COL_M, COL_B, COL_X, AUTOMODE, CUST_1, CUST_2, CUST_3, SEG_UP, SEG_DOWN, REPEATCMD, BTN_CNT};
+ // Change your IR Commands here. You can see them in console, after you pressed a button on the remote
+ uint64_t rmt_commands[BTN_CNT] = {0xF7C03F, 0xF7708F, 0xF7F00F, 0xF720DF, 0xF710EF, 0xF7A05F, 0xF7906F, 0xF7609F, 0xF750AF, 0xF7E01F, 0xF7D02F, 0xF730CF, 0xF7B04F, 0xF748B7, 0xF7C837, 0xF700FF, 0xF7807F, 0xF740BF, 0xF708F7, 0xF78877, 0xF728D7, 0xF7A857, 0xF76897, 0xF7E817, 0xFFFFFFFFFFFFFFFF};
+#endif
+#define WIFIMGR_PORTAL_TIMEOUT 180
+//#define WIFIMGR_SET_MANUAL_IP
+
+#if defined(WIFIMGR_SET_MANUAL_IP)
+ uint8_t _ip[4] = {192,168,0,128};
+ uint8_t _gw[4] = {192,168,0,1};
+ uint8_t _sn[4] = {255,255,255,0};
+#endif
+
+#if defined(MQTT_HOME_ASSISTANT_SUPPORT)
+ #define MQTT_HOME_ASSISTANT_0_87_SUPPORT // Comment if using HA version < 0.87
+#endif
+
+#if defined(USE_WS2812FX_DMA) && (USE_WS2812FX_DMA < 0 || USE_WS2812FX_DMA > 2)
+#error "Definition of USE_WS2812FX_DMA is wrong!"
+#endif
+
+#if defined(ENABLE_MQTT) and ENABLE_MQTT < 0 and ENABLE_MQTT > 1
+#error "Definition of ENABLE_MQTT is wrong!"
+#endif
+
+#if defined(ENABLE_MQTT) and ENABLE_MQTT < 0 and ENABLE_MQTT > 1
+#error "Definition of ENABLE_MQTT is wrong!"
+#endif
+
+#if defined(ENABLE_HOMEASSISTANT) and !defined(ENABLE_MQTT)
+#error "To use HA, you have to either enable PubCubClient or AsyncMQTT"
+#endif
+#if !defined(ENABLE_HOMEASSISTANT) and defined(MQTT_HOME_ASSISTANT_SUPPORT)
+#error "To use HA support, you have to either enable Homeassistant component"
+#endif
+
+// parameters for automatically cycling favorite patterns
+uint32_t autoParams[][6] = { // main_color, back_color, xtra_color, speed, mode, duration (milliseconds)
+ {0x00ff0000, 0x0000ff00, 0x00000000, 200, 1, 5000}, // blink red/geen for 5 seconds
+ {0x0000ff00, 0x000000ff, 0x00000000, 180, 3, 10000}, // wipe green/blue for 10 seconds
+ {0x000000ff, 0x00ff0000, 0x00000000, 100, 14, 10000}, // dual scan blue on red for 10 seconds
+ {0x000000ff, 0x00ff0000, 0x00000000, 100, 45, 15000}, // fireworks blue/red for 15 seconds
+ {0x00ff0000, 0x0000ff00, 0x000000ff, 40, 54, 15000} // tricolor chase red/green/blue for 15 seconds
+};
+
+#if defined(ENABLE_MQTT)
+ char mqtt_buf[80];
+ char mqtt_will_topic[sizeof(HOSTNAME) + 7]; // Topic 'will' will be:HOSTNAME "/status";
+ const char mqtt_will_payload[] = "OFFLINE";
+ char mqtt_intopic[sizeof(HOSTNAME) + 3]; // Topic 'in' will be: /in
+ char mqtt_outtopic[sizeof(HOSTNAME) + 4]; // Topic 'out' will be: /out
+ bool mqtt_lwt_boot_flag = true;
+ #if ENABLE_MQTT == 0
+ #define MQTT_MAX_PACKET_SIZE 512
+ #define MQTT_MAX_RECONNECT_TRIES 4
+ uint8_t mqtt_reconnect_retries = 0;
+ uint8_t qossub = 0; // PubSubClient can sub qos 0 or 1
+ #endif
+
+ #if ENABLE_MQTT == 1
+ uint8_t qossub = 0; // AMQTT can sub qos 0 or 1 or 2
+ uint8_t qospub = 0; // AMQTT can pub qos 0 or 1 or 2
+ #endif
+
+ #if defined(ENABLE_HOMEASSISTANT)
+ char mqtt_ha_config[20 + sizeof(HOSTNAME) + 7]; // Topic config will be: "homeassistant/light//config"
+ char mqtt_ha_state_in[5 + sizeof(HOSTNAME) + 12]; // Topic in will be: "home/_ha/state/in"
+ char mqtt_ha_state_out[5 + sizeof(HOSTNAME) + 13]; // Topic in will be: "home/_ha/state/out"
+ const char* on_cmd = "ON";
+ const char* off_cmd = "OFF";
+ bool new_ha_mqtt_msg = false;
+ uint16_t color_temp = 327; // min is 154 and max is 500
+ #endif
+
+ char mqtt_clientid[sizeof(HOSTNAME) + 9];
+ char mqtt_host[65] = ""; //is configurable just for the start
+ uint16_t mqtt_port = 1883; //is configurable just for the start
+ char mqtt_user[33] = ""; //is configurable just for the start
+ char mqtt_pass[33] = ""; //is configurable just for the start
+#endif
+
+
+// ***************************************************************************
+// Global variables / definitions
+// ***************************************************************************
+#define DBG_OUTPUT_PORT Serial // Set debug output port
+
+uint8_t autoCount[10] = {}; // Global variable for storing the counter for automated playback for each segment
+unsigned long autoDelay[10] = {}; // Global variable for storing the time to next auto effect for each segment
+struct {
+ uint16_t start = 0;
+ uint16_t stop = NUMLEDS - 1;
+ uint8_t mode[10] = {}; // Global variable for storing the WS2812FX mode to set for each segment
+ uint8_t speed[10] = {}; // Global variable for storing the speed for effects --> smaller == slower
+ uint32_t colors[10][3] = {}; // 2 dim. Color array for setting colors of WS2812FX
+ uint8_t options = FX_OPTIONS;
+} segState;
+
+// List of all color modes
+enum MODE {OFF, HOLD, SET};
+MODE prevmode = HOLD; // Do not change
+
+struct {
+ uint8_t segment = 0; // Actual selected segment
+ MODE mode = SET; // Standard mode that is active when software starts
+ uint8_t brightness = 196; // Global variable for storing the brightness (255 == 100%)
+} State;
+
+struct {
+ uint8_t segments = 1;
+ uint16_t stripSize = NUMLEDS;
+ char RGBOrder[5] = RGBORDER;
+ #if defined(USE_WS2812FX_DMA)
+ #if USE_WS2812FX_DMA == 0
+ uint8_t pin = 3;
+ #endif
+ #if USE_WS2812FX_DMA == 1
+ uint8_t pin = 1;
+ #endif
+ #if USE_WS2812FX_DMA == 2
+ uint8_t pin = 2;
+ #endif
+ #else
+ uint8_t pin = LED_PIN;
+ #endif
+ bool transEffect = false;
+} Config;
+
+uint8_t fx_speed = 196; // Global variable for storing the speed for effects while fading --> smaller == slower
+uint8_t fx_mode = 0;
+uint8_t brightness_trans = 0; // Global variable for storing the brightness before change
+uint32_t hexcolors_trans[3] = {}; // Color array of colors of WS2812FX before fading
+struct ledstate // Data structure to store a state of a single led
+{
+ uint8_t red;
+ uint8_t green;
+ uint8_t blue;
+ uint8_t white;
+};
+
+typedef struct ledstate LEDState; // Define the datatype LEDState
+uint8_t* ledstates; // Set a pointer to get an array of led states to store the state of the whole strip
+LEDState main_color = { 255, 0, 0, 0 }; // Store the "main color" of the strip used in single color modes
+LEDState back_color = { 0, 0, 0, 0 }; // Store the "2nd color" of the strip used in single color modes
+LEDState xtra_color = { 0, 0, 0, 0 }; // Store the "3rd color" of the strip used in single color modes
+
+bool updateConfig = false; // For WiFiManger custom config and config
+
+// Button handling
+
+#if defined(ENABLE_BUTTON) || defined(ENABLE_BUTTON_GY33)
+ const unsigned long keySampleIntervalMs = 25;
+#endif
+
+#if defined(ENABLE_BUTTON)
+//#define BTN_MODE_SHORT "STA|mo|fxm| s| b| r1| g1| b1| w1| r2| g2| b2| w2| r3| g3| b3| w3" // Example
+ #define BTN_MODE_SHORT "STA| 5| 0|196|255| 0| 0| 0|255| 0| 0| 0| 0| 0| 0| 0| 0" // Static white
+ #define BTN_MODE_MEDIUM "STA| 5| 48|196|200|255|102| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0" // Fire flicker
+ #define BTN_MODE_LONG "STA| 5| 46|196|200|255|102| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0" // Fireworks random
+ unsigned long keyPrevMillis = 0;
+ byte longKeyPressCountMax = 80; // 80 * 25 = 2000 ms
+ byte mediumKeyPressCountMin = 20; // 20 * 25 = 500 ms
+ byte KeyPressCount = 0;
+ byte prevKeyState = HIGH; // button is active low
+#endif
+
+#if defined(ENABLE_BUTTON_GY33)
+ unsigned long keyPrevMillis_gy33 = 0;
+ byte longKeyPressCountMax_gy33 = 80; // 80 * 25 = 2000 ms
+ byte mediumKeyPressCountMin_gy33 = 20; // 20 * 25 = 500 ms
+ byte KeyPressCount_gy33 = 0;
+ byte prevKeyState_gy33 = HIGH; // button is active low
+#endif
diff --git a/Arduino/McLighting/mode_tv.h b/Arduino/McLighting/mode_tv.h
deleted file mode 100644
index 428d859..0000000
--- a/Arduino/McLighting/mode_tv.h
+++ /dev/null
@@ -1,77 +0,0 @@
-// ***************************************************************************
-// TV mode
-// ***************************************************************************
-
-uint8_t dipInterval = 10;
-uint16_t darkTime = 250;
-unsigned long currentDipTime;
-unsigned long dipStartTime;
-unsigned long currentMillis;
-uint8_t ledState = LOW;
-long previousMillis = 0;
-uint16_t led = 5;
-uint16_t interv = 2000;
-uint8_t twitch = 50;
-uint8_t dipCount = 0;
-uint8_t analogLevel = 100;
-boolean timeToDip = false;
-
-
-void hsb2rgbAN1(uint16_t index, uint8_t sat, uint8_t bright, uint8_t myled) {
- // Source: https://blog.adafruit.com/2012/03/14/constant-brightness-hsb-to-rgb-algorithm/
- uint8_t temp[5], n = (index >> 8) % 3;
- temp[0] = temp[3] = (uint8_t)(( (sat ^ 255) * bright) / 255);
- temp[1] = temp[4] = (uint8_t)((((( (index & 255) * sat) / 255) + (sat ^ 255)) * bright) / 255);
- temp[2] = (uint8_t)(((((((index & 255) ^ 255) * sat) / 255) + (sat ^ 255)) * bright) / 255);
- strip->setPixelColor(myled, temp[n + 2], temp[n + 1], temp[n], 0);
-}
-
-
-void updateLed (uint16_t led, uint8_t brightness) {
- ledstates[led] = brightness;
- for (uint16_t i=0; ishow();
-}
-
-
-// See: http://forum.mysensors.org/topic/85/phoneytv-for-vera-is-here/13
-void handleTV() {
- if (timeToDip == false) {
- currentMillis = millis();
- if(currentMillis-previousMillis > interv) {
- previousMillis = currentMillis;
- //interv = random(750,4001);//Adjusts the interval for more/less frequent random light changes
- interv = random(1000-(ws2812fx_speed*2),5001-(ws2812fx_speed*8));
- twitch = random(40,100);// Twitch provides motion effect but can be a bit much if too high
- dipCount = dipCount++;
- }
- if(currentMillis-previousMillis dipInterval) {
- DBG_OUTPUT_PORT.println("dip");
- timeToDip = true;
- dipCount = 0;
- dipStartTime = millis();
- darkTime = random(50,150);
- dipInterval = random(5,250);// cycles of flicker
- }
- }
- } else {
- DBG_OUTPUT_PORT.println("Dip Time");
- currentDipTime = millis();
- if (currentDipTime - dipStartTime < darkTime) {
- for (uint16_t i=3; ishow();
- }
-}
diff --git a/Arduino/McLighting/request_handlers.h b/Arduino/McLighting/request_handlers.h
index b95e466..1dc18f1 100644
--- a/Arduino/McLighting/request_handlers.h
+++ b/Arduino/McLighting/request_handlers.h
@@ -743,11 +743,15 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t lenght
root["effect"] = strip->getModeName(strip->getMode());
}
#endif
- char buffer[measureJson(root) + 1];
+ uint16_t msg_len = measureJson(root) + 1;
+ char buffer[msg_len];
serializeJson(root, buffer, sizeof(buffer));
jsonBuffer.clear();
#if ENABLE_MQTT == 0
- mqtt_client->publish(mqtt_ha_state_out, buffer, true);
+ //mqtt_client->publish(mqtt_ha_state_out, buffer, true);
+ mqtt_client->beginPublish(mqtt_ha_state_out, msg_len-1, true);
+ mqtt_client->write((const uint8_t*)buffer, msg_len-1);
+ mqtt_client->endPublish();
DBG_OUTPUT_PORT.printf("MQTT: Send [%s]: %s\r\n", mqtt_ha_state_out, buffer);
#endif
#if ENABLE_MQTT == 1
@@ -901,7 +905,7 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t lenght
return;
}
if(ha_send_data.active()) ha_send_data.detach();
- ha_send_data.once(5, tickerSendState);
+ ha_send_data.once(DELAY_MQTT_HA_MESSAGE, tickerSendState);
} else if (strcmp(topic, mqtt_intopic) == 0) {
#endif
@@ -936,7 +940,7 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t lenght
#if defined(ENABLE_HOMEASSISTANT)
ha_send_data.detach();
mqtt_client->subscribe(mqtt_ha_state_in, qossub);
- ha_send_data.once(5, tickerSendState);
+ ha_send_data.once(DELAY_MQTT_HA_MESSAGE, tickerSendState);
#if defined(MQTT_HOME_ASSISTANT_SUPPORT)
const size_t bufferSize = JSON_ARRAY_SIZE(strip->getModeCount()+ 4) + JSON_OBJECT_SIZE(11) + 1500;
DynamicJsonDocument jsonBuffer(bufferSize);
diff --git a/Arduino/McLighting/version.h b/Arduino/McLighting/version.h
index d375a80..5aaef44 100644
--- a/Arduino/McLighting/version.h
+++ b/Arduino/McLighting/version.h
@@ -1 +1 @@
-#define SKETCH_VERSION "3.1.0"
+#define SKETCH_VERSION "3.1.1"
\ No newline at end of file
diff --git a/Arduino/McLighting/version_info.ino b/Arduino/McLighting/version_info.ino
index bc1e5d0..6b13429 100644
--- a/Arduino/McLighting/version_info.ino
+++ b/Arduino/McLighting/version_info.ino
@@ -257,4 +257,8 @@
* Version Bump to 3.1.0
* bugfixes
* E1.31 is now working for multi segments
- */
+ *
+ * 18 April 2020
+ * Version Bump to 3.1.1
+ * bugfixes regarding issue #80
+ */
\ No newline at end of file
diff --git a/clients/newWebClient/edit.htm b/clients/newWebClient/edit.htm
deleted file mode 100644
index c8e8727..0000000
--- a/clients/newWebClient/edit.htm
+++ /dev/null
@@ -1,674 +0,0 @@
-
-
-
- SPIFFS Editor
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/clients/newWebClient/edit.htm.gz b/clients/newWebClient/edit.htm.gz
deleted file mode 100644
index 9466db2..0000000
Binary files a/clients/newWebClient/edit.htm.gz and /dev/null differ
diff --git a/clients/newWebClient/favicon.ico b/clients/newWebClient/favicon.ico
deleted file mode 100644
index 12e9dea..0000000
Binary files a/clients/newWebClient/favicon.ico and /dev/null differ
diff --git a/clients/newWebClient/index.htm b/clients/newWebClient/index.htm
deleted file mode 100644
index 7d8a7bf..0000000
--- a/clients/newWebClient/index.htm
+++ /dev/null
@@ -1,2600 +0,0 @@
-
-
-
- McLighting
-
-
-
-
-
-
-
-
-
-