35 Commits

Author SHA1 Message Date
bpohvoodoo 7940e504e4 Update README.md 2020-06-05 18:30:54 +02:00
bpohvoodoo a07a30c483 Merge pull request #81 from FabLab-Luenen/development
Development
2020-04-18 09:14:23 +02:00
bpohvoodoo 52585d8088 Merge branch 'master' into development 2020-04-18 09:14:09 +02:00
bpohvoodoo 048a9380b9 Version Bump to 3.1.1
* bugfixes regarding issue #80
2020-04-18 08:31:59 +02:00
bpohvoodoo ca255317f6 Bump to 3.1.0 2020-03-07 09:42:14 +01:00
bpohvoodoo 0eeec51bb0 Update platformio.ini 2020-01-19 11:14:14 +01:00
bpohvoodoo aa4e7fa5c8 Bump to 2.2.8
* Version Bump to 2.2.8 rgbw 3colors
 * Bugfixes
 * adressed issue #59
2019-12-16 21:11:24 +01:00
bpohvoodoo b3e74ab9b1 Merge pull request #62 from sehraf/patch-1
fix #if block missing the last line
2019-12-16 21:01:23 +01:00
sehraf 99394f8672 fix #if block missing the last line
Causes compiling error when ENABLE_LEGACY_ANIMATIONS is not enabled.
2019-12-16 18:28:21 +01:00
bpohvoodoo 2ab8a2591d Merge pull request #60 from ryancasler/master
Power Supply Update
2019-12-09 08:06:39 +01:00
ryancasler a613b8c978 Power Supply Update
Moved the pin setting for POWER_SUPPLY to definitions.h instead of the main sketch.
2019-12-08 01:00:54 -05:00
bpohvoodoo fa31f97c47 Update README.md 2019-11-17 13:34:22 +01:00
bpohvoodoo 1d2a6f9237 Update README.md 2019-10-25 18:51:56 +02:00
bpohvoodoo 443f266296 Merge pull request #42 from PatrickSp/master
added output to control external power supply
2019-10-09 17:03:34 +02:00
patricksp 589806d0fd added output to control external power supply
If defined, enable output to control external power supply PIN (12 / D6)
2019-10-09 16:30:41 +02:00
bpohvoodoo f1d638c064 Updated Icons added sources of index.htm and edit.htm 2019-09-23 15:38:40 +02:00
bpohvoodoo 191251f71b Bugfix
* adressed issue: #32 (again)
 * adressed issue: #36
