ESP8266WebServer возвращает пустой ответ (Sonoff Basic) - PullRequest
0 голосов
/ 05 января 2019

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

200 response empty response 1 empty response 2

...