mirror of
https://github.com/esphome/esphome.git
synced 2026-10-14 02:02:51 +00:00
[wifi] Leave the AP before an LN882x reboots
This commit is contained in:
@@ -506,6 +506,9 @@ class WiFiComponent final : public Component {
|
||||
// (In most use cases you won't need these)
|
||||
/// Setup WiFi interface.
|
||||
void setup() override;
|
||||
#ifdef USE_LN882X
|
||||
void on_shutdown() override;
|
||||
#endif
|
||||
void start();
|
||||
void dump_config() override;
|
||||
void restart_adapter();
|
||||
|
||||
@@ -777,6 +777,18 @@ bool WiFiComponent::wifi_start_ap_(const WiFiAP &ap) {
|
||||
network::IPAddress WiFiComponent::wifi_soft_ap_ip() { return {WiFi.softAPIP()}; }
|
||||
#endif // USE_WIFI_AP
|
||||
|
||||
#ifdef USE_LN882X
|
||||
void WiFiComponent::on_shutdown() {
|
||||
// Leave the AP before a reboot: otherwise it still holds the association
|
||||
// when the chip comes back and the first connects can stall or fail.
|
||||
if (!this->is_connected())
|
||||
return;
|
||||
ESP_LOGD(TAG, "Disconnecting before reboot");
|
||||
this->wifi_disconnect_();
|
||||
delay(100); // let the deauth go out before the reset
|
||||
}
|
||||
#endif
|
||||
|
||||
bool WiFiComponent::wifi_disconnect_() {
|
||||
// Reset state first so disconnect events aren't ignored
|
||||
// and wifi_sta_connect_status_() returns IDLE instead of CONNECTING
|
||||
|
||||
Reference in New Issue
Block a user