Arduino Mega Server для esp8266

Модератор: Alex

relict
Сообщения: 72
Зарегистрирован: Пт июл 10, 2015 8:44 pm
Благодарил (а): 9 раз
Поблагодарили: 7 раз

Re: Arduino Mega Server для esp8266

Сообщение relict » Пн июн 20, 2016 9:19 pm

nick7zmail писал(а):У меня в среде 1.6.9 так и не удалось скомпилить...
Тоже ругался на какие-то функции, связанные с временем...

А кто-нибудь собрал с последним sdk(версия библиотек для esp - 2.2.0)?
Если между 2.0.0 и 2.1.0 есть разница в памяти, то, может и для 2.2.0 она будет в лучшую сторону?
Замени библиотеку Time.
Time.zip
В arduino_mega_server_esp8266.ino 38 строка

Код: Выделить всё

//#include <Time.h>
#include <TimeLib.h>         
То, о чём Alex-у писал SPbDima.

Разница в размере скетча и памяти.
СпойлерПоказать
Arduino 1.6.5 ESP 2.1.0
Sketch uses 298 791 bytes (28%) of program storage space. Maximum is 1 044 464 bytes.
Global variables use 43 332 bytes (52%) of dynamic memory, leaving 38 588 bytes for local variables. Maximum is 81 920 bytes.

Arduino 1.6.9 ESP 2.2.0
Скетч использует 293 425 байт (28%) памяти устройства. Всего доступно 1 044 464 байт.
Глобальные переменные используют 42 164 байт (51%) динамической памяти, оставляя 39 756 байт для локальных переменных. Максимум: 81 920 байт.
Только скомпилировал, кто бы попробовал на железе.
Debian GNU/Linux 8 (jessie)
Arduino 1.8.5 / esp32 1.0.1
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Arduino Mega Server для esp8266

Сообщение nick7zmail » Пн июн 20, 2016 11:01 pm

relict писал(а): Замени библиотеку Time.
Time.zip
Только скомпилировал, кто бы попробовал на железе.
Спасибо. Теперь и в 1.6.9 компилится))
Железку лень заводить...завтра вечером буду пробовать.

UPD: не удержался...залил таки...
Ардуино 1.6.9, версия библиотек esp 2.2.0, переименована библиотека Time.h (из сообщения выше), скомпилилось без предупреждений.

Памяти - на первый запуск стало больше, но при открытом интерфейсе она поджирается чем-то до состояния предыдущей заливки (с 67% примерно до 55-56%)...не знаю с чем связано. Подключена библиотека wifi connect manager, возможно из-за нее.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
relict
Сообщения: 72
Зарегистрирован: Пт июл 10, 2015 8:44 pm
Благодарил (а): 9 раз
Поблагодарили: 7 раз

Re: Arduino Mega Server для esp8266

Сообщение relict » Вт июн 21, 2016 12:07 am

nick7zmail писал(а):Памяти - на первый запуск стало больше, но при открытом интерфейсе она поджирается чем-то до состояния предыдущей заливки (с 67% примерно до 55-56%)...не знаю с чем связано. Подключена библиотека wifi connect manager, возможно из-за нее.
Надо на дефолтной прошивке проверить.

В 1.6.5 поменял библиотеку Time, в скетче заменил #include <Time.h> на #include <TimeLib.h>, компилируется зараза и без ошибок.
Может будем пересаживаться на новый велосипед, ну не верю я, что у Alex-а на компе XP установлена. Чего плохого в использовании актуальных версий ПО ?
1.6.5
СпойлерПоказать

Код: Выделить всё

