我是物联网的新手,但我正在构建一个系统,我在家中使用ESP8266模块连接到互联网的多个物联网设备。但我在任何家庭都没有特定的门户。我依靠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。任何领导都将受到高度赞赏。
答案 0 :(得分:1)
来自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服务器并定义它。
答案 1 :(得分:1)
解决方案是为您的ESP8266模块分配静态 IP地址,并使用不同的端口从互联网访问它们。以下是为ESP8266分配静态地址的代码:
IPAddress ip(192,168,1,xx); // desired static IP address
IPAddress gateway(192,168,1,yy); // IP address of the router
IPAddress subnet(255,255,255,0);
WiFi.begin(ssid, password);
WiFi.config(ip, gateway, subnet);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
现在您已了解ESP8266设备的本地IP地址,您可以选择要转发到ESP的端口。例如,您可以选择端口8266,8267,8268,8269,...或1024以上的任何其他端口,然后在路由器设置中设置端口转发,以便端口8266将转发到您的第一个ESP和端口80的IP地址,端口8267将被转发到您的第二个ESP和端口80等的IP地址。
之后,您可以使用类似http://xx.xx.xx.xx:8266
,http://xx.xx.xx.xx:8267
,http://xx.xx.xx.xx:8268
,http://xx.xx.xx.xx:8269
,...的网址从互联网访问您的ESP。
由于当您的本地网络中没有其他ESP时,您已使用动态DNS服务访问ESP8266,这意味着您只需添加:8266
,:8267
,:8268
, :8269
,...到您已使用的网址。换句话说,如果由您选择的 + 由动态DNS服务生成的部分组成的网址为http://myhome.something.com
,那么您现在将使用{{1 },http://myhome.something.com:8266
等。