Добрый день, уважаемый читатель! В прошлых статях серии я рассказывал, как собрать и запрограммировать устройство домашней автоматики с удаленным управлением на базе 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 в репозиторий. Так меньше шансов, что я её пропущу или забуду. Потому что все равно я переношу баги туда, но уже самостоятельно. Но и комментарии сюда задублировать не помешает (для активности).
Все статьи цикла “Термостат и ОПС”:
- Часть 1. Вводная: общее описание и возможности
- Часть 2. Перечень необходимых компонентов, схемы отдельных узлов, печатная плата
- Часть 3. Минимальный вариант: только телеметрия через MQTT брокер
- Часть 4. Описание генерируемых устройством MQTT-топиков
- Часть 5. Добавляем выгрузку данных на внешние сервисы
- Часть 6. Изменения в прошивке под требования на ESP-IDF 5.0.1
- Часть 7. Автоматический контроль диапазонов температуры
- Часть 8. Класс rSensor и как заменить сенсоры на другие из списка поддерживаемых
- Часть 9. Термостат и управление нагрузкой
- Часть 10. Охранно-пожарная и аварийная сигнализация
Прошивка K12 для ESP32 и ESP-IDF:
Дополнительные статьи, которые применимы к любым устройствам, запрограммированным с помощью тех же самых библиотек.
- Прошивка для ESP32 на основе ESP-IDF: описание модулей и библиотек
- Настройка Android-приложения MQTT Dash для работы с устройством
- rLoadControl: индикация состояния нагрузки на MQTT DASH
- Команды управления
💠 Полный архив статей вы найдете здесь
Пожалуйста, оцените статью: