diff --git a/Arduino/McLighting/definitions.h b/Arduino/McLighting/definitions.h index 10440e8..44bc8eb 100644 --- a/Arduino/McLighting/definitions.h +++ b/Arduino/McLighting/definitions.h @@ -27,6 +27,10 @@ const char HOSTNAME[] = "McLighting01"; // Friedly hostname uint8_t _sn[4] = {255,255,255,0}; #endif +#ifdef MQTT_HOME_ASSISTANT_SUPPORT + #define MQTT_HOME_ASSISTANT_0_84_SUPPORT // Comment if using HA version < 0.84 +#endif + #if defined(USE_WS2812FX_DMA) and defined(USE_WS2812FX_UART) #error "Cant have both DMA and UART method." #endif @@ -50,7 +54,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 512 + #define MQTT_MAX_PACKET_SIZE 2048 #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 ee2b571..5e0949a 100644 --- a/Arduino/McLighting/request_handlers.h +++ b/Arduino/McLighting/request_handlers.h @@ -936,10 +936,15 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t lenght ha_send_data.detach(); mqtt_client.subscribe(mqtt_ha_state_in.c_str(), qossub); #ifdef MQTT_HOME_ASSISTANT_SUPPORT - DynamicJsonDocument jsonBuffer(JSON_ARRAY_SIZE(strip.getModeCount()) + JSON_OBJECT_SIZE(11)); + DynamicJsonDocument jsonBuffer(JSON_ARRAY_SIZE(strip.getModeCount()) + JSON_OBJECT_SIZE(12)); JsonObject json = jsonBuffer.to<JsonObject>(); json["name"] = HOSTNAME; + #ifdef MQTT_HOME_ASSISTANT_0_84_SUPPORT + json["platform"] = "mqtt"; + json["schema"] = "json"; + #else json["platform"] = "mqtt_json"; + #endif json["state_topic"] = mqtt_ha_state_out; json["command_topic"] = mqtt_ha_state_in; json["on_command_type"] = "first"; @@ -1016,10 +1021,15 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t lenght uint16_t packetIdSub2 = amqttClient.subscribe((char *)mqtt_ha_state_in.c_str(), qossub); DBG_OUTPUT_PORT.printf("Subscribing at QoS %d, packetId: ", qossub); DBG_OUTPUT_PORT.println(packetIdSub2); #ifdef MQTT_HOME_ASSISTANT_SUPPORT - DynamicJsonDocument jsonBuffer(JSON_ARRAY_SIZE(strip.getModeCount()) + JSON_OBJECT_SIZE(11)); + DynamicJsonDocument jsonBuffer(JSON_ARRAY_SIZE(strip.getModeCount()) + JSON_OBJECT_SIZE(12)); JsonObject json = jsonBuffer.to<JsonObject>(); json["name"] = HOSTNAME; + #ifdef MQTT_HOME_ASSISTANT_0_84_SUPPORT + json["platform"] = "mqtt"; + json["schema"] = "json"; + #else json["platform"] = "mqtt_json"; + #endif json["state_topic"] = mqtt_ha_state_out; json["command_topic"] = mqtt_ha_state_in; json["on_command_type"] = "first"; diff --git a/platformio.ini b/platformio.ini index 192f8ae..26fa778 100644 --- a/platformio.ini +++ b/platformio.ini @@ -17,6 +17,8 @@ description = The ESP8266 based multi-client lighting gadget [common] build_flags = -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH + -DMQTT_MAX_PACKET_SIZE=2048 ; PubSubClient Specific flags + -w ; supress all warnings monitor_speed = 115200 board_build.flash_mode = dout upload_speed = 115200