在sagemcom FAST3890V3路由器上使用WEMOS D1 Mini DHCP失败



使用经典esp8266 (wemos)连接示例,在sagemcom FAST3890V3路由器中使用DHCP,我从未获得IP,大约10分钟后,我在范围外获得一些IP,它不工作。我读了很多帖子,找不到解决办法。由于

连接伪代码(你知道)

WiFi.begin(ssid, password);
client.setTrustAnchors(&cert); // Add root certificate for api.telegram.org
// wifi_station_set_auto_connect(true);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println("Connecting to WiFi..");
}

wireshark capture only Discover - transaction, router没有应答,5次

323 43.461691 0.0.0.0 255.255.255.255 DHCP 350 DHCP Discover - Transaction ID 0x2beb89bf

第323帧:350字节线上(2800比特),350字节捕获(2800比特)接口DeviceNPF_{4F87DED9-5E05-47A3-A4C3-1D594FD44EE5}, id 0Ethernet II, Src: Espressi_df:9d:f6 (e8:db:84:df:9d:f6), Dst: Broadcast (ff:ff:ff:ff:ff:ff:ff)目的:广播(ff:ff:ff:ff:ff)地址:广播(ff:ff:ff:ff:ff).... ..1. .... .... .... ....= LG bit:本地管理地址(这不是出厂默认值)……1 .... .... .... ....= IG位:组地址(组播/广播)来源:Espressi_df:9d:f6 (e8:db:84:df:9d:f6)地址:Espressi_df:9d:f6 (e8:db:84:df:9d:f6).... ..0. .... .... .... ....= LG位:全局唯一地址(出厂默认)……0 .... .... .... ....= IG位:独立地址(单播)类型:IPv4 (0x0800)Internet协议版本4,Src: 0.0.0.0, Dst: 255.255.255.2550100年……=版本:4…0101 =报头长度:20字节(5)差异化业务字段:0x00 (DSCP: CS0, ECN: Not-ECT)0000 00 . .=差异化服务代码点:默认(0)…00 =显式拥塞通知:不支持ecn传输(0)总长度:336标识:0x0004 (4)国旗:0 x000……=保留位:不设置0……=不要碎片:不设置. . 0。…=更多碎片:未设置片段偏移量:0寿命:255年协议:UDP (17)报头校验和:0xba99[禁用验证][报头校验和状态:未验证]源地址:0.0.0.0目的地址:255.255.255.255用户数据报协议,Src端口:68,Dst端口:67源端口:68目的端口:67长度:316校验和:0x5bed[未经验证][校验和状态:未验证][流索引:9](时间戳)UDP有效载荷(308字节)动态主机配置协议(Discover)消息类型:Boot Request (1)硬件类型:以太网(0x01)硬件地址长度:6啤酒花:0事务ID: 0x2beb89bf耗时秒数:0引导标志:0x0000(单播)客户端IP地址:0.0.0.0您的(客户端)IP地址:0.0.0.0下一个服务器IP地址:0.0.0.0中继代理IP地址:0.0.0.0客户端MAC地址:Espressi_df:9d:f6 (e8:db:84:df:9d:f6)客户端硬件地址填充:00000000000000000000没有给出服务器主机名没有给出引导文件名魔法cookie: DHCP选项:(53)DHCP报文类型(Discover)长度:1DHCP: Discover (1)选项:(57)DHCP报文最大大小长度:2DHCP报文最大长度:1500选项:(55)参数请求列表长度:5参数请求列表项:(1)子网掩码参数请求列表项目:(3)路由器参数请求列表项目:(28)广播地址参数请求列表项目:(6)域名服务器参数请求列表项目:(42)网络时间协议服务器选项:(255)结束选项结束:255填充:000000000000000000000000000000000000000000000000000000000000000000000000…

0000 ff ff ff ff ff ff ff e8 db 84 df 9d f6 08 000 4500000 00 00 00 00 00 ff 11 ba 99 00 00 00 00 ff ff0020 ff ff 00 44 00 43 01 3c 5b Ed 01 01 06 000 2b eb0030 89 bf 000 000 000 000 000 000 000 000 000 000 000 000 000 000 0000040 000 000 000 000 000 000 000 e8 db 84 df 9d f6 000 000 000 000 0000050 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 0000060 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 0000070 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 0000080 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 0000090 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 0000100 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 0000110 000 000 000 000 000 000 63 82 53 63 35 01 01 39 02 050120 dc 37 05 01 03 1c 06 2a ff 00 000 000 000 000 000 000 000 000 000 000 000 0000130 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 0000140 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 0000150 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000

我不确定您是否出于安全原因跳过了它,但您需要将SSID和密码存储在各自的变量中,以便稍后在连接循环中使用,以下是完整wifi配置的示例:

#include <ESP8266WiFi.h>        // Include the Wi-Fi library
const char* ssid     = "SSID";         // The SSID (name) of the Wi-Fi network you want to connect to
const char* password = "PASSWORD";     // The password of the Wi-Fi network
void setup() {
Serial.begin(115200);         // Start the Serial communication to send messages to the computer
delay(10);
Serial.println('n');

WiFi.begin(ssid, password);             // Connect to the network
Serial.print("Connecting to ");
Serial.print(ssid); Serial.println(" ...");
int i = 0;
while (WiFi.status() != WL_CONNECTED) { // Wait for the Wi-Fi to connect
delay(1000);
Serial.print(++i); Serial.print(' ');
}
Serial.println('n');
Serial.println("Connection established!");  
Serial.print("IP address:t");
Serial.println(WiFi.localIP());         // Send the IP address of the ESP8266 to the computer
}
void loop() { }

希望对大家有所帮助

最新更新