30 December 2014

Умный дом (Самое начало) — ч.2

System administration
image
Это продолжение статьи: Умный дом (Самое начало) — ч.1

В прошлой статье я писал о том что такое умный дом и с чего начать при его создании. Теперь я постараюсь описать техническую часть: железо и ПО. На всякий случай напомню дорогому читателю, что это не HOW to, а обзорный материал, потому конкретных решений и code-вставок для копипаста тут скорей всего не будет. Технологий и методов решения поставленной инженерной задачи очень много и описать все в моих статьях не получится.

Вся информация написана с упором на личный опыт, никаких «диванных» домыслов.

Теперь возвращаемся к теме.

Как говорилось ранее, ядро системы должно размещаться в каком-то изолированном от жильцов месте, а что, собственно, это ядро из себя представляет с аппаратной точки зрения? Конечно же сервер. Да-да, сервер, не Ардуино, не РазБери, не роутер с OpenWrt, а именно сервер. Почему? Потому что производительность, а ещё потому, что все Ардуины и пр. изделия созданы для того, чтобы обучать школьников/студентов программированию микроконтроллеров и работе с периферией. Эти устройства изначально не предназначены для развертывания полноценного готового и стабильно работающего решения. Точнее нет, развернуть-то можно, но на свой страх и риск. А вообще, если уж совсем грубо выразиться, то это конструктор для взрослых, типа как Lego Mindstorms, только чуть сложнее. Я ни в коем случае не имею ничего против этих устройств, просто у каждого свои задачи. Не знаю как кто, а лично я бы не доверил управления газовым котлом конструктору Lego.

