madmeur
New member
Пытаюсь собрать веб сервер + фтп, самое начало работы, при включении обработчика фтп, не работает ни фтп ни веб сервер, если выключить обработчик фтп сервера //ftpSrv.handleFTP();, веб сервер функционирует. Помогите разобраться, пожалуйста.
Код:
#include <ESP8266WiFi.h> // Библиотека для создания Wi-Fi подключения (клиент или точка доступа)
#include <WiFiClient.h> // Библиотека для связи с сетевыми хостами (локальными и интернет)
#include <ESP8266WebServer.h> // Библиотека для поднятия веб-сервера
#include <FS.h> // Библиотека для работы с файловой системой
#include <ESP8266FtpServer.h> // Библиотека для работы с SPIFFS по FTP
const char* ssid = "Waffle 33"; // Указываем имя WiFi-сети, к которой будет подключаться ESP8266
const char* password = "pass"; // Указываем пароль для подключения к WiFi-сети
const char* ftp_user = "esp8266";
const char* ftp_password = "esp8266";
ESP8266WebServer server(25566); // Создаём объект для работы с нашим веб-сервером, указав номер порта, по которому он будет доступен в WWW
WiFiClient client; // Создаём объект для работы с удалёнными хостами
FtpServer ftpSrv; // Определяем объект для работы с модулем по FTP (для отладки HTML)
void setup(void){
Serial.begin(115200); // Инициализируем вывод данных на серийный порт со скоростью 9600 бод
WiFi.begin(ssid, password); // Соединяемся с WiFi-сетью
// Инициализируем работу с файловой системой, её необходимо вызывать первой, перед другими системами
delay(500);
while (WiFi.status() != WL_CONNECTED) // Пока соединение не установено
delay(500); // делаем задержку в пол секунды, пока соединение не установится
Serial.println("WiFi connected"); // Выводим сообщение о том, что устройство соединилось с WiFi-сетью
server.begin(); // Инициализируем работу веб-сервера
server.on("/", root); // Сообщаем о том, что при обращении к корневой директории нашего веб-сервера должна вызываться функция root
server.on("/on", turnOn);
server.on("/off", turnOff);
delay(500);
// Mount SPIFFS File system
if (SPIFFS.begin()) {
Serial.println("SPIFFS opened!");
// Then start FTP server when WiFi connection in On
ftpSrv.begin(ftp_user, ftp_password);
}
delay(500);
Serial.println("FTP started"); // Выводим сообщение о том, что FTP работает
Serial.println("HTTP server started"); // Выводим на монитор серийного порта сообщение о том, что веб-сервер запущен
Serial.print("Local IP: "); // Выводим на монитор серийного порта сообщение о том, что сейчас будем выводить локальный IP
Serial.println(WiFi.localIP()); // Выводим локальный IP-адрес ESP8266
Serial.print("MAC-address: "); // Выводим на монитор серийного порта сообщение о том, что сейчас будем выводить MAC-адрес ESP8266
Serial.println(WiFi.macAddress()); // Выводим MAC-адрес ESP8266
pinMode(LED_BUILTIN, OUTPUT); // Initialize the LED_BUILTIN pin as an output
}
void loop(void){
//ftpSrv.handleFTP(); // Ожидаем обращение к FTP-серверу
//Serial.println("im listening");
server.handleClient(); // Ожидаем обращение к веб-серверу
digitalWrite(LED_BUILTIN, HIGH); // Turn the LED off by making the voltage HIGH
}
void turnOn(){ // Функция,вызывающаяся при обращении клиента к корневой дирректории нашего веб-сервера
server.send(200, "text/html","<h1>Im On!</h1>"); // Сервер отправляет клиенту информацию о том, что
Serial.println("im On!");
}
void turnOff(){ // Функция,вызывающаяся при обращении клиента к корневой дирректории нашего веб-сервера
server.send(200, "text/html","<h1>Im Off!</h1>"); // Сервер отправляет клиенту информацию о том, что
Serial.println("im Off!");
}
void root(){ // Функция,вызывающаяся при обращении клиента к корневой дирректории нашего веб-сервера
server.send(200, "text/html","<h1>Web-server ESP8266</h1>"); // Сервер отправляет клиенту информацию о том, что
digitalWrite(LED_BUILTIN, LOW); // Turn the LED off by making the voltage HIGH
delay(1000);
} // 200 - запрос успешно обработан
// text/html - ответ на запрос предоставляется в формате HTML
// третий параметр (<h1>Web-server ESP8266</h1>) содержит текст ответа в формате HTML