diff --git a/components/panasonic_heatpump/panasonic_heatpump.cpp b/components/panasonic_heatpump/panasonic_heatpump.cpp index d9e75f3..8329e1a 100644 --- a/components/panasonic_heatpump/panasonic_heatpump.cpp +++ b/components/panasonic_heatpump/panasonic_heatpump.cpp @@ -43,6 +43,10 @@ void PanasonicHeatpumpComponent::loop() { this->current_response_ = this->check_response(this->response_message_); switch (this->current_response_) { case ResponseType::UNKNOWN: + this->response_message_.clear(); + this->loop_state_ = LoopState::SEND_REQUEST; + break; + case ResponseType::RECEIVING: this->loop_state_ = LoopState::SEND_REQUEST; break; case ResponseType::STANDARD: @@ -285,7 +289,7 @@ ResponseType PanasonicHeatpumpComponent::check_response(const std::vectorresponse_receiving_) - return ResponseType::UNKNOWN; + return ResponseType::RECEIVING; if (data.size() != RESPONSE_MSG_SIZE) { ESP_LOGW(TAG, "Invalid response message length: recieved %d - expected %d", data.size(), RESPONSE_MSG_SIZE); delay(10); // NOLINT diff --git a/components/panasonic_heatpump/panasonic_heatpump.h b/components/panasonic_heatpump/panasonic_heatpump.h index 0e985c9..2d75ea2 100644 --- a/components/panasonic_heatpump/panasonic_heatpump.h +++ b/components/panasonic_heatpump/panasonic_heatpump.h @@ -44,6 +44,7 @@ enum RequestType : uint8_t { enum ResponseType : uint8_t { UNKNOWN, + RECEIVING, STANDARD, EXTRA, };