如何与具有多个ESP8266的网络中的一个特定ESP8266通信,其中每个模块都在运行侦听端口80的服务器实例

从阿里汉特出发

我对IoT还是很陌生,但是我正在构建一个系统,其中使用ESP8266模块将多个IoT设备连接到家庭中。但是我在任何家中都没有特定的网关。我依靠WiFi路由器。要从互联网向设备传达任何消息,我需要识别特定的设备。我正在使用DDNS作为家庭路由器的IP。但是如何将来自服务器的请求发送到所有连接的设备。

我的ESP8266模块中有此代码。

ESP 1:

#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

MDNSResponder mdns;
ESP8266WebServer server(80);

void setup(){
server.on("/esp_unique_01/", [](){
    server.send(200, "text/html", webPage);
  });
  server.on("/esp_unique_01/socket1On", [](){
    server.send(200, "text/html", webPage);
    digitalWrite(gpio0_pin, HIGH);
    delay(1000);
  });
  server.on("/esp_unique_01/socket1Off", [](){
    server.send(200, "text/html", webPage);
    digitalWrite(gpio0_pin, LOW);
    delay(1000); 
  });
}

ESP 2:

#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

MDNSResponder mdns;
ESP8266WebServer server(80);

void setup(){
server.on("/esp_unique_01/", [](){
    server.send(200, "text/html", webPage);
  });
  server.on("/esp_unique_02/socket1On", [](){
    server.send(200, "text/html", webPage);
    digitalWrite(gpio0_pin, HIGH);
    delay(1000);
  });
  server.on("/esp_unique_02/socket1Off", [](){
    server.send(200, "text/html", webPage);
    digitalWrite(gpio0_pin, LOW);
    delay(1000); 
  });
}

这两个ESP模块都具有动态IP。任何线索将不胜感激。

卡格达斯

来自MDNS的示例的混合:

  char hostString[16] = {0};
  sprintf(hostString, "ESP_%06X", ESP.getChipId());
  if (!MDNS.begin(hostString)) {
    Serial.println("Error setting up MDNS responder!");
  }
  Serial.println("mDNS responder started");

  // Start TCP (HTTP) server
  server.begin();
  Serial.println("TCP server started");

  // Add service to MDNS-SD
  MDNS.addService("http", "tcp", 80);

因此,您将拥有针对node1的http服务描述。在另一个端口上运行第二个节点的Web服务器并对其进行定义。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章