Захар
New member
Здравствуйте. Работаю с модулем недавно Nodemcu. При подключении модуля кабелем к usb порту проходит пинг 2-3 раза затем отваливается, прошить модуль возможность остается. Бывает что модуль работает без проблем. Или пинг проскакивает 2-3 раза и опять обрыв.
посмотрите подскажите в чем проблема, пожалуйста? Далее идут функции но они не выполняются если запросов нет.
Вот функции мало ли помогут ESP Экстрасенсам над проблемой колдовать)
C++:
#include <ESP8266WiFi.h> // Библиотека для создания Wi-Fi подключения (клиент или точка доступа)
#include <ESP8266WebServer.h> // Библиотека для работы с http
#include <FS.h> // Библиотека для работы с файловой системой
#include <ESP8266FtpServer.h> // Библиотека для работы с SPIFFS по FTP
const char* ssid = "Unknowlenge"; // Указываем имя WiFi-сети, к которой будет подключаться ESP8266 для доступа в Интернет
const char* password = "9988776655"; // Указываем пароль для подключения к WiFi-сети
const char* lgFTP = "Genri";
const char* psFTP = "3333";
ESP8266WebServer HTTP(80);
FtpServer ftpSrv; // Создаём объект для работы с FTP
void setup() {
Serial.begin(115200);
while (!Serial) {};
Serial.println("\nSereal OK");
WiFi.mode(WIFI_STA); // Отключаем точку доступа
WiFi.begin(ssid, password); // Соединяемся с WiFi-сетью
while (WiFi.status() != WL_CONNECTED) // Пока соединение не установлено
delay(500);
Serial.println("WI-FI OK");
SPIFFS.begin(); // Инициализируем работу с файловой системой
HTTP.begin(); // Инициализируем Web-сервер
ftpSrv.begin(lgFTP, psFTP); // Инициализируем FTP-сервер (на 21-й порт)
// Обработка HTTP-запросов
HTTP.on("/log=14919129/pass=5555555555", []() {
HTTP.send(200, "text/plain", "Все работает успешно");
});
//Страница не найдена
HTTP.onNotFound([]() {
if (!handleFileRead(HTTP.uri())) {
File file = SPIFFS.open("/list404.html", "r");
String data = file.readString();
file.close();
HTTP.send(404, "text/html", data);
};
});
};
void loop() {
HTTP.handleClient();
ftpSrv.handleFTP();
};
Код:
//ДОПОЛНИТЕЛЬНЫЕ ФУНКЦИИ
bool handleFileRead(String path) { // Функция работы с файловой системой
if (path == "/bd.txt"){return false;}; // Если злоумыленник ломиться к базе.
if (path.startsWith("/log=")) { // Если пришел логин и пароль на проверку
const byte COLLOMS_ARR = 4;
String dataReqestArr[2]; // Объявляем массив с данными из запроса
createArrReqest(path, dataReqestArr); // Заполняем массив запроса
int sizeBD = counterSizeBD(); // Считаем кол-во человек в БД
String dataArrBD[sizeBD][COLLOMS_ARR]; // Объявляем массив с данными из БД
createArrBD (dataArrBD); // Заполняем массив данными из БД
searchRecordInBaseData(dataArrBD,dataReqestArr,sizeBD);
return true;
};
if (path.endsWith("/")) path += "index.html"; // Если устройство вызывается по корневому адресу, то должен вызываться файл index.html (добавляем его в конец адреса)
String contentType = getContentType(path); // С помощью функции getContentType (описана ниже) определяем по типу файла (в адресе обращения) какой заголовок необходимо возвращать по его вызову
if (SPIFFS.exists(path)) { // Если в файловой системе существует файл по адресу обращения
File file = SPIFFS.open(path, "r"); // Открываем файл для чтения
size_t sent = HTTP.streamFile(file, contentType); // Выводим содержимое файла по HTTP, указывая заголовок типа содержимого contentType
file.close(); // Закрываем файл
return true; // Завершаем выполнение функции, возвращая результатом ее исполнения true (истина)
};
return false; // Завершаем выполнение функции, возвращая результатом ее исполнения false (если не обработалось предыдущее условие)}
};
String getContentType(String filename) { // Функция, возвращающая необходимый заголовок типа содержимого в зависимости от расширения файла
if (filename.endsWith(".html")) return "text/html"; // Если файл заканчивается на ".html", то возвращаем заголовок "text/html" и завершаем выполнение функции
else if (filename.endsWith(".css")) return "text/css"; // Если файл заканчивается на ".css", то возвращаем заголовок "text/css" и завершаем выполнение функции
else if (filename.endsWith(".js")) return "application/javascript"; // Если файл заканчивается на ".js", то возвращаем заголовок "application/javascript" и завершаем выполнение функции
else if (filename.endsWith(".png")) return "image/png"; // Если файл заканчивается на ".png", то возвращаем заголовок "image/png" и завершаем выполнение функции
else if (filename.endsWith(".jpg")) return "image/jpeg"; // Если файл заканчивается на ".jpg", то возвращаем заголовок "image/jpg" и завершаем выполнение функции
else if (filename.endsWith(".gif")) return "image/gif"; // Если файл заканчивается на ".gif", то возвращаем заголовок "image/gif" и завершаем выполнение функции
else if (filename.endsWith(".ico")) return "image/x-icon"; // Если файл заканчивается на ".ico", то возвращаем заголовок "image/x-icon" и завершаем выполнение функции
return "text/plain"; // Если ни один из типов файла не совпал, то считаем что содержимое файла текстовое, отдаем соответствующий заголовок и завершаем выполнение функции
};
void createArrReqest(String path, String* arr) {
byte indLog = path.indexOf("/log=");
byte indPass = path.indexOf("/pass=");
String getLog = path;
String getPass = path;
getLog.remove(indPass);
getLog.remove(indLog, indLog + 5);
getPass.remove(0, indPass + 6);
arr [0] = getLog;
arr [1] = getPass;
};
int counterSizeBD(){
File file = SPIFFS.open("/bd.txt", "r");
String data = file.readString();
file.close();
int i = 0;
int j = 0;
while(data.indexOf("#", 0+i)!=-1){
i = data.indexOf("#", 0+i)+1;
j++;
};
return j;
};
void createArrBD(String arr[][4]){
File file = SPIFFS.open("/bd.txt", "r");
String data = file.readString();
file.close();
int i = 0;
int j = 0;
while(data.length() > 3){
while (data.indexOf("|") < data.indexOf("#")){
arr[j][i] = data.substring(0, data.indexOf("|"));
data.remove(0,data.indexOf("|")+1);
if(data.length() <= 3) {break;};
++i;
};
++j;
i = 0;
data.remove(0,data.indexOf("#")+1);
};
};
int searchRecordInBaseData(String arrBD[][4], String* arrReq, int count){
for(int i = 0;i<count;i++){
if (String(arrReq[0]).equalsIgnoreCase(String(arrBD[i][0])) && String(arrReq[1]).equals(String(arrBD[i][1]))){
HTTP.send(200, "text/plain", "*Нашев лог:" + arrReq[0] + " пар:" + arrReq[1] + "; в базе данных запись номер: " + String(i));
return 13;
};
};
HTTP.send(200, "text/plain", "*НЕНАШЕВ в бд лог:" + arrReq[0] + " пар:" + arrReq[1]);
Вложения
-
39.2 KB Просмотры: 10