2019-09-13 19:09:09 +02:00
bpohvoodoo 6867d1021b Update README.md 2019-09-11 09:10:03 +02:00
bpohvoodoo 7fa5cd847c Merge pull request #35 from FabLab-Luenen/development
Update to 2.2.6
2019-09-10 17:24:55 +02:00
bpohvoodoo e5c0e8de97 Merge pull request #29 from FabLab-Luenen/development
Version 2.2.5
2019-09-08 21:00:13 +02:00
bpohvoodoo 3000a9e98d Merge pull request #24 from FabLab-Luenen/development
Bugfixes
2019-05-19 16:10:57 +02:00
bpohvoodoo ae21907558 Merge pull request #23 from FabLab-Luenen/development
Development
2019-04-28 10:55:10 +02:00
bpohvoodoo 0927c4ff5e Merge pull request #19 from FabLab-Luenen/development
added custom effect to MQTT
2019-03-31 14:31:57 +02:00
bpohvoodoo cb2cb3db9b Merge pull request #18 from FabLab-Luenen/development
Fixed Typo
2019-03-27 17:28:44 +01:00
bpohvoodoo fcc1f49cf0 Update README.md 2019-03-27 16:51:35 +01:00
bpohvoodoo 2d17b93f29 Merge pull request #17 from FabLab-Luenen/development
Bugfixes
2019-03-26 16:43:22 +01:00
bpohvoodoo a596203a6b Merge pull request #15 from FabLab-Luenen/development
Optimized saving config
2019-03-21 22:29:54 +01:00
bpohvoodoo d7d35fa401 Merge pull request #14 from FabLab-Luenen/development
Improvements of code
2019-03-21 20:44:18 +01:00
bpohvoodoo bfe5cea7b4 Merge pull request #13 from FabLab-Luenen/development
Update request_handlers.h
2019-03-20 22:00:27 +01:00
bpohvoodoo 7b5c3b7dd5 Merge pull request #12 from FabLab-Luenen/development
Merge
2019-03-20 20:57:33 +01:00
bpohvoodoo 9d7c7bd981 Merge pull request #11 from debsahu/master
Update platformio.ini
2019-03-20 20:51:15 +01:00
Debashish Sahu 82e1063801 Update platformio.ini
- Add FastLED
2019-03-20 13:18:09 -04:00
Debashish Sahu dc076f96cb Update platformio.ini 2019-03-20 13:06:03 -04:00
bpohvoodoo 7c0bc690e8 Merge pull request #10 from FabLab-Luenen/development
changed defaults
2019-03-20 17:18:40 +01:00
bpohvoodoo 006a66bed4 Merge pull request #9 from FabLab-Luenen/development
Development -> Master
2019-03-20 17:12:39 +01:00
7 changed files with 257 additions and 249 deletions
+1 -1
View File
@@ -747,7 +747,7 @@ void loop() {
#endif #endif
#if defined(ENABLE_HOMEASSISTANT) #if defined(ENABLE_HOMEASSISTANT)
if(ha_send_data.active()) ha_send_data.detach(); if(ha_send_data.active()) ha_send_data.detach();
ha_send_data.once(5, tickerSendState); ha_send_data.once(DELAY_MQTT_HA_MESSAGE, tickerSendState);
#endif #endif
#endif #endif
} }
+1 -1
View File
@@ -2693,4 +2693,4 @@ document.addEventListener("DOMContentLoaded", function(event) {
}); });
</script> </script>
</body> </body>
</html> </html>
+236 -236
View File
@@ -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 #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 // or comment it out
#if defined(USE_WS2812FX_DMA) #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. #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 #else
#define MAXLEDS 4096 #define MAXLEDS 4096
#endif #endif
// Neopixel // 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 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 NUMLEDS 50 // Number of leds in the; is configurable just for the start
#define RGBORDER "GRBW" // RGBOrder; 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 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_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 #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. 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_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 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_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_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 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 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 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 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 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 //#define POWER_SUPPLY 12 // PIN (12 / D6) If defined, enable output to control external power supply
#if defined(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. #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 #endif
#define ENABLE_REMOTE 13 // If defined, enable Remote Control via TSOP31238. The value defines the input pin (13 / D7) for TSOP31238 Out #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) #if defined(ENABLE_BUTTON_GY33)
#define GAMMA 2.5 // Gamma correction for GY-33 sensor #define GAMMA 2.5 // Gamma correction for GY-33 sensor
#endif #endif
#define ENABLE_STATE_SAVE // If defined, load saved state on reboot and save state on SPIFFS #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 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 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_COLOR_DELAY 5 // Delay for color transition
#define TRANS_DELAY 10 // Delay for brightness and speed 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. // Experimental: Enable transitions of color, brightness and speed. It does not work properly for all effects.
bool transEffectOverride = false; bool transEffectOverride = false;
uint8_t trans_cnt = 0; uint8_t trans_cnt = 0;
int trans_cnt_max = 0; int trans_cnt_max = 0;
unsigned long colorFadeDelay = 0; unsigned long colorFadeDelay = 0;
unsigned long brightnessFadeDelay = 0; unsigned long brightnessFadeDelay = 0;
unsigned long speedFadeDelay = 0; unsigned long speedFadeDelay = 0;
#if defined(CUSTOM_WS2812FX_ANIMATIONS) #if defined(CUSTOM_WS2812FX_ANIMATIONS)
#define MULTICAST false #define MULTICAST false
#define START_UNIVERSE 1 // First DMX Universe to listen for #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 uint8_t END_UNIVERSE = START_UNIVERSE; // Total number of Universes to listen for, starting at UNIVERSE
#endif #endif
uint8_t prevsegment = 0; uint8_t prevsegment = 0;
#if defined(ENABLE_REMOTE) #if defined(ENABLE_REMOTE)
uint8_t selected_color = 1; uint8_t selected_color = 1;
uint64_t last_remote_cmd; 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}; 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 // 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}; 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 #endif
#define WIFIMGR_PORTAL_TIMEOUT 180 #define WIFIMGR_PORTAL_TIMEOUT 180
//#define WIFIMGR_SET_MANUAL_IP //#define WIFIMGR_SET_MANUAL_IP
#if defined(WIFIMGR_SET_MANUAL_IP) #if defined(WIFIMGR_SET_MANUAL_IP)
uint8_t _ip[4] = {192,168,0,128}; uint8_t _ip[4] = {192,168,0,128};
uint8_t _gw[4] = {192,168,0,1}; uint8_t _gw[4] = {192,168,0,1};
uint8_t _sn[4] = {255,255,255,0}; uint8_t _sn[4] = {255,255,255,0};
#endif #endif
#if defined(MQTT_HOME_ASSISTANT_SUPPORT) #if defined(MQTT_HOME_ASSISTANT_SUPPORT)
#define MQTT_HOME_ASSISTANT_0_87_SUPPORT // Comment if using HA version < 0.87 #define MQTT_HOME_ASSISTANT_0_87_SUPPORT // Comment if using HA version < 0.87
#endif #endif
#if defined(USE_WS2812FX_DMA) && (USE_WS2812FX_DMA < 0 || USE_WS2812FX_DMA > 2) #if defined(USE_WS2812FX_DMA) && (USE_WS2812FX_DMA < 0 || USE_WS2812FX_DMA > 2)
#error "Definition of USE_WS2812FX_DMA is wrong!" #error "Definition of USE_WS2812FX_DMA is wrong!"
#endif #endif
#if defined(ENABLE_MQTT) and ENABLE_MQTT < 0 and ENABLE_MQTT > 1 #if defined(ENABLE_MQTT) and ENABLE_MQTT < 0 and ENABLE_MQTT > 1
#error "Definition of ENABLE_MQTT is wrong!" #error "Definition of ENABLE_MQTT is wrong!"
#endif #endif
#if defined(ENABLE_MQTT) and ENABLE_MQTT < 0 and ENABLE_MQTT > 1 #if defined(ENABLE_MQTT) and ENABLE_MQTT < 0 and ENABLE_MQTT > 1
#error "Definition of ENABLE_MQTT is wrong!" #error "Definition of ENABLE_MQTT is wrong!"
#endif #endif
#if defined(ENABLE_HOMEASSISTANT) and !defined(ENABLE_MQTT) #if defined(ENABLE_HOMEASSISTANT) and !defined(ENABLE_MQTT)
#error "To use HA, you have to either enable PubCubClient or AsyncMQTT" #error "To use HA, you have to either enable PubCubClient or AsyncMQTT"
#endif #endif
#if !defined(ENABLE_HOMEASSISTANT) and defined(MQTT_HOME_ASSISTANT_SUPPORT) #if !defined(ENABLE_HOMEASSISTANT) and defined(MQTT_HOME_ASSISTANT_SUPPORT)
#error "To use HA support, you have to either enable Homeassistant component" #error "To use HA support, you have to either enable Homeassistant component"
#endif #endif
// parameters for automatically cycling favorite patterns // parameters for automatically cycling favorite patterns
uint32_t autoParams[][6] = { // main_color, back_color, xtra_color, speed, mode, duration (milliseconds) 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 {0x00ff0000, 0x0000ff00, 0x00000000, 200, 1, 5000}, // blink red/geen for 5 seconds
{0x0000ff00, 0x000000ff, 0x00000000, 180, 3, 10000}, // wipe green/blue for 10 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, 14, 10000}, // dual scan blue on red for 10 seconds
{0x000000ff, 0x00ff0000, 0x00000000, 100, 45, 15000}, // fireworks blue/red for 15 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 {0x00ff0000, 0x0000ff00, 0x000000ff, 40, 54, 15000} // tricolor chase red/green/blue for 15 seconds
}; };
#if defined(ENABLE_MQTT) #if defined(ENABLE_MQTT)
char mqtt_buf[80]; char mqtt_buf[80];
char mqtt_will_topic[sizeof(HOSTNAME) + 7]; // Topic 'will' will be:HOSTNAME "/status"; char mqtt_will_topic[sizeof(HOSTNAME) + 7]; // Topic 'will' will be:HOSTNAME "/status";
const char mqtt_will_payload[] = "OFFLINE"; const char mqtt_will_payload[] = "OFFLINE";
char mqtt_intopic[sizeof(HOSTNAME) + 3]; // Topic 'in' will be: <HOSTNAME>/in char mqtt_intopic[sizeof(HOSTNAME) + 3]; // Topic 'in' will be: <HOSTNAME>/in
char mqtt_outtopic[sizeof(HOSTNAME) + 4]; // Topic 'out' will be: <HOSTNAME>/out char mqtt_outtopic[sizeof(HOSTNAME) + 4]; // Topic 'out' will be: <HOSTNAME>/out
bool mqtt_lwt_boot_flag = true; bool mqtt_lwt_boot_flag = true;
#if ENABLE_MQTT == 0 #if ENABLE_MQTT == 0
#define MQTT_MAX_PACKET_SIZE 512 #define MQTT_MAX_PACKET_SIZE 512
#define MQTT_MAX_RECONNECT_TRIES 4 #define MQTT_MAX_RECONNECT_TRIES 4
uint8_t mqtt_reconnect_retries = 0; uint8_t mqtt_reconnect_retries = 0;
uint8_t qossub = 0; // PubSubClient can sub qos 0 or 1 uint8_t qossub = 0; // PubSubClient can sub qos 0 or 1
#endif #endif
#if ENABLE_MQTT == 1 #if ENABLE_MQTT == 1
uint8_t qossub = 0; // AMQTT can sub qos 0 or 1 or 2 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 uint8_t qospub = 0; // AMQTT can pub qos 0 or 1 or 2
#endif #endif
#if defined(ENABLE_HOMEASSISTANT) #if defined(ENABLE_HOMEASSISTANT)
char mqtt_ha_config[20 + sizeof(HOSTNAME) + 7]; // Topic config will be: "homeassistant/light/<HOSTNAME>/config" char mqtt_ha_config[20 + sizeof(HOSTNAME) + 7]; // Topic config will be: "homeassistant/light/<HOSTNAME>/config"
char mqtt_ha_state_in[5 + sizeof(HOSTNAME) + 12]; // Topic in will be: "home/<HOSTNAME>_ha/state/in" char mqtt_ha_state_in[5 + sizeof(HOSTNAME) + 12]; // Topic in will be: "home/<HOSTNAME>_ha/state/in"
char mqtt_ha_state_out[5 + sizeof(HOSTNAME) + 13]; // Topic in will be: "home/<HOSTNAME>_ha/state/out" char mqtt_ha_state_out[5 + sizeof(HOSTNAME) + 13]; // Topic in will be: "home/<HOSTNAME>_ha/state/out"
const char* on_cmd = "ON"; const char* on_cmd = "ON";
const char* off_cmd = "OFF"; const char* off_cmd = "OFF";
bool new_ha_mqtt_msg = false; bool new_ha_mqtt_msg = false;
uint16_t color_temp = 327; // min is 154 and max is 500 uint16_t color_temp = 327; // min is 154 and max is 500
#endif #endif
char mqtt_clientid[sizeof(HOSTNAME) + 9]; char mqtt_clientid[sizeof(HOSTNAME) + 9];
char mqtt_host[65] = ""; //is configurable just for the start char mqtt_host[65] = ""; //is configurable just for the start
uint16_t mqtt_port = 1883; //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_user[33] = ""; //is configurable just for the start
char mqtt_pass[33] = ""; //is configurable just for the start char mqtt_pass[33] = ""; //is configurable just for the start
#endif #endif
// *************************************************************************** // ***************************************************************************
// Global variables / definitions // Global variables / definitions
// *************************************************************************** // ***************************************************************************
#define DBG_OUTPUT_PORT Serial // Set debug output port #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 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 unsigned long autoDelay[10] = {}; // Global variable for storing the time to next auto effect for each segment
struct { struct {
uint16_t start = 0; uint16_t start = 0;
uint16_t stop = NUMLEDS - 1; uint16_t stop = NUMLEDS - 1;
uint8_t mode[10] = {}; // Global variable for storing the WS2812FX mode to set for each segment 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 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 uint32_t colors[10][3] = {}; // 2 dim. Color array for setting colors of WS2812FX
uint8_t options = FX_OPTIONS; uint8_t options = FX_OPTIONS;
} segState; } segState;
// List of all color modes // List of all color modes
enum MODE {OFF, HOLD, SET}; enum MODE {OFF, HOLD, SET};
MODE prevmode = HOLD; // Do not change MODE prevmode = HOLD; // Do not change
struct { struct {
uint8_t segment = 0; // Actual selected segment uint8_t segment = 0; // Actual selected segment
MODE mode = SET; // Standard mode that is active when software starts MODE mode = SET; // Standard mode that is active when software starts
uint8_t brightness = 196; // Global variable for storing the brightness (255 == 100%) uint8_t brightness = 196; // Global variable for storing the brightness (255 == 100%)
} State; } State;
struct { struct {
uint8_t segments = 1; uint8_t segments = 1;
uint16_t stripSize = NUMLEDS; uint16_t stripSize = NUMLEDS;
char RGBOrder[5] = RGBORDER; char RGBOrder[5] = RGBORDER;
#if defined(USE_WS2812FX_DMA) #if defined(USE_WS2812FX_DMA)
#if USE_WS2812FX_DMA == 0 #if USE_WS2812FX_DMA == 0
uint8_t pin = 3; uint8_t pin = 3;
#endif #endif
#if USE_WS2812FX_DMA == 1 #if USE_WS2812FX_DMA == 1
uint8_t pin = 2; uint8_t pin = 1;
#endif #endif
#if USE_WS2812FX_DMA == 2 #if USE_WS2812FX_DMA == 2
uint8_t pin = 1; uint8_t pin = 2;
#endif #endif
#else #else
uint8_t pin = LED_PIN; uint8_t pin = LED_PIN;
#endif #endif
bool transEffect = false; bool transEffect = false;
} Config; } Config;
uint8_t fx_speed = 196; // Global variable for storing the speed for effects while fading --> smaller == slower uint8_t fx_speed = 196; // Global variable for storing the speed for effects while fading --> smaller == slower
uint8_t fx_mode = 0; uint8_t fx_mode = 0;
uint8_t brightness_trans = 0; // Global variable for storing the brightness before change 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 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 struct ledstate // Data structure to store a state of a single led
{ {
uint8_t red; uint8_t red;
uint8_t green; uint8_t green;
uint8_t blue; uint8_t blue;
uint8_t white; uint8_t white;
}; };
typedef struct ledstate LEDState; // Define the datatype LEDState 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 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 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 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 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 bool updateConfig = false; // For WiFiManger custom config and config
// Button handling // Button handling
#if defined(ENABLE_BUTTON) || defined(ENABLE_BUTTON_GY33) #if defined(ENABLE_BUTTON) || defined(ENABLE_BUTTON_GY33)
const unsigned long keySampleIntervalMs = 25; const unsigned long keySampleIntervalMs = 25;
#endif #endif
#if defined(ENABLE_BUTTON) #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|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_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_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 #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; unsigned long keyPrevMillis = 0;
byte longKeyPressCountMax = 80; // 80 * 25 = 2000 ms byte longKeyPressCountMax = 80; // 80 * 25 = 2000 ms
byte mediumKeyPressCountMin = 20; // 20 * 25 = 500 ms byte mediumKeyPressCountMin = 20; // 20 * 25 = 500 ms
byte KeyPressCount = 0; byte KeyPressCount = 0;
byte prevKeyState = HIGH; // button is active low byte prevKeyState = HIGH; // button is active low
#endif #endif
#if defined(ENABLE_BUTTON_GY33) #if defined(ENABLE_BUTTON_GY33)
unsigned long keyPrevMillis_gy33 = 0; unsigned long keyPrevMillis_gy33 = 0;
byte longKeyPressCountMax_gy33 = 80; // 80 * 25 = 2000 ms byte longKeyPressCountMax_gy33 = 80; // 80 * 25 = 2000 ms
byte mediumKeyPressCountMin_gy33 = 20; // 20 * 25 = 500 ms byte mediumKeyPressCountMin_gy33 = 20; // 20 * 25 = 500 ms
byte KeyPressCount_gy33 = 0; byte KeyPressCount_gy33 = 0;
byte prevKeyState_gy33 = HIGH; // button is active low byte prevKeyState_gy33 = HIGH; // button is active low
#endif #endif
+8 -4
View File
@@ -743,11 +743,15 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t lenght
root["effect"] = strip->getModeName(strip->getMode()); root["effect"] = strip->getModeName(strip->getMode());
} }
#endif #endif
char buffer[measureJson(root) + 1]; uint16_t msg_len = measureJson(root) + 1;
char buffer[msg_len];
serializeJson(root, buffer, sizeof(buffer)); serializeJson(root, buffer, sizeof(buffer));
jsonBuffer.clear(); jsonBuffer.clear();
#if ENABLE_MQTT == 0 #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); DBG_OUTPUT_PORT.printf("MQTT: Send [%s]: %s\r\n", mqtt_ha_state_out, buffer);
#endif #endif
#if ENABLE_MQTT == 1 #if ENABLE_MQTT == 1
@@ -901,7 +905,7 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t lenght
return; return;
} }
if(ha_send_data.active()) ha_send_data.detach(); 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) { } else if (strcmp(topic, mqtt_intopic) == 0) {
#endif #endif
@@ -936,7 +940,7 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t lenght
#if defined(ENABLE_HOMEASSISTANT) #if defined(ENABLE_HOMEASSISTANT)
ha_send_data.detach(); ha_send_data.detach();
mqtt_client->subscribe(mqtt_ha_state_in, qossub); 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) #if defined(MQTT_HOME_ASSISTANT_SUPPORT)
const size_t bufferSize = JSON_ARRAY_SIZE(strip->getModeCount()+ 4) + JSON_OBJECT_SIZE(11) + 1500; const size_t bufferSize = JSON_ARRAY_SIZE(strip->getModeCount()+ 4) + JSON_OBJECT_SIZE(11) + 1500;
DynamicJsonDocument jsonBuffer(bufferSize); DynamicJsonDocument jsonBuffer(bufferSize);
+1 -1
View File
@@ -1 +1 @@
#define SKETCH_VERSION "3.1.0" #define SKETCH_VERSION "3.1.1"
+5 -1
View File
@@ -257,4 +257,8 @@
* Version Bump to 3.1.0 * Version Bump to 3.1.0
* bugfixes * bugfixes
* E1.31 is now working for multi segments * E1.31 is now working for multi segments
*/ *
* 18 April 2020
* Version Bump to 3.1.1
* bugfixes regarding issue #80
*/
+5 -5
View File
@@ -37,17 +37,17 @@ This project uses libraries and code by different authors:
- [WS2812FX](https://github.com/kitesurfer1404/WS2812FX) by kitesurfer1404 (tested with version 1.2.1) - [WS2812FX](https://github.com/kitesurfer1404/WS2812FX) by kitesurfer1404 (tested with version 1.2.1)
- [WebSockets](https://github.com/Links2004/arduinoWebSockets) by Links2004 (tested with version 2.1.4) - [WebSockets](https://github.com/Links2004/arduinoWebSockets) by Links2004 (tested with version 2.2.0)
- [Adafruit NeoPixel](https://github.com/adafruit/Adafruit_NeoPixel) by adafruit (tested with 1.2.5) - [Adafruit NeoPixel](https://github.com/adafruit/Adafruit_NeoPixel) by adafruit (tested with 1.4.0)
- Optional: [PubSubClient](https://github.com/knolleary/pubsubclient/) by knolleary (tested with 2.7.0) - Optional: [PubSubClient](https://github.com/knolleary/pubsubclient/) by knolleary (tested with 2.8.0)
_Only when you have activated MQTT in definitions.h._ _Only when you have activated MQTT in definitions.h._
- Optional: [Brzo I2C](https://github.com/pasko-zh/brzo_i2c/) by pazko-zh (tested with 1.3.3) - Optional: [Brzo I2C](https://github.com/pasko-zh/brzo_i2c/) by pazko-zh (tested with 1.3.3)
_Only when you have activated GY33 in definitions.h._ _Only when you have activated GY33 in definitions.h._
- Optional: [FastLed](https://github.com/FastLED/FastLED/) by FastLED (tested with 1.3.3) - Optional: [FastLed](https://github.com/FastLED/FastLED/) by FastLED (tested with 3.3.3)
_Only when you have activated custom animations (Fire2012) in definitions.h._ _Only when you have activated custom animations (Fire2012) in definitions.h._
The sketch also uses the following built-in library: The sketch also uses the following built-in library:
@@ -66,7 +66,7 @@ I hope I didn't miss any sources and mentioned every author. In case I forgot so
## Todos ## Todos
- [ ] Redesign of Code and bump to V3 - [x] Redesign of Code and bump to V3
- [ ] Customer profile to define segments of (in)active areas on the strip [Issue](https://github.com/toblum/McLighting/issues/37) - [ ] Customer profile to define segments of (in)active areas on the strip [Issue](https://github.com/toblum/McLighting/issues/37)
- [ ] Additional clients - [ ] Additional clients
- [x] If no wifi, at least enable button mode. - [x] If no wifi, at least enable button mode.