-
Notifications
You must be signed in to change notification settings - Fork 13.3k
Closed
Labels
Description
Basic Infos
- This issue complies with the issue POLICY doc.
- I have read the documentation at readthedocs and the issue is not addressed there.
- I have tested that the issue is present in current master branch (aka latest git).
- I have searched the issue tracker for a similar issue.
- If there is a stack dump, I have decoded it.
- I have filled out all fields below.
Platform
- Hardware: ESP-12
- Core Version: Latest Git as of 2019-06-10
- Development Env: Arduino IDE
- Operating System: Windows
Settings in IDE
- Module: NodeMCU 1.0
- Flash Mode: dio
- Flash Size: 4MB
- lwip Variant: v2 Lower Memory
- Reset Method: nodemcu
- Flash Frequency: 40Mhz
- CPU Frequency: 80Mhz
- Upload Using: SERIAL
- Upload Speed: 115200
Problem Description
The changes made in PR #6026 by @d-a-v makes WiFi.status() == WL_CONNECTED become true whenever one activates static IP via WiFi.config. This was not the case before the change, and it also seems strange that the status would be connected even when no connection has been made, so it is likely a bug. Calling WiFi.disconnect() after static IP activation makes WiFi.status() return 0 (WL_IDLE_STATUS), as was the case before the PR change.
MCVE Sketch
#include <ESP8266WiFi.h>
void activateStaticIP()
{
// WiFi mode does not matter
WiFi.mode(WIFI_STA);
//WiFi.mode(WIFI_AP_STA);
WiFi.config(IPAddress(192,168,4,22), IPAddress(192,168,4,1), IPAddress(255,255,255,0));
}
void setup() {
// put your setup code here, to run once:
WiFi.persistent(false);
Serial.begin(115200);
delay(50); // Wait for Serial.
Serial.println();
Serial.println();
WiFi.disconnect();
activateStaticIP();
}
void loop() {
// put your main code here, to run repeatedly:
Serial.print("status pre " + String(WiFi.status()));
if(WiFi.status() == WL_CONNECTED)
Serial.println(", this means WiFi.status() == WL_CONNECTED");
else
Serial.println();
WiFi.disconnect(); // Adding this disconnect seems to fix WiFi status.
Serial.println("status post " + String(WiFi.status()));
delay(3000);
}