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

статический IP, MQTT и мультиплексор портов

Привет всем,

столкнулся с проблемой - есть код, написанный сторонним разработчиком, связи с ним нет сейчас.
Плата LOLIN D1 mini Pro.

Используется SD + RTC шилд, мультиплексор портов MCP23017, MQTT, WiFi, ADC1115...
Ситуация странная, стоит IDE 1.8.8 и esp8266 package 2.5.0.
Изначально все скомпилировали и загрузили - проблем не увидели, но они были. Оказалось не работает статический IP адрес и коннект к MQTT по цифровому адресу (по имени хоста коннектится - парадокс прям, как бы не сильно напрягает, но очень желательно). Код проверили - все в порядке.
Заменили esp8266 package на последний - 2.5.2 - не работает, сильно изменились библиотека SD, без серьезных изменений кода не компилируется.
Заменили IDE на 1.8.9 - не компилируется совсем.. ошибки не фиксировали, но много.
Вернулись на IDE 1.8.8 и esp8266 package 2.4.2... О чудо, статический IP заработал, MQTT по цифровому адресу коннектится. Но пропала работа с мультиплексором GPIO MCP23017, причем ошибок никаких нет.


Более ранние версии esp8266 package не работают с LOLIN d1...

Попытки поставить библиотеку ESP8266WIFI из 2.4.2 в 2.5.0 не увенчались успехом.
Интересно, что библиотека под MCP23017 используется одна и та же - в esp8266 package она не входит.
Какого она то не работает ???

Как это все собрать в рабочем виде ?
 

CodeNameHawk

Moderator
Команда форума
Разобрался.... Итог:

- с esp8266 package 2.5.0 не работает статический IP адрес, также почему то коннект к MQTT не идет по цифровому адресу, только по имени хоста. Попытки заменить ESP8266WIFI от старой версии не успешны.
- в esp8266 package 2.5.1 и 2.5.2 включена новая библиотека SD, раньше была 1.0.8 от Adafruit, теперь 2.0.0 от Earle F. Philhower, отличия принципиальные, старый код не работает. Теоретически можно ее удалить руками из папки и будет использоваться стандартная из Arduino IDE, там как раз стоит от Adafruit.
- с esp8266 package 2.4.2 все работает !!!

Причина - стыдно рассказывать - отвалился кабель от блока питания платы, в результате часть платы осталась без питания, в т.ч. MCP21017 и ADC1115, при этом сам esp8266 питался от USB, и RTC тоже, и поэтому я ничего и не видел. В коде есть проверка питания, но почему то она срабатывает и сообщает "No VCC" только при попытке изменить состояние выходного GPIO. Давно я так не тупил...
 

CodeNameHawk

Moderator
Команда форума
- с esp8266 package 2.5.0 не работает статический IP адрес, также почему то коннект к MQTT не идет по цифровому адресу, только по имени хоста.
Моя программа тоже не захотела работать с 2.5.2, а с 2.4.2 работает.
В новой версии как то странно отрабатывает autoconect и autoreconect(тоже использую статический IP ), пока не разбирался в различиях версий.
 

enjoynering

Well-known member
мы к сожалению не экстрасенсы. где исходники? вы машину так же чините - приезжаете на троллейбусе на сто, описываете проблему с авто и ждете что ее дистанционно починят?
 

CodeNameHawk

Moderator
Команда форума
ТС решил свой проблемы, а мне как бы не требуется помощь.

На столе, на тестовой плате , то как бы все работает, в "железе" может перестать отвечать web server и не сразу, а через несколько дней, а остальные службы и дальше могут работать или тоже перестать работать.
Переход на версии до 2.4.2 не вызывал проблем, на 2.5.2 изменился "интерфейс" http client, но даже переписав прогу, проблемы остались.
Выглядит так, что при установленных autoconect и autoreconect, статус, что есп подключена к роутеру, устанавливается раньше, чем есп фактически подключится к роутеру.
Суть проблемы в том, что если нет связи или неустойчивая связь http client, получив код ответа сервера -1, сильно "подвешивает", замедляет работу есп.
Роутер я отключаю часто и это учитывается в программе и не вызывает проблем на старой версии.
Возможно зимой будет больше свободного времени посмотрю, что не так.
Использую библиотеки ASYNC, возможно они плохо согласуются с новой версией.
 
Сверху Снизу