34 Commits

Author SHA1 Message Date
bpohvoodoo 82c48006d5 Version Bump to 3.1.2
* Almost finished: bugfixes regarding issue #80
 * ToDo: bugfixes regarding issue #70
2020-04-19 11:18: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
8 changed files with 377 additions and 286 deletions
+6 -26
View File
@@ -271,9 +271,11 @@ void initMqtt() {
mqtt_intopic[sizeof(mqtt_intopic) - 1] = 0x00; mqtt_intopic[sizeof(mqtt_intopic) - 1] = 0x00;
snprintf(mqtt_outtopic, sizeof(mqtt_outtopic), "%s/out", mqtt_clientid); snprintf(mqtt_outtopic, sizeof(mqtt_outtopic), "%s/out", mqtt_clientid);
mqtt_outtopic[sizeof(mqtt_outtopic) - 1] = 0x00; mqtt_outtopic[sizeof(mqtt_outtopic) - 1] = 0x00;
#if defined(MQTT_HOME_ASSISTANT_SUPPORT) #if defined(ENABLE_HOMEASSISTANT)
#if defined(MQTT_HOMEASSISTANT_SUPPORT)
snprintf(mqtt_ha_config, sizeof(mqtt_ha_config), "homeassistant/light/%s/config", mqtt_clientid); snprintf(mqtt_ha_config, sizeof(mqtt_ha_config), "homeassistant/light/%s/config", mqtt_clientid);
mqtt_ha_config[sizeof(mqtt_ha_config) - 1] = 0x00; mqtt_ha_config[sizeof(mqtt_ha_config) - 1] = 0x00;
#endif
snprintf(mqtt_ha_state_in, sizeof(mqtt_ha_state_in), "home/%s_ha/state/in", mqtt_clientid); snprintf(mqtt_ha_state_in, sizeof(mqtt_ha_state_in), "home/%s_ha/state/in", mqtt_clientid);
mqtt_ha_state_in[sizeof(mqtt_ha_state_in) - 1] = 0x00; mqtt_ha_state_in[sizeof(mqtt_ha_state_in) - 1] = 0x00;
snprintf(mqtt_ha_state_out, sizeof(mqtt_ha_state_out), "home/%s_ha/state/out", mqtt_clientid); snprintf(mqtt_ha_state_out, sizeof(mqtt_ha_state_out), "home/%s_ha/state/out", mqtt_clientid);
@@ -655,9 +657,6 @@ void loop() {
if (State.mode == OFF) { if (State.mode == OFF) {
if (prevmode != State.mode) { if (prevmode != State.mode) {
#if defined(ENABLE_MQTT)
snprintf(mqtt_buf, sizeof(mqtt_buf), "OK =off", "");
#endif
#if defined(POWER_SUPPLY) #if defined(POWER_SUPPLY)
digitalWrite(POWER_SUPPLY, !POWER_ON); // power off -> external power supply digitalWrite(POWER_SUPPLY, !POWER_ON); // power off -> external power supply
#endif #endif
@@ -674,19 +673,9 @@ void loop() {
if (State.mode == SET) { if (State.mode == SET) {
State.mode = HOLD; State.mode = HOLD;
// Segment
if (prevsegment != State.segment) {
#if defined(ENABLE_MQTT)
snprintf(mqtt_buf, sizeof(mqtt_buf), "OK Ss%i", State.segment);
#endif
//prevsegment = State.segment;
}
// Mode // Mode
if (segState.mode[State.segment] != fx_mode) { if ((segState.mode[State.segment] != fx_mode) || prevmode == OFF) {
segState.mode[State.segment] = fx_mode; segState.mode[State.segment] = fx_mode;
#if defined(ENABLE_MQTT)
snprintf(mqtt_buf, sizeof(mqtt_buf), "OK /%i", segState.mode[State.segment]);
#endif
strip->strip_off(); strip->strip_off();
autoCount[State.segment] = 0; autoCount[State.segment] = 0;
autoDelay[State.segment] = 0; autoDelay[State.segment] = 0;
@@ -701,13 +690,10 @@ void loop() {
}*/ }*/
// Brightness // Brightness
if (strip->getBrightness() != State.brightness) { if (strip->getBrightness() != State.brightness) {
#if defined(ENABLE_MQTT)
snprintf(mqtt_buf, sizeof(mqtt_buf), "OK %%%i", State.brightness);
#endif
brightness_trans = State.brightness; brightness_trans = State.brightness;
} }
// Speed // Speed
if (fx_speed != segState.speed[State.segment]) { if (fx_speed != segState.speed[prevsegment]) {
#if defined(ENABLE_MQTT) #if defined(ENABLE_MQTT)
snprintf(mqtt_buf, sizeof(mqtt_buf), "OK ?%i", segState.speed[prevsegment]); snprintf(mqtt_buf, sizeof(mqtt_buf), "OK ?%i", segState.speed[prevsegment]);
#endif #endif
@@ -739,15 +725,9 @@ void loop() {
} }
//strip->setBrightness(brightness_actual); //strip->setBrightness(brightness_actual);
#if defined(ENABLE_MQTT) #if defined(ENABLE_MQTT)
#if ENABLE_MQTT == 0
mqtt_client->publish(mqtt_outtopic, mqtt_buf);
#endif
#if ENABLE_MQTT == 1
mqtt_client->publish(mqtt_outtopic, qospub, false, mqtt_buf);
#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
} }
+7 -7
View File
@@ -19,8 +19,8 @@ char HOSTNAME[65] = "McLightingRGBW"; // Friedly hostname is configurable just
//#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_HOMEASSISTANT_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.
@@ -28,7 +28,7 @@ char HOSTNAME[65] = "McLightingRGBW"; // Friedly hostname is configurable just
#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
@@ -74,7 +74,7 @@ uint8_t prevsegment = 0;
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_HOMEASSISTANT_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
@@ -93,7 +93,7 @@ uint8_t prevsegment = 0;
#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_HOMEASSISTANT_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
@@ -178,10 +178,10 @@ struct {
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;
+12
View File
@@ -321,3 +321,15 @@ uint32_t trans(uint32_t _newcolor, uint32_t _oldcolor, uint8_t _level, uint8_t _
_oldcolor = scale_wrgb(_oldcolor, 255-_level); _oldcolor = scale_wrgb(_oldcolor, 255-_level);
return _newcolor + _oldcolor; return _newcolor + _oldcolor;
} }
#if defined(ENABLE_MQTT)
void sendmqtt() {
#if ENABLE_MQTT == 0
mqtt_client->publish(mqtt_outtopic, mqtt_buf);
#endif
#if ENABLE_MQTT == 1
mqtt_client->publish(mqtt_outtopic, qospub, false, mqtt_buf);
#endif
memset(mqtt_buf,0,sizeof(mqtt_buf));
}
#endif
+62 -18
View File
@@ -199,9 +199,25 @@ void handleSetWS2812FXMode(uint8_t * mypayload) {
fx_mode = (uint8_t) strtol((const char *) &mypayload[1], NULL, 10); fx_mode = (uint8_t) strtol((const char *) &mypayload[1], NULL, 10);
fx_mode = constrain(fx_mode, 0, strip->getModeCount() - 1); fx_mode = constrain(fx_mode, 0, strip->getModeCount() - 1);
State.mode = SET; State.mode = SET;
#if defined(ENABLE_MQTT)
snprintf(mqtt_buf, sizeof(mqtt_buf), "OK /%i", fx_mode);
sendmqtt();
#endif
} else { } else {
if (strcmp((char *) &mypayload[1], "off") == 0) { if (strcmp((char *) &mypayload[1], "off") == 0) {
if (State.mode == OFF) { State.mode = SET; } else { State.mode = OFF; }; if (State.mode == OFF) {
State.mode = SET;
#if defined(ENABLE_MQTT)
snprintf(mqtt_buf, sizeof(mqtt_buf), "OK /%i", segState.mode[State.segment]);
sendmqtt();
#endif
} else {
State.mode = OFF;
#if defined(ENABLE_MQTT)
snprintf(mqtt_buf, sizeof(mqtt_buf), "OK /off", "");
sendmqtt();
#endif
}
} }
if (strcmp((char *) &mypayload[1], "on") == 0) { if (strcmp((char *) &mypayload[1], "on") == 0) {
State.mode = SET; State.mode = SET;
@@ -276,7 +292,11 @@ void checkpayload(uint8_t * _payload, bool mqtt = false, uint8_t num = 0) {
//memcpy(hexcolors_trans, segState.colors[State.segment], sizeof(hexcolors_trans)); //memcpy(hexcolors_trans, segState.colors[State.segment], sizeof(hexcolors_trans));
_updateState = true; _updateState = true;
Dbg_Prefix(mqtt, num); Dbg_Prefix(mqtt, num);
DBG_OUTPUT_PORT.printf("Set segment to: [%u]\r\n", State.segment); DBG_OUTPUT_PORT.printf("Set segment to: [%u]\r\n", _seg);
#if defined(ENABLE_MQTT)
snprintf(mqtt_buf, sizeof(mqtt_buf), "OK Ss%i", _seg);
sendmqtt();
#endif
} }
} }
// / ==> Set segment first LED // / ==> Set segment first LED
@@ -289,6 +309,10 @@ void checkpayload(uint8_t * _payload, bool mqtt = false, uint8_t num = 0) {
setSegmentSize(); setSegmentSize();
Dbg_Prefix(mqtt, num); Dbg_Prefix(mqtt, num);
DBG_OUTPUT_PORT.printf("Set segment start to: [%u]\r\n", _seg_start); DBG_OUTPUT_PORT.printf("Set segment start to: [%u]\r\n", _seg_start);
#if defined(ENABLE_MQTT)
snprintf(mqtt_buf, sizeof(mqtt_buf), "OK S[%i", _seg_start);
sendmqtt();
#endif
} }
} }
// / ==> Set segment last LED // / ==> Set segment last LED
@@ -301,18 +325,25 @@ void checkpayload(uint8_t * _payload, bool mqtt = false, uint8_t num = 0) {
setSegmentSize(); setSegmentSize();
Dbg_Prefix(mqtt, num); Dbg_Prefix(mqtt, num);
DBG_OUTPUT_PORT.printf("Set segment stop to: [%u]\r\n", _seg_stop); DBG_OUTPUT_PORT.printf("Set segment stop to: [%u]\r\n", _seg_stop);
#if defined(ENABLE_MQTT)
snprintf(mqtt_buf, sizeof(mqtt_buf), "OK S]%i", _seg_stop);
sendmqtt();
#endif
} }
} }
if (_payload[1] == 'o') { if (_payload[1] == 'o') {
char _fx_options[4]; uint8_t _fx_options = (uint8_t) strtol((const char *) &_payload[2], NULL, 10);
snprintf(_fx_options, sizeof(_fx_options), "%s", &_payload[2]); _fx_options = ((constrain(server.arg("fxopt").toInt(), 0, 255)>>1)<<1);
_fx_options[3] = 0x00; if (_fx_options != segState.options) {
if (((constrain(atoi(_fx_options), 0, 255)>>1)<<1) != segState.options) { segState.options= _fx_options;
segState.options= ((constrain(atoi(_fx_options), 0, 255)>>1)<<1);
_updateSegState = true; _updateSegState = true;
strip->setOptions(State.segment, segState.options); strip->setOptions(State.segment, segState.options);
Dbg_Prefix(mqtt, num); Dbg_Prefix(mqtt, num);
DBG_OUTPUT_PORT.printf("Set segment options to: [%u]\r\n", segState.options); DBG_OUTPUT_PORT.printf("Set segment options to: [%u]\r\n", _fx_options);
#if defined(ENABLE_MQTT)
snprintf(mqtt_buf, sizeof(mqtt_buf), "OK So%i", _fx_options);
sendmqtt();
#endif
} }
} }
char * buffer = listSegmentStateJSON(State.segment); char * buffer = listSegmentStateJSON(State.segment);
@@ -373,11 +404,16 @@ void checkpayload(uint8_t * _payload, bool mqtt = false, uint8_t num = 0) {
// ? ==> Set speed // ? ==> Set speed
if (_payload[0] == '?') { if (_payload[0] == '?') {
uint16_t _fx_speed = (uint16_t) strtol((const char *) &_payload[1], NULL, 10); uint16_t _fx_speed = (uint16_t) strtol((const char *) &_payload[1], NULL, 10);
segState.speed[State.segment] = constrain(_fx_speed, SPEED_MIN, SPEED_MAX ); _fx_speed = constrain(_fx_speed, SPEED_MIN, SPEED_MAX );
State.mode = SET; //if (segState.speed[State.segment] != _fx_speed) {}
segState.speed[State.segment] = _fx_speed;
_updateSegState = true; _updateSegState = true;
Dbg_Prefix(mqtt, num); Dbg_Prefix(mqtt, num);
DBG_OUTPUT_PORT.printf("Set speed to: [%u]\r\n", segState.speed[State.segment]); DBG_OUTPUT_PORT.printf("Set speed to: [%u]\r\n", _fx_speed);
#if defined(ENABLE_MQTT)
snprintf(mqtt_buf, sizeof(mqtt_buf), "OK ?%i", _fx_speed);
sendmqtt();
#endif
} }
// % ==> Set brightness // % ==> Set brightness
@@ -385,10 +421,13 @@ void checkpayload(uint8_t * _payload, bool mqtt = false, uint8_t num = 0) {
uint8_t b = (uint8_t) strtol((const char *) &_payload[1], NULL, 10); uint8_t b = (uint8_t) strtol((const char *) &_payload[1], NULL, 10);
State.brightness = constrain(b, 0, 255); State.brightness = constrain(b, 0, 255);
if (strip->getBrightness() != State.brightness) { if (strip->getBrightness() != State.brightness) {
State.mode = SET;
Dbg_Prefix(mqtt, num); Dbg_Prefix(mqtt, num);
DBG_OUTPUT_PORT.printf("Set brightness to: [%u]\r\n", State.brightness); DBG_OUTPUT_PORT.printf("Set brightness to: [%u]\r\n", State.brightness);
_updateState = true; _updateState = true;
#if defined(ENABLE_MQTT)
snprintf(mqtt_buf, sizeof(mqtt_buf), "OK %%%i", State.brightness);
sendmqtt();
#endif
} }
} }
@@ -432,6 +471,7 @@ void checkpayload(uint8_t * _payload, bool mqtt = false, uint8_t num = 0) {
} }
#if defined(ENABLE_STATE_SAVE) #if defined(ENABLE_STATE_SAVE)
if (_updateState) { if (_updateState) {
State.mode = SET;
if(save_state.active()) save_state.detach(); if(save_state.active()) save_state.detach();
save_state.once(3, tickerSaveState); save_state.once(3, tickerSaveState);
} }
@@ -743,11 +783,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 +945,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,8 +980,8 @@ 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_HOMEASSISTANT_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);
JsonObject root = jsonBuffer.to<JsonObject>(); JsonObject root = jsonBuffer.to<JsonObject>();
@@ -1043,7 +1087,7 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t lenght
ha_send_data.detach(); ha_send_data.detach();
uint16_t packetIdSub2 = mqtt_client->subscribe((char *)mqtt_ha_state_in, qossub); uint16_t packetIdSub2 = mqtt_client->subscribe((char *)mqtt_ha_state_in, qossub);
DBG_OUTPUT_PORT.printf("Subscribing at QoS %d, packetId: ", qossub); DBG_OUTPUT_PORT.println(packetIdSub2); DBG_OUTPUT_PORT.printf("Subscribing at QoS %d, packetId: ", qossub); DBG_OUTPUT_PORT.println(packetIdSub2);
#if defined(MQTT_HOME_ASSISTANT_SUPPORT) #if defined(MQTT_HOMEASSISTANT_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);
JsonObject root = jsonBuffer.to<JsonObject>(); JsonObject root = jsonBuffer.to<JsonObject>();
+48 -2
View File
@@ -319,7 +319,19 @@ server.on("/config", []() {
}); });
server.on("/off", []() { server.on("/off", []() {
if (State.mode == OFF) { State.mode = SET; } else { State.mode = OFF; }; if (State.mode == OFF) {
State.mode = SET;
#if defined(ENABLE_MQTT)
snprintf(mqtt_buf, sizeof(mqtt_buf), "OK /%i", segState.mode[State.segment]);
sendmqtt();
#endif
} else {
State.mode = OFF;
#if defined(ENABLE_MQTT)
snprintf(mqtt_buf, sizeof(mqtt_buf), "OK /off", "");
sendmqtt();
#endif
}
getACK("OK"); getACK("OK");
#if defined(ENABLE_STATE_SAVE) #if defined(ENABLE_STATE_SAVE)
if(save_state.active()) save_state.detach(); if(save_state.active()) save_state.detach();
@@ -330,6 +342,10 @@ server.on("/off", []() {
server.on("/on", []() { server.on("/on", []() {
if (prevmode == OFF) { if (prevmode == OFF) {
State.mode = SET; State.mode = SET;
#if defined(ENABLE_MQTT)
snprintf(mqtt_buf, sizeof(mqtt_buf), "OK /%i", segState.mode[State.segment]);
sendmqtt();
#endif
getACK("OK"); getACK("OK");
#if defined(ENABLE_STATE_SAVE) #if defined(ENABLE_STATE_SAVE)
if(save_state.active()) save_state.detach(); if(save_state.active()) save_state.detach();
@@ -354,6 +370,10 @@ server.on("/set", []() {
//memcpy(hexcolors_trans, segState.colors[State.segment], sizeof(hexcolors_trans)); //memcpy(hexcolors_trans, segState.colors[State.segment], sizeof(hexcolors_trans));
State.mode = SET; State.mode = SET;
_updateState = true; _updateState = true;
#if defined(ENABLE_MQTT)
snprintf(mqtt_buf, sizeof(mqtt_buf), "OK Ss%i", _seg);
sendmqtt();
#endif
} }
} }
if ((server.arg("start") != "") && (server.arg("start").toInt() >= 0) && (server.arg("start").toInt() <= segState.stop)) { if ((server.arg("start") != "") && (server.arg("start").toInt() >= 0) && (server.arg("start").toInt() <= segState.stop)) {
@@ -363,6 +383,10 @@ server.on("/set", []() {
segState.start = _seg_start; segState.start = _seg_start;
setSegmentSize(); setSegmentSize();
_updateSegState = true; _updateSegState = true;
#if defined(ENABLE_MQTT)
snprintf(mqtt_buf, sizeof(mqtt_buf), "OK S[%i", _seg_start);
sendmqtt();
#endif
} }
} }
if ((server.arg("stop") != "") && (server.arg("stop").toInt() >= segState.start) && (server.arg("stop").toInt() <= Config.stripSize)) { if ((server.arg("stop") != "") && (server.arg("stop").toInt() >= segState.start) && (server.arg("stop").toInt() <= Config.stripSize)) {
@@ -372,6 +396,10 @@ server.on("/set", []() {
segState.stop = _seg_stop; segState.stop = _seg_stop;
setSegmentSize(); setSegmentSize();
_updateSegState = true; _updateSegState = true;
#if defined(ENABLE_MQTT)
snprintf(mqtt_buf, sizeof(mqtt_buf), "OK S]%i", _seg_stop);
sendmqtt();
#endif
} }
} }
@@ -381,6 +409,10 @@ server.on("/set", []() {
segState.options = _fx_options; segState.options = _fx_options;
strip->setOptions(State.segment, segState.options); strip->setOptions(State.segment, segState.options);
_updateSegState = true; _updateSegState = true;
#if defined(ENABLE_MQTT)
snprintf(mqtt_buf, sizeof(mqtt_buf), "OK So%i", _fx_options);
sendmqtt();
#endif
} }
} }
//color wrgb //color wrgb
@@ -475,14 +507,24 @@ server.on("/set", []() {
// Speed // Speed
if ((server.arg("s") != "") && (server.arg("s").toInt() >= 0) && (server.arg("s").toInt() <= 255)) { if ((server.arg("s") != "") && (server.arg("s").toInt() >= 0) && (server.arg("s").toInt() <= 255)) {
segState.speed[State.segment] = constrain(server.arg("s").toInt(), 0, 255); uint8_t _fx_speed = constrain(server.arg("s").toInt(), 0, 255);
segState.speed[State.segment] = _fx_speed;
_updateSegState = true; _updateSegState = true;
#if defined(ENABLE_MQTT)
snprintf(mqtt_buf, sizeof(mqtt_buf), "OK ?%i", _fx_speed);
sendmqtt();
#endif
} }
//Mode //Mode
if ((server.arg("m") != "") && (server.arg("m").toInt() >= 0) && (server.arg("m").toInt() <= strip->getModeCount())) { if ((server.arg("m") != "") && (server.arg("m").toInt() >= 0) && (server.arg("m").toInt() <= strip->getModeCount())) {
fx_mode = constrain(server.arg("m").toInt(), 0, strip->getModeCount() - 1); fx_mode = constrain(server.arg("m").toInt(), 0, strip->getModeCount() - 1);
if (fx_mode != segState.mode[State.segment]) { if (fx_mode != segState.mode[State.segment]) {
_updateSegState = true; _updateSegState = true;
#if defined(ENABLE_MQTT)
snprintf(mqtt_buf, sizeof(mqtt_buf), "OK /%i", fx_mode);
sendmqtt();
#endif
} }
} }
@@ -495,6 +537,10 @@ server.on("/set", []() {
if (strip->getBrightness() != State.brightness) { if (strip->getBrightness() != State.brightness) {
State.mode = SET; State.mode = SET;
_updateState = true; _updateState = true;
#if defined(ENABLE_MQTT)
snprintf(mqtt_buf, sizeof(mqtt_buf), "OK %%%i", State.brightness);
sendmqtt();
#endif
} }
//DBG_OUTPUT_PORT.printf("Get Args: %s\r\n", listStateJSONfull()); //possibly causing heap problems //DBG_OUTPUT_PORT.printf("Get Args: %s\r\n", listStateJSONfull()); //possibly causing heap problems
getACK("OK"); getACK("OK");
+1 -1
View File
@@ -1 +1 @@
#define SKETCH_VERSION "3.1.0" #define SKETCH_VERSION "3.1.2"
+9
View File
@@ -257,4 +257,13 @@
* 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
*
* 19 April 2020
* Version Bump to 3.1.2
* Almost finished: bugfixes regarding issue #80
* ToDo: bugfixes regarding issue #70
*/ */