Давненько я что-то не писал, а тем временем есть еще один небольшой проектик чисто по коду который я на днях замутил (помимо интеграции с счетчиком). И это... термостат 🙂 Но, не обычный.
Я давно понял, что какие-то универсальные средства автоматизации (HA, nodered и т.п.) мне не подходят. Уйдет кучу времени на то, чтобы стать гуру в них, нащупать все подводные камни. Да и на выходе это выглядеть будет все так себе. Поэтому я сразу для себя решил, что у меня будет свой кастомный сервис, который будет как раз автоматизировать все. А автоматизации я буду писать на настоящем языке программирования - Go. А не эти всякие yaml'ы и прочую шляпу. И в общем, начало положено.
И первым делом я решил заняться автоматизацией регулировкой температуры теплоносителя в котле, чтобы в комнатах поддерживалась установленная температура. Конечно, многие сейчас могут сказать, что мол, это все реализует обычный термостат и городить это было ни к чему. В текущей реализации - да, это все делает обычный термостат. Но в моих планах сделать по настоящему мощную систему, где температура будет регулироваться в каждой комнате, она так же летом сможет включать кондиционеры для достижения требуемой температуры, будет уменьшать температуру на ночь, когда куда-то надолго уезжаем... В общем, кучу всяких кейсов. Все я сейчас не расскажу, да и не упомню. Делать я это все буду когда-то позже, потому что мне нужны будут еще некоторые девайсы которых сейчас нет. А это так, лирическое отступление, чтобы не было ожидаемых коментов.
В общем, я написал свой термостат. Работает он сейчас крайне просто: собирает показания с датчиков температуры по всем комнатам (они уже стоят), вычисляет среднюю температуру в доме, затем, уже через ПИД регулятор вычисляет какую температуру необходимо установить на котле в данный момент, чтобы либо двигаться к достижению заданной температуры, либо поддерживать уже достигнутую.
В ПИД регуляторе я использовал только интегральную составляющую, поскольку система очень инертна и медлительная, поэтому пропорциональная и дифференциальная тут не к месту. Будут слишком большие прыжки по температуре вверх или вниз. А с очень маленькими коэффициентами оно и нафиг не нужно.
И, как видно на скрине выше, ошибка на данный момент составляет 0.2 градуса, что на мой скромный взгляд весьма недурственно.
А на этом графике видно, как мой термостат менял температуру котла последние несколько дней.
Я когда уехал, в доме отопление отключил и он успел остыть до 12-15 градусов. Так что, как я завел свой термостат, он достаточно быстро разогнал котел до 70ти градусов.
Затем, как нужная температура в доме был достигнута, он начал уменьшать температуру на котле.
Ну и сейчас идут некоторые затухающие колебания в плане изменения температуры котла. Все же, от них никуда не деться. Хотя бы потому, что есть еще улица со своей погодой, котора постоянно меняется. А так, в идеальном мире, конечно они б затухли со временем, и установилась бы та самая температура котла, чтобы поддерживать установленную температуру тютелька в тютельку.