ESP8266 получить запрос с веб-страницы возвращает Connectionr отказано

119
10

Я хочу, чтобы иметь возможность отправлять данные с веб-страницы на esp8266 и управлять булавкой, всякий раз, когда я нажимаю кнопку на веб-странице, она возвращает i-й адрес ESP и 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>

спросил(а) 2017-07-15T10:00:00+03:00 4 года, 2 месяца назад
1
Решение
91

Вы делаете ваш 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);
}
}

О, и не забудьте также установить вывод на вывод в setup():

pinMode(3, OUTPUT);

ответил(а) 2017-07-15T21:56:00+03:00 4 года, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема