ESPHome 2026.11.0-dev
Loading...
Searching...
No Matches
mqtt_backend.h
Go to the documentation of this file.
1#pragma once
3#ifdef USE_MQTT
4#include <string>
5#include <map>
8
9namespace esphome::mqtt {
10
22
24enum class MQTTTransport : uint8_t {
28};
29
32 std::string topic;
33 std::string payload;
34 uint8_t qos;
35 bool retain;
36};
37
39 public:
40 using on_connect_callback_t = void(bool session_present);
42 using on_subscribe_callback_t = void(uint16_t packet_id, uint8_t qos);
43 using on_unsubscribe_callback_t = void(uint16_t packet_id);
44 using on_message_callback_t = void(const char *topic, const char *payload, size_t len, size_t index, size_t total);
45 using on_publish_user_callback_t = void(uint16_t packet_id);
46
47 virtual void set_keep_alive(uint16_t keep_alive) = 0;
48 virtual void set_client_id(const char *client_id) = 0;
49 virtual void set_clean_session(bool clean_session) = 0;
50 virtual void set_credentials(const char *username, const char *password) = 0;
51 virtual void set_will(const char *topic, uint8_t qos, bool retain, const char *payload) = 0;
52 virtual void set_server(network::IPAddress ip, uint16_t port) = 0;
53 virtual void set_server(const char *host, uint16_t port) = 0;
54 virtual void set_on_connect(std::function<on_connect_callback_t> &&callback) = 0;
55 virtual void set_on_disconnect(std::function<on_disconnect_callback_t> &&callback) = 0;
56 virtual void set_on_subscribe(std::function<on_subscribe_callback_t> &&callback) = 0;
57 virtual void set_on_unsubscribe(std::function<on_unsubscribe_callback_t> &&callback) = 0;
58 virtual void set_on_message(std::function<on_message_callback_t> &&callback) = 0;
59 virtual void set_on_publish(std::function<on_publish_user_callback_t> &&callback) = 0;
60 virtual bool connected() const = 0;
61 virtual void connect() = 0;
62 virtual void disconnect() = 0;
63 virtual bool subscribe(const char *topic, uint8_t qos) = 0;
64 virtual bool unsubscribe(const char *topic) = 0;
65 virtual bool publish(const char *topic, const char *payload, size_t length, uint8_t qos, bool retain) = 0;
66
67 virtual bool publish(const MQTTMessage &message) {
68 return publish(message.topic.c_str(), message.payload.c_str(), message.payload.length(), message.qos,
69 message.retain);
70 }
71
72 // called from MQTTClient::loop()
73 virtual void loop() {}
74};
75
76} // namespace esphome::mqtt
77#endif
virtual void set_credentials(const char *username, const char *password)=0
virtual bool subscribe(const char *topic, uint8_t qos)=0
virtual void set_client_id(const char *client_id)=0
virtual void set_server(const char *host, uint16_t port)=0
virtual void set_on_connect(std::function< on_connect_callback_t > &&callback)=0
virtual void set_clean_session(bool clean_session)=0
virtual void set_on_message(std::function< on_message_callback_t > &&callback)=0
void(MQTTClientDisconnectReason reason) on_disconnect_callback_t
virtual void disconnect()=0
virtual bool publish(const char *topic, const char *payload, size_t length, uint8_t qos, bool retain)=0
virtual void set_on_unsubscribe(std::function< on_unsubscribe_callback_t > &&callback)=0
void(uint16_t packet_id) on_unsubscribe_callback_t
virtual void connect()=0
void(const char *topic, const char *payload, size_t len, size_t index, size_t total) on_message_callback_t
virtual bool unsubscribe(const char *topic)=0
void(uint16_t packet_id) on_publish_user_callback_t
virtual void set_on_disconnect(std::function< on_disconnect_callback_t > &&callback)=0
virtual void set_server(network::IPAddress ip, uint16_t port)=0
virtual void set_on_publish(std::function< on_publish_user_callback_t > &&callback)=0
void(bool session_present) on_connect_callback_t
void(uint16_t packet_id, uint8_t qos) on_subscribe_callback_t
virtual bool connected() const =0
virtual void set_will(const char *topic, uint8_t qos, bool retain, const char *payload)=0
virtual void set_on_subscribe(std::function< on_subscribe_callback_t > &&callback)=0
virtual bool publish(const MQTTMessage &message)
virtual void set_keep_alive(uint16_t keep_alive)=0
const LogString * message
Definition component.cpp:35
MQTTTransport
Transport for the broker connection; only the ESP-IDF backend supports WebSocket.
const void size_t len
Definition hal.h:68
internal struct for MQTT messages.
uint8_t qos
QoS. Only for last will testaments.
uint16_t length
Definition tt21100.cpp:0