mirror of
https://github.com/esphome/esphome.git
synced 2024-12-22 05:24:53 +01:00
Receive long MQTT payload (#1590)
This commit is contained in:
parent
eaf9735eda
commit
e6f8e73705
2 changed files with 12 additions and 3 deletions
|
@ -25,9 +25,17 @@ void MQTTClientComponent::setup() {
|
||||||
ESP_LOGCONFIG(TAG, "Setting up MQTT...");
|
ESP_LOGCONFIG(TAG, "Setting up MQTT...");
|
||||||
this->mqtt_client_.onMessage([this](char *topic, char *payload, AsyncMqttClientMessageProperties properties,
|
this->mqtt_client_.onMessage([this](char *topic, char *payload, AsyncMqttClientMessageProperties properties,
|
||||||
size_t len, size_t index, size_t total) {
|
size_t len, size_t index, size_t total) {
|
||||||
std::string payload_s(payload, len);
|
if (index == 0)
|
||||||
std::string topic_s(topic);
|
this->payload_buffer_.reserve(total);
|
||||||
this->on_message(topic_s, payload_s);
|
|
||||||
|
// append new payload, may contain incomplete MQTT message
|
||||||
|
this->payload_buffer_.append(payload, len);
|
||||||
|
|
||||||
|
// MQTT fully received
|
||||||
|
if (len + index == total) {
|
||||||
|
this->on_message(topic, this->payload_buffer_);
|
||||||
|
this->payload_buffer_.clear();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
this->mqtt_client_.onDisconnect([this](AsyncMqttClientDisconnectReason reason) {
|
this->mqtt_client_.onDisconnect([this](AsyncMqttClientDisconnectReason reason) {
|
||||||
this->state_ = MQTT_CLIENT_DISCONNECTED;
|
this->state_ = MQTT_CLIENT_DISCONNECTED;
|
||||||
|
|
|
@ -259,6 +259,7 @@ class MQTTClientComponent : public Component {
|
||||||
};
|
};
|
||||||
std::string topic_prefix_{};
|
std::string topic_prefix_{};
|
||||||
MQTTMessage log_message_;
|
MQTTMessage log_message_;
|
||||||
|
std::string payload_buffer_;
|
||||||
int log_level_{ESPHOME_LOG_LEVEL};
|
int log_level_{ESPHOME_LOG_LEVEL};
|
||||||
|
|
||||||
std::vector<MQTTSubscription> subscriptions_;
|
std::vector<MQTTSubscription> subscriptions_;
|
||||||
|
|
Loading…
Reference in a new issue