diff --git a/esphome/components/wifi/wifi_component_pico_w.cpp b/esphome/components/wifi/wifi_component_pico_w.cpp index 0ab143a9de..794ab34219 100644 --- a/esphome/components/wifi/wifi_component_pico_w.cpp +++ b/esphome/components/wifi/wifi_component_pico_w.cpp @@ -24,6 +24,11 @@ bool WiFiComponent::wifi_mode_(optional sta, optional ap) { cyw43_wifi_set_up(&cyw43_state, CYW43_ITF_STA, true, CYW43_COUNTRY_WORLDWIDE); } } + if (ap.has_value()) { + if (ap.value()) { + cyw43_wifi_set_up(&cyw43_state, CYW43_ITF_AP, true, CYW43_COUNTRY_WORLDWIDE); + } + } return true; } @@ -141,22 +146,7 @@ bool WiFiComponent::wifi_start_ap_(const WiFiAP &ap) { if (!this->wifi_mode_({}, true)) return false; - if (ap.get_channel().has_value()) { - cyw43_wifi_ap_set_channel(&cyw43_state, ap.get_channel().value()); - } - - const char *ssid = ap.get_ssid().c_str(); - - cyw43_wifi_ap_set_ssid(&cyw43_state, strlen(ssid), (const uint8_t *) ssid); - - if (!ap.get_password().empty()) { - const char *password = ap.get_password().c_str(); - cyw43_wifi_ap_set_password(&cyw43_state, strlen(password), (const uint8_t *) password); - cyw43_wifi_ap_set_auth(&cyw43_state, CYW43_AUTH_WPA2_MIXED_PSK); - } else { - cyw43_wifi_ap_set_auth(&cyw43_state, CYW43_AUTH_OPEN); - } - cyw43_wifi_set_up(&cyw43_state, CYW43_ITF_AP, true, CYW43_COUNTRY_WORLDWIDE); + WiFi.beginAP(ap.get_ssid().c_str(), ap.get_password().c_str(), ap.get_channel().value_or(1)); return true; }