Но под словом «сервер» я подразумеваю не стойку как в ДатаЦентре, набитую blade`ами, а какой-нибудь небольшой сервачок. Нам ведь нужно управлять домом, а не вычислять сворачиваемость белков, правда?

Сервером может быть небольшой mini-ITX компьютер с двухядерным процессором типа D525 и 2Гб оперативной памяти. Это решение обойдётся приблизительно в $200.
image
Это эдакое маленькое красивое решение. Если захотите развернуть на этом сервере media-хранилище, то можно воткнуть по USB внешний диск объёмом ~3Тб.

Если под сервер заложено денег по-больше, то можно взять HP microserver, типа вот такого:
image
www.citilink.ru/catalog/computers_and_notebooks/servers_and_net_equipments/servers/753329
у него есть потенциал для роста, но кого-то могут не устроить габариты.
Цена около $280 за стартовый комплект (двухядерный процессор, 2Гб оперативной памяти и один SATA диск на 250Гб)

Ставить что-то больше и мощнее особого смысла нет, т.к. этого железа хватит с головой.
По возможности ищите железо с USB 2.0 (ещё лучше: USB3).

Так же будет плюсом, если в качестве системного диска будет использоваться SSD-накопитель. Это даст хороший прирост к скорости загрузки ядра умного дома. Например ядро моего умного дома загружается (с SSD) не дольше загрузки обычного бытового Wi-Fi роутера — включил и пользуйся.

Для настройки сервера временно понадобится клавиатура и монитор (чтобы развернуть ОС, остальная настройка будет производиться удаленно).

Нельзя забывать и про сеть.
По возможность до всех стационарных сетевых устройств (компьютеры, медиаплееры, сетевые принтеры и камеры) лучше заранее проложить витую пару. Для коммутации лучше использовать коммутаторы (свитчи) с портами Gigabit Ethernet.
Для подключения к сети провайдера можно использовать любой роутер с Wi-Fi, но к его внутренним портам ничего кроме вышеописанного коммутатора/-ов лучше не подключать.

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

В общем, схема подключения должна быть приблизительно такая:
Шнурок, полученный от провайдера, вы подключаете к WAN-порту своего роутера, а к LAN порту подключаете свой коммутатор.
В свою очередь, к коммутатору Вы подключаете все остальные сетевые устройства.

Почему так? Чтобы исключить «падение» всей сети, если, например, Ваш не совсем удачно купленный роутер внезапно зависнет. В момент перезагрузки роутера все подключенные к нему устройства потеряют связь, и если вы смотрели на медиаплеере видео с сетевого хранилища, подключенного к роутеру, то просмотр, как Вы понимаете, прервётся. Приятного мало.

Если Ваш дом большой, то, возможно, для полного покрытия беспроводной сетью всего жилища понадобятся повторители сигнала. Не надейтесь, что Вы купите самый дорогой Wi-Fi роутер и он «пробьет все» ваши железобетонные перегородки. Лучше взять роутер «по-проще», и к нему пару/тройку повторителей.

Программное обеспечение

Я рекомендую на сервере разворачивать в качестве системной ОС Debian Linux без графической системы. Почему его, а не, скажем, Ubuntu? Ну, во-первых, Ubuntu в основном ставят те, кому нужна система X-window, а зачем нам на headless-сервере графика? Кто и что там будет разглядывать? А во-вторых, Ubuntu, по-сути, это и есть Debian, только со всякими свистелками/перделками, которые Вы доставить можете и сами (я на это надеюсь, т.к. без этих навыков самостоятельно разворачивать «Умный дом» не совсем правильно). Но если Вы привыкли к чему-то другому (например семейство RedHat, или Slackware), то делайте на том, что Вам ближе и понятнее. В конце-концов, Вам же всё это настраивать.

Из программного обеспечения я думаю правильно установить Samba (большинство бытовых плееров с сетью на борту с этим могут работать) и NFS (не игра Need For Speed, а Network File System). NFS Вам пригодится, если Вы дома используете MacOS или Linux на своих компьютерах/плеерах. Вроде даже говорят, что NFS меньше грузит процессор чем Samba, но лично мне кажется, что в масштабах дома едва ли получится создать большую нагрузку.

Если у Вас есть т.н. Smart-телевизоры, то возможно придётся разворачивать UPnP- и DNLA-серверы, т.к. большинство «умных телевизоров» не понимают ни Samba, ни NFS.

Для развёртывания связки DNLA/UPnP я рекомендую обратить свой взор на проект PMS (PlayStation3 Media Server), который когда-то вырос из медиасервера, развёрнутого на платформе взломанной игровой приставки PlayStation3. Проект разросся и мутировал в UMS (http://www.universalmediaserver.com/). Установка достаточно простая, лучше прочитать актуальную информацию по установке на сайте проекта.

Я проверял PMS и UMS с транскодингом — всё работало без нареканий. Даже при использовании в качестве медиаплеера приставки Xbox360 (у неё специфичный профиль работы с UPnP): всё работало.

Есть ещё один UPnP сервер: PlexMediaServer (https://plex.tv/), но, признаться честно, его работу с транскодингом на Xbox360 проверить не удалось, т.к. я к тому времени уже приставку продал. В целом Plex — очень мощный и функциональный, возможно даже некоторым он покажется избыточно функциональным, но на Smart-телевизорах работает и вроде никто не жалуется.

Сам я UPnP особо и не использую, т.к. телевизоры у меня старые, не Smart, и оснащены плеерами Dune, которые великолепно работают с хранилищем видео/музыки (по Samba), расположенным в ядре умного дома, но на всякий случай Plex всё же работает и всегда рад обслужить какого-нибудь android-клиента.

Если Вы любите качать видео с торрентов, то на ядро умного дома можно поставить Transmission — приложение для скачивания с torrent-трекеров. Transmission может работать без графической системы и управляться через web-интерфейс или с помощью Transmission-remote (приложение для удалённого управления закачками). Ставится с репозитариев linux-дистрибутивов

Кроме Media-компоненты кто-то наверняка захочет, чтобы умный дом что-то озвучивал голосом или принимал и обрабатывал голосовые команды. Например, Вы говорите: «Избушка, какая температура на улице?», а система отвечает Вам голосом Милляра: «Ух-ху-ху! На улице 25 градусов ниже нуля. Полезай ко мне в печку, погрей свои косточки».
image

Так вот, учитывая концепцию «Изолированного и самодостаточного умного дома» (про которую говорилось в первой части), всякие поделки на базе сервисов Google Voice или Yandex Voice API нужно отметать. Делайте систему по-нормальному, не по-голодрански. Я, конечно, понимаю, что жителям крупных регионов, трудно себе представить отсутствие интернета в доме, равно как трудно представить, что Google может быть недоступен, но… до августа 1945-го японцы тоже не могли себе представить, что всего одна бомба может уничтожить целый город.

Парни из Lizard Squad показали всему миру, что идеальных сервисов не существует: PlayStationNetwork компании Sony и сеть Microsoft из-за массированной DDos-атаки лежали 4 дня, а в некоторых регионах и на 5-й день наблюдали недоступность этих сервисов. Не исключено, что появятся какие-нибудь Blizzard Division и задосят Google/Yandex, потому доверять online-сервисам не нужно. Ну или если Вы на эти сервисы всё же рассчитываете, то проектируйте Ваш умный дом так, чтобы, в случае разрушения Глобальной Сети функционал Вашей системы не нарушился.

Что бы не происходило в мире, Ваш умный дом должен "… работать, работать, и работать" (из рекламы батареек).

Это же относится ко всяким сервисам типа Openremote или Fibaro: типа, сконфигурируй свой сервер с любой точки мира, а он подхватит все настройки и тут же заработает так, как надо тебе. Но как Вы будете настраивать тот же недешёвый Fibaro если сервис будет «лежать» под DDos целый месяц? Как Вы добавите на свой контроллер новый димер? Полезете настраивать его локально. Значит все эти сервисы Вам просто не нужны. Делайте своё, сразу и наверняка. Чтоб ни что не омрачило Вашу жизнь в среде Вашего прекрасного дома.

Теперь ещё одна часть умного дома, которая, возможно, будет Вам нужна:

Видеонаблюдение

Если Вы будете делать видеонаблюдение, то я рекомендую использовать не аналоговые камеры, а сетевые (IP-камеры) с питаем через Ethernet (PoE). Эти камеры дают хорошую картинку (нередко HD/FullHD) и с ними легче строить систему архивирования.

Кроме камер Вам может понадобиться NVR (Network Video Recorder) — это такая «коробочка», отвечающая за получение и сохранение изображения с камер.

В вопросе организации NVR как раз ещё одним плюсом будет, если Вы ядро своего умного дома построите на Linux-сервере. Весь функционал NVR можно развернуть прямо на нём. А вот если ядром является Ардуино, Расбери или подобные контроллеры, то функционал NVR они не потянут, потому что просто не хватит производительности.

У кого фантазии не хватило на то, чтобы придумать как это реализовать, то могу подсказать проект «Moment Video Server» (http://momentvideo.org/). Это не реклама.

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

Установка простая:
Дёргаете установочный архив:
wget http://momentvideo.org/dist/moment_14-04-29_linux32.tar.gz

или
wget http://momentvideo.org/dist/moment_14-04-29_linux64.tar.gz
(если у Вас 64-разрядная ОС)
Распаковываете:
tar -C /opt -xzf moment_14-04-29_linux32.tar.gz

В результате создастся директория: /opt/moment
Конфигурация производится правкой файла moment.conf
Подробнее о настройке читайте на сайте авторов: http://momentvideo.org/doc.ru.html

Запуск сервера осуществляется командой:
/opt/moment/bin/moment


По-умолчанию в браузере открываете h t t p: // ip-сервера: 8080/moment/
и увидите страничку сервера Moment.
Я с этой штукой поигрался и всё же построил что-то своё.

Если Вы хотите делать не NVR, а систему записи по движению, то камеры выбирайте такие, которые поддерживают MJPG (он же MotionJPEG), на них эта задача решается очень просто: установкой и правильной настройкой приложения «Motion» из репозитария linux-дистрибутивов.

Когда я строил свою систему видеонаблюдения, то ввел понятия «Оперативный архив» и «Долговременный архив».

В оперативном архиве лежат записи за текущий день — это удобно, если хочется быстренько глянуть «что там да как», а долговременный архив — это архив с категориями по годам, месяцам и дням. Долговременный архив синхронизируется с облаком глубокой ночью, а оперативный архив пишется на диск и в облако в реальном времени. Оперативный архив в облаке будет нужен, если злоумышленники проникнут в дом и кроме ценностей вынесут/разрушат ядро умного дома.

В кабинете оперуполномоченного Вы просто зайдёте в своё облако и просмотрите все записи камер до момента их отключения.

Ещё один вариант: скрытое сетевое хранилище, куда будет вестись синхронизация video-архивов. Самое главное, чтобы это хранилище было спрятано в надёжном тайнике, так, чтобы злоумышленники его не нашли.

UPS, конечно же, должен держать не только ядро умного дома, но и стему PoE ваших камер.

Вместо заключения

Всё описанное выше можно построить на двухядерном процессоре Atom с 4 Гигабайтами оперативной памяти, мало того, я это построил и использую в своём доме. Cделать ядро умного дома собственными руками, без использования решений с ограниченным функционалом. Самое важное: чёткий план, грамотно поставленная инженерная задача и прямые руки.
image

Вот теперь всё. На вой взгляд, для самого начала и для осознания приблизительных масштабов работы, этой информации должно хватить.

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

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

image

P.S. Очень-очень внимательно вычитывать текст времени не было, поэтому если будут вопиющие опечатки/описки — сообщайте и я поправлю.
Tags:умный домсделай самадминистрирование
Hubs: System administration
-6
72.7k 221
Comments 21