ESP32 MQTT 事件处理
ESP32 MQTT event processing
我正在尝试为我的 ESP32/Arduino IDE 项目使用文件 mqtt_client.h 中定义的 arduino-esp32 方法:
我正在努力制作一个事件处理程序。
我目前有:
#include <mqtt_client.h>
void MQTTEvent(esp_mqtt_event_t event) {
// process event
}
void setup() {
esp_mqtt_client_config_t mqtt_cfg;
mqtt_cfg.host = "192.168.0.126";
mqtt_cfg.port = 1883;
mqtt_cfg.client_id = "ESP32";
mqtt_cfg.uri = "HOMEPC";
mqtt_cfg.event_handle = MQTTEvent;
esp_mqtt_client_handle_t mqtt_client = esp_mqtt_client_init(&mqtt_cfg);
esp_mqtt_client_start(mqtt_client);
}
void loop() {
}
...但它失败了:
*invalid conversion from 'void (*)(esp_mqtt_event_t)' to 'mqtt_event_callback_t {aka int (*)(esp_mqtt_event_t*)}' [-fpermissive]*
on line mqtt_cfg.event_handle = MQTTEvent;
我找不到任何示例。有人可以帮我解决这个问题吗?
您的事件句柄类型错误,它应该 return 和 esp_err_t
所以应该是:
esp_err_t MQTTEvent(esp_mqtt_event_t *event) {
...
return ESP_OK; // you will need to return esp error codes
}
我正在尝试为我的 ESP32/Arduino IDE 项目使用文件 mqtt_client.h 中定义的 arduino-esp32 方法:
我正在努力制作一个事件处理程序。
我目前有:
#include <mqtt_client.h>
void MQTTEvent(esp_mqtt_event_t event) {
// process event
}
void setup() {
esp_mqtt_client_config_t mqtt_cfg;
mqtt_cfg.host = "192.168.0.126";
mqtt_cfg.port = 1883;
mqtt_cfg.client_id = "ESP32";
mqtt_cfg.uri = "HOMEPC";
mqtt_cfg.event_handle = MQTTEvent;
esp_mqtt_client_handle_t mqtt_client = esp_mqtt_client_init(&mqtt_cfg);
esp_mqtt_client_start(mqtt_client);
}
void loop() {
}
...但它失败了:
*invalid conversion from 'void (*)(esp_mqtt_event_t)' to 'mqtt_event_callback_t {aka int (*)(esp_mqtt_event_t*)}' [-fpermissive]*
on line mqtt_cfg.event_handle = MQTTEvent;
我找不到任何示例。有人可以帮我解决这个问题吗?
您的事件句柄类型错误,它应该 return 和 esp_err_t
所以应该是:
esp_err_t MQTTEvent(esp_mqtt_event_t *event) {
...
return ESP_OK; // you will need to return esp error codes
}