• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Ошибки и недочеты в существующих библиотеках

Victor

Administrator
Команда форума
В настоящее время доступны следующие библиотеки:

ESP8266WebServer
ESP8266WiFi
ESP8266mDNS
 

amatron

New member
Подскажите, пожалуйста, к каким пинам подключать SD card в примере: SDWebServer - Example WebServer with SD Card backend for esp8266?
 

amatron

New member
С пинами разобрался. В IE 11 работает.
Только в Хроме выдает ошибку:

Код:
С сервера получены одинаковые заголовки

ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_LENGTH
 

igrr

Moderator
Команда форума
amatron, это с готовым примером, или ваш собственный код?
Я недавно добавлял автоматическую отправку Content-Length, мог где-то в примерах не обновить.
 

Discriminator

New member
Код:
Arduino: 1.6.4 (Windows 7), Плата"Generic ESP8266 Module, 80 MHz, 115200, 512K (64K SPIFFS)"

c:/users/victor/appdata/roaming/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_pow.o):(.literal+0x104): undefined reference to `__ieee754_sqrt'
c:/users/victor/appdata/roaming/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_pow.o): In function `__ieee754_pow':
d:\ivan\projects\arduinoesp\toolchain\dl\esp-newlib\build\xtensa-lx106-elf\newlib\libm\math/../../../../../newlib/libm/math/e_pow.c:164: undefined reference to `__ieee754_sqrt'
collect2.exe: error: ld returned 1 exit status
Ошибка компиляции.

Это сообщение будет содержать больше информации чем
"Отображать вывод во время компиляции"
включено в Файл > Настройки
Это сегодняшний доступный билд
d:\ivan\projects\arduinoesp - это точно не мое, а ссылка присутствует...
 

evkup

New member
Обновил библиотеки и примеры с https://github.com/sandeepmistry/esp8266-Arduino
При попытке обращения по адресу esp8266sd.local Хром отвечает DNS_PROBE_FINISHED_NO_INTERNET Веб-страница недоступна.
При обращении по ip выдает страницу с картинкой распиновки (как и должно быть).
 
Последнее редактирование:

Evgen

New member
При использовании библиотеки ESP8266WiFi, при пропадании wifi соединения, например если роутер перезагрузить, модуль перезагружается.

UPD
Кароч разобрался, модуль перезагружается один раз, а дальше можно сколько угодно раз роутер перезагружать, ESP-шка уже не перезагружается.
 
Последнее редактирование:

Casper

Member
Добрый вечер! Есть вот такой скетч
Код:
#include <ESP8266WiFi.h>
#include <Ticker.h>

void SendIP();

const char* ssid     = "Keenetic-7300";
const char* password = "********";
const char* host = "192.168.1.22";

// Create an instance of the server
// specify the port to listen on as an argument
WiFiServer server(5555);
Ticker sendip;


void setup() {
  Serial.begin(115200);
  delay(10);


  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");

  // Start the server
  server.begin();
  Serial.println("Server started");

  // Print the IP address
  Serial.println(WiFi.localIP());

  sendip.attach(30, SendIP);
  //SendIP();
}

void loop() {

}


void SendIP()
{
  Serial.println("Funktion SendIP");
  WiFiClient client;
    if (!client.connect(host, 5555))
    {
      Serial.println("connection failed");
    }
    Serial.println("Connection OK!");
    IPAddress tmp = WiFi.localIP();
    Serial.println("IP OK!");
    String ip = String(tmp[0]) + '.' + String(tmp[1]) + '.' + String(tmp[2]) + '.' + String(tmp[3]);
    Serial.println("Otpravka soobsheniya");
    client.print("id:0001;name:Banya;ip:"+ip+";");
    sendip.detach();
}
и при использовании функции Ticker, которая через 30 сек. должна вызвать функцию для отправки сообщения на сервер, получаю следующее
Код:
Connecting to Keenetic-7300
........
WiFi connected
Server started
192.168.1.34
Funktion SendIP

ets Jan  8 2013,rst cause:4, boot mode:(3,7)

wdt reset
load 0x4010f000, len 1264, room 16
tail 0
chksum 0x42
csum 0x42
~ld
Хотя функция рабочая! Если ее вызывать не через Ticker. В чем может быть проблема?
 

Casper

Member
Может функция и рабочая, но видать она долго выполняется, раз WDT отрабатывает...
Он зависает на 55 строчке WiFiClient client; очень долго выполняется. А если в Setup вызвать функцию, то там все сразу подключается, без всяких задержек.
 

Discriminator

New member
А вообще, ИМХО, не стоит событие таймера нагружать кучей обработок. Не лучше ли это вынести в loop. Он хоть и пустой, но регулярно выполняется. А вот в самом таймере "взводить" некоторую переменную, которая в самом loop тебе подскажет нужно выполнять твой код с отправкой или нет...
 

pvvx

Активный участник сообщества
А вообще, ИМХО, не стоит событие таймера нагружать кучей обработок. Не лучше ли это вынести в loop. Он хоть и пустой, но регулярно выполняется. А вот в самом таймере "взводить" некоторую переменную, которая в самом loop тебе подскажет нужно выполнять твой код с отправкой или нет...
Это походит на неверно избранную политику порта Arduino IDE с таймерами в Ticker. Не верно составлено переключение контекста SDK<->код пользователя? Если сработал программный таймер, то он отрабатывается только в функции ets_run() и вызвав какую пользовательскую задачу остальные системные таймеры встают, пока задача не вернет управление в ets_run(). Тут сколько хош переключай контекст или потоки, всё равно поддерживающие систему таймеры не отработают. Надо переназначать вызов функции пользователя от срабатывания таймера и завершать процедуру вызова, отдавая управление в ets_run(). Можно вообще заменить ets_run() на свой обработчик...
 

Discriminator

New member
pvvx, как бы это сказать... Человек, который полезет "так глубоко" - врятли будет писать "на Wire" :)
 
Добрый вечер. У меня такая проблема. Загрузил в esp8266 скетч wifi web server (управление gpio2) при периодических посылках команд модулю, он начинает медленно откликаться на команды.
 

Lexumer

New member
Здравствуйте! При AT+CIPSEND=0,16 > TESTTESTTESTTEST
Модуль выдает Too many inputs.ERROR
 

Atom

Member
Обнаружил глючину ESP8266mDNS, но не уверен, что такой является или можно поправить. Если создать только Access Point и на ней запустить WebServer, то доступ появляется только по IP, а не по имени. Догадываюсь, что может быть что-то в DHCP обрезано.
 

Emmy

Member
мне не нравится что на некоторых девайсах точка доступа - esp8266 не выдает автоматом dhcp адрес клиенту - а по логике должна!!!! приходится прописывать вручную планшету ip 192.168.4.2 ПОФИКСИТЕ ЭТО!!!
 
Сверху Снизу