ESPHome 2026.2.1
Loading...
Searching...
No Matches
esphome::mqtt::MQTTComponent Class Referenceabstract

MQTTComponent is the base class for all components that interact with MQTT to expose certain functionality or data from actuators or sensors to clients. More...

#include <mqtt_component.h>

Inheritance diagram for esphome::mqtt::MQTTComponent:
esphome::Component esphome::mqtt::MQTTAlarmControlPanelComponent esphome::mqtt::MQTTBinarySensorComponent esphome::mqtt::MQTTButtonComponent esphome::mqtt::MQTTClimateComponent esphome::mqtt::MQTTCoverComponent esphome::mqtt::MQTTDateComponent esphome::mqtt::MQTTDateTimeComponent esphome::mqtt::MQTTEventComponent esphome::mqtt::MQTTFanComponent esphome::mqtt::MQTTJSONLightComponent esphome::mqtt::MQTTLockComponent esphome::mqtt::MQTTNumberComponent esphome::mqtt::MQTTSelectComponent esphome::mqtt::MQTTSensorComponent esphome::mqtt::MQTTSwitchComponent esphome::mqtt::MQTTTextComponent esphome::mqtt::MQTTTextSensor esphome::mqtt::MQTTTimeComponent esphome::mqtt::MQTTUpdateComponent esphome::mqtt::MQTTValveComponent

Public Member Functions

 MQTTComponent ()
 Constructs a MQTTComponent.
 
void call_setup () override
 Override setup_ so that we can call send_discovery() when needed.
 
void call_dump_config () override
 
virtual void send_discovery (JsonObject root, SendDiscoveryConfig &config)=0
 Send discovery info the Home Assistant, override this.
 
virtual bool send_initial_state ()=0
 
bool is_internal () const
 Returns cached is_internal result (computed once during setup).
 
void set_qos (uint8_t qos)
 Set QOS for state messages.
 
uint8_t get_qos () const
 
void set_retain (bool retain)
 Set whether state message should be retained.
 
bool get_retain () const
 
void disable_discovery ()
 Disable discovery. Sets friendly name to "".
 
bool is_discovery_enabled () const
 
void set_subscribe_qos (uint8_t qos)
 Set the QOS for subscribe messages (used in discovery).
 
virtual const char * component_type () const =0
 Override this method to return the component type (e.g. "light", "sensor", ...)
 
template<typename T >
void set_custom_state_topic (T &&custom_state_topic)
 Set a custom state topic. Do not set for default behavior.
 
template<typename T >
void set_custom_command_topic (T &&custom_command_topic)
 
void set_command_retain (bool command_retain)
 Set whether command message should be retained.
 
float get_setup_priority () const override
 MQTT_COMPONENT setup priority.
 
void set_availability (std::string topic, std::string payload_available, std::string payload_not_available)
 Set the Home Assistant availability data.
 
void disable_availability ()
 
void schedule_resend_state ()
 Internal method for the MQTT client base to schedule a resend of the state on reconnect.
 
void process_resend ()
 Process pending resend if needed (called by MQTTClientComponent)
 
bool publish (const std::string &topic, const std::string &payload)
 Send a MQTT message.
 
bool publish (const std::string &topic, const char *payload, size_t payload_length)
 Send a MQTT message.
 
bool publish (const std::string &topic, const char *payload)
 Send a MQTT message.
 
bool publish (const char *topic, const char *payload, size_t payload_length)
 Send a MQTT message (no heap allocation for topic).
 
bool publish (StringRef topic, const char *payload, size_t payload_length)
 Send a MQTT message (no heap allocation for topic).
 
bool publish (const char *topic, const char *payload)
 Send a MQTT message (no heap allocation for topic).
 
bool publish (StringRef topic, const char *payload)
 Send a MQTT message (no heap allocation for topic).
 
bool publish (const std::string &topic, ProgmemStr payload)
 Send a MQTT message with a PROGMEM string payload.
 
