diff --git a/esphome/components/api/api_connection.cpp b/esphome/components/api/api_connection.cpp index 05fc223a06..cb3eef018e 100644 --- a/esphome/components/api/api_connection.cpp +++ b/esphome/components/api/api_connection.cpp @@ -153,7 +153,7 @@ void APIConnection::loop() { return; } - if (this->helper_->can_write_without_blocking()) { + if (!this->deferred_message_queue_.empty() && this->helper_->can_write_without_blocking()) { this->deferred_message_queue_.process_queue(); } diff --git a/esphome/components/api/api_connection.h b/esphome/components/api/api_connection.h index 0c1f5461f3..dd24802e72 100644 --- a/esphome/components/api/api_connection.h +++ b/esphome/components/api/api_connection.h @@ -53,6 +53,7 @@ class DeferredMessageQueue { DeferredMessageQueue(APIConnection *api_connection) : api_connection_(api_connection) {} void process_queue(); void defer(void *source, send_message_t send_message); + bool empty() const { return deferred_queue_.empty(); } }; class APIConnection : public APIServerConnection {