↑ К новым записям

9 марта 2024

Давненько я что-то не писал, а тем временем есть еще один небольшой проектик чисто по коду который я на днях замутил (помимо интеграции с счетчиком). И это... термостат 🙂 Но, не обычный.

Я давно понял, что какие-то универсальные средства автоматизации (HA, nodered и т.п.) мне не подходят. Уйдет кучу времени на то, чтобы стать гуру в них, нащупать все подводные камни. Да и на выходе это выглядеть будет все так себе. Поэтому я сразу для себя решил, что у меня будет свой кастомный сервис, который будет как раз автоматизировать все. А автоматизации я буду писать на настоящем языке программирования - Go. А не эти всякие yaml'ы и прочую шляпу. И в общем, начало положено.

И первым делом я решил заняться автоматизацией регулировкой температуры теплоносителя в котле, чтобы в комнатах поддерживалась установленная температура. Конечно, многие сейчас могут сказать, что мол, это все реализует обычный термостат и городить это было ни к чему. В текущей реализации - да, это все делает обычный термостат. Но в моих планах сделать по настоящему мощную систему, где температура будет регулироваться в каждой комнате, она так же летом сможет включать кондиционеры для достижения требуемой температуры, будет уменьшать температуру на ночь, когда куда-то надолго уезжаем... В общем, кучу всяких кейсов. Все я сейчас не расскажу, да и не упомню. Делать я это все буду когда-то позже, потому что мне нужны будут еще некоторые девайсы которых сейчас нет. А это так, лирическое отступление, чтобы не было ожидаемых коментов.

В общем, я написал свой термостат. Работает он сейчас крайне просто: собирает показания с датчиков температуры по всем комнатам (они уже стоят), вычисляет среднюю температуру в доме, затем, уже через ПИД регулятор вычисляет какую температуру необходимо установить на котле в данный момент, чтобы либо двигаться к достижению заданной температуры, либо поддерживать уже достигнутую.

В ПИД регуляторе я использовал только интегральную составляющую, поскольку система очень инертна и медлительная, поэтому пропорциональная и дифференциальная тут не к месту. Будут слишком большие прыжки по температуре вверх или вниз. А с очень маленькими коэффициентами оно и нафиг не нужно.

И, как видно на скрине выше, ошибка на данный момент составляет 0.2 градуса, что на мой скромный взгляд весьма недурственно.

А на этом графике видно, как мой термостат менял температуру котла последние несколько дней.

Я когда уехал, в доме отопление отключил и он успел остыть до 12-15 градусов. Так что, как я завел свой термостат, он достаточно быстро разогнал котел до 70ти градусов.

Затем, как нужная температура в доме был достигнута, он начал уменьшать температуру на котле.

Ну и сейчас идут некоторые затухающие колебания в плане изменения температуры котла. Все же, от них никуда не деться. Хотя бы потому, что есть еще улица со своей погодой, котора постоянно меняется. А так, в идеальном мире, конечно они б затухли со временем, и установилась бы та самая температура котла, чтобы поддерживать установленную температуру тютелька в тютельку.

Кстати еще большой плюс моего термостата: я реализовал петлю гистерезиса.

Как видно на скрине выше, когда температура высокая, котел работает постоянно используя просто модуляцию для поддержания нужной температуры теплоносителя. Но, на небольших температурах он уже работает на минимальной своей мощности, и все равно перегревает теплоноситель, из-за чего постоянно отключается. А потом быстро остывает на 10 градусов и включается опять. Я уже рассказывал про эту проблему раньше.

Конечно, в котле есть свои настройки гистерезиса. Но, поскольку я сейчас нахожусь за 500 км от котла, в нем я эти значения реализовать не смогу. Зато, могу реализовать такое поведение удаленно на стороне своего кода. И, я его реализовал. Сейчас оно работает не идеально, иногда бывают моменты когда врубается гистерезис котла (это в целом даже по скринам видно). Но, когда отрабатывает мой алгоритм, то котел между включениями примерно около часа проводит в отключенном состоянии, что уже вполне себе приемлемо и не так страшно за судьбу клапанов, которые могут выйти из строя через год или два.