AMS for ESP8266 started...
Modul Hardware...
SDK version:     1.5.1(e67da894)
Boot version:    31
Boot mode:       1
Reset info:      Fatal exception:0 flag:6 (EXT_SYS_RST) epc1:0x00000000 epc2:0x00000000 epc3:0x00000000 excvaddr:0x00000000 depc:0x00000000
CPU freq:        80 MHz
Free memory:     36448 (78%)
Flash speed:     40 MHz
Flash mode:      0
Flash size:      4194304
SPIFFS size:     3145892
Program size:    1048412
Sketch size:     302940
Free for sketch: 745472
started
Modul Wi-Fi...
Connecting to KEENETIC_GIGA
......
WiFi connected
IP address: 192.168.1.13
started
Modul SPIFFS...
Total files: 141
Total size: 2039037
started
Modul Random... started
Modul EEPROM...
Name: ESP8266
started
Modul NTP...
Local port: 2390
started
Modul RTC...
Set time provider
sending NTP packet...
No packet yet
started
1970-01-01 00:00:05 Modul HTTP...
1970-01-01 00:00:05 HTTP port: 8080
1970-01-01 00:00:05 started
1970-01-01 00:00:05 Modul Server... started
GLOBAL Init DONE (5s)

AMS WORK
1970-01-01 00:00:05 : 33088 (71%) 33088
sending NTP packet...
packet received, length=48
Unix time = 1466468417
2016-06-21 00:20:35 : 33048 (71%) -40
2016-06-21 00:21:35 : 33048 (71%) 0
2016-06-21 00:22:35 : 33048 (71%) 0
2016-06-21 00:23:35 : 33048 (71%) 0      // открыл браузер
2016-06-21 00:24:35 : 29080 (62%) -3968
2016-06-21 00:25:37 : 28720 (62%) -360
2016-06-21 00:26:38 : 30584 (66%) 1864
2016-06-21 00:27:37 : 32568 (70%) 1984
2016-06-21 00:28:37 : 32568 (70%) 0      // закрыл браузер
2016-06-21 00:29:37 : 32568 (70%) 0
2016-06-21 00:30:37 : 32568 (70%) 0
2016-06-21 00:31:37 : 32568 (70%) 0
1.6.9
СпойлерПоказать

Код: Выделить всё

AMS for ESP8266 started...
Modul Hardware...
SDK version:     1.5.2(7eee54f4)
Boot version:    31
Boot mode:       1
Reset info:      Fatal exception:0 flag:6 (EXT_SYS_RST) epc1:0x00000000 epc2:0x00000000 epc3:0x00000000 excvaddr:0x00000000 depc:0x00000000
CPU freq:        80 MHz
Free memory:     37728 (81%)
Flash speed:     40 MHz
Flash mode:      0
Flash size:      4194304
SPIFFS size:     3147164
Program size:    1047140
Sketch size:     297572
Free for sketch: 749568
started
Modul Wi-Fi...
Connecting to KEENETIC_GIGA
.
WiFi connected
IP address: 192.168.1.13
started
Modul SPIFFS...
Total files: 141
Total size: 2039037
started
Modul Random... started
Modul EEPROM...
Name: ESP8266
started
Modul NTP...
Local port: 2390
started
Modul RTC...
Set time provider
sending NTP packet...
packet received, length=48
Unix time = 1466469393
started
2016-06-21 00:36:33 Modul HTTP...
2016-06-21 00:36:33 HTTP port: 8080
2016-06-21 00:36:33 started
2016-06-21 00:36:33 Modul Server... started
GLOBAL Init DONE (2s)

AMS WORK
2016-06-21 00:36:33 : 34608 (74%) 34608
2016-06-21 00:37:30 : 34608 (74%) 0
2016-06-21 00:38:30 : 34608 (74%) 0
2016-06-21 00:39:30 : 34608 (74%) 0      // открыл браузер
2016-06-21 00:40:30 : 30792 (66%) -3816
2016-06-21 00:41:30 : 30792 (66%) 0
2016-06-21 00:42:30 : 34128 (73%) 3336
2016-06-21 00:43:30 : 34128 (73%) 0
2016-06-21 00:44:30 : 34128 (73%) 0      // закрыл браузер
2016-06-21 00:45:30 : 34128 (73%) 0
2016-06-21 00:46:30 : 34128 (73%) 0
2016-06-21 00:47:30 : 34128 (73%) 0
Debian GNU/Linux 8 (jessie)
Arduino 1.8.5 / esp32 1.0.1
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Arduino Mega Server для esp8266

