HTML сервер на ардуино

Sandborn
Offline
Зарегистрирован: 03.10.2017

Всем привет, народ помогите разобраться. Я пытаюсь поднять простенький веб сервер на ардуино, проблема в "server.send(200, "text/html", webPage());" когда пытаюсь отправить "text/plain", всё работает нормально, но им только текст можно передать насколько я понял. А в случае "text/html" выдаёт вот такую шляпу. Помогите разобраться что я делаю не так, пожалуйста.

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

const char* ssid = "onraduga";
const char* password = "";

ESP8266WebServer server(80);

const int led = 13;
String webPage()
{
  String web;
  web += "<html> <head><meta charset=\"utf-8\"> <title>Пример 2</title> </head> <body> <H1 ALIGN=CENTER>Привет!</H1><H2>Это чуть более сложный пример HTML-документа</H2> <P>Теперь мы знаем, что абзац можно выравнивать не только влево, </P> <P ALIGN=CENTER>но и по центру</P> <P ALIGN=RIGHT>или по правому краю.</P> </body> </html>";
}

void handleRoot() {
  digitalWrite(led, 1);
  server.send(200, "text/plain", "test server nodemcu on raduga AP!");
  server.send(200, "text/html", webPage());
  digitalWrite(led, 0);
}

void handleNotFound(){
  digitalWrite(led, 1);
  String message = "File Not Found\n\n";
  message += "URI: ";
  message += server.uri();
  message += "\nMethod: ";
  message += (server.method() == HTTP_GET)?"GET":"POST";
  message += "\nArguments: ";
  message += server.args();
  message += "\n";
  for (uint8_t i=0; i<server.args(); i++){
    message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
  }
  server.send(404, "text/plain", message);
  digitalWrite(led, 0);
}

void setup(void){
  pinMode(led, OUTPUT);
  digitalWrite(led, 0);
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  Serial.println("");

  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  if (MDNS.begin("esp8266")) {
    Serial.println("MDNS responder started");
  }

  server.on("/", handleRoot);

  server.on("/inline", [](){
    server.send(200, "text/plain", "test server nodemcu on raduga AP");
  });

  server.onNotFound(handleNotFound);

  server.begin();
  Serial.println("HTTP server started");
  
}

void loop(void){
  server.handleClient();
}

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Вместо UTF-8 что-нибудь однобайтовое пробовали указать? Page Source в браузере рассматривали?

e-afen
Offline
Зарегистрирован: 04.10.2017
void setup() {
.........................
server.on ( "/", handleRoot );
........................
}

#define roothtml_size 2900
  char rootHtml[roothtml_size];
void handleRoot() {
  sprintf ( rootHtml,
"<html>\
  <head>\
    <meta charset='utf-8'/>\
    <title></title>\
    <style>\
  </head>\
  <body>\
    <center>\
  <h1>Аквариум!!!</h1>\
    <table class='aqtable' />\
    <tr class='alt'><td>DS3231 time:</td><td  id='ds3231time'>...</td></tr>\
    <tr><td>NTP time:</td><td id='ntptime'>...</td></tr>\
  <tr class='alt'><td>Следующая синхронизация через:</td><td id='lastsync'>...</td></tr>\
  <tr><td>Подсветка <a id='light'></a>:</td><td><input type='button' class='aqbutton' value='...' id='lightbtn' onclick=location.href='/lightToggle'></td></tr>\
  <tr class='alt'><td>Температура воды (DS18B20):</td><td><a id='ds18b20temp'>...</a> ºC</td></tr>\
  <tr><td>Датчик протечки:</td><td id='waterleak'>...</td></tr>\
  <tr class='alt'><td colspan='2'><input class='aqbutton' type='button' value='Настройка' onclick=location.href='/settings_page'></td></tr>\
    </table>\
  </body>\
</html>");
  server.send ( 200, "text/html", rootHtml );
}

 

Sandborn
Offline
Зарегистрирован: 03.10.2017

e-afen, компилиться но в браузере теперь просто пусто, даже символов нету. Тестил на хроме и опере.

Удивительно но что теперь этот кид виден в просмотре кода страницы Oo

Что я делаю не так?

 
ссылка на радикал потому что картинка длинная и не помещ тут D:
e-afen
Offline
Зарегистрирован: 04.10.2017

Ну даже не знаю что сказать попробуй сократить страницу до минимума

define roothtml_size 600
  char rootHtml[roothtml_size];
void handleRoot() {
  sprintf ( rootHtml,
"<html>\
  <head>\
    <meta charset='utf-8'/>\
    <title></title>\
  </head>\
  <body>\
    <center>\
  <h1>Аквариум!!!</h1>\
  </body>\
</html>");
  server.send ( 200, "text/html", rootHtml );
}

 

Sandborn
Offline
Зарегистрирован: 03.10.2017

Cработало! Большое спасибо :)