Сейчас у текущей реализации термостата есть некоторые проблемы:

1. Он не сохраняет свое состояние в случае перезапуска. А надо бы. Дело в том, что после запуска термостат не сразу имеет представление о том, какая температура в среднем по дому. Потому что она не запрашивается с датчиков, а они через mqtt сообщают ее. А они могут сообщить в интервале от 20 минут и до часу. И вот примерно термостат в районе часа после своего запуска не имеет полной картины того, какая погода в доме. Что влияет на его решения. Ну и по ПИД регулятору тоже было б неплохо хранить ошибку. Ведь, интегральная часть она не моментальной вычисляется, она накапливается со временем. И после перезапуска естественно приходится ее заного накапливать, чтобы начать формировать адекватный управляющий сигнал, а на это может потребоваться несколько часов.

2. Сам регулятор. Нужно в будущем произвести более тонкую настройку I коэффициента, исходя из накопленной статистики. Так же, сейчас вычисление управляющего сигнала происходит раз в 20 минут (первоначально было раз в минуту), я думаю поднять это время до часу. Потому что данные с датчиков все равно в среднем раз в час приходят + требуется еще время на нагрев воздуха, а нет смысла копить ошибку на старых данных.

3. Интеграция с HA. Да, сейчас термостат никак не управляется через HA, и чтобы изменить температуру которую нужно поддерживать, нужно менять это число в коде и перекомпилировать и перезапускать сервис на сервере. Что приведет к проблемам из-за пункта 1 🙂

4. Баги 🙂 Как минимум реализация моей петли гистерезиса содержит какие-то проблемы, из-за чего не всегда идет все как планировалось, может еще где-то что-то есть, но вскроется это в будущем.

Пока самое насущное это наверно первый пункт, но его и больше всего не хочется делать. Может через несколько дней отдохну от кодинга, на меня снизойдет озарение, и я по быстрому наклепаю кода стораджа для постгри. А потом думаю заняться третьим пунктом. Все же в конце следующей недели я опять поеду на дом, и хочется иметь возможность менять температуру в доме без перекомпиляции и перезапуска сервиса.

А с счетчиком все отлично. Я сделал отдельную панельку где вывел данные с счетчика которые меня интересуют больше всего, есть графики по их изменению. С панелькой энергии тоже все отлично. Она конечно станет более интересной когда мы заедем в дом, когда появится ИБП, солнечная панель на крыше... Упс, что-то я сильно далеко забегаю и спойлерлю вам тут :)

5 марта 2024

Вчера под вечер уже вспомнил, что надо бы написать в Тепловодохран (производители моего счетчика), чтобы они мне инфы специфичной по нему прислали. Ну а поскольку надежды на то, что они ответят, и даже если ответят, то не пошлют меня, было мало, принялся реверсить их приложение для конфигурирование счетчиков. Благо оно написано на C# и декомпилируется на изи. В общем, ночью нашел все что меня интересовало, делать уже начал с утра. А в 9 утра они мне таки ответили и прислали спецификацию :) Может я какой-то полезной инфы из нее почерпну еще, ну а пока, все основные параметры которые меня интересовали я выцепил и сделал проброс их в Home Assistant. Выглядит это сейчас как-то так. Естественно есть история по каждому параметру. Едиственное что меня смущает, это то, что реактивная мощность постоянно скачет то с десятков ВАр, то десятков тысяч. Не знаю, может это нормально, надо почитать будет. Ну а Общая мощность в целом выглядит норм.

4 марта 2024

Бахнул вчера интеграцию с HA для своего софта который собирает показания с счетчиков. И, все работает.

Я настроил еще панельку энергия в HA, теперь там потихоньку собирается инфа и можно смотреть графики всякие.

Когда соберется инфы поболее, где-то за неделю, покажу еще раз, должно выглядеть более красиво.

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

