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

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

Ошибки компиляции проекта
Всё это было связано с тем, что проект был создан для ESP-IDF 4.4.3, а в PlatformIO уже выложили новую версию – ESP-IDF 5.0.0
Изменений в новой версии много, неполный список того, что пришлось исправить и изменить, я уже публиковал здесь: 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: Термостат + охранно-пожарная сигнализацияgithub.com
Как установить?
Можно просто скачать только архив с библиотеками, на момент написания статьи это libs_local_20230219.zip. Удалите старые библиотеки из c:\PlatformIO и на их место распакуйте новые. Всё, можно пробовать компилировать.
Если вы еще ничего не успели изменить “под себя” в проекте, можно скачать его целиком.
Что еще поправлено в новой версии библиотек
- Комнатный сенсор заменил на BME280. Просто потому, что валялся без дела, с уже припаянными проводками. Да и популярнее он будет, чем Sensirion. На фото выше уже он.
- Добавил статические буферы для шины I2C, это ускорит работу и теоретически снизит фрагментацию оперативной памяти (кучи).
- Поправил автоматическое переключение на резервный MQTT сервер (не работало, оказывается)
Что делать, если устройство спонтанно перегружается
В этом случае вероятнее всего, у вас проявился тот же баг, что и у меня – в localtime_r(). В этом случае придется откатиться на ESP-IDF 4.4.3. Это просто, в platformio.ini измените строчку framework с указанием конкретной версии:

Откат на предыдущую версию
Больше ничего делать не требуется, VSCode сам скачает новую-старую версию ESP-IDF при первой компиляции. Но, вероятно, придётся “очистить” проект (выполнить команду Clean).
Большая просьба
Если заметите проблему в коде, большая просьба – создайте issue в репозиторий. Так меньше шансов, что я её пропущу или забуду. Потому что все равно я переношу баги туда, но уже самостоятельно. Но и комментарии сюда задублировать не помешает (для активности).
Все статьи цикла: