esp8266智能插座代码
时间: 2023-06-14 16:04:06 浏览: 154
以下是一个简单的ESP8266智能插座程序示例,使用了Arduino IDE进行编写。该程序允许您通过手机应用程序或Web界面远程控制插座。
首先,您需要安装ESP8266板支持库和WiFiManager库。然后,将以下代码复制到Arduino IDE中,将您的WiFi SSID和密码添加到程序中,并上传到ESP8266开发板。
```C++
#include <ESP8266WiFi.h>
#include <WiFiManager.h>
WiFiServer server(80); // 端口80用于Web服务器
String webPage = ""; // 存储Web页面的字符串
void setup() {
// 初始化串行通信
Serial.begin(9600);
// 连接到WiFi
WiFiManager wifiManager;
wifiManager.autoConnect("SmartSocket");
Serial.println("Connected to WiFi!");
// 启动Web服务器
server.begin();
Serial.println("Web server started!");
}
void loop() {
WiFiClient client = server.available();
if (client) {
Serial.println("New client connected!");
while (client.connected()) {
if (client.available()) {
// 读取客户端请求
String request = client.readStringUntil('\r');
Serial.println(request);
// 处理GET请求
if (request.indexOf("GET /") != -1) {
// 生成Web页面
webPage = "<html><head><title>Smart Socket</title></head><body>";
webPage += "<h1>Smart Socket Control</h1>";
webPage += "<form method=\"get\" action=\"socket\"><button name=\"state\" value=\"on\">On</button><button name=\"state\" value=\"off\">Off</button></form>";
webPage += "</body></html>";
// 发送Web页面
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
client.println(webPage);
// 处理插座状态更改请求
} else if (request.indexOf("GET /socket") != -1) {
// 读取状态更改请求
int stateStart = request.indexOf("state=") + 6;
int stateEnd = request.indexOf("HTTP/") - 1;
String state = request.substring(stateStart, stateEnd);
// 更改插座状态
if (state == "on") {
digitalWrite(5, LOW); // 打开插座
} else if (state == "off") {
digitalWrite(5, HIGH); // 关闭插座
}
// 生成确认页面
webPage = "<html><head><title>Smart Socket</title></head><body>";
webPage += "<h1>Smart Socket Control</h1>";
webPage += "<p>Socket turned " + state + "!</p>";
webPage += "</body></html>";
// 发送确认页面
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
client.println(webPage);
}
}
}
// 断开客户端连接
client.stop();
Serial.println("Client disconnected!");
}
}
```
这个程序使用GPIO 5来控制插座的开关状态。在ESP8266上,GPIO 5对应于D1引脚。因此,您需要将插座的开关线连接到D1引脚和GND引脚。
上传完成后,打开串行监视器并重置ESP8266。它将连接到您的WiFi网络并显示其IP地址。将该IP地址输入到Web浏览器中,您将看到一个简单的Web页面,可用于控制插座的开关状态。
此外,您可以使用任何HTTP客户端(如Postman)来发送GET请求以更改插座状态。只需将以下URL添加到HTTP请求中:http://[ESP8266 IP地址]/socket?state=[on或off]。例如,要打开插座,可以使用以下URL:http://[ESP8266 IP地址]/socket?state=on。
希望这可以帮助您开始构建您自己的智能插座!
阅读全文