Ответ с помощью HTML-страницы на сервере HTTP с использованием esp01 и ArduinoIDE
Теперь существует много способов ответить содержимым веб-страницы пользователю, который обращается к веб-серверу, Но не забывайте использовать как можно меньше места, Я пробовал что-то новое, так как у меня не было ошибки компиляции, я немного сбит с толку относительно того, что может быть ошибкой,
в void data ()
я сохраняю HTML-страницу и сохраняю ее в ПЗУ,
void data()
{
if(SPIFFS.exists("/login.html"))
{
Serial.println();
}
else{
SPIFFS.begin();
File f=SPIFFS.open("/login.html","w");
String s="<html><head><title>AP</title><h1>Welcome to AP page</h1>\n";
s+="</head><body><form name=\"/myform\" action=\"/login\" method=\"POST\">\n";
s+="<input type=\"text\" name=\"username\" placeholder=\"username\"><br/>\n";
s+="<input type=\"password\" name=\"password\" placeholder=\"password\"><br/>\n";
s+="<input type=\"submit\" value=\"login\"></form></body></html>";
f.println(s);
f.close();
}
}
Пожалуйста, исправьте приведенные выше строки, если я написал это неправильно,
после этого,
Я написал несколько строк в void setup()
WiFi.mode(WIFI_AP_STA);// Только точка доступа
WiFi.softAP(ssid, password); // Запуск точки доступа удаление пароля отключит безопасность
IPAddress myIP = WiFi.softAPIP(); //Получить IP-адрес
Serial.print("HotSpt IP:");
Serial.println(myIP);
server.on("/", HTTP_GET, handleRoot); //Какую процедуру обрабатывать в корневом каталоге
server.on("/",HTTP_POST,handlelogin);
server.onNotFound(handleerror);
server.begin();
Теперь я вызываю void handleRoot()
Я хочу отправить страницу, которую я написал и сохранил в /login.html
досье.
так что для этого,
void handleRoot()
{
SPIFFS.begin();
File f=SPIFFS.open("/login.html","r");
server.send(200, "text/html",f.readStringUntil('EOF'));
}
Теперь, как только я делаю это, выполняю и загружаю программу в ESP01, она мне ничего не показывает,
Я также пробовал отправлять (String)f
, все остальное, что я пишу, выдает мне ошибку,
Это нормально компилируется, но когда я подключаюсь к точке доступа и открываю 192.168.4.1 в браузере, я ничего не вижу,
Но когда я написал server.send(200,"text/ html",(String)f)
Я получал 0, любая идея о том, какую ошибку я совершаю.
@Wan Street, 👍1
Обсуждение1 ответ
Небольшое обновление, я использовал тот же код для ESP8266 NodeMCU.
Извините, если я отправляю это сообщение с неправильным номером устройства. Но я попробовал тот же код и загрузил его в ESP8266, это сработало, и я получаю веб-страницу AP, на которой я сохраняю и отправляю файл. Я опубликую это в качестве ответа, так как мне нужно опубликовать изображение.
Это страница, которую я получаю при использовании HTML, который я написал:
Итак, это произошло. Я в замешательстве относительно того, почему это не сработало с ESP01, плюс мне приходится загружать код каждый раз, когда я подключаю ESP01.
неправильный размер spiffs или spiffs не инициализированы на первом устройстве?, @Juraj
значение инициализации spiffs? как spiffs.begin()
?, @Wan Street
загрузить или отформатировать() http://esp8266.github.io/Arduino/versions/2.0.0/doc/filesystem.html, @Juraj
ну ладно.. Я должен буду проверить завтра.., @Wan Street
- Несколько клиентских серверов через Wi-Fi
- WebSocketsServer.h: No such file or directory
- ESP32 в Arduino-IDE с FS.h и SPIFFS
- Управление реле 5В с помощью Wemos D1 R1
- Интернет-сервер Arduino IDE + ESP32 — как перенаправить на root после нажатия кнопки
- Автоматическая веб-страница ESP32 AP
- ESP8266 отправляет веб-страницу клиенту, но html-коды отображаются в браузере вместо веб-страницы
- HTTP POST от Arduino/ESP8266/ESP32 Как отправлять параметры (x-www-form-urlencoded)
Чего вы надеетесь достичь, если одна часть вашей программы сохранит файл статических данных в SPIFFS, а затем другая часть прочитает этот файл и отправит его?, @Majenko
Если я не отформатирую устройство, я могу удалить бит, в котором я добавляю эти строки, чтобы сохранить HTML-файл. Например, удалить блок этого кода позже., @Wan Street
Почему бы не использовать инструменты SPIFFS IDE для создания образа SPIFFS с уже имеющимся в нем файлом?, @Majenko
Что я делаю не так? Могу ли я отправить такой ответ? Или мне нужно снова написать полный HTML-код, @Wan Street
Я подозреваю, что это `EOF", который вы читаете до сих пор. Это означает поиск буквы "Е", а не конца файла., @Majenko
Вы должны использовать
server.StreamFile("text / html", f);
, @MajenkoХорошо, но проблема в том, что сегодня "конец офиса". Спасибо за информацию, я должен обновить ее завтра. Извините, @Wan Street
@WanStreet, ты видел этот пример https://github.com/esp8266/Arduino/blob/master/libraries/ESP8266WebServer/examples/FSBrowser/FSBrowser.ino?, @Juraj
Я сейчас ... я буду, @Wan Street
Я прокомментировал дальше в качестве ответа, мне нужно было опубликовать изображение, я все еще не пробовал использовать server.StreamFile() ... буду работать над этим через минуту., @Wan Street
Похоже, вы никогда не вызывали data()., @esoterik
хммм .. хорошо .. похоже на то .. не могли бы вы, пожалуйста, сказать мне, куда вызвать data(), извините, я не могу следовать.., @Wan Street