Форум программистов, компьютерный форум, киберфорум
Arduino
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
51 / 3 / 1
Регистрация: 02.06.2013
Сообщений: 162
Записей в блоге: 2

Вебсервер и Wemos D1 R1 (ESP8266)

28.01.2020, 18:59. Показов 4225. Ответов 3

Студворк — интернет-сервис помощи студентам
Возможно ли платку подружить с Apache? или сделать её похожим на Apache?
Возможно ли создать такую же структуру файлов вебсервака (скрипты, картинки, и т.п.)?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.01.2020, 18:59
Ответы с готовыми решениями:

Не могу связать Arduino mega +wifi esp8266 c ESP8266, которая находится на этой же плате
Уже в течении пяти дней перебираю кучу способов перекинуть с меги на esp данные, но безуспешно. Может кто знает как наладить банальное...

Шлюз/вебсервер. Конфигурация
Задача - поднять вебсервер (сайт, почта, видеопортал), шлюз для локалки с впн, прокси и т.п. Организация мы подведомственная,...

Wemos d1
Привет всем, помогите пожалуйста с таким вопросом, собрал схему на плате wemos d1 mini, загрузил скетч все залетела норм, от usb подключена...

3
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
28.01.2020, 20:14
Цитата Сообщение от Dreeni Посмотреть сообщение
Возможно ли создать такую же структуру файлов вебсервака (скрипты, картинки, и т.п.)?
Конечно, как только ОЗУ и ПЗУ будут такими же, как и на серверах, используемых Апачем
0
51 / 3 / 1
Регистрация: 02.06.2013
Сообщений: 162
Записей в блоге: 2
28.01.2020, 20:49  [ТС]
Цитата Сообщение от Почтальон Посмотреть сообщение
Конечно, как только ОЗУ и ПЗУ будут такими же, как и на серверах, используемых Апачем
Возможно Вы меня не поняли. Я долго рыл интернет, создал тут тему, и после чего я нашёл ответ.
библиотека файловой системы мне в помощь. Уже подгрузил на свой Wemos d1 r1 файлы скриптов, и html документов.
Осталось только разобраться, можно ли увеличить память с помощью флешки.
C++
1
2
#include <FS.h>        // Библиотека для работы с файловой системой
#include <ESP8266FtpServer.h>   // Библиотека для работы с SPIFFS по FTP
Вот код.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include <ESP8266WiFi.h>                                                // Библиотека для создания Wi-Fi подключения (клиент или точка доступа)
#include <ESP8266WebServer.h>                                           // Библиотека для управления устройством по HTTP (например из браузера)
#include <FS.h>                                                         // Библиотека для работы с файловой системой
#include <ESP8266FtpServer.h>                                           // Библиотека для работы с SPIFFS по FTP
 
const byte relay = 2;                                                   // Пин подключения сигнального контакта реле
const char *ssid = "ssid";                                             // Название генерируемой точки доступа
const char* password = "01234567";
 
IPAddress ip(10, 0, 0, 3);
IPAddress gateway(10, 0, 0, 1);
IPAddress subnet(255, 255, 255, 240);
 
ESP8266WebServer HTTP(80);                                              // Определяем объект и порт сервера для работы с HTTP
FtpServer ftpSrv;                                                       // Определяем объект для работы с модулем по FTP (для отладки HTML)
 
