Камера у синичек
2 поста
2 поста
Не знаю как у вас, а у меня новогоднее безумие в различных чатиках, группах и т.п.
Поэтому пришлось стряхнуть нафталин с никогда не теряющей актуальности поздравляшки:
Мои дорогие друзья, я хотел бы искренне поздравить вас с наступающими праздниками. Никогда не меняйтесь, оставайтесь всегда такими же! Это пожелание - от всей души, не как эти дурацкие и безликие поздравления, которые народ копирует и пересылает друг другу не читая. Вы - самая лучшая команда по водному поло, с которой мне когда-либо довелось что то видеть ! С новым 2013 годом!
Кому надо, пользуйтесь.
Вчера умер мой дедушка. Он мне во многом заменил отца. Я не особо верующий человек, можно сказать даже анитклерикал, но сейчас хочется, чтобы Дед не "ушел", а был где-то. Пусть не с нами, но...
Во многом благодаря ему я стал таким как я есть. Спасибо.
Дедуль, я тебя люблю.
А известно ли вам, друзья, что в переводе с суахили истошный крик домовенка Кузи "Нафаня! " означает "Я делаю! ".
И не спрашивайте, как я об этом узнал.
Пруф
86 см от уровня горшка или 90 от уровня земли.
Ну и кадр из серии "Как погиб Лысенко" Полез на кактус за помидорами,
На шип розы напоролся
Или "за секунду до оргазма".
Для тех кто не в теме - идет синхронизация дисков raid после отказа одного из дисков.
Привет, друзья. Прошлые посты зашли как-то не очень: тема управления вентиляцией далека от народа, по причине того, что большинству приходится управлять форточкой.
В общем,
Узок круг этих революционеров. Страшно далеки они от народа.
В.И. Ленин
Поэтому сегодня я не буду описывать методы тюнинга вентиляции, а будет более актуальная для большинства тема (ну и менее затратная).
Сегодня мы сделаем биодинамическое (циркадное) освещение, которое подстраивает параметры освещения к естественному.
На русском по теме только "джинса" в стиле "покупайте наших слонов", причем эти "слоны" стоят как ведро героина и ориентированы на корпоративных клиентов.
Поэтому читайте на английском (ну или гуглотранслейт):
Circadian Rhythms (National Institute of General Medical Sciences)
Circadian Rhythms Linked to Aging and Well-Being (PsychologyToday)
Sleep Drive and Your Body Clock (SleepFoundation)
How Nobel Prize Winning Circadian Rhythms Research Benefits a Healthy Pregnancy
Maintaining a daily rhythm is important for mental health, study suggests (CNN)
Итак, кого я убедил, что подстройка освещения под внешние условия это нужно и полезно,
Итак, что нам надо:
1. Лампа, которая может менять яркость и цветовую температуру. Умеющую встраиваться в HomeAssistant. В моем случае это Xiaomi Yeelight 480.
2. Выключатель, который умеет в режим "decoupled" ( когда нажатие на кнопку не приводит к переключению реле). В принципе, можно и подключить лампу напрямую и использовать беспроводной выключатель, но она у меня периодически висла, поэтому удобно ее завести через выключатель/реле и в случае зависания перезапускать по питанию. В моем случае это Xiaomi QBKG03LM Но тут родной китайский шлюз не подойдет (про v3 не уверен), а нужен, подключенный через Zigbee2MQTT или SLS шлюз выключатель.
4. Установленный HomeAssistant и подключенные к нему лампа и выключатель в режиме decoupled.
Если Вы не знаете как это делать, смотрите видео от Алексея Квазиса:
Установка умного дома:
https://www.youtube.com/watch?v=NzJEdK8pOPQ
https://www.youtube.com/watch?v=9xTg7rHhejg
Настройка Zigbee2MQTT
https://www.youtube.com/watch?v=9InA6kc6r9s
https://www.youtube.com/watch?v=DTNJT2ApuGM
SLS шлюз
https://www.youtube.com/watch?v=xgtZazMZNto
https://www.youtube.com/watch?v=70QKdUwIQcw
Работа со светом
https://www.youtube.com/watch?v=IIfG857Ow2E
И так, для начала сделаем лампочке wachdog - она периодически (где-то раз в месяц) вылетает из сети, поэтому мы раз в минуту опрашиваем состояние выключателя лампы и ее. Если лампа недоступна, передергиваем ей питание.
Далее ставим кастомный компонент Circadian Lighting.
Это можно сделать либо через HACS, либо ручками, просто скопировав кастомный компонент из репозитория в папку custom_components на сервере
Далее прописываем в configuration.yaml
Здесь я указал диапазон регулировки цветовой температуры (я хочу чтобы лампа изменяла цвет во всем диапазоне) и частоту обновления - раз в минуту обновлять более чем достаточно.
Описание всех доступных параметров компонента лежит здесь.
И презагружаем HomeAssistant.
Далее в домен switch прописываем выключатель умного освещения.
И в домен automation описываем 2 работу в дневное время биодинамическое освещение :
В ночное время - тупо ночник
И переключатели между ними если лампа включена:
Так-же на двойной клик повесим отключение всяких умных фишек и просто включение яркого света:
Ну и выключение света по одинарному клику, если лампочка горит:
Вот собственно и все. Теперь у нас яркость и цветовая температура регулируются в зависимости от времени суток, времени года, подстраиваясь под естественное освещение.
За сим наступило утро, яркость лампочек вышла на максимум, цветовая температура сместилась к 6500К и Шахрезад прекратил дозволенные речи.
Да, если кто не в курсе. цветовая температура в HA отображается в миредах.
Перевести ее в привычные кельвины совсем несложно надо миллион поделить на миреды.
Т.е. цветовая температура сейчас у меня в комнате Т=1000000/185≈5400К
Итак, в предыдущей серии мы соорудили терморегулятор для вентиляции, который позволяет держать температуру воздуха с точностью до градуса.
Это, конечно хорошо, но делать это ручками как-то не хорошо, не по нашему. Пусть за нас это делает робот.
Вот этот
Но шутки в сторону. Для этих целей в 1900 лохматых годах люди изобрели ПИД-регулятор.
ДИСКЛАЙМЕР.
Далее будут страшные вещи. Ни каких красивостей и тонкого внутреннего мира. Только ТАУ (Теория автоматического управления) и чуток матана (Математический анализ).
Картинка для устрашения.
Читаете дальше? Ну что ж. Я предупредил. На картинке выше нарисован ПИД регулятор во всей красе.
Для тех, кто не изучал Теорию Автоматического Управления (ТАУ) поясню. Он получает на вход сигнал рассогласования, и выдает управляющий сигнал, который собирается из пропорциональной компоненты P, т.е. ошибки умноженной на некоторое число. Компоненты I - интегралу ошибки за некий промежуток времени, и компоненты D - производной ошибки опять же помноженной на некий коэффициент.
А нафига оно вообще?
П компонента вырабатывает сигнал препятствующий отклонению от задания. Но при П управлении у нас всегда будет ошибка.
И компонента эту ошибку помогает устранить, но вот беда - тут возникают колебания.
Д компонента - прогнозирует изменения ошибки и нивелирует запаздывание управления.
Итак, с теорией разобрались, начинаем
Для этого даже сделан кастомный компонент https://github.com/fabiannydegger/custom_components. Одна проблема - он у меня при запуске настройки ругался на деление на ноль.
Ну, что-ж будем лепить ручками.
Итак, для простоты пусть мы управляем по средней температуре в жилых комнатах
далее заводим компонент типа input number для формирования задания.
Вычисляем ошибку
А для расчета интегральной и дифференциальной компонент нам надо знать время, за которое мы будем их считать. Для этого есть множество методов. Но я воспользуюсь не самым оптимальным, но довольно простым методом - Циглера-Никольса.
Суть в чем. Мы делаем П регулятор и начинаем задирать коэффициент пропорциональности до тех пор пока не добьемся колебаний. Измеряем период колебаний и коэффициент при котором нас начало колбасить.
В моем случае Кu=40 и период колебаний Tu=2 часа
Теперь понятно почему кастомный компонент ругался - он то надеялся увидеть колебания в течении 15 минут.
Далее рассчитываем компоненты
Здесь кроется одна подлая штука. Установка не способна выдать температуру ниже температуры чистого притока и выше температуры рекуперации (мы их вычислили в 1-й части нашего сериала), что бы ПИД регулятор себе не фантазировал. И тут кроется 1 засада. Пока задание от регулятора вне пределов регулировки установки, интегратор нам такого наинтегрирует, что колебаться будем долго и несчастливо. Поэтому при входе в насыщение, мы обнулим интегратору ошибку.
Далее как говорил мой препод по матану "Если мужчина хочет расслабиться, он должен сесть и поинтегрировать".
Но особенность интегратора в homeassistant не позволяет взять определенный интеграл за прошедший час. Поэтому воспользуемся следующим свойством интеграла:
Т.е чтобы взять интеграл некой функции нам не нужно интегрировать, а можно просто посчитать среднее и умножить на время интегрирования
Расслабились интегрируя. Теперь напряженно продифференцируем
Все, собираем расчет ПИД регулятора.
Чтобы регулятор не выставлял бредовые задания, отфильтруем их сначала по расчетным характеристикам притока, а потом пределами которые выставили в настройках терморегулятора
В качестве начального задания (чтобы не отрабатывать все регулирование за счет ошибки) я беру и считаю медианное значение уставки за 12 часов.
И предпоследний акт марлезонского балета - выставить задание в терморегулятор вентустановки
Теперь нам надо сделать проверку на то, что при работе установки не произойдет ситуация требующая смены режима (скажем, при охлаждении резко не понизится температура за бортом) или регулятор решит резко сменить задание.
Все, грубая настройка регулятора закончена. В следующей серии будет fine tuning имеющейся конструкции для более точного и плавного регулирования.
За сим наступило утро и Шахрезад прекратил дозволенные речи.
Привет друзья. Давненько я не пилил посты про умный дом. Но я не бездействовал, а потихонечку пилил всякое разное.
Я наконец почти завершил проект автоматизации приточной установки.
Про использование рекуператора в квартире я писал 2 поста:
Умный дом в котором я живу. Вентиляция. Муки выбора и проектирования
Умный дом в котором я живу. Вентиляция. КПД рекуператоров
Краткое содержание предыдущих серий.
Есть рекуперативная вентустановка установленная в 3-х комнатной квартире. Была прикручена простенькая логика. Включать при превышении порога CO2, выключать когда воздух снова чист.
Но вентустановкой можно еще регулировать температуру. Этим мы и займемся.
Основная задача - чтобы температура в помещении регулировалась максимально быстро и без скачков.
Ну как-то так:
Итак, вентустановка у меня Турков 350, чуть доработанный напильником, но не суть. Он умеет общаться только по modbus.
Варианты: есть множество USB -Modbus конвертеров, которые можно воткнуть в сервер, на этапе ремонта я не озаботился прокладкой кабеля, поэтому вариант отпал.
Был вариант собрать на 1-й малинке из стола сервачок, который будет транслировать в mqtt. Но в итоге остановился на конверторе RS485 в Wi-Fi С гордым названием USR-W600.
Покупал здесь.
Ну, что, провода подцепили: А к А B к В, подали питание, Подключаем к сети: подключаемтся точке доступа USR-W600, в браузере идем по адресу 10.10.100.254, вводим логин-пароль admin. Переключаем язык на английский (фанаты могут оставить китайский)
В закладке WiFi Setting настраиваем подключение к родной сети;
STA mode
И идем во вкладку Trans Setting и прописываем параметры работы с модбасом
И то же самое делаем в кофиге home assistant
Перезапускаемся, и вуаля. установка может общаться с умным домом. Открываем инструкцию и по ней описываем сенсоры в домене sensors
В скриптах прописываем действия
Теперь начинаем собирать термостат. Приточка к сожалению не позволяет плавно регулировать скорость моторов через modbus, поэтому придется изобретать велосипед. Из 3-х доступных нам пресетов установки (которые можно выставить в контроллере):
приток: п=100% в=0%
баланс: п=100% в=33% (именно при таком раскладе температура приточного канала будет средним между притоком и рекуперацией)
рекуперация: п=100%, в=100%
Итак, у нас установка может "греть" воздух в квартире, подавая подогретый воздух и охлаждать его, подавая более прохладный воздух.
Эх, не хотел я затрагивать пока тему расчетных температур да придется коснуться.
Итак, в посте Умный дом в котором я живу. Вентиляция. КПД рекуператоров
мы нашли, что кпд рекуператора можно вычислить по формуле
КПД= Qотд/Qрек= (tп-tу)/(tв -tу)
tу - температура уличного воздуха
tв - температура воздуха подаваемого из квартиры на рекуператор
tп - температура воздуха в приточном канале.
Было экспериментально установлено, что во всех режимах "КПД" практически постоянен. Со временем он незначительно меняется из-за загрязнения фильтров.
КПД я взял в кавычки, т.к. этот параметр является КПД только при равенстве притока и выхлопа. Так что строго говоря, это некоторая передаточная функция.
Соответственно если мы знаем температуру вытяжного воздуха и температуру на улице, можно вычислить установившуюся температуру воздуха в любом режиме.
соответсвенно в сенсорах calc_pritok, calc_balance, calc_recup лежат температуры в установившихся режимах.
Собираем виртуальный выключатель в домене switch. Он будет у нас переключать установку между нагревом и охлаждением
Ну вот и все. у нас все готово для создания термостата вент установки.
Ну вот и все. Теперь мы можем заставить приточку держать температуру приточного канала с точностью до 1градуса.
Вопрос автоматического выбора температуры уставки я опишу в следующей части. Будет много интересного: синтез ПИД регулятора, борьба с интегральным насыщением, и большим временем выдачи сигналов датчиками.
За сим наступило утро и Шахрезад прекратил дозволенные речи.
ЗЫ одна из главных заказчиц довольна.