[Из песочницы] Автоматика для дома своими руками
Моя статья будет полезна тем, кто только задумывается над подобного рода системой, поможет определиться делать ли самому и ориентирована в основном на энтузиастов-колхозников. Изначально пишу «автоматика», а не умный дом, потому что на данном этапе умных функций в моей системе управления нет, сейчас стояла задача в сборе данных и управлении устройствами. Всё должно измениться в будущем, когда появятся алгоритмы которые, и сделают дом умным. С моей точки зрения, если вы можете включать свет со смартфона, то это не делает ваш дом умным. Умным он становиться когда у вас написаны сценарии, которые помогают вам, облегчают контроль за домом и делают рутинные вещи незаметными для вас. Например, включить свет на крыльце когда уровень освещённости ниже какого-либо порога и выключить в два ночи, не включать полив если сегодня обещают осадки с вероятностью больше 60 процентов, если появилось движение в комнате то включить подсветку лестницы и т.д. И только в этом случае он становиться «умным».
Немного лирики. Всегда хотелось иметь дом за городом, долго на это решался, потому что стройка это не только большие финансовые затраты, но и большие затраты вашего личного времени, которое можно посвятить любимым хобби, семье. Благо что одно из них у меня, это как раз разработка всяких ненужных устройств. Где-то еще на начальном этапе я для себя решил что это может быть интересно и выбрав участок я начал строить планы. Сначала пришлось конечно много времени уделить вопросам связанным с самой стройкой, таким как проект, поиск строителей и всяким другим хлопотам. Но потом, когда коробка была готова, подошло время задуматься и о системе автоматизации дома, это то что мне нравится и что хотелось сделать, ну просто странно программисту вставать с дивана что бы выключить свет в ванной.
Начались изучения того что есть на рынке и что можно купить и доколхозить самому. Как оказалось рынок вполне насыщен множеством решений, но в них то того не хватало, то другого, и нигде не было целостного решения которое меня бы удовлетворило (нет конечно решения были, но стоимость в 20т. уе. меня не удовлетворяла). Например у Шнайдера есть неплохое решение базирующееся KNX, на котором можно построить управление освещением, ролетами и вентиляцией, но интегрировать в систему что-нибудь кроме стандартных элементов практически невозможно, плюс о вэбинтерфейсе и управлении через гугл хоум можно забыть, а об автоматизации сценариев вообще говорить не приходиться. С другой стороны на рынке хватает решений, которые и беспроводные, и дружат с гуглом и апликейшины для них уже готовы, но у них есть масса нюансов которые отодвигают такие решения на задний план. Например сложность одновременного управления освещением с обычных выключателей и с апликейшена, часто это вообще невозможно или если и возможно то проблемно реализовать проходные выключатели, а хотелось бы иметь дом в котором всё работает и без умного дома на случай его крэша. Плюс мне не очень хотелось обвешивать дом массой отдельных коробочек, до сих пор не понимаю почему бы датчик движения, угарного газа и температуры не поместить в один корпус, пусть он даже и будет стоить дороже, зато мне не прийдется весь потолок увешивать какими-то девайсами, да еще и менять в них батарейки каждые два года.
В общем, со словами, ну «тыж программист», я начал думать как бы я это заколхозил сам и что для этого нужно. Продумывая разные варианты применения системы стало понятно что перед тем как что-то делать надо крепко всё продумать (это кажется очевидным, но нет, иногда хочется что-то сделать прям сейчас) потому что положив проводку в штробы и заштукатурив её, обратного пути уже нет.
Сформировав список желаний у меня получилась вот такие подсистемы:
- освещение в доме
- ролеты
- управление заслонками вентиляции
- датчики движения, датчики освещенности, СО и температуры в комнатах
- автоматический полив
- датчики движения по территории участка
- резервное питание
Изначально хотелось всё собрать на покупных устройствах и как-то свести их в единую систему, это казалось самым оптимальным вариантом по затратам времени/финансов и надежности системы. Мысли перескакивали с одной подсистемы на другую, но никакого стройного решения не было сформулировано ни для одной из подсистем, проходили месяцы, но решение не сформировывалось плюс еще и сама стройка отвлекала, да ещё и зима началась (а это время гор и сноуборда и это без всяких компромиссов, тогда это еще так было). Пришлось ограничить полет мысли и заставлять себя прорабатывать одну подсистему за другой, началось всё с освещения.
Давайте вкратце рассмотрим каждую.
Освещение. Из вводных было то что свет должен работать одновременно и от выключателей и от системы управления (далее САУ), плюс должна быть возможность сделать проходные выключатели. Для этого САУ как минимум должна знать включен он сейчас или нет. Было несколько идей как это реализовать, но остановился я на этой схеме — кнопочный выключатель — импульсное реле (Elko MR-41) — дискретный выход — дискретный вход. Дискретный выход параллелим с кнопочным выключателем, НР контакт реле на лампочку, НЗ — на дискретный вход для получения статуса.
Из этого всего следовало что к каждой точке освещения, которая должна управляться и с выключателя и с САУ, должен идти свой провод от щитка, аналогично с и выключателями. Схема проводки в скечапе очень помогла осознать масштабы бедствия, проводов получалось много, но это не должно испугать человека решившегося на умный дом. Рекомендую не ленится и таки делать эту схему, не обязательно в скечапе, в будущем эта работа сэкономит вам кучу времени и поможет даже через годы, когда нужно будет повесить картину и вы будете гадать есть там провод или нет.
Ролеты. Отличие от света в том что нагрузка в этом случае это не лампочка, а электродвигатель, со всеми отсюда вытекающими. Так же как с освещением хотелось иметь управление и с механического выключателя так и с системы управления. Поэтому схема получилась такая: дискретный выход — контактор и в параллель кнопочный выключатель для каждого направления вращения.
Вентиляция. Тут все просто, её я отдал на откуп САУ, и не предусмотрел никакого другого управления, навряд ли я когда-нибудь захочу открыть/закрыть вентканалы не с апликейшена. Так что схема — два дискретных выхода — простенький привод Belimo LM24-T с ebay за 25$ без обратной связи.
Вот так выглядит привод смонтированный на вентиляционной заслонке:
Датчики движения, датчики освещенности, СО и температуры в комнатах. На рынке сейчас валом таких девайсов, но все с проприетарным интерфейсом и подключить их в свою доморощенную систему достаточно сложно, да и плюс упомянутая уже проблема с тем что каждый датчик пытаются продать как отдельное устройство в своём корпусе. Вот меньше всего хотелось бы на потолке видеть россыпь разных устройств, а как задумаешься что в них всех надо поменять батарейки так и страшно становиться. Также всегда остаётся вероятность того что производитель закроет открытое api своих устройств, и заставит вас пользоваться только своим приложением как недавно гугл поступил с nest и вся ваша целостная система развалится на куски. Поэтому я сделал свой девайс на AVR, назвав его «сенсортэг» и напаковал его всем что мне было нужно: датчик движения с цифровой подстройкой чувствительности, датчики освещенности, температуры, угарного газа, управляемую подсветку, ESP8266, RS485 c гальванической развязкой, 24В блоком питания. Получилось вот такое устройство, но в реалии ему нужно посвятить отдельную статью и не особо зацикливаться на нём в этой.
Автоматический полив. Казалось бы что тут сложного, должно быть самое простое устройство типа дискретный выход — соленоид на 24В. Но как оказалось что все клапаны полива на 24В, но AC. Так что пришлось делать отдельный блок с трансформатором на 24В и блоком реле, который по 24В DC коммутирует 24В АС.
Датчики движения по территории участка. У охранных датчиков выходы это НР и НЗ контакт так что тут как раз всё просто, дискретные входы и всё, только вот не стоит забывать про разрядники (неплохо подходит вариант разрядников для патч панелей).
Резервное питание. Изначально это не планировалось, но со временем выяснилось что за пределами города пропадание электроэнергии это никакое не ЧП, а вполне обыденное явление. И хотя, я считаю что система умного дома должна быть спроектирована так, что бы её можно было включить/выключить в любой момент без печальных для неё и дома последствий, но от резервного питания я не отказался. Решив что коль у меня уже есть мои сенсортэги на 24В, приводы на 24В, то всё питание САУ я сделаю 24В. Получилась неплохая связка mean well блока питания, mean well упса и аккумуляторов, работает, проверял.
После того как хардверное решение сформировалось вроде как в законченную систему можно было переходить к монтажным работам силовой части: прокладке силовых проводов, разводки силового щитка и разводке слаботочки. Проводов получилось пугающе много, но от выходных к выходным становилось все красивее и красивее, в итоге через месяц всё наладилось и заработало. Бонусом получилась возможность сделать временную панель управления светом и ролетами для строителей.
Следующим этапом было планирование щитка с модулями управления.
Топология системы:
Модули DI/DO. Нужно было прикинуть топологию системы, какие модули в неё входят, на каких контроллерах что работает. Тут существует масса вариантов реализации, и все они будут правильными если будут работать. Забегая вперед скажу что я остановился на системе из покупных модулей DI/DO, управляющем контроллере на Beaglebone black и вэбсервере на Raspberry Pi. Далее необходимо подсчитать все дискретные входы/выходы и их типы. Т.к. разрабатывать модули DI/DO не было никакого желания то я просто поискал на рынке уже готовые за вменяемую цену. Остановился на модулях Овен, в принципе они покрыли все мои нужды по управлению:
- МВ110–8ДФ, как модуль дискретного ввода для сигналов 220В.
- МУ110–16Р, для управления освещение, ролетами, вентиляцией и клапанами полива.
- МВ110–16ДН, как модуль дискретного ввода для сигналов с уличных датчиков движения.
Подключаются данные модули в систему по интерфейсу RS485 ModBus, в принципе промышленный стандарт, так что с его имплементацией не должно возникнуть ни каких трудностей (можно написать самому поддержку основных команд или взять уже готовую библиотеку).
Контроллер. Для связи с моими модулями «сенсортэг», расположенными в каждой комнате и модулями Овен в щитке мне нужен был контроллер который мог бы их опрашивать по RS485 интерфейсу и имел Ethernet для общения с сервером. Рассматривал вариант использовать Wiren Board, но у них мало RS485 портов да и вот контроллер хотелось самому сделать. Контроллеру хочется посвятить отдельную статью, так что тут можно упомянуть что он сделан на Beaglebone black и имеет 3 гальванически изолированных порта RS-485 и питание 24В.
Система для контроллера Beaglebone black собрана на базе Buildroot и доведена до состояния запускаем билд — получаем готовый образ для SDшки. ПО Beaglebone black состоит из: коммуникационного ядра, MQTT gateway и Mosquitto server. Коммуникационное ядро, опрашивает RS-485 порты, формируя внутреннюю таблицу дискретных и аналоговых точек. MQTT gateway преобразует точки контроллера в значения MQTT топиков и передает их в Mosquitto server. Все доступно по этой линке.
Щиток управления и имитатор сигналов (освещение, ролеты и вентиляция):
ПО Raspberry Pi это Home Assistant. Меня порадовала эта система, она очень проста, поддерживает массу уже готовых устройств и позволяет очень гибко писать свои плагины на python. Я например, за пару недель написал себе собственные MQTT плагины для освещения, ролет, сигнализации и разных типов датчиков (освещение, СО, движения, температуры) и несколько видов автоматизаций, всё очень гибко и главное с низким порогом вхождения в систему. Ещё Home Assistant поддерживает интеграцию с Google Home и Alexa. Можно немного помучаться и сконфигурировать это самому, или сделать платную подписку на их сервис (5$ в месяц) и тогда процесс синхронизации Home Assistant и Google Home проходит за два клика. Как бонус мы получаем управление голосом, пока на английском, но обещают поддержку русского вот-вот. Выглядит это примерно так:
В этой статье я хотел дать овервью системы и пример конкретной реализации и не претендую на правильность выбранных мною решений. Кто-то может сказать что это туумач для дома, а кому-то может пойдет в пользу. В общем, не бойтесь это увлекательно, просто хорошо всё структурируйте и начинайте. Все идеи не приходят сразу, они появляются в процессе реализации, так что менять прийдется, и не раз. Далее планирую написать про разработку своего контроллера и сенсортега, что как программисту более интересно чем всё описанное тут.