С момента выхода первой статьи «Бытовая автоматика. Начало» прошло уже почти 13 лет, и, оглядываясь назад, мне кажется - есть о чём рассказать. Проект, который родился как DIY-«включалка», постепенно вырос в нечто большее.

Некоторые идеи остались прежними, другие - наоборот, претерпели множественные трансформации. Первоначальный сервер на кухонной полке прошёл эволюционный путь через три сервера на шкафу, затем стал всего лишь одной из виртуальных машин в VirtualBox на Dell R710. Сегодня от него, кроме бэкапов, ничего не осталось, но есть Proxmox на Dell Wyse 5070 с десятком контейнеров, в которые он эволюционировал для решения поставленных задач. Но давайте обо всём по порядку.

Что осталось прежним

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

Я хочу, чтобы ролеты закрывались по расписанию независимо от способности о��ератора экскаватора определить глубину залегания оптоволокна в поле или от того, насколько удачно облачные провайдеры задеплоили свои конфиги 🙂 Кроме того, я хочу иметь доступ к своим данным (почта, документы, календари, контакты) даже без интернета - и даже если крупный игрок рынка вдруг решит закрыть очередной «бесплатный» сервис, как это когда-то было с RSS Reader’ом.

Некоторые решения реализуются проще, некоторые сложнее. Я попытаюсь описать историю эволюции системы и то, какие события и как на неё повлияли.

Провайдер как первый «звоночек»

Пожалуй, первым «приятным» сюрпризом стало осознание того, что чисто технически интернет-провайдер через свой модем может смотреть в мою домашнюю сеть. Не то чтобы мне было что скрывать от того, кто и так видит все мои DNS-запросы, но всё же…

После пары дней неработающего модема он вдруг заработал. На мой вопрос оператору о причинах неисправности мне ответили:
«У вас был использован неверный пароль, но мы это уже исправили».

Я, мягко говоря, немного обалдел. Все мы знаем, какие отмазки предоставляет служба поддержки, но тут они сами признали факт того, что могут менять параметры модема, которые, как мне казалось, им менять не стоит. А если могут это - то могут и всё остальное.

Шапочку из фольги я не ношу, но такое не люблю.

Я стал гуглить варианты - и так в 2015 году у меня появился ещё один системник с pfSense, который как раз и решал эту проблему.

Переезд, камеры и Ubiquiti

Примерно в то же время мы переехали из однокомнатной квартиры в частный дом. Это сразу спровоцировало появление системы видеомониторинга �� более сложной конфигурации Wi-Fi. Если в квартире хватало одного модема, то теперь требовались две точки доступа, и почему-то очень хотелось роуминг.

В то время набирали популярность решения от Ubiquiti, и я был ими впечатлён: функциональные приложения, футуристичный дизайн и полная оффлайн-установка. Так у меня довольно быстро появился третий системник - для запуска контроллера Ubiquiti, который управлял четырьмя камерами, свитчем и двумя точками доступа.

Именно тогда я познакомился с технологией passive PoE 24V. Идея питать устройства по сетевому кабелю мне очень понравилась - я не хотел тянуть по два провода, даже к тем самым четырём камерам.

Долгое время у меня было два свитча: 8+2-портовый от Ubiquiti и обычный 8-портовый гигабитный. На пару лет они полностью закрыли мои потребности в домашней сети.

Чердак, жара и вентилятор

Первое серьёзное неудобство стали вызывать три отдельных системника на чердаке. Ими было сложно управлять.

Да, у меня были KVM и был UPS, но это был обычный офисный ИБП, не рассчитанный на серверную работу 24/7. Были проблемы с корректным выключением при пропадании питания (а свет у нас моргал), а затем - с корректным включением. Всё это требовало танцев с бубном и правильной последовательности действий, что лишало домочадцев интернета в моё отсутствие, если электричество пропадало больше чем на 20 минут.

Это была проблема. Трудно сказать как должен выглядеть автоматизированный дом, но легко сказать как выглядеть он НЕ должен 🙂

Плюс жаркое лето на пальцах объяснило мне, зачем в дата-центрах стоят кондиционеры. Один из системников (тот, где крутился pfSense) решил, что 60 °C на CPU - это слишком, и просто выключился. Это был недорогой компьютер без возможности изменить этот порог в BIOS.

Чтобы вернуть сети работоспособность, мне пришлось поставить на чердаке напольный вентилятор, который просто дул на шкаф с серверами. Пока вентилятор «охлаждал» сервера на пустом чердаке, а мы обливались потом без вентилятора, я думал - как же решить эту проблему нормально?

Dell R710 и цена электричества

Так родилась идея попробовать промышленный б/у сервер. Оказалось, что по относительно доступной цене можно купить Dell R710. Он обеспечил меня аппаратным RAID-5 (взамен софтверного) и благодаря VirtualBox стал хостом на базе Windows Server 2012.