bool publish (const char *topic, ProgmemStr payload)
 Send a MQTT message with a PROGMEM string payload (no heap allocation for topic).
 
bool publish (StringRef topic, ProgmemStr payload)
 Send a MQTT message with a PROGMEM string payload (no heap allocation for topic).
 
bool publish_json (const std::string &topic, const json::json_build_t &f)
 Construct and send a JSON MQTT message.
 
bool publish_json (const char *topic, const json::json_build_t &f)
 Construct and send a JSON MQTT message (no heap allocation for topic).
 
bool publish_json (StringRef topic, const json::json_build_t &f)
 Construct and send a JSON MQTT message (no heap allocation for topic).
 
void subscribe (const std::string &topic, mqtt_callback_t callback, uint8_t qos=0)
 Subscribe to a MQTT topic.
 
void subscribe_json (const std::string &topic, const mqtt_json_callback_t &callback, uint8_t qos=0)
 Subscribe to a MQTT topic and automatically parse JSON payload.
 
- Public Member Functions inherited from esphome::Component
virtual void setup ()
 Where the component's initialization should happen.
 
virtual void loop ()
 This method will be called repeatedly.
 
virtual void dump_config ()
 
float get_actual_setup_priority () const
 
void set_setup_priority (float priority)
 
virtual float get_loop_priority () const
 priority of loop().
 
void call ()
 
virtual void on_shutdown ()
 
virtual void on_safe_shutdown ()
 
virtual bool teardown ()
 Called during teardown to allow component to gracefully finish operations.
 
virtual void on_powerdown ()
 Called after teardown is complete to power down hardware.
 
uint8_t get_component_state () const
 
void reset_to_construction_state ()
 Reset this component back to the construction state to allow setup to run again.
 
bool is_in_loop_state () const
 Check if this component has completed setup and is in the loop state.
 
bool is_idle () const
 Check if this component is idle.
 
virtual void mark_failed ()
 Mark this component as failed.
 
 ESPDEPRECATED ("Use mark_failed(LOG_STR(\"static string literal\")) instead. Do NOT use .c_str() from temporary " "strings. Will stop working in 2026.6.0", "2025.12.0") void mark_failed(const char *message)
 
void mark_failed (const LogString *message)
 
void disable_loop ()
 Disable this component's loop.
 
void enable_loop ()
 Enable this component's loop.
 
void enable_loop_soon_any_context ()
 Thread and ISR-safe version of enable_loop() that can be called from any context.
 
bool is_failed () const
 
bool is_ready () const
 
virtual bool can_proceed ()
 
bool status_has_warning () const
 
bool status_has_error () const
 
void status_set_warning (const char *message=nullptr)
 
void status_set_warning (const LogString *message)
 
void status_set_error ()
 
 ESPDEPRECATED ("Use status_set_error(LOG_STR(\"static string literal\")) instead. Do NOT use .c_str() from temporary " "strings. Will stop working in 2026.6.0", "2025.12.0") void status_set_error(const char *message)
 
void status_set_error (const LogString *message)
 
void status_clear_warning ()
 
void status_clear_error ()
 
void status_momentary_warning (const char *name, uint32_t length=5000)
 Set warning status flag and automatically clear it after a timeout.
 
void status_momentary_error (const char *name, uint32_t length=5000)
 Set error status flag and automatically clear it after a timeout.
 
bool has_overridden_loop () const
 
void set_component_source (const LogString *source)
 Set where this component was loaded from for some debug messages.
 
const LogString * get_component_log_str () const
 Get the integration where this component was declared as a LogString for logging.
 
bool should_warn_of_blocking (uint32_t blocking_time)
 

Protected Member Functions

StringRef get_discovery_topic_to_ (std::span< char, MQTT_DISCOVERY_TOPIC_MAX_LEN > buf, const MQTTDiscoveryInfo &discovery_info) const
 Helper method to get the discovery topic for this component into a buffer.
 
