ESP8266 从网页获取请求 returns 连接被拒绝
ESP8266 get request from webpage returns Connectionr refused
我希望能够将数据从网页发送到 esp8266 并控制一个引脚,每当我按下网页上的按钮时,它 returns ESP 的 i 地址和 CONNECTION REFUSED
.我究竟做错了什么?
ESP 代码:
void setup() {
Serial.begin(115200);
delay(100);
Serial.println();
Serial.println();
Serial.print("Connecting to: ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while( WiFi.status() != WL_CONNECTED){
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
Serial.print("Netmask: ");
Serial.println(WiFi.subnetMask());
Serial.print("Gateway: ");
Serial.println(WiFi.gatewayIP());
}
int value = 0;
void loop() {
HTTPClient http;
http.begin("192.168.0.24:80");
int httpCode = http.GET();
if(httpCode > 0){
String payload = http.getString();
Serial.println(payload);
}
http.end();
delay(3000);
}
HTML 网站:
<html>
<head>
<title>ESP8266 toggle page</title>
</head>
<body>
<button id="3" class="led">Toggle pin 3</button>
<script src="jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$(".led").click(function(){
var p = $(this).attr('id');
$.get("http://192.168.0.16:80", {pin:p});
});
});
</script>
</body>
</html>
你正在让你的 esp8266 充当客户端而不是服务器。你应该让你的 esp8266 接受请求而不是发出请求。然后,您的 esp8266 将成为服务器,您的网站将成为客户端。您将能够从您的网站向您的 esp8266 上的服务器发出请求并进行处理。
在您的包含中添加:
#include <ESP8266WebServer.h>
在包含任何函数之前添加之后:
ESP8266WebServer server(80);
在您的 setup()
中添加:
server.on("/", HTTP_GET, handleTogglePin);
server.begin();
在你的 loop()
添加:
server.handleClient();
在setup()
之前添加:
void handleTogglePin() {
if (server.hasArg("pin")) { server.send(500, "text/plain", "Missing argument: pin"); return; }
Integer pin = server.arg("pin").toInt();
if (digitalRead(pin) == HIGH) {
digitalWrite(pin, LOW);
} else {
digitalWrite(pin, HIGH);
}
}
哦,别忘了将您的 pin 设置为在 setup()
中输出:
pinMode(3, OUTPUT);
我希望能够将数据从网页发送到 esp8266 并控制一个引脚,每当我按下网页上的按钮时,它 returns ESP 的 i 地址和 CONNECTION REFUSED
.我究竟做错了什么?
ESP 代码:
void setup() {
Serial.begin(115200);
delay(100);
Serial.println();
Serial.println();
Serial.print("Connecting to: ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while( WiFi.status() != WL_CONNECTED){
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
Serial.print("Netmask: ");
Serial.println(WiFi.subnetMask());
Serial.print("Gateway: ");
Serial.println(WiFi.gatewayIP());
}
int value = 0;
void loop() {
HTTPClient http;
http.begin("192.168.0.24:80");
int httpCode = http.GET();
if(httpCode > 0){
String payload = http.getString();
Serial.println(payload);
}
http.end();
delay(3000);
}
HTML 网站:
<html>
<head>
<title>ESP8266 toggle page</title>
</head>
<body>
<button id="3" class="led">Toggle pin 3</button>
<script src="jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$(".led").click(function(){
var p = $(this).attr('id');
$.get("http://192.168.0.16:80", {pin:p});
});
});
</script>
</body>
</html>
你正在让你的 esp8266 充当客户端而不是服务器。你应该让你的 esp8266 接受请求而不是发出请求。然后,您的 esp8266 将成为服务器,您的网站将成为客户端。您将能够从您的网站向您的 esp8266 上的服务器发出请求并进行处理。
在您的包含中添加:
#include <ESP8266WebServer.h>
在包含任何函数之前添加之后:
ESP8266WebServer server(80);
在您的 setup()
中添加:
server.on("/", HTTP_GET, handleTogglePin);
server.begin();
在你的 loop()
添加:
server.handleClient();
在setup()
之前添加:
void handleTogglePin() {
if (server.hasArg("pin")) { server.send(500, "text/plain", "Missing argument: pin"); return; }
Integer pin = server.arg("pin").toInt();
if (digitalRead(pin) == HIGH) {
digitalWrite(pin, LOW);
} else {
digitalWrite(pin, HIGH);
}
}
哦,别忘了将您的 pin 设置为在 setup()
中输出:
pinMode(3, OUTPUT);