Сервер переехал в подвал, освободил место на шкафу и вернул вентилятор в семью 🙂

После Нового года у меня есть привычка подбивать расходы за прошедший год, включая коммунальные. Когда я увидел, как выросло электропотребление за год использования Dell R710, это был мой следующий «Ого!?».

Сервер потреблял около 330 Вт. Я достал старый десктоп, перенёс на него сервисы, снизил потребление до ~120 Вт и стал думать, как жить дальше.

Надёжность vs экономия

Какое-то время старый десктоп справлялся со всеми задачами и не сильно бил по карману. Но в нём не было никакой защиты от отказа.

Опыт научил меня этому на примере Ubiquiti-свитча: однажды, вернувшись из отпуска, мы застали сеть в нерабочем состоянии - в свитче сгорел блок питания. Тогда мне удалось восстановить сеть благодаря второму свитчу и PoE-инжекторам и дождаться нового БП.

С десктопом в роли сервера такой подстраховки не было. Нужно было решать вопрос до того, как он решит пасть смертью храбрых.

Разрыв с Ubiquiti и Zoneminder

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

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

Wyse и главный «Ого!?»

Решение нашлось парадоксальное. Я заменил двухпроцессорный Dell R710 с двумя БП, шестью 3.5" дисками и 32 ГБ памяти на… Dell Wyse 5020 и NAS QNAP.

Это был очередной «Ого!?». Мне удалось заменить сервер с потреблением ~330 Вт без потери функционала терминалом с потреблением ~15 Вт.

Камнем преткновения долгое время оставался Zoneminder. Именно он нагружал R710 на дополнительные ~120 Вт. Но оказалось, что стоило просто почитать документацию ZM, а не останавливаться на настройках по умолчанию.

Запись 30 кадров в секунду и motion detection на такой скорости - плохая идея. Кто бы мог подумать 🙂Как только я начал использовать два RTSP-потока (7–12 FPS для записи и 2 FPS в низком разрешении для детекции движения), дни повседневного использования R710 были сочтены.

Proxmox, контейнеры и текущая конфигурация

К этому моменту у меня была виртуальная машина под Windows со спагетти-зависимостями. Мне пришлось потратить немало времени, чтобы разнести функциональность по LXC-контейнерам и ВМ:

  • Asterisk (домофон, интерком)

  • CalDAV / CardDAV (Sabre.io)

  • Roundcube + hMail

  • DLNA-медиасервер

  • pfSense

  • PXE-инфраструктура

  • TTS (Silero) и оповещения через VoIP

В качестве хоста был выбран Proxmox. Год назад всё переехало еще раз но с Wyse 5020 на Wyse 5070 с Intel J5005 и 8 ГБ ОЗУ, где и работает по сей день.

Shelly, Node-RED и отказ от DIY-железа

Идея собирать свои датчики и розетки со временем отвалилась. Я какое-то время экспериментировал с STM32, пока не осознал, что это тупиковый для меня путь. «Вдруг» - это когда во время демонстрации контроллера ролет жене я спалил мотор и заблокировал выход на террасу 🙂

Shelly полностью закрыл мои требования: управляемо, программируемо и полностью оффлайн. Все ролеты, датчики и освещение переехали на Shelly, а Node-RED стал центром сценариев.

Сеть и PoE

Отказ от Ubiquiti снова поднял вопрос сети. Мне нравилась концепция PoE+, а количество камер и VoIP-телефонов росло. Решением стал корпоративный свитч HP 5120-24G-PoE+, который используется до сих пор.

Когда я упёрся в лимиты портов, проблему решил гигабитный сплиттер Cudy PoE40. Телефоны потребляют 10–12 Вт, камеры — около 4 Вт, а гигабитный канал при этом далёк от насыщения. Это позволило сократить количество кабелей.

С DLNA была забавная история. После переезда с VM на LXC Gerbera долго отказывалась работать под proxmox, ну как отказывалась - она работала, но спустя 3 минуты все клиенты теряли её. Под VM на Windows и DLNA сервере на .net такого не было и я долго не мог решить эту загадку. На какое-то время даже вводил в строй дополнительный Wyse 3040 только для хостинга DLNA. Сегодня проблема решена и хост больше не мешает броадкасту из LXC.

Разочарования

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

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

Ну вот, пожалуй, пока как-то так. Но это ещё не конец путешествия 🙂

P.S.

Уже после всего, поигравшись с R710, мне удалось снизить его энергопотребление до ~100 Вт, убрав один процессор, БП и часть памяти. Отказоустойчивость снизилась, но в моём случае (несколько копий данных и оффлайн дублёры оборудования) это приемлемо. Правда, моим детям пока будет сложно разобраться - над упрощением и «передаваемостью» системы ещё предстоит работать.