void setup() {
  pinMode(relay, OUTPUT);                                               // Определяем пин реле как исходящий
  Serial.begin(9600);                                                   // Инициализируем вывод данных на серийный порт со скоростью 9600 бод
 
  WiFi.begin(ssid, password);                                            // Подключаемся к Wi-Fi
  WiFi.config(ip, gateway, subnet);
  //WiFi.softAP(ssid);                                                    // Создаём точку доступа
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
 
  SPIFFS.begin();                                                       // Инициализируем работу с файловой системой
  HTTP.begin();                                                         // Инициализируем Web-сервер
  ftpSrv.begin("Login", "password'");                                       // Поднимаем FTP-сервер для удобства отладки работы HTML (логин, пароль)
 
  Serial.print("\nMy IP to connect via Web-Browser or FTP: ");          // Выводим на монитор серийного порта сообщение о том, что сейчас будем выводить локальный IP
  Serial.println(WiFi.softAPIP());                                      // Выводим локальный IP-адрес ESP8266
  Serial.println("\n");
 
  // Обработка HTTP-запросов
  HTTP.on("/relay_switch", []() {                                       // При HTTP запросе вида http://10.0.0.3/relay_switch
    HTTP.send(200, "text/plain", relay_switch());                     // Отдаём клиенту код успешной обработки запроса, сообщаем, что формат ответа текстовый и возвращаем результат выполнения функции relay_switch
  });
  HTTP.on("/relay_status", []() {                                       // При HTTP запросе вида http://10.0.0.3/relay_status
    HTTP.send(200, "text/plain", relay_status());                     // Отдаём клиенту код успешной обработки запроса, сообщаем, что формат ответа текстовый и возвращаем результат выполнения функции relay_status
  });
  HTTP.onNotFound([]() {                                                // Описываем действия при событии "Не найдено"
    if (!handleFileRead(HTTP.uri()))                                      // Если функция handleFileRead (описана ниже) возвращает значение false в ответ на поиск файла в файловой системе
      HTTP.send(404, "text/plain", "Not Found");                        // возвращаем на запрос текстовое сообщение "File isn't found" с кодом 404 (не найдено)
  });
}
 
void loop() {
  HTTP.handleClient();                                                // Обработчик HTTP-событий (отлавливает HTTP-запросы к устройству и обрабатывает их в соответствии с выше описанным алгоритмом)
  ftpSrv.handleFTP();                                                 // Обработчик FTP-соединений
}
 
String relay_switch() {                                                 // Функция переключения реле
  byte state;
  if (digitalRead(relay))                                               // Если на пине реле высокий уровень
    state = 0;                                                          //  то запоминаем, что его надо поменять на низкий
  else                                                                  // иначе
    state = 1;                                                          //  запоминаем, что надо поменять на высокий
  digitalWrite(relay, state);                                           // меняем значение на пине подключения реле
  return String(state);                                                 // возвращаем результат, преобразовав число в строку
}
 
String relay_status() {                                                 // Функция для определения текущего статуса реле
  byte state;
  if (digitalRead(relay))                                               // Если на пине реле высокий уровень
    state = 1;                                                          //  то запоминаем его как единицу
  else                                                                  // иначе
    state = 0;                                                          //  запоминаем его как ноль
  return String(state);                                                 // возвращаем результат, преобразовав число в строку
}
 
bool handleFileRead(String path) {                                      // Функция работы с файловой системой
  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";                                                  // Если ни один из типов файла не совпал, то считаем что содержимое файла текстовое, отдаем соответствующий заголовок и завершаем выполнение функции
}
0
Эксперт по электронике
6502 / 3132 / 331
Регистрация: 28.10.2011
Сообщений: 12,319
Записей в блоге: 7
29.01.2020, 01:19
Цитата Сообщение от Dreeni Посмотреть сообщение
Осталось только разобраться, можно ли увеличить память с помощью флешки.
Как ОЗУ собираетесь увеличивать?
Для нормального сервера ее очень мало. Возьмите малину и запустите на ней сервер.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.01.2020, 01:19
Помогаю со студенческими работами здесь

Скорость загрузки сайта и вебсервер?
Зависит ли то насколько быстро работает, грузится сайт от самого вебсервера или его настроек? Я уже оптимизировал CMS как только можно,...

Wemos d1 метеостанция
всем привет! собираю метеостанцию (плата wemos d1+dht11+lcd i2c1602), не могу вывести показания на экран вылетает такая фигня. помогите...

Проброс портов или неработает вебсервер
всем доброго времени суток,немогу понять функции в роутере Virtual Server,port trigger,DMZ,static routes,работу Firewall поделитесь...

Сенсорный выключатель на Wemos D1 mini
Всем привет! Я только недавно занимаюсь микроэлектроникой, поэтому строго не судите... Хочу сделать сенсорный выключатель в комнате....

FTP + WeMos D1 Mini + sd card
Доброго времени суток, нужна помощь в решении задачи - имеется WeMos D1 Mini c шилдом sd card. Задача скачать с ftp фаил и положить его...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru