• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Node MCU ESP8266, не дружат FTP и ВЕБ обработчики

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
 

Alvikskor

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
Попробуйте перед строкой server.handleClient(); поставить задержку delay (10); Возможно ЕСП не хватает времени на фоновую обработку сети. Кстати , проверьте ping Вашего сервера после подключения к вифи. Если он не стабильный, слишком длинный или его вообще нет, тогда это оно.
 
Сверху Снизу