ESPHome 2025.8.0b2
|
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>
Public Member Functions | |
MQTTComponent () | |
Constructs a MQTTComponent. | |
void | call_setup () override |
Override setup_ so that we can call send_discovery() when needed. | |
void | call_loop () override |
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 |
virtual bool | is_internal () |
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 std::string | component_type () const =0 |
Override this method to return the component type (e.g. "light", "sensor", ...) | |
void | set_custom_state_topic (const char *custom_state_topic) |
Set a custom state topic. Set to "" for default behavior. | |
void | set_custom_command_topic (const char *custom_command_topic) |
Set a custom command topic. Set to "" for default behavior. | |
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. | |
bool | publish (const std::string &topic, const std::string &payload) |
Send a MQTT message. | |
bool | publish_json (const std::string &topic, const json::json_build_t &f) |
Construct and send a JSON MQTT message. | |
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. | |
![]() | |
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. | |
virtual void | mark_failed () |
Mark this component as failed. | |
void | mark_failed (const char *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_error (const char *message=nullptr) |
void | status_clear_warning () |
void | status_clear_error () |
void | status_momentary_warning (const std::string &name, uint32_t length=5000) |
void | status_momentary_error (const std::string &name, uint32_t length=5000) |
bool | has_overridden_loop () const |
void | set_component_source (const char *source) |
Set where this component was loaded from for some debug messages. | |
const char * | get_component_source () const |
Get the integration where this component was declared as a string. | |
bool | should_warn_of_blocking (uint32_t blocking_time) |
Protected Member Functions | |
std::string | get_discovery_topic_ (const MQTTDiscoveryInfo &discovery_info) const |
Helper method to get the discovery topic for this component. | |
std::string | get_default_topic_for_ (const std::string &suffix) const |
Get this components state/command/... topic. | |
virtual const EntityBase * | get_entity () const =0 |
Gets the Entity served by this MQTT component. | |
virtual std::string | friendly_name () const |
Get the friendly name of this MQTT component. | |
virtual std::string | get_icon () const |
Get the icon field of this component. | |
virtual bool | is_disabled_by_default () const |
Get whether the underlying Entity is disabled by default. | |
std::string | get_state_topic_ () const |
Get the MQTT topic that new states will be shared to. | |
std::string | get_command_topic_ () const |
Get the MQTT topic for listening to commands. | |
bool | is_connected_ () const |
bool | send_discovery_ () |
Internal method to start sending discovery info, this will call send_discovery(). | |
std::string | get_default_object_id_ () const |
Generate the Home Assistant MQTT discovery object id by automatically transforming the friendly name. | |
![]() | |
void | set_component_state_ (uint8_t state) |
Helper to set component state (clears state bits and sets new state) | |
void | set_interval (const std::string &name, uint32_t interval, std::function< void()> &&f) |
Set an interval function with a unique name. | |
void | set_interval (const char *name, uint32_t interval, std::function< void()> &&f) |
Set an interval function with a const char* name. | |
void | set_interval (uint32_t interval, std::function< void()> &&f) |
bool | cancel_interval (const std::string &name) |
Cancel an interval function. | |
bool | cancel_interval (const char *name) |
void | set_retry (const std::string &name, uint32_t initial_wait_time, uint8_t max_attempts, std::function< RetryResult(uint8_t)> &&f, float backoff_increase_factor=1.0f) |
Set an retry function with a unique name. | |
void | set_retry (uint32_t initial_wait_time, uint8_t max_attempts, std::function< RetryResult(uint8_t)> &&f, float backoff_increase_factor=1.0f) |
bool | cancel_retry (const std::string &name) |
Cancel a retry function. | |
void | set_timeout (const std::string &name, uint32_t timeout, std::function< void()> &&f) |
Set a timeout function with a unique name. | |
void | set_timeout (const char *name, uint32_t timeout, std::function< void()> &&f) |
Set a timeout function with a const char* name. | |
void | set_timeout (uint32_t timeout, std::function< void()> &&f) |
bool | cancel_timeout (const std::string &name) |
Cancel a timeout function. | |
bool | cancel_timeout (const char *name) |
void | defer (const std::string &name, std::function< void()> &&f) |
Defer a callback to the next loop() call. | |
void | defer (const char *name, std::function< void()> &&f) |
Defer a callback to the next loop() call with a const char* name. | |
void | defer (std::function< void()> &&f) |
Defer a callback to the next loop() call. | |
bool | cancel_defer (const std::string &name) |
Cancel a defer callback using the specified name, name must not be empty. | |
Protected Attributes | |
StringRef | custom_state_topic_ {} |
StringRef | custom_command_topic_ {} |
std::unique_ptr< Availability > | availability_ |
bool | has_custom_state_topic_ {false} |
bool | has_custom_command_topic_ {false} |
bool | command_retain_ {false} |
bool | retain_ {true} |
uint8_t | qos_ {0} |
uint8_t | subscribe_qos_ {0} |
bool | discovery_enabled_ {true} |
bool | resend_state_ {false} |
![]() | |
const char * | 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. | |
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:
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 61 of file mqtt_component.h.
|
explicitdefault |
Constructs a MQTTComponent.
|
overridevirtual |
Reimplemented from esphome::Component.
Definition at line 277 of file mqtt_component.cpp.
|
overridevirtual |
Reimplemented from esphome::Component.
Definition at line 257 of file mqtt_component.cpp.
|
overridevirtual |
Override setup_ so that we can call send_discovery() when needed.
Reimplemented from esphome::Component.
Definition at line 236 of file mqtt_component.cpp.
|
pure virtual |
Override this method to return the component type (e.g. "light", "sensor", ...)
Implemented in 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, and esphome::mqtt::MQTTValveComponent.
void esphome::mqtt::MQTTComponent::disable_availability | ( | ) |
Definition at line 235 of file mqtt_component.cpp.
void esphome::mqtt::MQTTComponent::disable_discovery | ( | ) |
Disable discovery. Sets friendly name to "".
Definition at line 217 of file mqtt_component.cpp.
|
protectedvirtual |
Get the friendly name of this MQTT component.
Definition at line 287 of file mqtt_component.cpp.
|
protected |
Get the MQTT topic for listening to commands.
Definition at line 45 of file mqtt_component.cpp.
|
protected |
Generate the Home Assistant MQTT discovery object id by automatically transforming the friendly name.
Definition at line 202 of file mqtt_component.cpp.
|
protected |
Get this components state/command/... topic.
suffix | The suffix/key such as "state" or "command". |
Definition at line 29 of file mqtt_component.cpp.
|
protected |
Helper method to get the discovery topic for this component.
Definition at line 23 of file mqtt_component.cpp.
|
protectedpure virtual |
Gets the Entity served by this MQTT component.
Implemented in esphome::mqtt::MQTTAlarmControlPanelComponent, esphome::mqtt::MQTTBinarySensorComponent, esphome::mqtt::MQTTButtonComponent, 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, and esphome::mqtt::MQTTValveComponent.
|
protectedvirtual |
Get the icon field of this component.
Definition at line 288 of file mqtt_component.cpp.
uint8_t esphome::mqtt::MQTTComponent::get_qos | ( | ) | const |
Definition at line 194 of file mqtt_component.cpp.
bool esphome::mqtt::MQTTComponent::get_retain | ( | ) | const |
Definition at line 196 of file mqtt_component.cpp.
|
overridevirtual |
MQTT_COMPONENT setup priority.
Reimplemented from esphome::Component.
Definition at line 216 of file mqtt_component.cpp.
|
protected |
Get the MQTT topic that new states will be shared to.
Definition at line 39 of file mqtt_component.cpp.
|
protected |
Definition at line 284 of file mqtt_component.cpp.
|
protectedvirtual |
Get whether the underlying Entity is disabled by default.
Definition at line 289 of file mqtt_component.cpp.
bool esphome::mqtt::MQTTComponent::is_discovery_enabled | ( | ) | const |
Definition at line 198 of file mqtt_component.cpp.
|
virtual |
Definition at line 290 of file mqtt_component.cpp.
bool esphome::mqtt::MQTTComponent::publish | ( | const std::string & | topic, |
const std::string & | payload ) |
Send a MQTT message.
topic | The topic. |
payload | The payload. |
Definition at line 51 of file mqtt_component.cpp.
bool esphome::mqtt::MQTTComponent::publish_json | ( | const std::string & | topic, |
const json::json_build_t & | f ) |
Construct and send a JSON MQTT message.
topic | The topic. |
f | The Json Message builder. |
Definition at line 57 of file mqtt_component.cpp.
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 283 of file mqtt_component.cpp.
|
pure virtual |
Send discovery info the Home Assistant, override this.
Implemented in 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, and esphome::mqtt::MQTTValveComponent.
|
protected |
Internal method to start sending discovery info, this will call send_discovery().
Definition at line 63 of file mqtt_component.cpp.
|
pure virtual |
Implemented in 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, and esphome::mqtt::MQTTValveComponent.
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 228 of file mqtt_component.cpp.
void esphome::mqtt::MQTTComponent::set_command_retain | ( | bool | command_retain | ) |
Set whether command message should be retained.
Definition at line 226 of file mqtt_component.cpp.
void esphome::mqtt::MQTTComponent::set_custom_command_topic | ( | const char * | custom_command_topic | ) |
Set a custom command topic. Set to "" for default behavior.
Definition at line 222 of file mqtt_component.cpp.
void esphome::mqtt::MQTTComponent::set_custom_state_topic | ( | const char * | custom_state_topic | ) |
Set a custom state topic. Set to "" for default behavior.
Definition at line 218 of file mqtt_component.cpp.
void esphome::mqtt::MQTTComponent::set_qos | ( | uint8_t | qos | ) |
Set QOS for state messages.
Definition at line 17 of file mqtt_component.cpp.
void esphome::mqtt::MQTTComponent::set_retain | ( | bool | retain | ) |
Set whether state message should be retained.
Definition at line 21 of file mqtt_component.cpp.
void esphome::mqtt::MQTTComponent::set_subscribe_qos | ( | uint8_t | qos | ) |
Set the QOS for subscribe messages (used in discovery).
Definition at line 19 of file mqtt_component.cpp.
void esphome::mqtt::MQTTComponent::subscribe | ( | const std::string & | topic, |
mqtt_callback_t | callback, | ||
uint8_t | qos = 0 ) |
Subscribe to a MQTT topic.
topic | The topic. Wildcards are currently not supported. |
callback | The callback that will be called when a message with matching topic is received. |
qos | The MQTT quality of service. Defaults to 0. |
Definition at line 206 of file mqtt_component.cpp.
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.
topic | The topic. Wildcards are currently not supported. |
callback | The callback with a parsed JsonObject that will be called when a message with matching topic is received. |
qos | The MQTT quality of service. Defaults to 0. |
Definition at line 210 of file mqtt_component.cpp.
|
protected |
Definition at line 195 of file mqtt_component.h.
|
protected |
Definition at line 200 of file mqtt_component.h.
|
protected |
Definition at line 193 of file mqtt_component.h.
|
protected |
Definition at line 192 of file mqtt_component.h.
|
protected |
Definition at line 204 of file mqtt_component.h.
|
protected |
Definition at line 198 of file mqtt_component.h.
|
protected |
Definition at line 197 of file mqtt_component.h.
|
protected |
Definition at line 202 of file mqtt_component.h.
|
protected |
Definition at line 205 of file mqtt_component.h.
|
protected |
Definition at line 201 of file mqtt_component.h.
|
protected |
Definition at line 203 of file mqtt_component.h.