esp8266 - ESP8266双Wifi通讯
问题描述
我可以让ESP8266模块连接到wifi热点。WiFi.begin(ssid,pass); 我还使该模块使用它自己的 ip 作为 wifi 热点运行,也将其作为网络服务器。现在如何使用单个 esp8266 模块连接到外部 wifi 热点以定期发送传感器数据?同时它将充当wifi热点,以便另一台客户端电脑/笔记本电脑可以连接到该热点并使用其静态IP获取网页?
解决方案
为了发送数据并将其用作 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>";
在上面的代码中,页面将给出一个文本框,您必须使用该文本框将数据发送到 esp8266,然后单击显示的输入按钮 Talk。
用于打印值使用
<input type=text name=myssid value=\"%s\">\
并使用
snprintf(temp, 1000, dataHTML, variable1, varriable2,.....);
这里的变量 1、变量 2 将按您编码的顺序表示所有 %s 值。
推荐阅读
- c# - 在生成的模型中,什么是虚拟
伴随着 标识外键? - vba - VBA 是否使用全局解释器锁?所有解释语言都需要一个吗?
- r - 什么决定了 rdb R 源数据库的大小
- bash - 当键包含连字符/破折号时,如何使用 Bash 上的 JMESPath 查询按值过滤 Azure CLI 输出?
- arrays - Swift,带有映射/高阶函数的 for 循环表达式
- django - Django 在自定义用户模型上重置 oneToOneField
- excel - 在 Excel for Mac 中使用 VBA 从 Web 搜索中获取完整数据时遇到问题
- python - MDTextField 模式:“矩形”(hint_text 错误)
- javascript - 如何向 Javascript 公开新添加的选择选项
- python - 将每个数组元素与python中的每个列表元素进行比较