Сегодня позвонили из оконной компании, мол дверь в подвал готова, надо оплатить вторую половину. Я оплатил, сказали что свяжется со мной мастер. Но, я не думал что так быстро :)

Замерщик говорил, что у них очередь на установку, мол, нужно будет пару недель подождать после готовности, а мне мастер звонит через 5 минут и такой: завтра приедем дверь ставить. Конечно, такой вариант не подходит, поэтому договорились, что в следующий мой приезд я им наберу и они приедут и установят дверь. Надо будет ток до вызова их заштукатурить проем, чтобы дыра не была такая большая. Хотел штукатурить в эту поездку, но, не срослось. Да и погода холодная была, где-то искать теплопушки и греть штукатурку тоже не хотелось.

2 марта 2024

Ну все, текущая поездка подошла к концу. Встретится с домом по классике через 2 недели :)

1 марта 2024

Вчера не писал, потому что по сути нифига не делал.

Разве что я доделал розетки в прихожей, и убрался. Уже не стал начинать делать гостиную. Решил так, потому что очень устал. Уже ощущаю, что из-за усталости начинаю косячить, типо забывать отключать автоматы и потом получать бодрящие удары током, которые тонко намекают на то, что пора отдохнуть. Чем я вчера и занимался.

Сегодня тоже особо ничего не делал. Но, что-то я таки делал :)

В общем, я решил наконец-то подключить счетчик к серваку, потому что завтра уезжать, минимум 2 недели буду сидеть в Волгодонске, как раз можно было б пока пописать софт для снятия показаний с счетчика. Благо я софт могу удаленно запускать для тестов, главное ток соединение чтоб было.

Подключил счетчик к серваку по протоколу RS-485, и решил по-быстрому написать софтину, чтобы убедиться, что соединение корректное и я смогу потом разрабатывать софт. Иии у меня несколько часов не удавалось получить ответа от счетчика. В какой-то момент я понял, что то что я отправляю идеальное, и ошибок больше нет (я сравнивал с примером от старой документации к протоколу), и тогда стало понятно, что проблема хардварная.

Проверил подключение витой пары, все верно было. И потом я внезапно подумал, что а вдруг на счетчик нужно внешнее питание подавать? Внезапно, да? Но так и оказалось. Конкретно моя версия счетчика не имеет встроенный преобразователь для питания низковольтовой схемы, и ей нужно внешнее питание. Странная херня на самом деле, ведь как-то ж та схема что обслуживает экранчик и ведет статистику питается, почему нельзя было и на остальную схему это распространить? Но, видимо я чего-то не понимаю…

В общем, я бахнул на него внешний блок питания (на фото выше его должно быть видно), и счетчик тут же начал отвечать на мои запросы.

Потом нужно будет намутить какой-нибудь небольшой блок питания на Дин рейку и рядом с счетчиком поставить.

Ну а потом начал доводить свой софт до какой-то кондиции. Стало интересно все же считать с него попадания. Можно было б это отложить и на потом, но как оказалось, на те данные которые мне нужны документации совсем нет, поэтому опять реверс инжиринг и мне нужно было иметь счетчик под боком, чтобы снимать с него показания.

И буквально за какой-то час нашел данные которые хранят в себе показания по тарифу 1 и тарифу 2, ну а сложив их можно получить суммарное потребление. То что надо, по сути необходимый для меня минимум.

Теперь можно будет спокойно заниматься причесыванием кода, оформлением интеграции с home assistant для отправки туда данных и чтоб можно было графики красивые рисовать. Ну и автоматически отправлять показания 25го числа в Россети.

Как закончил с счетчиком, убрал мусор. Осталось сложить инструменты (чем я сейчас займусь), сложить вещи, искупаюсь и спать пойду. Ведь завтра ехать обратно. А я уже так соскучился за своими, что мне кажется, что опять в 3 утра сам проснусь и поеду, ибо уснуть не смогу.

Какие-то итоги этой поездки и планы на будущее я наверное подведу уже как вернусь в Волгодонск, сейчас пока что-то совсем не охота (даже вот сейчас через силу печатаю).

