ESP8266+;WebSocketsServer+;WIFI\u AP\u STA=已断开连接
我知道我可能对esp8266的要求太高了,但在设备连接到wifi时,是否可以通过WebSocket向客户端发送消息 forceWiFiRegisterBegin是AP和web服务器方法ESP8266+;WebSocketsServer+;WIFI\u AP\u STA=已断开连接,websocket,arduino,webserver,esp8266,Websocket,Arduino,Webserver,Esp8266,我知道我可能对esp8266的要求太高了,但在设备连接到wifi时,是否可以通过WebSocket向客户端发送消息 forceWiFiRegisterBegin是AP和web服务器方法 void WiFiController::forceWiFiRegisterBegin() { WiFi.forceSleepWake(); delay(500); IPAddress apIP(5, 5, 5, 5); WiFi.disconnect(true); WiFi.mode(WIFI_AP_STA
void WiFiController::forceWiFiRegisterBegin()
{
WiFi.forceSleepWake();
delay(500);
IPAddress apIP(5, 5, 5, 5);
WiFi.disconnect(true);
WiFi.mode(WIFI_AP_STA);
WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
dnsServer.setTTL(1);
dnsServer.start(53, "*", apIP);
if (WiFi.softAP(_apName)) {
Serial.printf("\nPlease connect to the Access Point: %s\n", _apName);
Serial.printf("then open %s in a web browser\n", WiFi.softAPIP().toString().c_str());
}
else {
Serial.println("FAILED to create Access Point");
yield();
ESP.restart();
}
WiFi.scanNetworks(false, false);
_server.on("/", std::bind(&WiFiController::handleRoot, this));
_server.on("/connect", std::bind(&WiFiController::ssidFromWeb, this));
_server.begin();
webSocket.begin();
webSocket.onEvent(std::bind(&WiFiController::webSocketEvent, this, _1, _2, _3, _4));
while(true)
{
_server.handleClient();
webSocket.loop();
dnsServer.processNextRequest();
yield();
}
}
ssidFromWeb正在尝试连接到另一个AccessPoint
void WiFiController::ssidFromWeb() {
_server.send(200, "text/html", "ok");
Serial.println("Connecting");
if(_server.arg("key")=="19"){
_ssid = _server.arg("ssid");
_pass = _server.arg("pass");
uint8_t i(0), multi(4);
unsigned long previousMillis = 0;
WiFi.begin((const char*)_server.arg("ssid").c_str(), (const char*)_server.arg("pass").c_str());
while (WiFi.status() != WL_CONNECTED && i <= 10*multi) {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= 500) {
previousMillis = currentMillis;
++i;
if (i % multi == 0)
{
//webSocket.broadcastTXT('W' + String(i / multi)); //<---
Serial.println(i / multi);
}
}
webSocket.loop(); //<---
yield();
}
webSocket.broadcastTXT("I");
}
}
谢谢你的帮助:)
sfmbe连接到AP会强制esp8266更改SoftAP的频道,以匹配其加入的AP的频道。。所有软AP站断开连接。这里我有一些解决办法
Connecting
1
webSocketEvent(0, 1, ...)
[0] Disconnected!
webSocketEvent(1, 1, ...)
[1] Disconnected!
2
3