11 static const char *
const TAG =
"mqtt.idf";
46 mqtt_cfg_.transport = MQTT_TRANSPORT_OVER_SSL;
48 mqtt_cfg_.transport = MQTT_TRANSPORT_OVER_TCP;
50 auto *mqtt_client = esp_mqtt_client_init(&
mqtt_cfg_);
57 ESP_LOGE(TAG,
"Failed to initialize IDF-MQTT");
73 ESP_LOGV(TAG,
"Event dispatched from event loop event_id=%d", event.
event_id);
75 case MQTT_EVENT_BEFORE_CONNECT:
76 ESP_LOGV(TAG,
"MQTT_EVENT_BEFORE_CONNECT");
79 case MQTT_EVENT_CONNECTED:
80 ESP_LOGV(TAG,
"MQTT_EVENT_CONNECTED");
85 case MQTT_EVENT_DISCONNECTED:
86 ESP_LOGV(TAG,
"MQTT_EVENT_DISCONNECTED");
92 case MQTT_EVENT_SUBSCRIBED:
93 ESP_LOGV(TAG,
"MQTT_EVENT_SUBSCRIBED, msg_id=%d", event.
msg_id);
97 case MQTT_EVENT_UNSUBSCRIBED:
98 ESP_LOGV(TAG,
"MQTT_EVENT_UNSUBSCRIBED, msg_id=%d", event.
msg_id);
101 case MQTT_EVENT_PUBLISHED:
102 ESP_LOGV(TAG,
"MQTT_EVENT_PUBLISHED, msg_id=%d", event.
msg_id);
105 case MQTT_EVENT_DATA: {
106 static std::string topic;
107 if (event.
topic.length() > 0) {
110 ESP_LOGV(TAG,
"MQTT_EVENT_DATA %s", topic.c_str());
111 this->
on_message_.call(event.
topic.length() > 0 ? topic.c_str() :
nullptr,
event.data.data(),
event.data.size(),
112 event.current_data_offset,
event.total_data_len);
114 case MQTT_EVENT_ERROR:
115 ESP_LOGE(TAG,
"MQTT_EVENT_ERROR");
116 if (event.
error_handle.error_type == MQTT_ERROR_TYPE_TCP_TRANSPORT) {
117 ESP_LOGE(TAG,
"Last error code reported from esp-tls: 0x%x", event.
error_handle.esp_tls_last_esp_err);
118 ESP_LOGE(TAG,
"Last tls stack error number: 0x%x", event.
error_handle.esp_tls_stack_err);
119 ESP_LOGE(TAG,
"Last captured errno : %d (%s)", event.
error_handle.esp_transport_sock_errno,
121 }
else if (event.
error_handle.error_type == MQTT_ERROR_TYPE_CONNECTION_REFUSED) {
122 ESP_LOGE(TAG,
"Connection refused error: 0x%x", event.
error_handle.connect_return_code);
124 ESP_LOGE(TAG,
"Unknown error type: 0x%x", event.
error_handle.error_type);
128 ESP_LOGV(TAG,
"Other event id:%d", event.
event_id);
138 auto event = *
static_cast<esp_mqtt_event_t *
>(event_data);
145 #endif // USE_ESP_IDF value_type const & value() const
CallbackManager< on_subscribe_callback_t > on_subscribe_
std::queue< Event > mqtt_events_
CallbackManager< on_unsubscribe_callback_t > on_unsubscribe_
optional< std::string > ca_certificate_
esp_mqtt_error_codes_t error_handle
CallbackManager< on_publish_user_callback_t > on_publish_
CallbackManager< on_message_callback_t > on_message_
CallbackManager< on_connect_callback_t > on_connect_
void mqtt_event_handler_(const Event &event)
esp_mqtt_event_id_t event_id
esp_mqtt_client_config_t mqtt_cfg_
static void mqtt_event_handler(void *handler_args, esp_event_base_t base, int32_t event_id, void *event_data)
static - Dispatch event to instance method
CallbackManager< on_disconnect_callback_t > on_disconnect_
static const size_t MQTT_BUFFER_SIZE