29 февраля 2024

Сегодня делал проводку в коридоре и освещение в ванной. Розетки в ванной решил тоже пока не делать, потому что не выбрали пока плитку и нет ее раскладки. И я боюсь, что розетки могут попасть на шов плитки, и придется потом переставлять. Так что лучше потом сразу сделаю уже по плитке. В итоге я сделал освещение в коридоре и ванной, и одну группу розеток в прихожей, потому что…

Потому что меня сегодня знатно дернуло током когда собирал эту коробку :) короч, я забыл выключить автомат розеток. Точнее я думал, что он был отключен, потому что линия розеток с прихожей связана с линией в коридоре. А проверить я чет забыл, поспешил и вот…

В общем, дернуло меня когда одной рукой взялся за оголенный ноль, а другой за фазу. Причем, до этого я их зачищал, брался рукой за фазу и не било (видимо стремянка хорошо изолирует от земли). Дернуло раз 3 где-то прежде чем я отпустил руки, в ахуе аж крикнул. Но, вроде живой.

Сначала было норм, и я собрал коробку и начал собирать розетки, но потом что-то стало плоховато и я пошел полежать. Сейчас все норм, но, розетки доделывать буду уже завтра, ну и убираться.

Вообще у меня на все розетки стоят узо. Включая и эти. Но, оно не сработало. Почему? Да потому что узо обнаруживает только дифференциальные токи. Т.е. если ток течет по фазе, но не течет по нулю, а например уходит на землю или другой ноль, то оно сработает. А если взяться руками за фазу и ноль, то тут получается обычная нормальная цепь, и тут УЗО бессильно. Так что, имейте ввиду - от двух пальцев в розетку узо не защищает.

28 февраля 2024

Сегодня опять почти закончил кухню. Почему опять почти? Потому что не проложил витую пару)) Зато скоммутировал и установил все розетки для текущего этапа. На стороне где будет кухонный гарнитур буду делать уже когда понятно будет, какая будет кухня. Сейчас их лепить наобум а потом переносить совсем не хочется. Потом занялся уборкой. Пропылесосил весь пол, перемыл всю посуду, стер пыль со всего где она накопилась а так же протер столы. Теперь там вполне себе уютно и не стремно находится.

Затем я почти сделал детскую. Почти опять потому что витую пару не протянул) розетки делать не стал потому что опять же не понятно какой она будет, заниматься ей будет через год или два, и сейчас делать розетки смысла большого нет. Так что сделал в ней только освещение и достаточно быстро с ней разобрался :)

Сегодня кстати, когда нужно было вмазать один подрозетник, остался лишний алебастр и я решил им попробовать одну штробу заделать. Вышло вроде норм, и сам процесс мне понравился, думаю мне зайдет когда дело дойдет до заделки штроб :)

А вот на завтра сложно что-то планировать. По хорошему нужно заняться кабинетом, но, для начала нужно из него убрать весь гипсокартон.

Затем нужно будет с импровизировать с будущими стенами второго санузла. Да и чертежей каких-то у меня нет, где что должно быть.

Поэтому думаю, может пропустить кабинет и заняться ванной. А кабинет оставить уже на следующий мой приезд, когда стены буду возводить. Все равно ж там и в стенах новых нужно будет делать выключатель. Так что, наверное так и поступлю.

Прокладку витой пары я наверное оставлю на следующий свой приезд. Сейчас я с ней много проебусь, а пользоваться все равно пока не буду. Да и розеток нет, осталась всего одна, а их нужно еще штук 8 минимум.

Поэтому выходит, что мне в идеале нужно успеть до субботы слетать электрическую проводку еще в 3х комнатах (ванная, гостиная и прихожая). А в идеале даже к вечеру пятницы хотелось бы все закончить, чтобы уехать поскорей. Все же по своим уже сильно соскучился. Но реальность такова, что мне хотя бы к воскресенью это все окончить успеть.

Так что, придется напрячься по максимуму и все же добить электрику, не охота оставлять это все на потом.

загрузка…