11 static const char *
const TAG =
"mqtt.idf";
14 #if ESP_IDF_VERSION_MAJOR < 5 47 mqtt_cfg_.transport = MQTT_TRANSPORT_OVER_SSL;
54 mqtt_cfg_.transport = MQTT_TRANSPORT_OVER_TCP;
86 mqtt_cfg_.broker.address.transport = MQTT_TRANSPORT_OVER_SSL;
93 mqtt_cfg_.broker.address.transport = MQTT_TRANSPORT_OVER_TCP;
96 auto *mqtt_client = esp_mqtt_client_init(&
mqtt_cfg_);
100 esp_mqtt_client_register_event(mqtt_client, MQTT_EVENT_ANY,
mqtt_event_handler,
this);
103 ESP_LOGE(TAG,
"Failed to initialize IDF-MQTT");
119 ESP_LOGV(TAG,
"Event dispatched from event loop event_id=%d", event.
event_id);
121 case MQTT_EVENT_BEFORE_CONNECT:
122 ESP_LOGV(TAG,
"MQTT_EVENT_BEFORE_CONNECT");
125 case MQTT_EVENT_CONNECTED:
126 ESP_LOGV(TAG,
"MQTT_EVENT_CONNECTED");
130 case MQTT_EVENT_DISCONNECTED:
131 ESP_LOGV(TAG,
"MQTT_EVENT_DISCONNECTED");
137 case MQTT_EVENT_SUBSCRIBED:
138 ESP_LOGV(TAG,
"MQTT_EVENT_SUBSCRIBED, msg_id=%d", event.
msg_id);
142 case MQTT_EVENT_UNSUBSCRIBED:
143 ESP_LOGV(TAG,
"MQTT_EVENT_UNSUBSCRIBED, msg_id=%d", event.
msg_id);
146 case MQTT_EVENT_PUBLISHED:
147 ESP_LOGV(TAG,
"MQTT_EVENT_PUBLISHED, msg_id=%d", event.
msg_id);
150 case MQTT_EVENT_DATA: {
151 static std::string topic;
152 if (event.
topic.length() > 0) {
155 ESP_LOGV(TAG,
"MQTT_EVENT_DATA %s", topic.c_str());
156 this->
on_message_.call(event.
topic.length() > 0 ? topic.c_str() :
nullptr,
event.data.data(),
event.data.size(),
157 event.current_data_offset,
event.total_data_len);
159 case MQTT_EVENT_ERROR:
160 ESP_LOGE(TAG,
"MQTT_EVENT_ERROR");
161 if (event.
error_handle.error_type == MQTT_ERROR_TYPE_TCP_TRANSPORT) {
162 ESP_LOGE(TAG,
"Last error code reported from esp-tls: 0x%x", event.
error_handle.esp_tls_last_esp_err);
163 ESP_LOGE(TAG,
"Last tls stack error number: 0x%x", event.
error_handle.esp_tls_stack_err);
164 ESP_LOGE(TAG,
"Last captured errno : %d (%s)", event.
error_handle.esp_transport_sock_errno,
166 }
else if (event.
error_handle.error_type == MQTT_ERROR_TYPE_CONNECTION_REFUSED) {
167 ESP_LOGE(TAG,
"Connection refused error: 0x%x", event.
error_handle.connect_return_code);
169 ESP_LOGE(TAG,
"Unknown error type: 0x%x", event.
error_handle.error_type);
173 ESP_LOGV(TAG,
"Other event id:%d", event.
event_id);
184 auto event = *
static_cast<esp_mqtt_event_t *
>(event_data);
value_type const & value() const
CallbackManager< on_subscribe_callback_t > on_subscribe_
void mqtt_event_handler_(const Event &event)
optional< std::string > ca_certificate_
CallbackManager< on_unsubscribe_callback_t > on_unsubscribe_
std::queue< Event > mqtt_events_
esp_mqtt_error_codes_t error_handle
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
static const size_t MQTT_BUFFER_SIZE
CallbackManager< on_connect_callback_t > on_connect_
esp_mqtt_event_id_t event_id
CallbackManager< on_message_callback_t > on_message_
CallbackManager< on_publish_user_callback_t > on_publish_
This is a workaround until we can figure out a way to get the tflite-micro idf component code availab...
CallbackManager< on_disconnect_callback_t > on_disconnect_
esp_mqtt_client_config_t mqtt_cfg_
optional< std::string > cl_certificate_
optional< std::string > cl_key_