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