我正在尝试将节点mcu设置为具有静态IP的访问点。我能够使用tcp套接字连接到AP并从中接收响应。

但是,如果客户端在一定时间内未与其连接,则节点MCU完全不响应。

假设如果经过1个小时作为空闲时间,则节点mcu允许客户端连接到AP,但它不响应查询。

这是我的代码。

#include <ESP8266WiFi.h>

WiFiServer server(8080);

IPAddress IP(192,168,4,15);
IPAddress mask = (255, 255, 255, 0);
//byte ledPin = 16;
byte ledPin = 2;

void setup() {
 Serial.begin(115200);
 WiFi.mode(WIFI_AP);
 WiFi.softAP("PRAKASH", "1234567890");
 WiFi.softAPConfig(IP, IP, mask);

 server.begin();

 pinMode(ledPin, OUTPUT);
 Serial.println();
 Serial.println("Server started.");
 Serial.print("IP: "); Serial.println(WiFi.softAPIP());
 Serial.print("MAC:"); Serial.println(WiFi.softAPmacAddress());
}

void loop(void) {
  WiFiClient client = server.available();

  if (client) {
    Serial.println("Client connected.");

    while (client.connected()) {
      if (client.available()) {
        String request = client.readStringUntil('\r');
        Serial.println("____NEW_COMMAND_____");
        if (request == "LED_ON") {
          digitalWrite(ledPin, LOW);
          Serial.println("LED is now on.");
        } else if (request == "LED_OFF") {
          digitalWrite(ledPin, HIGH);
          Serial.println("LED is now off.");
        } else {
          Serial.println("Invalid command:");
          Serial.println(request);
        }
         Serial.println("From the station: " + request);
         client.flush();
         Serial.print("Byte sent to the station: ");
         Serial.println(client.println(request + "ca" + "\r"));
         Serial.println("*____COMMAND_COMPLETED____*");
      }
    }
    Serial.println("Client disconnected.");
    client.stop();
  }
}


我正在使用Arduino IDE刷新代码。

Arduino版本:1.8.10
主板:Node Mcu 1.0 12E
上传速度:115200
CPU频率:80Mhz
(董事会经理)Esp8266:2.6.2

总结一下,闲置时间过后,节点mcu让我使用tcp套接字进行连接,但它不会关闭/接通LED且不会发回任何响应。如果我重置节点mcu,则它将再次起作用。

我不知道为什么会这样。任何帮助表示赞赏。

最佳答案

我在这里发现了问题。

如果我没有正确终止tcp套接字连接,则节点mcu处于陈旧的连接状态。它将显示客户端仍处于连接状态。

我使用电话wifi测试了AP连接。如果我直接关闭电话wifi而不调用显式断开连接,那么我将面临此问题。

为了解决这个问题,我添加了一个检查站的连接数是否为零,然后断开客户端连接。

这解决了我的问题。

感谢juraj的调试提示。

关于esp8266 - 节点MCU(1.0)ESP8266 12E在软AP模式下的空闲时间后没有响应,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59235808/

10-11 22:43