11#include <freertos/FreeRTOS.h>
12#include <freertos/task.h>
36 Event(
const esp_mqtt_event_t &event)
38 data(event.data, event.data + event.data_len),
39 total_data_len(event.total_data_len),
40 current_data_offset(event.current_data_offset),
41 topic(event.topic, event.topic_len),
46 session_present(event.session_present),
47 error_handle(*event.error_handle) {}
69 bool set_data(
const char *topic_str,
const char *payload_data,
size_t len) {
71 if (
len > std::numeric_limits<uint16_t>::max()) {
79 size_t topic_len = strlen(topic_str) + 1;
83 memcpy(
topic, topic_str, topic_len);
85 if (payload_data &&
len) {
134 void set_will(
const char *topic, uint8_t qos,
bool retain,
const char *payload)
final {
143 this->
host_ = ip.str();
165 void set_on_publish(std::function<on_publish_user_callback_t> &&callback)
final {
173 esp_mqtt_client_start(
handler_.get());
179 esp_mqtt_client_disconnect(
handler_.get());
183#if defined(USE_MQTT_IDF_ENQUEUE)
186 return esp_mqtt_client_subscribe(
handler_.get(), topic, qos) != -1;
190#if defined(USE_MQTT_IDF_ENQUEUE)
193 return esp_mqtt_client_unsubscribe(
handler_.get(), topic) != -1;
197 bool publish(
const char *topic,
const char *payload,
size_t length, uint8_t qos,
bool retain)
final {
198#if defined(USE_MQTT_IDF_ENQUEUE)
203 return esp_mqtt_client_publish(
handler_.get(), topic, payload,
length, qos, retain) != -1;
227 void operator()(esp_mqtt_client *client_handler) { esp_mqtt_client_destroy(client_handler); }
252#if defined(USE_MQTT_IDF_ENQUEUE)
270#if defined(USE_MQTT_IDF_ENQUEUE)
An STL allocator that uses SPI or internal RAM.
void deallocate(T *p, size_t n)
void set_keep_alive(uint16_t keep_alive) final
void set_on_message(std::function< on_message_callback_t > &&callback) final
CallbackManager< on_connect_callback_t > on_connect_
CallbackManager< on_disconnect_callback_t > on_disconnect_
static const size_t TASK_STACK_SIZE_TLS
void set_ca_certificate(const std::string &cert)
std::queue< Event > mqtt_events_
CallbackManager< on_message_callback_t > on_message_
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
void set_client_id(const char *client_id) final
optional< std::string > ca_certificate_
static const size_t TASK_STACK_SIZE
CallbackManager< on_subscribe_callback_t > on_subscribe_
static void esphome_mqtt_task(void *params)
void set_on_publish(std::function< on_publish_user_callback_t > &&callback) final
bool enqueue_(MqttQueueTypeT type, const char *topic, int qos=0, bool retain=false, const char *payload=NULL, size_t len=0)
void set_server(const char *host, uint16_t port) final
EventPool< struct QueueElement, MQTT_QUEUE_LENGTH > mqtt_event_pool_
void set_cl_key(const std::string &key)
void set_on_connect(std::function< on_connect_callback_t > &&callback) final
void set_will(const char *topic, uint8_t qos, bool retain, const char *payload) final
bool subscribe(const char *topic, uint8_t qos) final
void set_server(network::IPAddress ip, uint16_t port) final
void set_cl_certificate(const std::string &cert)
CallbackManager< on_unsubscribe_callback_t > on_unsubscribe_
static const ssize_t TASK_PRIORITY
esp_mqtt_client_config_t mqtt_cfg_
void set_skip_cert_cn_check(bool skip_check)
void set_on_unsubscribe(std::function< on_unsubscribe_callback_t > &&callback) final
bool publish(const char *topic, const char *payload, size_t length, uint8_t qos, bool retain) final
TaskHandle_t task_handle_
CallbackManager< on_publish_user_callback_t > on_publish_
void set_clean_session(bool clean_session) final
bool unsubscribe(const char *topic) final
static constexpr uint32_t DROP_LOG_INTERVAL_MS
NotifyingLockFreeQueue< struct QueueElement, MQTT_QUEUE_LENGTH > mqtt_queue_
static const size_t MQTT_BUFFER_SIZE
void set_on_subscribe(std::function< on_subscribe_callback_t > &&callback) final
uint32_t last_dropped_log_time_
optional< std::string > cl_key_
void mqtt_event_handler_(const Event &event)
bool connected() const final
optional< std::string > cl_certificate_
void set_on_disconnect(std::function< on_disconnect_callback_t > &&callback) final
void set_credentials(const char *username, const char *password) final
std::unique_ptr< esp_mqtt_client, MqttClientDeleter > ClientHandler_
static const uint8_t MQTT_QUEUE_LENGTH
virtual bool publish(const char *topic, const char *payload, size_t length, uint8_t qos, bool retain)=0
@ MQTT_QUEUE_TYPE_SUBSCRIBE
@ MQTT_QUEUE_TYPE_UNSUBSCRIBE
@ MQTT_QUEUE_TYPE_PUBLISH
Providing packet encoding functions for exchanging data with a remote host.
esp_mqtt_event_id_t event_id
esp_mqtt_error_codes_t error_handle
Event(const esp_mqtt_event_t &event)
void operator()(esp_mqtt_client *client_handler)
bool set_data(const char *topic_str, const char *payload_data, size_t len)