ESPHome 2026.2.4
Loading...
Searching...
No Matches
mqtt_backend_esp8266.h
Go to the documentation of this file.
1#pragma once
2#include "mqtt_backend.h"
3
4#ifdef USE_MQTT
5#ifdef USE_ESP8266
6
7#include <AsyncMqttClient.h>
8
9namespace esphome::mqtt {
10
11class MQTTBackendESP8266 final : public MQTTBackend {
12 public:
13 void set_keep_alive(uint16_t keep_alive) final { mqtt_client_.setKeepAlive(keep_alive); }
14 void set_client_id(const char *client_id) final { mqtt_client_.setClientId(client_id); }
15 void set_clean_session(bool clean_session) final { mqtt_client_.setCleanSession(clean_session); }
16 void set_credentials(const char *username, const char *password) final {
17 mqtt_client_.setCredentials(username, password);
18 }
19 void set_will(const char *topic, uint8_t qos, bool retain, const char *payload) final {
20 mqtt_client_.setWill(topic, qos, retain, payload);
21 }
22 void set_server(network::IPAddress ip, uint16_t port) final { mqtt_client_.setServer(ip, port); }
23 void set_server(const char *host, uint16_t port) final { mqtt_client_.setServer(host, port); }
24 void set_on_connect(std::function<on_connect_callback_t> &&callback) final {
25 this->mqtt_client_.onConnect(std::move(callback));
26 }
27 void set_on_disconnect(std::function<on_disconnect_callback_t> &&callback) final {
28 auto async_callback = [callback](AsyncMqttClientDisconnectReason reason) {
29 // int based enum so casting isn't a problem
30 callback(static_cast<MQTTClientDisconnectReason>(reason));
31 };
32 this->mqtt_client_.onDisconnect(std::move(async_callback));
33 }
34 void set_on_subscribe(std::function<on_subscribe_callback_t> &&callback) final {
35 this->mqtt_client_.onSubscribe(std::move(callback));
36 }
37 void set_on_unsubscribe(std::function<on_unsubscribe_callback_t> &&callback) final {
38 this->mqtt_client_.onUnsubscribe(std::move(callback));
39 }
40 void set_on_message(std::function<on_message_callback_t> &&callback) final {
41 auto async_callback = [callback](const char *topic, const char *payload,
42 AsyncMqttClientMessageProperties async_properties, size_t len, size_t index,
43 size_t total) { callback(topic, payload, len, index, total); };
44 mqtt_client_.onMessage(std::move(async_callback));
45 }
46 void set_on_publish(std::function<on_publish_user_callback_t> &&callback) final {
47 this->mqtt_client_.onPublish(std::move(callback));
48 }
49
50 bool connected() const final { return mqtt_client_.connected(); }
51 void connect() final { mqtt_client_.connect(); }
52 void disconnect() final { mqtt_client_.disconnect(true); }
53 bool subscribe(const char *topic, uint8_t qos) final { return mqtt_client_.subscribe(topic, qos) != 0; }
54 bool unsubscribe(const char *topic) final { return mqtt_client_.unsubscribe(topic) != 0; }
55 bool publish(const char *topic, const char *payload, size_t length, uint8_t qos, bool retain) final {
56 return mqtt_client_.publish(topic, qos, retain, payload, length, false, 0) != 0;
57 }
59
60 protected:
61 AsyncMqttClient mqtt_client_;
62};
63
64} // namespace esphome::mqtt
65
66#endif // defined(USE_ESP8266)
67#endif
void set_on_subscribe(std::function< on_subscribe_callback_t > &&callback) final
void set_on_publish(std::function< on_publish_user_callback_t > &&callback) final
void set_will(const char *topic, uint8_t qos, bool retain, const char *payload) final
void set_keep_alive(uint16_t keep_alive) final
bool subscribe(const char *topic, uint8_t qos) final
void set_credentials(const char *username, const char *password) final
void set_on_unsubscribe(std::function< on_unsubscribe_callback_t > &&callback) final
bool unsubscribe(const char *topic) final
void set_on_disconnect(std::function< on_disconnect_callback_t > &&callback) final
void set_on_message(std::function< on_message_callback_t > &&callback) final
bool publish(const char *topic, const char *payload, size_t length, uint8_t qos, bool retain) final
void set_server(const char *host, uint16_t port) final
void set_clean_session(bool clean_session) final
void set_client_id(const char *client_id) final
void set_on_connect(std::function< on_connect_callback_t > &&callback) final
void set_server(network::IPAddress ip, uint16_t port) final
virtual bool publish(const char *topic, const char *payload, size_t length, uint8_t qos, bool retain)=0
std::string size_t len
Definition helpers.h:692
uint16_t length
Definition tt21100.cpp:0