ESP8266双Wifi通讯

时间:2019-10-02 19:47:29

标签: esp8266

我可以将ESP8266模块连接到wifi热点。 WiFi.begin(ssid,pass); 我还使用自己的IP将该模块作为wifi热点运行,并将其也用作网络服务器。 现在如何使用单个esp8266模块连接到外部wifi热点以定期发送传感器数据?同时,它将充当wifi热点,以便另一个客户端PC /笔记本电脑可以连接到该热点并使用其静态IP获取网页?

1 个答案:

答案 0 :(得分:1)

要发送数据并将其用作Web服务器,您将需要包含MDNS。

MDNS.begin("esp8266");
server.on("/", handleRoot);
server.begin();

现在,您必须为handleRoot创建函数

void handleRoot() {
  int sec = millis() / 1000;
  int min = sec / 60;
  int hr = min / 60;

  snprintf(temp, 1000, 
"<html>\
  <head>\
    <title>YOUR_TITLE</title>\
    <style>\
      body { background-color: #cccccc; font-family: Arial, Helvetica, Sans-Serif; Color: #000088; }\
    </style>\
  </head>\
  <body>\
    <p>Uptime: %02d:%02d:%02d</p>\
  </body>\
</html>", hr, min % 60, sec % 60);
  server.send(200, "text/html", temp);
}

每次打开esp8266的静态IP时,都会显示一个带有时间的网页。

定义头文件,以后将其包含在您的代码中

#ifndef htmlData_h
#define htmlData_h

const char* dataHTML = "MY HTML CODE";
const char* dataHTML1 = "MY 2 HTML CODE";
#endif

HTML代码示例

const char* dataHTML = "<html>\
  <head>\
    <title>Demo</title>\
    <style>\
      body { background-color: #cccccc; font-family: Arial, Helvetica, Sans-Serif; Color: #000088; }\
    </style>\
  </head>\
  <body>\
    <h1>Hello!!!</h1>\
    <p>Uptime: %02d:%02d:%02d</p>\
    <FORM METHOD=POST action='/'>\
     <textarea rows = \"5\" cols = \"60\" name=myText>Talk to me...</textarea>\
     <br>\
     <input type=submit value='Talk'>\
   </FORM>\
  </body>\
</html>";

在上面的代码中,页面将显示一个文本框,您必须在单击输入显示的Talk之后将其用于将数据发送到esp8266。

要打印值,请使用

<input type=text name=myssid value=\"%s\">\

并使用

snprintf(temp, 1000, dataHTML, variable1, varriable2,.....);

在这里,变量1,变量2将代表您已编码的所有%s值。