Эта неделя чет получилась какой-то чисто айтишной. Только код писал, и чуть-чуть делал по электронике.
Просто в какой-то момент я понял, что семьи сейчас дома нет, и никто мне не мешает развалиться вечером перед теликом, включить сериал на фоне, взять ноут и спокойно лежать и программировать.
В итоге я многое сделал, что планировал сделать уже больше года. Наверное самое крупное и ожидаемое - сбор логов с контроллеров.
Было конечно не так просто, как казалось изначально. Сначала оказалось, что логи в arduino framework сделаны через задницу, и функцией esp_log_set_vprintf их не перехватить. Пришлось делать свою небольшую реализацию. Затем я решил использовать file.d, а не писать с нуля конвертер. Все из-за того, что внутри file.d была обещана интеграция с loki. Поэтому у меня план был написать только парсер логов формата esp32 для file.d, ну а отгрузка в локи должна быть стандартной. Оказалось, что выгрузка в локи сделана там через жопу, и пришлось ее править.
Но в итоге, все заработало. Пока что только контроллер отопления отливает логи в тестовом режиме, в ближайшие дни перетащу и другие контроллеры на это дело. Если кому интересно - пишите в комментах. Если будет спрос - напишу инструкцию, как это сделать.
Еще я перешел на LittleFS, и конфиги и стейты теперь хранятся в виде файлов. Профит тут в том, что разделение на файлы позволяет терять только часть информации. А так же можно если что просто сгрузить файлы конфигов и стейтов к себе, сделать полную очистку флеша и потом залить их обратно.
И еще перевел все контроллеры на хранение времени в int64. Раньше у меня была проблема, что у контроллеров начиналось неожиданное поведение через 43 дня, когда происходило переполнение таймеров. Были варианты, либо модифицировать работу с временем, чтобы переполнение тут не влияло, либо же перейти на int64. Я так подумал, что так и так нужно многое рефакторить. Но в случае перехода на int64 нужно только заменить одну функцию на другую, и константы интервалов умножить на 1000. И в итоге переполнение будет только через 200 тыс лет. Меня устроил вариант что проще, т.е. второй. Итого, проблема 43 дней моим контроллерам больше не страшна, что не может не радовать :)