Сообщение nick7zmail » Вт июн 21, 2016 2:23 pm

Появилась идея...классная, но чтоб реализовать - много чего переписать придется...есть для нее более простой вариант, но не факт что реализуемый.
В связи с чем вопрос - Из самого модуля как-то можно перехватить serial.print-ы, или инициализировать виртуальный серийный порт?

Было бы неплохо если бы модуль вел свой лог, на подобии сериал порта, только в файл...и этот файл выводить на страничке. Можно было бы дебажить не цепляясь к компу.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
SPbDima
Сообщения: 113
Зарегистрирован: Пн окт 19, 2015 8:27 am
Благодарил (а): 9 раз
Поблагодарили: 21 раз

Re: Arduino Mega Server для esp8266

Сообщение SPbDima » Вт июн 21, 2016 4:49 pm

1. По поводу заголовочного файла time.h. По моему мнению, в Arduino IDE 1.6.9 разработчики накосячили ища подключаемые в скетче библиотеки в каталоге с системными файлами(файлы необходимые для работы IDE). Поэтому я бы не рекомендовал использовать данную версию, т.к. могут быть и другие пересечения по именам, что может привести к фатальным последствиям, таким как неработающий функционал, сбои и при попытке подключения новой библиотеки невозможность откомпилировать скетч если не будет аналога типа: time.h ->timelib.h, а заниматься переименованием библиотеки глупое занятие.
2. Alex, если есть возможность, предоставляй к скачиванию дистрибутив IDE у себя на сайте(для всех ОС), т.к. ты пишешь о необходимости использования IDE определенной версии которой нет (уже) на сайте разработчика. И что делать? (Arduino 1.6.5 r2 для osX нет на сайте разработчика)
3. По поводу перехвата serial. такие доработки должен делать только Alex, из-за невозможности простого портирования доработки(нужно переписывать все файлы), а если делать только для себя, то переворачивать все файлы после каждой новой версии AMS быстро надоест. Идея nick7zmail здравая, я о ней тоже задумывался. Возможно, оптимальный вариант был бы в виде создания функции для вывода получаемых функцией данный в зависимости от настроек, либо в файл, либо в serial.
Последний раз редактировалось SPbDima Ср июн 22, 2016 8:49 am, всего редактировалось 1 раз.
SPbDima
Сообщения: 113
Зарегистрирован: Пн окт 19, 2015 8:27 am
Благодарил (а): 9 раз
Поблагодарили: 21 раз

Re: Arduino Mega Server для esp8266

Сообщение SPbDima » Вт июн 21, 2016 5:01 pm

По поводу первого запуска AMS. Alex, зачем использовать не удобную утилиту для первичной заливки страниц на сервер, если можно файл edit.htm создать в скетче и при отсутствии файла index, либо при ошибке 404 выдавать пользователю страницу для загрузки файлов.
relict
Сообщения: 72
Зарегистрирован: Пт июл 10, 2015 8:44 pm
Благодарил (а): 9 раз
Поблагодарили: 7 раз

Re: Arduino Mega Server для esp8266

Сообщение relict » Вт июн 21, 2016 6:38 pm

