diff --git a/esphome/components/wifi_info/wifi_info_text_sensor.cpp b/esphome/components/wifi_info/wifi_info_text_sensor.cpp index aba4d012d6..e843ae8998 100644 --- a/esphome/components/wifi_info/wifi_info_text_sensor.cpp +++ b/esphome/components/wifi_info/wifi_info_text_sensor.cpp @@ -6,6 +6,8 @@ namespace esphome::wifi_info { static const char *const TAG = "wifi_info"; +static constexpr size_t MAX_STATE_LENGTH = 255; + /******************** * IPAddressWiFiInfo *******************/ @@ -73,7 +75,10 @@ void ScanResultsWiFiInfo::state_callback_(const wifi::wifi_scan_vector_tpublish_state(scan_results.substr(0, 255)); + if (scan_results.length() > MAX_STATE_LENGTH) { + scan_results.resize(MAX_STATE_LENGTH); + } + this->publish_state(scan_results); } /*************** @@ -82,7 +87,7 @@ void ScanResultsWiFiInfo::state_callback_(const wifi::wifi_scan_vector_tadd_on_wifi_connect_state_callback( - [this](std::string ssid, wifi::bssid_t bssid) { this->state_callback_(ssid); }); + [this](const std::string &ssid, wifi::bssid_t bssid) { this->state_callback_(ssid); }); } void SSIDWiFiInfo::dump_config() { LOG_TEXT_SENSOR("", "SSID", this); }