mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-07 00:09:51 +03:00
fix mqtt::on_message, #1494
This commit is contained in:
@@ -66,9 +66,6 @@ class ESP8266React {
|
|||||||
void setWill(const char * will_topic) {
|
void setWill(const char * will_topic) {
|
||||||
_mqttSettingsService.setWill(will_topic);
|
_mqttSettingsService.setWill(will_topic);
|
||||||
}
|
}
|
||||||
void onMessage(espMqttClientTypes::OnMessageCallback callback) {
|
|
||||||
_mqttSettingsService.onMessage(callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
void factoryReset() {
|
void factoryReset() {
|
||||||
_factoryResetService.factoryReset();
|
_factoryResetService.factoryReset();
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ void MqttSettingsService::startClient() {
|
|||||||
}
|
}
|
||||||
static_cast<espMqttClientSecure *>(_mqttClient)->onConnect(std::bind(&MqttSettingsService::onMqttConnect, this, _1));
|
static_cast<espMqttClientSecure *>(_mqttClient)->onConnect(std::bind(&MqttSettingsService::onMqttConnect, this, _1));
|
||||||
static_cast<espMqttClientSecure *>(_mqttClient)->onDisconnect(std::bind(&MqttSettingsService::onMqttDisconnect, this, _1));
|
static_cast<espMqttClientSecure *>(_mqttClient)->onDisconnect(std::bind(&MqttSettingsService::onMqttDisconnect, this, _1));
|
||||||
|
static_cast<espMqttClientSecure *>(_mqttClient)->onMessage(std::bind(&MqttSettingsService::onMqttMessage, this, _1, _2, _3, _4, _5, _6));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -75,6 +76,7 @@ void MqttSettingsService::startClient() {
|
|||||||
_mqttClient = static_cast<MqttClient *>(new espMqttClient(espMqttClientTypes::UseInternalTask::NO));
|
_mqttClient = static_cast<MqttClient *>(new espMqttClient(espMqttClientTypes::UseInternalTask::NO));
|
||||||
static_cast<espMqttClient *>(_mqttClient)->onConnect(std::bind(&MqttSettingsService::onMqttConnect, this, _1));
|
static_cast<espMqttClient *>(_mqttClient)->onConnect(std::bind(&MqttSettingsService::onMqttConnect, this, _1));
|
||||||
static_cast<espMqttClient *>(_mqttClient)->onDisconnect(std::bind(&MqttSettingsService::onMqttDisconnect, this, _1));
|
static_cast<espMqttClient *>(_mqttClient)->onDisconnect(std::bind(&MqttSettingsService::onMqttDisconnect, this, _1));
|
||||||
|
static_cast<espMqttClient *>(_mqttClient)->onMessage(std::bind(&MqttSettingsService::onMqttMessage, this, _1, _2, _3, _4, _5, _6));
|
||||||
}
|
}
|
||||||
|
|
||||||
void MqttSettingsService::loop() {
|
void MqttSettingsService::loop() {
|
||||||
@@ -108,14 +110,8 @@ void MqttSettingsService::setWill(const char * topic) {
|
|||||||
static_cast<espMqttClient *>(_mqttClient)->setWill(topic, 1, true, "offline");
|
static_cast<espMqttClient *>(_mqttClient)->setWill(topic, 1, true, "offline");
|
||||||
}
|
}
|
||||||
|
|
||||||
void MqttSettingsService::onMessage(espMqttClientTypes::OnMessageCallback callback) {
|
void MqttSettingsService::onMqttMessage(const espMqttClientTypes::MessageProperties& properties, const char* topic, const uint8_t* payload, size_t len, size_t index, size_t total) {
|
||||||
#if CONFIG_IDF_TARGET_ESP32S3
|
emsesp::EMSESP::mqtt_.on_message(topic, payload, len);
|
||||||
if (_state.enableTLS) {
|
|
||||||
static_cast<espMqttClientSecure *>(_mqttClient)->onMessage(callback);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
static_cast<espMqttClient *>(_mqttClient)->onMessage(callback);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
espMqttClientTypes::DisconnectReason MqttSettingsService::getDisconnectReason() {
|
espMqttClientTypes::DisconnectReason MqttSettingsService::getDisconnectReason() {
|
||||||
|
|||||||
@@ -115,7 +115,6 @@ class MqttSettingsService : public StatefulService<MqttSettings> {
|
|||||||
espMqttClientTypes::DisconnectReason getDisconnectReason();
|
espMqttClientTypes::DisconnectReason getDisconnectReason();
|
||||||
MqttClient * getMqttClient();
|
MqttClient * getMqttClient();
|
||||||
void setWill(const char * topic);
|
void setWill(const char * topic);
|
||||||
void onMessage(espMqttClientTypes::OnMessageCallback callback);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void onConfigUpdated();
|
void onConfigUpdated();
|
||||||
@@ -145,6 +144,7 @@ class MqttSettingsService : public StatefulService<MqttSettings> {
|
|||||||
void WiFiEvent(WiFiEvent_t event, WiFiEventInfo_t info);
|
void WiFiEvent(WiFiEvent_t event, WiFiEventInfo_t info);
|
||||||
void onMqttConnect(bool sessionPresent);
|
void onMqttConnect(bool sessionPresent);
|
||||||
void onMqttDisconnect(espMqttClientTypes::DisconnectReason reason);
|
void onMqttDisconnect(espMqttClientTypes::DisconnectReason reason);
|
||||||
|
void onMqttMessage(const espMqttClientTypes::MessageProperties& properties, const char* topic, const uint8_t* payload, size_t len, size_t index, size_t total);
|
||||||
bool configureMqtt();
|
bool configureMqtt();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -212,7 +212,7 @@ void Mqtt::incoming(const char * topic, const char * payload) {
|
|||||||
// received an MQTT message that we subscribed too
|
// received an MQTT message that we subscribed too
|
||||||
// topic is the full path
|
// topic is the full path
|
||||||
// payload is json or a single string and converted to a json with key 'value'
|
// payload is json or a single string and converted to a json with key 'value'
|
||||||
void Mqtt::on_message(const char * topic, const uint8_t * payload, size_t len) const {
|
void Mqtt::on_message(const char * topic, const uint8_t * payload, size_t len) {
|
||||||
// the payload is not terminated
|
// the payload is not terminated
|
||||||
// convert payload to a null-terminated char string
|
// convert payload to a null-terminated char string
|
||||||
// see https://www.emelis.net/espMqttClient/#code-samples
|
// see https://www.emelis.net/espMqttClient/#code-samples
|
||||||
@@ -390,11 +390,6 @@ void Mqtt::start() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
EMSESP::esp8266React.setWill(will_topic); // with qos 1, retain true
|
EMSESP::esp8266React.setWill(will_topic); // with qos 1, retain true
|
||||||
|
|
||||||
EMSESP::esp8266React.onMessage(
|
|
||||||
[this](const espMqttClientTypes::MessageProperties & properties, const char * topic, const uint8_t * payload, size_t len, size_t index, size_t total) {
|
|
||||||
on_message(topic, payload, len); // receiving mqtt
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Mqtt::set_publish_time_boiler(uint16_t publish_time) {
|
void Mqtt::set_publish_time_boiler(uint16_t publish_time) {
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ class Mqtt {
|
|||||||
|
|
||||||
static void on_connect();
|
static void on_connect();
|
||||||
static void on_disconnect(espMqttClientTypes::DisconnectReason reason);
|
static void on_disconnect(espMqttClientTypes::DisconnectReason reason);
|
||||||
|
static void on_message(const char * topic, const uint8_t * payload, size_t len);
|
||||||
static void subscribe(const uint8_t device_type, const std::string & topic, mqtt_sub_function_p cb);
|
static void subscribe(const uint8_t device_type, const std::string & topic, mqtt_sub_function_p cb);
|
||||||
static void subscribe(const std::string & topic);
|
static void subscribe(const std::string & topic);
|
||||||
static void resubscribe();
|
static void resubscribe();
|
||||||
@@ -231,7 +232,6 @@ class Mqtt {
|
|||||||
static void queue_unsubscribe_message(const std::string & topic);
|
static void queue_unsubscribe_message(const std::string & topic);
|
||||||
|
|
||||||
void on_publish(uint16_t packetId) const;
|
void on_publish(uint16_t packetId) const;
|
||||||
void on_message(const char * topic, const uint8_t * payload, size_t len) const;
|
|
||||||
|
|
||||||
// function handlers for MQTT subscriptions
|
// function handlers for MQTT subscriptions
|
||||||
struct MQTTSubFunction {
|
struct MQTTSubFunction {
|
||||||
|
|||||||
Reference in New Issue
Block a user