А у нас опять авария на электросетях. Уже больше 2х часов без электричества.
Аккумуляторы пока держатся. Но если к утру не починят - видимо придется заняться временным подключением генератора.

История отделки одного домика на 100 квадратов в Ессентуках
А у нас опять авария на электросетях. Уже больше 2х часов без электричества.
Аккумуляторы пока держатся. Но если к утру не починят - видимо придется заняться временным подключением генератора.
Лежу я, не могу уснуть чет. Думаю всякое об этих авариях. И пришла в голову мысль, что нужно в контроллеры добавлять аварийный режим.
При его включении, освещение будет переходить в режим пониженной яркости (для экономии заряда аккумуляторов). Так же, думаю можно было б все блоки питания освещения повесить на реле, и в случае аварийного режима отключать их полностью от сети, если освещение не включено. Так же можно было б отключать их когда дома никого нет. Для экономии.
Блоки питания имеют ток холостого хода, и хоть потребление отдельного блока питания небольшое, когда их много, набегают уже приличные цифры потребления.
В этот раз хватило больше чем на 8 часов. Ночных правда 😀 Похоже уже совсем скоро отключится 😭
Электричество так и не дали… Сварганил на скорую руку подключение генератора. Работает. Но страшно чет ппц :)
Генератор: итоги.
В 6 вечера примерно дали электричество, обещают больше не отключать. Генератор проработал примерно с 12ти часов дня, и почти до самого финального включения вечером.
С учетом того, что все было собрано на скорую руку меньше чем за час, оно все время пыталось развалиться. Особенно часто отваливалась труба. Я не того диаметра муфту для крепления к выхлопу заказал, из-за чего она постоянно болталась и слетала. Приходилось глушить генератор, ждать пока это все хоть немного остынет и крепить по новой.
Еще пару раз заканчивался бензин. Электрики обещали, что вот совсем скоро все заработает, и я много не заливал. Где-то по 1.5 литра. Которые генератор сжирал меньше чем за час. В последний заход психанул и залил литров 5 где-то. Их уже хватило до самого включения 🙂
Глухозаземленная нейтраль из говна и палок показала себя хорошо. Только в самом генераторе есть ньюанс: у него частота в районе 54 Гц на выходе. Под нагрузкой она немного проседает. И вот пока генератор нагружен, и частота меньше 54х Гц, ИБП нормально работал и заряжал аккумуляторы. Но как только основная нагрузка на сеть падала, частота поднималась, ИБП тут же переходил в защиту и отключался от сети. Быстро разряжая непосильно накопленный заряд и вырубаясь.
Так же были и некоторые потери. Немного поплавились пластиковые трубы вентиляции. Но это не страшно, они стоят копье. А вот что более жалко - сдох вентилятор вентиляции подвала( Я его включил, чтобы он вытягивал выхлоп на улицу. Похоже он перегрелся и сгорел. Я его потом конечно же разберу, может получится его воскресить, но скорее всего там прогорела обмотка и он уже все, больше не жилец. Еще в кабинете оказалось, что помер модуль WB-LED. Перестал почему-то откликаться по RS485. Есть у меня теория, что в нем запоролась прошивка. Если очередное из таких отключений попало на момент когда мой контроллер обновлял настройки, то данные в EEPROM могли побиться. Когда-нибудь потом я попробую его восстановить.
Итого, генератор годная штука. Но нужно устанавливать его не тяп ляп, а по нормальному. С нормальным выхлопом на улицу, нормальным подключением к электрической сети дома. И заняться этим нужно как можно скорее. Если новая муфта придет до выходных, то думаю что на них этим и займусь. Не хочется потом в очередную аварию опять что-то городить.
Ударился в моделирование.
Спроектировал подвесной шкаф в кабинет. Вроде норм смотрится :)
Конечно он не будет открытым, будут дверцы-фасады. Отрисовывать их лень стало. Меня скорее интересовали размеры, чтобы все влезло.
Оказалось, у нас очень хорошее давление по ночам. В целом я и раньше это замечал, но теперь есть метрики на этот счет.
Я думал о алгоритме, мол если давление в водопроводе городском больше 3.5 бар, то отключаем насос, открываем байпасс и пользуемся им напрямую, чтобы электричество экономить. Только один косяк: норм давление только ночью, а вода ночью особо и не нужна как бы :)
Сделал так же наброски шкафов в прихожую. Думаю примерно так оно и будет выглядеть.
Две полки внизу, где обувь, они будут выдвижные. Они под повседневную обувь. Напротив, под щитками тоже будет полка под обувь. Но уже для хранения. Где штанга - там будет висеть верхняя одежда.
Тут отрисовка чисто каркаса. Думаю делать его из гипсокартона. Наверное сейчас это самый надежный, дешевый и безгемморойный вариант. Будет конечно еще миллион всяких полочек и шкафчиков. Но их не отрисовываю потому что все десять раз еще переиграется, знаю я нас. Да и для постройки каркаса сейчас кучей полочек заморачиваться смысла нет.
Да чтож такое, опять доделка гостиной откладывается(
Но зато я успел еще больше кода написать для контроллера водяной развязки. Теперь наконец-то снимаются данные с счетчика, который стоит чисто на потребление дома. И благодаря ему я узнал, что кран на подачу оказывается полностью не закрывается, и все время капает мааааленькая струйка. Есть от нее плюсы - счетчики ее не видят, при этом вода потихоньку набирается в бочку. Сколько такой халявной воды натекает я смогу узнать в ближайшие дни. Только сегодня написал отчетик, который собирает данные по этому поводу и пишет. Но нужно подождать, пока собственно данные соберутся и отчет начнет формироваться.
По датчику давления я нашел на него даташит. Оказалось, что хоть он и на 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 минуты, то отключаем насос. Иначе - включаем.
Ну и меня сегодня чет дальше понесло, поэтому я занялся установкой электроники для автоматизации в прихожей.
Установил датчик температуры теплого пола, а так же датчик климата. В этой комнате он будет без корпуса, и пока я закрепил его вот так. В будущем там будет стоять шкаф, а он будет встроен в один из фасадов. Это временное размещение.
Так же установил датчик присутствия и проложил кабели до щитка. А в щитке прикрутил дин рейку и поставил на нее все модули, что думаю будут в будущем рулить прихожей и гостиной.
Пока еще ничего не подключал, займусь когда этим тоже не понятно. Я хочу таки завтра вернуться обратно в гостиную и доделать стены. Надеюсь завтра до них доберусь :)