Да чтож такое, опять доделка гостиной откладывается(

История отделки одного домика на 100 квадратов в Ессентуках
Да чтож такое, опять доделка гостиной откладывается(
Но зато я успел еще больше кода написать для контроллера водяной развязки. Теперь наконец-то снимаются данные с счетчика, который стоит чисто на потребление дома. И благодаря ему я узнал, что кран на подачу оказывается полностью не закрывается, и все время капает мааааленькая струйка. Есть от нее плюсы - счетчики ее не видят, при этом вода потихоньку набирается в бочку. Сколько такой халявной воды натекает я смогу узнать в ближайшие дни. Только сегодня написал отчетик, который собирает данные по этому поводу и пишет. Но нужно подождать, пока собственно данные соберутся и отчет начнет формироваться.
По датчику давления я нашел на него даташит. Оказалось, что хоть он и на 24 вольта, но пишут, что он работает с 10 и до 26 вольт. И должен выдавать корректные данные. А значит - его вполне можно питать от блока питания на 12 вольт.
Так что завтра думаю займусь веселым процессом интеграции датчика в контроллер. Наверное его нужно будет как-то откалибровать, но как я пока не знаю. Так что, будет интересно :)
Кажется, работает 🙂
Наконец-то сегодня пришел контроллер для водяной развязки в подвале. Поэтому вечером занялся установкой и подключением всего этого дела на скорую руку.
Кабель питания отдельный пока не прокладывал - подключил просто в розетку. Сам контроллер оказался без ethernet (что-то пролюбил я этот момент при покупке), поэтому пока будет просто сидеть на wifi. Благо в подвале он есть. В будущем наверное заменю его на другой, в котором будет ethernet (а может и не заменю 🙂)
С подключением датчика давления тоже возникли интересности. Оказалось, что он на 24 вольта, а блок питания я установил на 12 вольт, чтобы моторы приводов кранов не сгорели. Датчик я в итоге подключил, но скорее всего показания он будет выдавать не верные. Надо или датчик на 12 вольт такой найти, либо поставить еще один блок питания на 24 вольта. А в остальном все более-менее порядок.
После того, как все было подключено, залил базовую прошивку, которую писал последние пару дней. Она пока может самый минимум: отдает показания датчика уровня воды и управляет приводами и подает питание на розетки. Автоматика пока самая простая: если уровень максимальный - отключаем дренажную помпу. Если уровень минимальный - отключаем насос. Если уровень на 10% ниже серединной точки, то открываем кран наполнения бочки. Как только уровень стал на 10% больше середины - перекрываем.
Идея тут простая: пока нет перелива, нужно не допустить переполнение бочки. Из-за того, что поплавок сломался. Или дренажный насос всю ночь качал внезапный паводок. Пока что этой автоматики с головой хватит для начала. Единственное что меня смущает: показание уровня. Сейчас при бочке наполненной под поплавок значение около 1.2 метра. И кажется, что это число не соответствует реальности. Ибо сама бочка мне почти по шею. А я ростом 1.8 метра. Значит, уровень воды должен быть где-то в районе 1.5 метра. Но может, это просто когнитивные искажения. Завтра наверное замерю чем-то подходящим уровень воды в бочке и сравню с датчиком.
А пока - радуемся тому, что еще одна система частично автоматизирована :)
Установил сегодня проводной датчик открытия двери. Не сказал бы, что он почти незаметен. Но думаю, что если покрасить саморезы в белый, то почти не будет выделяться.
Пришлось много кода дописать и переписать, чтобы полноценно его ввести в строй. Но, теперь все работает так, как и со старым Zigbee датчиком.
Еще до кучи дописал автоматизацию на свет в прихожей - теперь он включается так же по датчику присутствия. Работает идеально. С положением датчика я тоже угадал. Он срабатывает четко как только человек заходит в приходую, и не реагирует на людей которые ходят в коридоре.
Схема пока временная, через гошную прокладку. Через время подключу освещение к контроллеру, и он будет напрямую управлять светом.
А пока и так классно. Очень мне там не хватало включения света по присутствию человека.
По доделке гостиной опять пауза - я заболел( Несколько дней просто отлеживался, а со вчера стало немного получше и я начал потихоньку писать код.
На этот раз начал заниматься контроллером в прихожей. Сначала просто хотел прошить в него базовую болванку, чтобы убедиться, что все работает. Но тут начались трудности. Почему-то он ни в какую не прошивался - писал, мол ошибка контрольной суммы и все. Я несколько часов над этим колдовал. В какой-то момент пришла в голову мысль, что надо попробовать прошить его не с макбука, а чего-то другого. Поскольку под рукой особо ничего не было, подключил я его напрямую к orangepi, установил все необходимое на него, и попробовал прошить. И о чудо, все заработало. Оказалось, что в драйвере ch343 на макбуке есть баг. Причем, на других моих контроллерах стоятл ch340, и с ними проблем не было. А тут вот стрельнуло с контроллером от WB.
Потом я писал базовый код хотя бы для того, чтобы начать получать данные с датчиков. Сейчас вот закончил для датчиков в прихожей. И, все работает. Правда заработало оно не сразу. Тоже пришлось попотеть с rs485. К чипе что стоит в этом контроллере используется rts пин, который надо дергать в определенное время, а я не сразу разобрался как его правильно передать в мои библиотеки.
Хотелось бы управление освещением завести, но нужно кабели протягивать, мне кажется завтра я это не затащу. Так что пока я отдыхаю, жду выздоровления и продолжу дошлифовывать гостиную. Надо ее уже добить.
Почти закончил со шлифовкой стен. Были места, которые нужно было еще чуть-чуть подмазать. Завтра дошлифую их и думаю будет норм.
Займусь уборкой (надо пыль пропылесосить с пола и стен) и загрунтую. И можно будет финальные слои наносить.
Все продолжаю заниматься контроллером отопления.
Заметил интересный момент: если клапана всех радиаторов перекрыты, то котел начинает работать как сумашедший. Включается на 10 секунд, отключается на 10 секунд, и так по кругу. Вроде очевидное поведение, когда радиаторы все не работают, да :) Но в то время я об этом что-то не подумал.
Тут еще такой прикольный момент получился, что из-за наличия интегральной части в алгоритме выбора температуры котла, и в алгоритмах управления клапанами, клапана через время почти полностью закрывались, при этом температура на котле продолжала расти.
Поэтому было решено изменить подход. Теперь от каждой комнаты на котел приходит запрос увеличения мощности. Этот запрос не интегрируется по времени, а просто усредняется. Это должно решить проблему с тем что системы влияют друг на друга и еще накапливают влияние.
Так же изменил алгоритм выбора температуры котла по температуре на улице. Решил использовать кривую, которую обычно имеют котлы с погодозависимой автоматикой. Взял аппроксимацию одного товарища. У него конечно другой котел, но разницы тут никакой. Разве что в одном котле алгоритм может быть лучше, в другом - хуже. Надеюсь, что в его котле норм алгоритм :)
Сделал табличку в экселе, где можно меняя параметры наблюдать за изменением кривой. Пока остановился на таких коэффициентах. Думаю придется еще их подтюнить. В идеале мне нужно подобрать коэффициенты так, что в самой холодной комнате температура всегда будет соответствовать уставке, и клапан там будет открыт на 100%. А другие комнаты уже подстроятся и прикроют свои клапана, чтобы там жарко не было.
И еще, я в воскресенье вечером, вчера и сегодня таки занимался шлифовкой стен. Процесс идет конечно очень медленно. Очень неудобные эти три стены полуромбом. Их можно только вручную шлифовать, и то постоянно приходится брать какие-то небольшие кусочки наждачки в руки и подлезать в труднодоступные места.
Но, с ними почти покончено. Завтра дошлифую на них откосы, подмажу, и будет готово. Останется последнюю стену шлифануть, там где будет телик висеть. Но с ней думаю все будет быстро. Там можно будет шлифовалкой быстро пройтись.
Эта неделя чет получилась какой-то чисто айтишной. Только код писал, и чуть-чуть делал по электронике.
Просто в какой-то момент я понял, что семьи сейчас дома нет, и никто мне не мешает развалиться вечером перед теликом, включить сериал на фоне, взять ноут и спокойно лежать и программировать.
В итоге я многое сделал, что планировал сделать уже больше года. Наверное самое крупное и ожидаемое - сбор логов с контроллеров.
Было конечно не так просто, как казалось изначально. Сначала оказалось, что логи в arduino framework сделаны через задницу, и функцией esp_log_set_vprintf их не перехватить. Пришлось делать свою небольшую реализацию. Затем я решил использовать file.d, а не писать с нуля конвертер. Все из-за того, что внутри file.d была обещана интеграция с loki. Поэтому у меня план был написать только парсер логов формата esp32 для file.d, ну а отгрузка в локи должна быть стандартной. Оказалось, что выгрузка в локи сделана там через жопу, и пришлось ее править.
Но в итоге, все заработало. Пока что только контроллер отопления отливает логи в тестовом режиме, в ближайшие дни перетащу и другие контроллеры на это дело. Если кому интересно - пишите в комментах. Если будет спрос - напишу инструкцию, как это сделать.
Еще я перешел на LittleFS, и конфиги и стейты теперь хранятся в виде файлов. Профит тут в том, что разделение на файлы позволяет терять только часть информации. А так же можно если что просто сгрузить файлы конфигов и стейтов к себе, сделать полную очистку флеша и потом залить их обратно.
И еще перевел все контроллеры на хранение времени в int64. Раньше у меня была проблема, что у контроллеров начиналось неожиданное поведение через 43 дня, когда происходило переполнение таймеров. Были варианты, либо модифицировать работу с временем, чтобы переполнение тут не влияло, либо же перейти на int64. Я так подумал, что так и так нужно многое рефакторить. Но в случае перехода на int64 нужно только заменить одну функцию на другую, и константы интервалов умножить на 1000. И в итоге переполнение будет только через 200 тыс лет. Меня устроил вариант что проще, т.е. второй. Итого, проблема 43 дней моим контроллерам больше не страшна, что не может не радовать :)
То что я делал несколько дней назад, когда переставлял клапана на радиаторах, это помогло. Это очень громкое и противное щелканье ушло. Теперь только слышно как шумит вода, да и то, только в определенных положениях клапанов. Это не сильно страшно, но я думаю в будущем и этим заняться. Например, попробовать модифицировать алгоритм так, чтобы минимизировать время нахождения клапанов в состоянии посередине, когда как раз основной шум и идет. Я думаю, что регулируя температуру котла можно добиться того, что хотя бы большинство клапанов будут находиться либо в полностью открытом состоянии, либо в полностью закрытым. Либо сделать приоритет комнат. Например в спальнях стараться не шуметь.
Еще сегодня я установил контактор для насоса теплого пола. И код для управления им написал. Алгоритм тут очень простой: если отключилось отопление и прошло 2 минуты, то отключаем насос. Иначе - включаем.
Ну и меня сегодня чет дальше понесло, поэтому я занялся установкой электроники для автоматизации в прихожей.
Установил датчик температуры теплого пола, а так же датчик климата. В этой комнате он будет без корпуса, и пока я закрепил его вот так. В будущем там будет стоять шкаф, а он будет встроен в один из фасадов. Это временное размещение.
Так же установил датчик присутствия и проложил кабели до щитка. А в щитке прикрутил дин рейку и поставил на нее все модули, что думаю будут в будущем рулить прихожей и гостиной.
Пока еще ничего не подключал, займусь когда этим тоже не понятно. Я хочу таки завтра вернуться обратно в гостиную и доделать стены. Надеюсь завтра до них доберусь :)
Шлифовкой конечно же никто не занялся 😀
После многих правок мой контроллер отопления стал работать почти идеально. Днем сегодня замечательно температура подошла к тем значениям, которые я установил для разных комнат, около них и держалось. Была только одна проблема: ужасный звук от клапанов, когда они проходили какую-то определенную точку.
Звук был такой, как будто по радиатору кто-то долбит перфоратором. Очень громкий и очень противный. Сначала он проявлялся только в кабинете. Потом начался детской и на кухне. В спальне при этом все было в порядке.
А когда я изменил алгоритм управления приводом так, чтобы он зависал в определенной позиции, звук стал постоянный. Сначала я грешил на бракованные клапана. А потом призадумался - а вдруг я их не правильно установил?
На клапанах не было стрелочки с направлением, но в инете те кто жаловался на подобные проблемы, решение у них было простое - клапана у них стояли в обратке. Я отключил у себя отопление ради теста, подождал пока радиаторы остынул, затем включил на максимум и стал ждать с тепловизором, чтобы определить с какой стороны потечет горячая вода.
Оказалось, что на всех радиаторах подвод горячей воды у меня справа. А слева - обратка. Когда я ставил клапаны, я об этом совсем не думал. Стрелочки направления ж нет. И в разных комнатах они стоят с разных сторон, там где мне удобней было. В итоге не правильно стояли клапана на радиаторах в кабинете, детской, на кухне и один в гостиной.
С таким звуком жить точно нельзя, поэтому решено было вечером слить воду из системы отопления и махнуть клапана местами. Заблаговременно купил резинки под американки, чтобы поменять. В прошлый раз помню они были уже не очень, и из-за них текло. Клапаны и краны махнул местами в кабинете, детской и на кухне. В гостиной пока не стал. Там все замотано, да и пока не горит. Потом когда буду ставить обратно - поменяю местами. Придется конечно опять слить воду из отопления, но что поделать. Зато может будет тепло и отопление как бы не будет особо нужно.
На клапане в кабинете кабель пришлось нарастить. Благо место стыковки двух кабелей спряталось за радиатором. В остальных комнатах наращивать ничего не придется - там еще нет штроб и подрозетников, так что я потом сделаю просто сразу с нужных сторон.
Систему заправил водой, была небольшая течь на быстросъеме в кабинете. Там я замотался и забыл поменять резинку. Пришлось отсеть радиатор кабинета, слить с него воду, поменять резинку и собрать обратно. Теперь не течет 🙂
Система в итоге сейчас заполнена, воздух я везде выгнал, нагреваем обратно дом продолжаем дальше тесты. Надеюсь через пару дней покажу вам красивые графики удержания температуры по комнатам :)
Обидно только одно - хотел сегодня стены продолжать шлифовать в гостиной. Даже специально весь день комнату грел электрическим обогревателем, чтобы тепло было (а то там сейчас +10). Но, пришлось резко изменить планы 😭
Ну ничего, завтра займусь этим. Не сказать что я сильно хочу заниматься шлифовкой, но надо уже добить эту комнату, купить диван, повесить туда большой телик и кайфовать там по ночам 😏
Привезли сегодня генератор. Ух он и тяжеленный. Спасибо соседу, помог его дотащить до подвала и вытащить из коробки. Сам бы я наверное хрен это сделал. Разве что опять какие-то приспособления для этого изобретать.
Пока его бросили на маленький свободный пятачок, что удалось найти. Включать его еще не включал. Думаю сначала надо прибраться в подвале, а то места свободного совсем уже нет.
Пошла обкатка
В общем, не стал я его сейчас обкатывать. Проверил что он работает, минут 10 погонял и отключил. Все же нужно выхлоп выводить на улицу. А шланг для этого еще не пришел.
Но, я уже потестил, как его будет слышно в доме. И, никак не слышно. Это радует, можно наверное будет разрешить автоматике запускать его по ночам, в случае необходимости (аккумуляторы подзарядить).
И продолжаю писать софт для отопления. Точнее как писать, на данный момент просто баги пишу и немного меняю алгоритмы.
Уже запустил работу контроллера на 4 комнаты. По сути это все комнаты, в которых я данный момент хоть как-то могу управлять отоплением. Есть еще гостиная, но там сейчас нет радиаторов и регулировать собственно нечего. А остальные комнаты с теплыми полами, поддержку теплых полов я пока не добавлял (да и аппаратно сервоприводов на коллектор еще нет), так что пока без них.
Сейчас эксперементирую, подбираю коэффициенты для PI регулятора. В идеале хочу добиться, чтобы температура в комнате быстро выходила на уставку. И потом было минимум скачков. Пока получается так себе :) Думаю нужно больше данных собрать, чтобы понимать в какую сторону и на сколько нужно крутить.
Но, наконец-то не буду в кабинете днем мерзнуть, когда жарит солнце 🥳
Оно живое :)