HTML сервер на ардуино
- Войдите на сайт для отправки комментариев
Ср, 04/10/2017 - 00:07
Всем привет, народ помогите разобраться. Я пытаюсь поднять простенький веб сервер на ардуино, проблема в "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();
}
Вместо UTF-8 что-нибудь однобайтовое пробовали указать? Page Source в браузере рассматривали?
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 ); }e-afen, компилиться но в браузере теперь просто пусто, даже символов нету. Тестил на хроме и опере.
Удивительно но что теперь этот кид виден в просмотре кода страницы Oo
Что я делаю не так?
Ну даже не знаю что сказать попробуй сократить страницу до минимума
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 ); }Cработало! Большое спасибо :)