Найти тему
K12 :: О ESP32 и не только

Термостат на ESP32 с удаленным управлением. Часть 6. Переход на ESP-IDF 5.0.0

Добрый день, уважаемый читатель! В прошлых статях серии я рассказывал, как собрать и запрограммировать устройство домашней автоматики с удаленным управлением на базе ESP-IDF без использования Arduino, на "голом" ESP-IDF.

Но, к сожалению, некоторое время назад стали поступать многочисленные сообщения, что проект не компилируется, а выдает кучу ошибок:

-2

Всё это было связано с тем, что проект был создан для ESP-IDF 4.4.3, а в PlatformIO уже выложили новую версию - ESP-IDF 5.0.0

Изменений в новой версии много, неполный список того, что пришлось исправить и изменить, я уже публиковал здесь:

Библиотеки под новую ESP-IDF были адаптированы ещё на прошлой неделе, но... в ESP-IDF 5.0.0 был обнаружен существенный баг, не замеченный разработчиками

Пришлось "возвращать всё взад". Точнее я сделал универсальную версию библиотек, которая одинаково работает и со старой ESP-IDF 4.4.3, так и с новой ESP-IDF 5.0.0.

Скачать новый архив можно, как обычно, с репозитория GitHub, ветка 03_ESP-IDF_5-0-0 или master:

GitHub - kotyara12/telemeter_dzen: Термостат + охранно-пожарная сигнализация

Как установить?

Можно просто скачать только архив с библиотеками, на момент написания статьи это libs_local_20230219.zip. Удалите старые библиотеки из c:\PlatformIO и на их место распакуйте новые. Всё, можно пробовать компилировать.

Если вы еще ничего не успели изменить "под себя" в проекте, можно скачать его целиком.

Что еще поправлено в новой версии библиотек

  • Комнатный сенсор заменил на BME280. Просто потому, что валялся без дела, с уже припаянными проводками. Да и популярнее он будет, чем Sensirion. На фото выше уже он.
  • Добавил статические буферы для шины I2C, это ускорит работу и теоретически снизит фрагментацию оперативной памяти (кучи).
  • Поправил автоматическое переключение на резервный MQTT сервер (не работало, оказывается)

Что делать, если устройство спонтанно перегружается

В этом случае вероятнее всего, у вас проявился тот же баг, что и у меня - в localtime_r(). В этом случае придется откатиться на ESP-IDF 4.4.3. Это просто, в platformio.ini измените строчку framework с указанием конкретной версии:

-3

Больше ничего делать не требуется, VSCode сам скачает новую-старую версию ESP-IDF при первой компиляции. Но, вероятно, придётся "очистить" проект (выполнить команду Clean).

Большая просьба

Если заметите проблему в коде, большая просьба - создайте issue в репозиторий. Так меньше шансов, что я её пропущу или забуду. Потому что все равно я переношу баги туда, но уже самостоятельно. Но и комментарии сюда задублировать не помешает (для активности).

В следующей статье планирую вкратце рассказать про структуру проекта.

_______________

На этом пока всё, до встречи на сайте и на dzen-канале!

👍 Понравилась статья? Поддержите канал лайком или комментарием! Каналы на Дзене "живут" только за счет ваших лайков.

📌Подпишитесь на канал и вы всегда будете в курсе новых статей.

🔶 Полный архив статей вы найдете здесь