我在窗外有一个专为“传感器社区”倡议制作的 PM 传感器,连接到 ESP8266,该传感器连接到中继器,用于中继我的家庭网络。昨天早上我注意到它突然不再发布这些值了。
今天我重新刷新了开发板,这是一个带有 ESP8266 的 Adafruit Huzzah,使用 ESP82666 库中的基本示例 WiFiClientBasic 打开 WiFi 的串行调试。
void setup() {
Serial.begin(115200);
// We start by connecting to a WiFi network
WiFi.mode(WIFI_STA);
WiFiMulti.addAP(ssid, password);
Serial.println();
Serial.println();
Serial.print("Wait for WiFi... ");
while (WiFiMulti.run() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
delay(500);
}
调试不断产生此错误:
[WIFI]连接BSSID:SSID:频道:6(-39)
扫描完成
状态:0 -> 2 (b0)
状态:2 -> 3 (0)
状态:3 -> 0 (12)
无线网络事件:1
STA 断开连接:203
重新连接
扫描完成
状态:0 -> 2 (b0)
状态:2 -> 3 (0)
状态:3 -> 0 (12)
无线网络事件:1
STA 断开连接:203
重新连接
另一块具有相同配置的 ESP8266 板(LOLIN Wemos)拒绝连接。连接到同一网络的其他设备(我的 2 台笔记本电脑、一台 Android 平板电脑、一台 Raspberry Pi)没有任何问题。
中继器运行 DHCP,将 IP 释放给其他设备没有问题。在开发板和/或中继器上为 ESP8266 分配静态 IP 没有任何效果。
我不是网络专家,但这些是中继器(相当旧的Digicom REW300)的主要配置。
WLAN 状态基础设施客户端 ---(已连接)
信号强度 54%
通道频段 2.4GHz (G+N) 通道 6
速率 13Mbps (MCS1)
加密 WPA2-PSK
中继器状态
WLAN 状态 AP ---(已启用)
自动评分
加密 WPA2-PSK
我还看了中继器上的日志:
3 月 19 日 16:01:12 DIGICOM-REW300-Z01 user.warn 内核:wlan0-vxd:无线客户端已取消验证 - “ESP8266 的 MAC 地址”
3 月 19 日 16:01:13 DIGICOM-REW300-Z01 user.warn 内核:wlan0-vxd:无线客户端已取消身份验证 - “ESP8266 的 MAC 地址”
3 月 19 日 16:01:15 DIGICOM-REW300-Z01 user.warn 内核:wlan0-vxd:无线客户端已取消身份验证 - “ESP8266 的 MAC 地址”
我最近没有更改中继器的设置,但是昨天早上 ISP 用更新的路由器更改了主路由器。我认为这可能是问题所在,但无论如何,ESP8266 并不是直接连接到它(距离太远),而是连接到根本没有改变的中继器。而且:如果我把ESP8266放在里面,它可以毫无问题地连接到主路由器。似乎是新路由器和旧中继器的组合导致了该问题,并且仅适用于 ESP8266。与旧路由器唯一不同的是,新路由器只有G+N频段,而旧路由器有B+G+N,我认为无论如何都不重要,因为它可以直接连接,并且旧的中继器是B+G+N。
Espressif 的官方文档说错误 203 是 ASSOC_FAIL,这是一个相当通用的错误。
我做了进一步的测试:如果中继器与我的手机相连,则 ESP8266 会连接。 所以:
ESP8266 到中继器到 WAN(损坏)
ESP8266 到 WAN(OK)
ESP8266 到中继器到手机到 WAN(OK)