StringRef get_default_topic_for_to_ (std::span< char, MQTT_DEFAULT_TOPIC_MAX_LEN > buf, const char *suffix, size_t suffix_len) const
 Get this components state/command/... topic into a buffer.
 
std::string get_default_topic_for_ (const std::string &suffix) const
 Get this components state/command/... topic (allocates std::string).
 
virtual const EntityBaseget_entity () const =0
 Gets the Entity served by this MQTT component.
 
const StringReffriendly_name_ () const
 Get the friendly name of this MQTT component.
 
StringRef get_icon_ref_ () const
 Get the icon field of this component as StringRef.
 
bool is_disabled_by_default_ () const
 Get whether the underlying Entity is disabled by default.
 
StringRef get_state_topic_to_ (std::span< char, MQTT_DEFAULT_TOPIC_MAX_LEN > buf) const
 Get the MQTT state topic into a buffer (no heap allocation for non-lambda custom topics).
 
StringRef get_command_topic_to_ (std::span< char, MQTT_DEFAULT_TOPIC_MAX_LEN > buf) const
 Get the MQTT command topic into a buffer (no heap allocation for non-lambda custom topics).
 
std::string get_state_topic_ () const
 Get the MQTT topic that new states will be shared to (allocates std::string).
 
std::string get_command_topic_ () const
 Get the MQTT topic for listening to commands (allocates std::string).
 
bool is_connected_ () const
 
bool send_discovery_ ()
 Internal method to start sending discovery info, this will call send_discovery().
 
StringRef get_default_object_id_to_ (std::span< char, OBJECT_ID_MAX_LEN > buf) const
 Get the object ID for this MQTT component, writing to the provided buffer.
 
bool compute_is_internal_ ()
 Compute is_internal status based on topics and entity state.
 
- Protected Member Functions inherited from esphome::Component
virtual void call_loop ()
 
void set_component_state_ (uint8_t state)
 Helper to set component state (clears state bits and sets new state)
 
void set_interval (uint32_t id, uint32_t interval, std::function< void()> &&f)
 Set an interval function with a numeric ID (zero heap allocation).
 
void set_interval (InternalSchedulerID id, uint32_t interval, std::function< void()> &&f)
 
void set_interval (uint32_t interval, std::function< void()> &&f)
 
bool cancel_interval (uint32_t id)
 
bool cancel_interval (InternalSchedulerID id)
 
