diff --git a/Arduino/McLighting/definitions.h b/Arduino/McLighting/definitions.h index 0d44b8b..f616860 100644 --- a/Arduino/McLighting/definitions.h +++ b/Arduino/McLighting/definitions.h @@ -63,7 +63,7 @@ uint32_t autoParams[][4] = { // color, speed, mode, duration (seconds) #if defined(ENABLE_MQTT) or defined(ENABLE_AMQTT) #ifdef ENABLE_MQTT - #define MQTT_MAX_PACKET_SIZE 2048 + #define MQTT_MAX_PACKET_SIZE 512 #define MQTT_MAX_RECONNECT_TRIES 4 int mqtt_reconnect_retries = 0; diff --git a/Arduino/McLighting/request_handlers.h b/Arduino/McLighting/request_handlers.h index 0ae837f..e831e71 100644 --- a/Arduino/McLighting/request_handlers.h +++ b/Arduino/McLighting/request_handlers.h @@ -1032,9 +1032,18 @@ void checkForRequests() { #if defined(ENABLE_E131) and defined(MQTT_HOME_ASSISTANT_SUPPORT) effect_list.add("E131"); #endif - char buffer[measureJson(json) + 1]; + // Following will never work for PubSubClient as message size > 1.6kB + // char buffer[measureJson(json) + 1]; + // serializeJson(json, buffer, sizeof(buffer)); + // mqtt_client.publish(String("homeassistant/light/" + String(HOSTNAME) + "/config").c_str(), buffer, true); + + // Alternate way to publish large messages using PubSubClient + unsigned int msg_len = measureJson(json) + 1; + char buffer[msg_len]; serializeJson(json, buffer, sizeof(buffer)); - mqtt_client.publish(String("homeassistant/light/" + String(HOSTNAME) + "/config").c_str(), buffer, true); + mqtt->beginPublish(String("homeassistant/light/" + String(HOSTNAME) + "/config").c_str(), msg_len, true); + mqtt->write((const uint8_t*)buffer, msg_len); + mqtt->endPublish(); #endif #endif diff --git a/Arduino/McLighting/version_info.ino b/Arduino/McLighting/version_info.ino index b7962ce..36cf257 100644 --- a/Arduino/McLighting/version_info.ino +++ b/Arduino/McLighting/version_info.ino @@ -70,4 +70,6 @@ * - new "REST API": /pixels?rgbo=xxx to change RGB order * - new "REST API": /pixels?pin=GPIO_NO to change PIN# (Allowed GPIO values: 16/5/4/0/2/14/12/13/15/3/1) * - added HA 0.87 version support https://github.com/toblum/McLighting/issues/327 + * - Added alternative way to send large messages using PubSubClient + * - Added Jason2866's link to Arduino Core v2.5.0 in platformio.ini as official core on PIO is not yet released */ diff --git a/platformio.ini b/platformio.ini index a6f56da..9c1e2a0 100644 --- a/platformio.ini +++ b/platformio.ini @@ -20,15 +20,16 @@ arduino_core_2_3_0 = espressif8266@1.5.0 arduino_core_2_4_0 = espressif8266@1.6.0 arduino_core_2_4_1 = espressif8266@1.7.3 arduino_core_2_4_2 = espressif8266@1.8.0 -arduino_core_2_5_0B2 = https://github.com/platformio/platform-espressif8266.git#feature/stage +arduino_core_2_5_0 = https://github.com/Jason2866/platform-espressif8266.git#Tasmota +arduino_core_stage = https://github.com/platformio/platform-espressif8266.git#feature/stage framework = arduino -platform = ${common.arduino_core_2_4_2} -;platform = ${common.arduino_core_2_5_0B2} +; platform = ${common.arduino_core_2_4_2} +platform = ${common.arduino_core_2_5_0} build_flags = -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH - -DMQTT_MAX_PACKET_SIZE=2048 ; PubSubClient Specific flags + -DMQTT_MAX_PACKET_SIZE=512 ; PubSubClient Specific flags -w ; supress all warnings monitor_speed = 115200 board_build.flash_mode = dout @@ -39,7 +40,7 @@ lib_deps = AsyncMqttClient https://github.com/bblanchon/ArduinoJson.git#v6.8.0-beta WS2812FX - NeoPixelBus@2.4.1 + NeoPixelBus@2.4.2 WebSockets ESPAsyncE131 ESPAsyncUDP