Я пытаюсь прошить мой переключатель Sonoff Basic кастомной прошивкой через Arduino.
Как только я добавляю дополнительный обработчик server.on (...), он переходит от возврата действительного ответа 200 к возвращению пустого ответа (см. Прикрепленные снимки экрана).
Я следовал этому уроку: https://randomnerdtutorials.com/reprogram-sonoff-smart-switch-with-web-server/ и в какой-то момент он работал отлично, потом внезапно остановился - я не уверен почему. Я не смог заставить его работать снова.
Когда я запускаю приведенный ниже код БЕЗ дополнительного кода (отмеченного комментариями START / END), он работает отлично. Как только я пытаюсь добавить вторую конечную точку в server.on (), он возвращает пустой ответ.
/*********
Rui Santos
Complete project details at http://randomnerdtutorials.com
*********/
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
MDNSResponder mdns;
// Replace with your network credentials
const char* ssid = "ssid";
const char* password = "password";
int gpio13Led = 13;
int gpio12Relay = 12;
bool switchOn = false;
ESP8266WebServer server(80);
void setup(void){
pinMode(gpio13Led, OUTPUT);
digitalWrite(gpio13Led, HIGH);
pinMode(gpio12Relay, OUTPUT);
digitalWrite(gpio12Relay, HIGH);
Serial.begin(115200);
delay(5000);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.println("");
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(250);
digitalWrite(gpio13Led, LOW);
delay(250);
digitalWrite(gpio13Led, HIGH);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
if (mdns.begin("esp8266", WiFi.localIP())) {
Serial.println("MDNS responder started");
}
server.on("/", [](){
server.send(200, "text/plain", "ready");
Serial.println("ready");
});
// ADDITIONAL CODE START
server.on("/on", [](){
server.send(200, "text/plain", "on");
Serial.println("on");
});
// ADDITIONAL CODE END
server.begin();
Serial.println("HTTP server started");
}
void loop(void){
server.handleClient();
}
В идеале я хотел бы иметь возможность использовать столько server.on (), сколько необходимо - я даже пытался использовать только один обработчик и использовать разные параметры запроса, но он возвращает ту же ошибку.