diff --git a/esphome/components/cse7766/cse7766.cpp b/esphome/components/cse7766/cse7766.cpp index b4b282dff97..c68c348be0d 100644 --- a/esphome/components/cse7766/cse7766.cpp +++ b/esphome/components/cse7766/cse7766.cpp @@ -15,8 +15,9 @@ void CSE7766Component::loop() { this->raw_data_index_ = 0; } - // All current UART available() implementations return >= 0, - // use <= 0 to future-proof against any that may return negative on error. + // Early return avoids stack adjustment for the batch buffer below + // and prevents updating last_transmission_ when no data is available. + // loop() runs ~7000/min so most calls have nothing to read. int avail = this->available(); if (avail <= 0) { return;