SPbDima писал(а):По поводу заголовочного файла time.h. По моему мнению, в Arduino IDE 1.6.9 разработчики накосячили ища (поиск) подключаемые(include) в скетче библиотеки в каталоге с системными файлами(файлами необходимыми для работы IDE). Поэтому я бы не рекомендовал использовать данную версию, т.к. могут быть и другие пересечения по именам, что может привести к фатальным последствиям, таким как неработающий функционал, сбои и при попытке подключения новой библиотеки невозможность откомпилировать скетч если не будет аналога типа: time.h ->timelib.h, а заниматься переименованием библиотеки глупое занятие.
Ничего не понял :( .

UPD о фатальности последствий.
СпойлерПоказать
Сравнение библиотеки Alex-а и той, что выложил(скачана с гита)
Time&TimeLib.PNG
Debian GNU/Linux 8 (jessie)
Arduino 1.8.5 / esp32 1.0.1
SPbDima
Сообщения: 113
Зарегистрирован: Пн окт 19, 2015 8:27 am
Благодарил (а): 9 раз
Поблагодарили: 21 раз

Re: Arduino Mega Server для esp8266

Сообщение SPbDima » Ср июн 22, 2016 5:08 pm

Alex, а функцию handleFileList в файле http.ino сам писал? Там ошибка (или недоделка) в использовании переменной isDir, т.к. она всегда false

Код: Выделить всё

void handleFileList() {
  if (!HTTP.hasArg("dir")) {
    HTTP.send(500, "text/plain", "BAD ARGS");
    return;
  }
  String path = HTTP.arg("dir");
  Dir dir = SPIFFS.openDir(path);
  path = String();
  String output = "[";
  while (dir.next()) {
    File entry = dir.openFile("r");
    if (output != "[") output += ',';
    bool isDir = false;                       <---- установили
    output += "{\"type\":\"";
    output += (isDir) ? "dir" : "file";   <---- применили, а где изменили?
    output += "\",\"name\":\"";
    output += String(entry.name()).substring(1);
    output += "\"}";
    entry.close();
  }
  output += "]";
  
  HTTP.send(200, "text/json", output);
}
*** Сообщение запрещено. Сообщение похоже на спам. ***
SPbDima
Сообщения: 113
Зарегистрирован: Пн окт 19, 2015 8:27 am
Благодарил (а): 9 раз
Поблагодарили: 21 раз

Re: Arduino Mega Server для esp8266

Сообщение SPbDima » Ср июн 22, 2016 5:09 pm

Alex, а функцию handleFileList в файле http.ino сам писал? Там ошибка (или недоделка) в использовании переменной isDir, т.к. она всегда false

Код: Выделить всё

void handleFileList() {
  if (!HTTP.hasArg("dir")) {
    HTTP.send(500, "text/plain", "BAD ARGS");
    return;
  }
  String path = HTTP.arg("dir");
  Dir dir = SPIFFS.openDir(path);
  path = String();
  String output = "[";
  while (dir.next()) {
    File entry = dir.openFile("r");
    if (output != "[") output += ',';
    bool isDir = false;                       <---- установили
    output += "{\"type\":\"";
    output += (isDir) ? "dir" : "file";   <---- применили, а где изменили?
    output += "\",\"name\":\"";
    output += String(entry.name()).substring(1);
    output += "\"}";
    entry.close();
  }
  output += "]";
  
  HTTP.send(200, "text/json", output);
}
*** Сообщение запрещено. Сообщение похоже на спам. ***
SPbDima
Сообщения: 113
Зарегистрирован: Пн окт 19, 2015 8:27 am
Благодарил (а): 9 раз
Поблагодарили: 21 раз

Re: Arduino Mega Server для esp8266

Сообщение SPbDima » Ср июн 22, 2016 5:11 pm

Alex, а функцию handleFileList в файле http.ino сам писал? Там ошибка (или недоделка) в использовании переменной isDir, т.к. она всегда false

Код: Выделить всё

void handleFileList() {
  if (!HTTP.hasArg("dir")) {
    HTTP.send(500, "text/plain", "BAD ARGS");
    return;
  }
  String path = HTTP.arg("dir");
  Dir dir = SPIFFS.openDir(path);
  path = String();
  String output = "[";
  while (dir.next()) {
    File entry = dir.openFile("r");
    if (output != "[") output += ',';
    bool isDir = false;                       <---- установили
    output += "{\"type\":\"";
    output += (isDir) ? "dir" : "file";   <---- применили, а где изменили?
    output += "\",\"name\":\"";
    output += String(entry.name()).substring(1);
    output += "\"}";
    entry.close();
  }
  output += "]";
  
  HTTP.send(200, "text/json", output);
}
*** Сообщение запрещено. Сообщение похоже на спам. ***
Ответить