ESPDEPRECATED("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(const std ESPDEPRECATED ("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(const char *name
 
 ESPDEPRECATED ("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(uint32_t id
 
 ESPDEPRECATED ("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(uint32_t initial_wait_time
 
ESPDEPRECATED("cancel_retry is deprecated and will be removed in 2026.8.0.", "2026.2.0") bool cancel_retry(const std ESPDEPRECATED ("cancel_retry is deprecated and will be removed in 2026.8.0.", "2026.2.0") bool cancel_retry(const char *name)
 
 ESPDEPRECATED ("cancel_retry is deprecated and will be removed in 2026.8.0.", "2026.2.0") bool cancel_retry(uint32_t id)
 
void set_timeout (uint32_t id, uint32_t timeout, std::function< void()> &&f)
 Set a timeout function with a numeric ID (zero heap allocation).
 
void set_timeout (InternalSchedulerID id, uint32_t timeout, std::function< void()> &&f)
 
void set_timeout (uint32_t timeout, std::function< void()> &&f)
 
bool cancel_timeout (uint32_t id)
 
bool cancel_timeout (InternalSchedulerID id)
 
void defer (std::function< void()> &&f)
 Defer a callback to the next loop() call.
 
void defer (uint32_t id, std::function< void()> &&f)
 Defer a callback with a numeric ID (zero heap allocation)
 
bool cancel_defer (uint32_t id)
 

Protected Attributes

TemplatableValue< std::string > custom_state_topic_ {}
 
TemplatableValue< std::string > custom_command_topic_ {}
 
std::unique_ptr< Availabilityavailability_
 
uint8_t qos_: 2 {0}
 
uint8_t subscribe_qos_: 2 {0}
 
bool command_retain_: 1 {false}
 
bool retain_: 1 {true}
 
bool discovery_enabled_: 1 {true}
 
bool resend_state_: 1 {false}
 
bool is_internal_: 1 {false}
 Cached result of compute_is_internal_(), set during setup.
 
- Protected Attributes inherited from esphome::Component
ESPDEPRECATED("Use const char* or uint32_t overload instead. Removed in 2026.7.0", "2026.1.0") void set_interval(const std voi set_interval )(const char *name, uint32_t interval, std::function< void()> &&f)
 Set an interval function with a unique name.
 
ESPDEPRECATED("Use const char* or uint32_t overload instead. Removed in 2026.7.0", "2026.1.0") bool cancel_interval(const std boo cancel_interval )(const char *name)
 Cancel an interval function.
 
ESPDEPRECATED("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(const std uint32_t initial_wait_time
 
ESPDEPRECATED("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(const std uint32_t uint8_t max_attempts
 
ESPDEPRECATED("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(const std uint32_t uint8_t std::function< RetryResult(uint8_t)> && f
 
ESPDEPRECATED("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(const std uint32_t uint8_t std::function< RetryResult(uint8_t)> float backoff_increase_factor = 1.0f)
 
uint32_t initial_wait_time
 
uint32_t uint8_t max_attempts
 
uint32_t uint8_t std::function< RetryResult(uint8_t)> && f
 
uint32_t uint8_t std::function< RetryResult(uint8_t)> float backoff_increase_factor = 1.0f)
 
uint8_t max_attempts
 
uint8_t std::function< RetryResult(uint8_t)> && f
 
uint8_t std::function< RetryResult(uint8_t)> float backoff_increase_factor = 1.0f)
 
ESPDEPRECATED("Use const char* or uint32_t overload instead. Removed in 2026.7.0", "2026.1.0") void set_timeout(const std voi set_timeout )(const char *name, uint32_t timeout, std::function< void()> &&f)
 Set a timeout function with a unique name.
 
ESPDEPRECATED("Use const char* or uint32_t overload instead. Removed in 2026.7.0", "2026.1.0") bool cancel_timeout(const std boo cancel_timeout )(const char *name)
 Cancel a timeout function.
 
ESPDEPRECATED("Use const char* overload instead. Removed in 2026.7.0", "2026.1.0") void defer(const std voi defer )(const char *name, std::function< void()> &&f)
 Defer a callback to the next loop() call.
 
ESPDEPRECATED("Use const char* overload instead. Removed in 2026.7.0", "2026.1.0") bool cancel_defer(const std boo cancel_defer )(const char *name)
 Cancel a defer callback using the specified name, name must not be empty.
 
const LogString * component_source_ {nullptr}
 
uint16_t warn_if_blocking_over_ {WARN_IF_BLOCKING_OVER_MS}
 Warn if blocked for this many ms (max 65.5s)
 
uint8_t component_state_ {0x00}
 State of this component - each bit has a purpose: Bits 0-2: Component state (0x00=CONSTRUCTION, 0x01=SETUP, 0x02=LOOP, 0x03=FAILED, 0x04=LOOP_DONE) Bit 3: STATUS_LED_WARNING Bit 4: STATUS_LED_ERROR Bits 5-7: Unused - reserved for future expansion.
 
volatile bool pending_enable_loop_ {false}
 ISR-safe flag for enable_loop_soon_any_context.
 

Detailed Description

MQTTComponent is the base class for all components that interact with MQTT to expose certain functionality or data from actuators or sensors to clients.

Although this class should work with all MQTT solutions, it has been specifically designed for use with Home Assistant. For example, this class supports Home Assistant MQTT discovery out of the box.

In order to implement automatic Home Assistant discovery, all sub-classes should:

  1. Implement send_discovery that creates a Home Assistant discovery payload.
  2. Override component_type() to return the appropriate component type such as "light" or "sensor".
  3. Subscribe to command topics using subscribe() or subscribe_json() during setup().

In order to best separate the front- and back-end of ESPHome, all sub-classes should only parse/send MQTT messages and interact with back-end components via callbacks to ensure a clean separation.

Definition at line 91 of file mqtt_component.h.

Constructor & Destructor Documentation

◆ MQTTComponent()

esphome::mqtt::MQTTComponent::MQTTComponent ( )
explicitdefault

Constructs a MQTTComponent.

Member Function Documentation

◆ call_dump_config()

void esphome::mqtt::MQTTComponent::call_dump_config ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 408 of file mqtt_component.cpp.

◆ call_setup()

void esphome::mqtt::MQTTComponent::call_setup ( )
overridevirtual

Override setup_ so that we can call send_discovery() when needed.

Reimplemented from esphome::Component.

Definition at line 369 of file mqtt_component.cpp.

◆ component_type()

◆ compute_is_internal_()

bool esphome::mqtt::MQTTComponent::compute_is_internal_ ( )
protected

Compute is_internal status based on topics and entity state.

Called once during setup to cache the result.

Definition at line 424 of file mqtt_component.cpp.

◆ disable_availability()

void esphome::mqtt::MQTTComponent::disable_availability ( )

Definition at line 368 of file mqtt_component.cpp.

◆ disable_discovery()

void esphome::mqtt::MQTTComponent::disable_discovery ( )

Disable discovery. Sets friendly name to "".

Definition at line 358 of file mqtt_component.cpp.

◆ friendly_name_()

const StringRef & esphome::mqtt::MQTTComponent::friendly_name_ ( ) const
protected

Get the friendly name of this MQTT component.

Definition at line 418 of file mqtt_component.cpp.

◆ get_command_topic_()

std::string esphome::mqtt::MQTTComponent::get_command_topic_ ( ) const
protected

Get the MQTT topic for listening to commands (allocates std::string).

Definition at line 130 of file mqtt_component.cpp.

◆ get_command_topic_to_()

StringRef esphome::mqtt::MQTTComponent::get_command_topic_to_ ( std::span< char, MQTT_DEFAULT_TOPIC_MAX_LEN > buf) const
protected

Get the MQTT command topic into a buffer (no heap allocation for non-lambda custom topics).

Parameters
bufBuffer of exactly MQTT_DEFAULT_TOPIC_MAX_LEN bytes.
Returns
StringRef pointing to the topic in the buffer.

Definition at line 116 of file mqtt_component.cpp.

◆ get_default_object_id_to_()

StringRef esphome::mqtt::MQTTComponent::get_default_object_id_to_ ( std::span< char, OBJECT_ID_MAX_LEN > buf) const
protected

Get the object ID for this MQTT component, writing to the provided buffer.

Definition at line 419 of file mqtt_component.cpp.

◆ get_default_topic_for_()

std::string esphome::mqtt::MQTTComponent::get_default_topic_for_ ( const std::string & suffix) const
protected

Get this components state/command/... topic (allocates std::string).

Parameters
suffixThe suffix/key such as "state" or "command".
Returns
The full topic.

Definition at line 102 of file mqtt_component.cpp.

◆ get_default_topic_for_to_()

StringRef esphome::mqtt::MQTTComponent::get_default_topic_for_to_ ( std::span< char, MQTT_DEFAULT_TOPIC_MAX_LEN > buf,
const char * suffix,
size_t suffix_len ) const
protected

Get this components state/command/... topic into a buffer.

Parameters
bufThe buffer to write to (must be exactly MQTT_DEFAULT_TOPIC_MAX_LEN).
suffixThe suffix/key such as "state" or "command".
Returns
StringRef pointing to the buffer with the topic.

Definition at line 77 of file mqtt_component.cpp.

◆ get_discovery_topic_to_()

StringRef esphome::mqtt::MQTTComponent::get_discovery_topic_to_ ( std::span< char, MQTT_DISCOVERY_TOPIC_MAX_LEN > buf,
const MQTTDiscoveryInfo & discovery_info ) const
protected

Helper method to get the discovery topic for this component into a buffer.

Definition at line 54 of file mqtt_component.cpp.

◆ get_entity()

◆ get_icon_ref_()

StringRef esphome::mqtt::MQTTComponent::get_icon_ref_ ( ) const
protected

Get the icon field of this component as StringRef.

Definition at line 422 of file mqtt_component.cpp.

◆ get_qos()

uint8_t esphome::mqtt::MQTTComponent::get_qos ( ) const

Definition at line 339 of file mqtt_component.cpp.

◆ get_retain()

bool esphome::mqtt::MQTTComponent::get_retain ( ) const

Definition at line 341 of file mqtt_component.cpp.

◆ get_setup_priority()

float esphome::mqtt::MQTTComponent::get_setup_priority ( ) const
overridevirtual

MQTT_COMPONENT setup priority.

Reimplemented from esphome::Component.

Definition at line 357 of file mqtt_component.cpp.

◆ get_state_topic_()

std::string esphome::mqtt::MQTTComponent::get_state_topic_ ( ) const
protected

Get the MQTT topic that new states will be shared to (allocates std::string).

Definition at line 124 of file mqtt_component.cpp.

◆ get_state_topic_to_()

StringRef esphome::mqtt::MQTTComponent::get_state_topic_to_ ( std::span< char, MQTT_DEFAULT_TOPIC_MAX_LEN > buf) const
protected

Get the MQTT state topic into a buffer (no heap allocation for non-lambda custom topics).

Parameters
bufBuffer of exactly MQTT_DEFAULT_TOPIC_MAX_LEN bytes.
Returns
StringRef pointing to the topic in the buffer.

Definition at line 108 of file mqtt_component.cpp.

◆ is_connected_()

bool esphome::mqtt::MQTTComponent::is_connected_ ( ) const
protected

Definition at line 415 of file mqtt_component.cpp.

◆ is_disabled_by_default_()

bool esphome::mqtt::MQTTComponent::is_disabled_by_default_ ( ) const
protected

Get whether the underlying Entity is disabled by default.

Definition at line 423 of file mqtt_component.cpp.

◆ is_discovery_enabled()

bool esphome::mqtt::MQTTComponent::is_discovery_enabled ( ) const

Definition at line 343 of file mqtt_component.cpp.

◆ is_internal()

bool esphome::mqtt::MQTTComponent::is_internal ( ) const
inline

Returns cached is_internal result (computed once during setup).

Definition at line 109 of file mqtt_component.h.

◆ process_resend()

void esphome::mqtt::MQTTComponent::process_resend ( )

Process pending resend if needed (called by MQTTClientComponent)

Definition at line 392 of file mqtt_component.cpp.

◆ publish() [1/10]

bool esphome::mqtt::MQTTComponent::publish ( const char * topic,
const char * payload )

Send a MQTT message (no heap allocation for topic).

Parameters
topicThe topic as C string.
payloadThe null-terminated payload.

Definition at line 150 of file mqtt_component.cpp.

◆ publish() [2/10]

bool esphome::mqtt::MQTTComponent::publish ( const char * topic,
const char * payload,
size_t payload_length )

Send a MQTT message (no heap allocation for topic).

Parameters
topicThe topic as C string.
payloadThe payload buffer.
payload_lengthThe length of the payload.

Definition at line 144 of file mqtt_component.cpp.

◆ publish() [3/10]

bool esphome::mqtt::MQTTComponent::publish ( const char * topic,
ProgmemStr payload )

Send a MQTT message with a PROGMEM string payload (no heap allocation for topic).

Parameters
topicThe topic as C string.
payloadThe payload (ProgmemStr - stored in flash on ESP8266).

Definition at line 159 of file mqtt_component.cpp.

◆ publish() [4/10]

bool esphome::mqtt::MQTTComponent::publish ( const std::string & topic,
const char * payload )
inline

Send a MQTT message.

Parameters
topicThe topic.
payloadThe null-terminated payload.

Definition at line 175 of file mqtt_component.h.

◆ publish() [5/10]

bool esphome::mqtt::MQTTComponent::publish ( const std::string & topic,
const char * payload,
size_t payload_length )

Send a MQTT message.

Parameters
topicThe topic.
payloadThe payload buffer.
payload_lengthThe length of the payload.

Definition at line 140 of file mqtt_component.cpp.

◆ publish() [6/10]

bool esphome::mqtt::MQTTComponent::publish ( const std::string & topic,
const std::string & payload )

Send a MQTT message.

Parameters
topicThe topic.
payloadThe payload.

Definition at line 136 of file mqtt_component.cpp.

◆ publish() [7/10]

bool esphome::mqtt::MQTTComponent::publish ( const std::string & topic,
ProgmemStr payload )

Send a MQTT message with a PROGMEM string payload.

Parameters
topicThe topic.
payloadThe payload (ProgmemStr - stored in flash on ESP8266).

Definition at line 155 of file mqtt_component.cpp.

◆ publish() [8/10]

bool esphome::mqtt::MQTTComponent::publish ( StringRef topic,
const char * payload )
inline

Send a MQTT message (no heap allocation for topic).

Parameters
topicThe topic as StringRef (for use with get_state_topic_to_()).
payloadThe null-terminated payload.

Definition at line 209 of file mqtt_component.h.

◆ publish() [9/10]

bool esphome::mqtt::MQTTComponent::publish ( StringRef topic,
const char * payload,
size_t payload_length )
inline

Send a MQTT message (no heap allocation for topic).

Parameters
topicThe topic as StringRef (for use with get_state_topic_to_()).
payloadThe payload buffer.
payload_lengthThe length of the payload.

Definition at line 193 of file mqtt_component.h.

◆ publish() [10/10]

bool esphome::mqtt::MQTTComponent::publish ( StringRef topic,
ProgmemStr payload )
inline

Send a MQTT message with a PROGMEM string payload (no heap allocation for topic).

Parameters
topicThe topic as StringRef (for use with get_state_topic_to_()).
payloadThe payload (ProgmemStr - stored in flash on ESP8266).

Definition at line 231 of file mqtt_component.h.

◆ publish_json() [1/3]

bool esphome::mqtt::MQTTComponent::publish_json ( const char * topic,
const json::json_build_t & f )

Construct and send a JSON MQTT message (no heap allocation for topic).

Parameters
topicThe topic as C string.
fThe Json Message builder.

Definition at line 174 of file mqtt_component.cpp.

◆ publish_json() [2/3]

bool esphome::mqtt::MQTTComponent::publish_json ( const std::string & topic,
const json::json_build_t & f )

Construct and send a JSON MQTT message.

Parameters
topicThe topic.
fThe Json Message builder.

Definition at line 170 of file mqtt_component.cpp.

◆ publish_json() [3/3]

bool esphome::mqtt::MQTTComponent::publish_json ( StringRef topic,
const json::json_build_t & f )
inline

Construct and send a JSON MQTT message (no heap allocation for topic).

Parameters
topicThe topic as StringRef (for use with get_state_topic_to_()).
fThe Json Message builder.

Definition at line 253 of file mqtt_component.h.

◆ schedule_resend_state()

void esphome::mqtt::MQTTComponent::schedule_resend_state ( )

Internal method for the MQTT client base to schedule a resend of the state on reconnect.

Definition at line 414 of file mqtt_component.cpp.

◆ send_discovery()

◆ send_discovery_()

bool esphome::mqtt::MQTTComponent::send_discovery_ ( )
protected

Internal method to start sending discovery info, this will call send_discovery().

Definition at line 180 of file mqtt_component.cpp.

◆ send_initial_state()

◆ set_availability()

void esphome::mqtt::MQTTComponent::set_availability ( std::string topic,
std::string payload_available,
std::string payload_not_available )

Set the Home Assistant availability data.

See See Home Assistant for more info.

Definition at line 361 of file mqtt_component.cpp.

◆ set_command_retain()

void esphome::mqtt::MQTTComponent::set_command_retain ( bool command_retain)

Set whether command message should be retained.

Definition at line 359 of file mqtt_component.cpp.

◆ set_custom_command_topic()

template<typename T >
void esphome::mqtt::MQTTComponent::set_custom_command_topic ( T && custom_command_topic)
inline

Definition at line 133 of file mqtt_component.h.

◆ set_custom_state_topic()

template<typename T >
void esphome::mqtt::MQTTComponent::set_custom_state_topic ( T && custom_state_topic)
inline

Set a custom state topic. Do not set for default behavior.

Definition at line 130 of file mqtt_component.h.

◆ set_qos()

void esphome::mqtt::MQTTComponent::set_qos ( uint8_t qos)

Set QOS for state messages.

Definition at line 48 of file mqtt_component.cpp.

◆ set_retain()

void esphome::mqtt::MQTTComponent::set_retain ( bool retain)

Set whether state message should be retained.

Definition at line 52 of file mqtt_component.cpp.

◆ set_subscribe_qos()

void esphome::mqtt::MQTTComponent::set_subscribe_qos ( uint8_t qos)

Set the QOS for subscribe messages (used in discovery).

Definition at line 50 of file mqtt_component.cpp.

◆ subscribe()

void esphome::mqtt::MQTTComponent::subscribe ( const std::string & topic,
mqtt_callback_t callback,
uint8_t qos = 0 )

Subscribe to a MQTT topic.

Parameters
topicThe topic. Wildcards are currently not supported.
callbackThe callback that will be called when a message with matching topic is received.
qosThe MQTT quality of service. Defaults to 0.

Definition at line 347 of file mqtt_component.cpp.

◆ subscribe_json()

void esphome::mqtt::MQTTComponent::subscribe_json ( const std::string & topic,
const mqtt_json_callback_t & callback,
uint8_t qos = 0 )

Subscribe to a MQTT topic and automatically parse JSON payload.

If an invalid JSON payload is received, the callback will not be called.

Parameters
topicThe topic. Wildcards are currently not supported.
callbackThe callback with a parsed JsonObject that will be called when a message with matching topic is received.
qosThe MQTT quality of service. Defaults to 0.

Definition at line 351 of file mqtt_component.cpp.

Field Documentation

◆ availability_

std::unique_ptr<Availability> esphome::mqtt::MQTTComponent::availability_
protected

Definition at line 338 of file mqtt_component.h.

◆ command_retain_

bool esphome::mqtt::MQTTComponent::command_retain_
protected

Definition at line 343 of file mqtt_component.h.

◆ custom_command_topic_

TemplatableValue<std::string> esphome::mqtt::MQTTComponent::custom_command_topic_ {}
protected

Definition at line 336 of file mqtt_component.h.

◆ custom_state_topic_

TemplatableValue<std::string> esphome::mqtt::MQTTComponent::custom_state_topic_ {}
protected

Definition at line 335 of file mqtt_component.h.

◆ discovery_enabled_

bool esphome::mqtt::MQTTComponent::discovery_enabled_
protected

Definition at line 345 of file mqtt_component.h.

◆ is_internal_

bool esphome::mqtt::MQTTComponent::is_internal_
protected

Cached result of compute_is_internal_(), set during setup.

Definition at line 347 of file mqtt_component.h.

◆ qos_

uint8_t esphome::mqtt::MQTTComponent::qos_
protected

Definition at line 341 of file mqtt_component.h.

◆ resend_state_

bool esphome::mqtt::MQTTComponent::resend_state_
protected

Definition at line 346 of file mqtt_component.h.

◆ retain_

bool esphome::mqtt::MQTTComponent::retain_
protected

Definition at line 344 of file mqtt_component.h.

◆ subscribe_qos_

uint8_t esphome::mqtt::MQTTComponent::subscribe_qos_
protected

Definition at line 342 of file mqtt_component.h.


The documentation for this class was generated from the following files: