Умный дом сервер

  • Что представляют собой проекты Raspberry pi 3 для дома и зачем они нужны
    • Как система функционирует
    • Модули, которые можно выбрать для выстраиваемой своими руками системы «умный дом&raquo
  • Преимущества Raspberry Pi 3 по сравнению с ранее выпущенными версиями
  • Плюсы и минусы системы «умный дом» от фирмы Raspberry Pi

Перечень достижений человека постоянно пополняется новыми разработками. Выдающейся можно назвать разработанную человеком популярную сегодня опцию «Умный дом» на мини-компьютере Raspberry Pi.

Упоминаемая система после своего выхода на рынок практически сразу влюбила в себя многих владельцев домов. Именно поэтому спрос на систему «умный дом» на Raspberry pi стал активно возрастать с каждым годом. Хотите выяснить, чем так уникален Raspberry pi 3 умный дом и почему именно эту систему сегодня во многих домах устанавливают? Изучите нижеизложенный материал.

Что представляют собой проекты Raspberry pi 3 для дома и зачем они нужны?

Система «умный дом», которую изобрела компания Raspberry Pi, позволяет контролировать абсолютно все в доме: начиная от включения света и отопительной системы и заканчивая активацией систем, которые имитируют присутствие в доме человека.

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

Система умный дом от известной многим компании «Raspberry Pi» столь востребована сегодня благодаря тому, что она может легко собираться, как простой конструктор. Функционировать он может при этом на разных ядрах. Одной из наиболее покупаемых сегодня является система, функционирующая на базе мини-компьютера Raspberry.

Изначально компания предложила две комплектации мини-компьютеров – модель А и модель В. Модель А располагала объемом памяти в 256 Мб, а модель В могла сохранять в два раза больше информации. Но модель с небольшим объемом памяти не сняли с производства потому, что она позволяла пользователю выходить в Интернет. Позже была обновлена модель В. Новый её вариант отличался более компактным дизайном и располагал 4 USB-портами.

Как система функционирует?

Структура системы может быть разной. Но обычно построение её происходит по такому принципу: главным является центральное вычислительное устройство (его еще называют сервером). В качестве центрального системного сервера выступает Raspberry Pi, на который устанавливается WEB-интерфейс. Последний может легко связываться с ноутбуком, планшетом либо же смартфоном.

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

Обычно модуль Raspberry Pi связывается с контроллерами через порт UART. К последнему следует подключать такое согласующее устройство, как спецпереходник на интерфейс RS485 (следует подчеркнуть, что последние модели устройства уже располагают этим интерфейсом, так как его подразумевает базовая комплектация).

«Операционкой» является Raspberry, спутником которой может быть расширение, например, Pimatic. Совсем несложно собрать спецсистему «умный дом» на «открытой платформе», к примеру, openHAB, Fhem, SHC. Также популярной продолжает оставаться платформа wiButler.

Модули, которые можно выбрать для выстраиваемой своими руками системы «умный дом»

Чтобы выстроить спецсистему и сделать ее максимально функциональной, потребуются особые модули. Для тех, кто любит мастерить и хочет создать Raspberry pi 3 умный дом своими руками, предлагаются сегодня такие модули, как:

  • Модуль камеры. Подключив его, систему можно рассматривать, как удобный инструмент для видеонаблюдения. Данная камера совместима с «операционкой» мини-компьютера Raspberry. Она позволит записывать видеофрагменты в разрешении Full HD и делать отличные 5-мегапиксельные фото.
  • Датчик, измеряющий влажность, а также температуру воздуха. При установке этого модуля, система будет обрабатывать метеоданные.

  • Датчики дыма, а также датчики, сигнализирующие о протечке воды. Данный установленный и подключенный модуль поможет своевременно реагировать на появление дыма в доме и выявлять протечку воды. Многие владельцы больших коттеджей выбирают эту опцию для того, чтобы максимально обезопасить свой дом от неприятных сюрпризов.
  • Датчик движения, совместимый с Raspberry Pi. Данный модуль возможно использовать для того, чтоб лампы домашние включались при малейших замеченных движениях в любой зоне домовладения.

Управление электроприборами через Raspberry Pi

Преимущества Raspberry Pi 3 по сравнению с ранее выпущенными версиями

Преимуществ у последней прогрессивной версии Raspberry Pi 3 много:

  • Устройство имеет много интерфейсов. Последняя версия располагает Bluetooth 4.1, Wi-Fi 802.11n, Lan, 4 USB, а также HDMI. Также имеется возможность подключить GSM-модем для выхода на связь с официальным мобильным оператором, который занимается предоставлением услуг интернет-доступа.
  • Raspberry Pi 3 имеет мощный четырехъядерный 1,2 ГГц процессор.
  • Последняя версия совместима с предыдущими.

Плюсы и минусы системы «умный дом» от фирмы Raspberry Pi

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

Это:

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

Наряду с плюсами, есть у системы «умный дом» и несколько незначительных минусов:

  1. Систему целесообразно покупать только для большого загородного дома.
  2. Важно разбираться в каждом элементе системы (или иметь всегда под боком разбирающегося в этом вопросе человека), так как из-за своей сложности система в любой момент может выйти из строя.
  3. Так как прогресс галопирующими темпами продвигается вперед, через пять-семь лет и эта прогрессивная система устареет, поэтому есть риск того, что с продажи могут исчезнуть важные ее компоненты.

Как видим, плюсы уверенно перекрывают минусы. Поэтому если есть желание купить систему «умный дом» для загородного коттеджа, не стоит отказываться от этой идеи.

Все статьи →

Владислав Новицкий

  • Вступление.
  • Как это устроено. Взаимодействие клиент-сервер.
  • Как это устроено. Взаимодействие сервер-хаб.
  • Как это устроено. Сервер.
  • Как это устроено. Локальный хаб.
  • Выбор микроконтроллера и технологии для локального хаба.
  • Выбор микроконтроллера и технологии для сервера.
  • Доработка метеостанции.
  • Что бы я изменил.
  • Заключение.

Вступление

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

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

Как это устроено. Взаимодействие клиент-сервер.

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

  • Независимость от платформы и размеров экрана устройства;
  • Простота решения (легкий старт даже при отсутствии опыта).

Теперь, когда способ взаимодействия человека и умного дома ясен, кто-то ж должен предоставлять эту возможность. Нужен http-сервер для отправки клиенту веб-страницы. (Выбор микроконтроллера и технологии для сервера описано в одноименном разделе). Одного http-сервера оказалось мало, хотелось сделать все по-красивому. Вдруг к системе управления будут подсоединены несколько пользователей и один из них внесет какие-нибудь изменения. Как остальные пользователи узнают об этом, точнее, как система передаст им изменения. Делать запросы на сервер со стороны клиента с определенным интервалом плохое решение – мало того, что мы грузим сервер не нужными запросами, так еще и нагружаем нашу локальную сеть. Да и скорость реакции будет зависеть от частоты опроса. Согласитесь, что звучит не очень. Поэтому было принято решение запускать на сервере еще и WebSocket сервер, технология которого, позволяет отправлять всем подключенным клиентам сообщение о том, что произошло, в момент возникновения события, таким образом, не загружая себя и сеть. Этот алгоритм выглядит следующим образом (рис. 1).

Рис. 1. Алгоритм полного подключения клиента к серверу

В конечном итоге получается следующее: http-сервер отдает нам веб-страницу (а именно html, css, js файлы), после чего на стороне клиента происходит инициализация подключения к WebSocket серверу, после чего клиент находится в системе. Посмотреть реализацию этого процесса можно в файле:

«SmartHouseNV-Server\Website\UsualSite\usualSite.js”

Постоянно загружать код в ESP8266 и проверять результат (особенно проводить отладку) было не удобно. Поэтому на компьютер был установлен Node.js. Сообщения между клиентом и сервером передаются в формате JSON, на пример:

Эта команда означает что нужно в спальне включить устройство, которое подключено к первой ножке порта А. Другими словами, открыть реле, благодаря которому, зажжется свет, к примеру.

Внешний вид веб-приложения изображен на рисунке 2 и 3. Для упрощения и ускорения процесса разработки был использован набор инструментов Bootstrap.

Рис. 2. Внешний вид сайта на компьютере

Рис. 3. Внешний вид сайта на мобильном устройстве

Пункте меню «Остальное» содержит в себе дополнительный функционал (рис. 4).

Рис. 4. Дополнительный функционал

В «Режиме редактирования» пользователь может добавлять и удалять элементы управления в комнате. Вид сайта в этом режиме показан на рисунке 5.

Рис. 5. Вид сайта в режиме редактирования

Чтобы хранить комнаты и элементы в них потребовалось база данных. Я использовал MySQL Server. Схема базы данных умного дома изображена на рисунке 6.

Рис. 6. Схема базы данных

На данный момент доступны следующие элементы управления:

  • Обычная кнопка
  • Двойная кнопка
  • Тройная кнопка
  • Изменяющаяся кнопка
  • Выбор цвета
  • Ползунок

Как это устроено. Взаимодействие сервер-хаб.

Как клиент будет взаимодействовать с сервером мы уже разобрались. Но нам же нужны некие исполняющие устройства, которые и будут выполнять всю работу: переключать свет, управлять вентиляцией, кранами водоснабжения, климат контролем и т.д. Я назвал такие устройства хабами (локальными хабами). Такие устройства должны присутствовать в каждой комнате дома, быть вмонтированы или где-то спрятаны и подключаться ко всей периферии комнаты (свет, кондиционер, бра и т.д.). В качестве мозга хаба была выбрана плата разработчика STM32F103C8T6. По какой причине я выбрал именно ее, читайте в соответствующем разделе ниже.

Если сервер использует технологию Wi-Fi, то локальные хабы, для связи с сервером используют модули беспроводной связи NRF24L01+ 2.4 ГГц (рис. 7). Они есть в разных модификациях: с большим радиусом связи, с малым. Мне подошли самые дешевые с малым радиусом.

Рис. 7. NRF24L01+ 2.4 ГГц

Ссылка на библиотеку для работы с модулем:

У них реализована пакетная передача данных, аппаратный контроль ошибок, автоматическое подтверждение приема пакета и отправка пакета пока получатель не получит его и еще много чего интересного. Управляется этот модуль по интерфейсу SPI, библиотека для работы с этим модулем реализована на множестве платформ. Но вот как связать, с помощью NRF24L01+ несколько разных устройств (например, STM32 Hal, Arduino, Espruino) я информации не нашел, так что пробивал эту проблему свои лбом.

Так вот, сервер принимает некую команду от пользователя через Wi-Fi, преобразует эту команду в понятную для хаба и отправляет ее хабу, получая при этом подтверждение о приеме. В противном случае отправляет команду снова определенное количество раз, если и в таком случае команда не доставлена, то выдает пользователю сообщение о том, что хаб не принял команду (может он отключен или находится вне радиуса действия, в таком случае следует заменить NRF24L01+ на более мощный или изменить месторасположение устройства). Хаб принимает эту команду, выполняет ее и отправляет на сервер сообщение о том, что команды была успешно или не успешно выполнена. Сервер анализирует ответ и выдает пользователю соответствующее сообщение.

Как это устроено. Сервер

Модуль NRF24L01+ подключен к NodeMCU по интерфейсу SPI. В прошивке ESP8266 используется аппаратный SPI, что позволяет не загружать процессор. К выводам питания NRF24L01+ присоединен электролитический конденсатор на 1000 мкФ для сглаживания пульсаций как самого модуля NRF24L01+, так и ESP8266. Схема подключения изображена на рисунке 8.

Рис. 8. Схема сервера

Код сервера находится в файле:

«SmartHouseNV-Server\ServerFirmware\main.js»

Ссылка на проект сервера:

Как это устроено. Локальный хаб

Конфигурация микроконтроллера в STM32CubeMX проиллюстрирована на рисунке 9. Оставшиеся ножки будут использоваться для общего назначения. Например, подсоединить еще какой-то модуль к хабу по I2C, SPI, CAN или UART.

Рис. 9. Конфигурация ножек микроконтроллера

NRF24L01+ подключен к SPI1, со следующими параметрами (рис. 10), схема подключения изображена на рисунке 11.

Рис. 10. Настройка SPI1

Рис. 11. Схема подключения NRF24L01+ к STM32F103C8

Код главного цикла программы локального хаба изображен на рисунке 12. В нем мы опрашиваем состояние ножки IRQ NRF24L01+. Если напряжение на ней высокое – значит никакого прерывание не было у модуля, если напряжение равно нулю – значит произошло прерывание. После этого нам необходимо узнать почему это прерывание произошло, для этого читаем регистр Status. Также для удобства проверяем как там очередь приемника. Если она не пуста, значит к нам прилетел пакет. Читаем его и отправляем его содержимое в функцию InputMessageHandler. Эта функция и приведет в исполнение команды в сообщении.

Рис. 12. Главный цикл хаба

Для того, чтобы увеличить количество ножек микроконтроллера были использованы два последовательно соединенных сдвиговых регистров 74HC595, управляемых по SPI2 в режиме «Transmit only master” (рис. 13). В итоге получается — три вывода микроконтроллера дают нам 16 ножек на выходе, которые являют собой логический порт A. Данный порт будет управлять блоком реле.

Рис. 13. Схема подключения сдвиговых регистров

Рис. 14. Тест порта А

Также имеется порт B. Он включает в себя 6 выводов, которые способны генерировать ШИМ-сигнал. Такой порт будет использоваться для контроля уровня яркости подсветки, управление RGB-подсветкой, оборотами вентиляторов.

Порт C предназначен для общего назначения. Ножки этого выхода могу как принимать сигнал (логический, ADC), так и выполнять роль определенного интерфейса.

Целиком схема подключения изображена на рисунке 14.

Рис. 14. Полная схема локального хаба

В моем проекте в NRF24L01+ используется динамическая длинна пакета, поэтому структура пакета выглядит следующим образом: первый байт в пакете говорит о длине самого пакета, а последующие байты – сами инструкции. К примеру, чтобы подать высокий уровень на первую ножку порта A необходимо подать 0x03, а, чтобы подать низкий – 0x04. Таким образом, наш пакет будет иметь вид: . Чтобы понять, почему нужно отправлять именно такие числа, заглянем внутрь функции InputMessageHandler (рис. 15).

Рис. 15. Пример кода для порта А

Подать команду на включение ШИМ-сигнала немного сложнее. В ней мы должны указать номер ножки порта B, а потом передать само значение, разбитое на 2 байта. Потому что, разрядность ШИМ-сигнала у STM32F103C8 16 бит. На рисунке 16 представлен фрагмент кода для подачи ШИМ-сигнала.

Рис. 16. Фрагмент кода сервера для отправки команды на подачу ШИМ-сигнала

Для начала мы определяем номер ножки, они у нас начинаются с числа 0x23 (потому что до этого идут команды для порта A). А потом решаем какое значение мы будем отправлять. Если значение ШИМ равно нулю, значит мы выключаем его, а если не равно, то отправляем его.

Ссылка на проект локального хаба:

Ссылка на библиотеку для сдвигового регистра:

Выбор микроконтроллера и технологии для локального хаба

В отличие от микроконтроллера сервера, вычислительная возможность хаба может быть порядка ниже, так как его задачей является прочесть пакет с NRF24L01+, и выполнить команды в нем. Также важно учесть количество периферии и ножек, доступных для взаимодействия с окружающей средой и модулями. Отладочная плата STM32F103C8 (рис. 17) отлично для этого подошла. Она не дорогая, имеется много ножек и интерфейсов. Стоит отметить и сопутствующий софт для семейства микроконтроллеров серии STM. Это STM32CubeIDE, STM32Cube, STM32Programmer, STM32CubeMonitor. Пару слов о них:

  • STM32CubeIDE – удобная среда разработки для STM32, авто дополнение кода, отладка;
  • STM32Cube – настройка всего микроконтроллера, на данный момент вмонтирована в STM32CubeIDE;
  • STM32Programmer – программатор для STM32 через ST-Link;
  • STM32CubeMonitor – для отладки STM32 в реальном времени, отображение графиков и т.д.

Как вы уже могли догадаться, в качестве языка программирования хаба был выбран язык С и библиотека HAL.

Рис. 17. STM32F103C8

Выбор микроконтроллера и технологии для сервера

Центром умного дома является Wi-Fi модуль ESP8266, расположенной на плате разработчика NodeMCU V3 с программатором CH340 (Рис. 18). Так же был вариант взять Wi-Fi модуль LuaNode32 на базе микроконтроллера ESP32, но он был дороже, да и количество периферии показалось мне излишним. В идеале, хотелось организовать все на каком-нибудь мини-компьютере, к примеру, на Raspberry Pi или на Orange Pi. Но такие решения выходят за рамки моего бюджета.

Рис. 18. NodeMCU V3

В качестве программного обеспечения была выбрана технология Espruino, которая представляет собой JavaScript интерпретатор для микроконтроллеров. По факту, используя данную технологию, мы получаем Node.js сервер. Рассматривались и другие технологии для ESP8266: Arduino, Lua, MicroPython.

Идея писать на Arduino была отброшена практически сразу из-за отсутствия нормальной среды разработки и не стабильной работы прошивки (Arduino Pro IDE еще сырая и не поддерживает ESP8266, а в Platformio IDE хоть и красиво и удобно, но тот же фреймворк Arduino).

Скриптовый язык Lua, который изначально рассчитан для NodeMCU плат, выглядит интересно, выполняется быстро, но отсутствие соответствия между реальным интерпретатором и документаций заставило отказаться от этого варианта.

Технология Espruino сразу приглянулась мне, так как я уже был знаком з языком JavaScript и Node.js. Скорость выполнения и стабильность прошивки меня так же сильно порадовали, даже есть некая реализация режима отладки, но скорость загрузки кода в микроконтроллер при больших объемах кода немного проседает. Также стоит отметить, что Espruino имеет хорошо написанную документацию. В добавок ко всему этому мы получаем практически все возможности языка JavaScript, а именно: динамическая типизация переменных, возможность обновлять код по воздуху или непосредственно отправлять код на исполнение, хороший JSON и URL parser, не плохая реализация WebSocket сервера. Хоть JavaScript это язык высокого уровня, его реализация в Espruino дает возможность работать непосредственно с регистрами и делать вставки кода на язык С, что дает возможность сильно увеличивать производительность. Внешний вид Espruino IDE изображен на рисунке 19.

Рис. 19. Внешний вид Espruino IDE

До технологии MicroPython я так и не добрался по простой причине: Espruino меня полностью устроила.

Дополнительный софт

Хотелось бы сказать пару слов о созданной программе для отладки локального хаба. Она позволяет имитировать команды с сервера, передавая их сразу и обработчик команд хаба через UART-переходник (рис. 20).

Рис. 20. UART переходник

Программа изображена на рисунке 21.

Рис. 21. Программа для отладки локального хаба

Ссылка на репозиторий с программой:

Доработка метеостанции

В метеостанции пришлось сделать некоторые изменения для интеграции с умным домом. Wi-Fi модуль был заменен на NRF24l01+.

В проект была добавлена библиотека работы с модулем NRF24l01+ и немного изменен код. Изменения изображены на рисунке 22

Рис. 22. Измененный код метеостанции

Ссылка на проект метеостанции:

Что бы я изменил

1. Как выяснилось в ходе разработки, оперативной памяти ESP8266 не хватило для подключения нескольких WebSocket клиентов (Espruino интерпретатор занял слишком много места). Если б я работал с этой технологией ранее, то скорее всего этого не случилось бы. Нужно будет заменить его на ESP32;

2. Отказался б от базы данных MySQL, к которой я очень привязался в момент отладки. Лучше использовать файловую реализацию базы данных. Количество записей не большое, поэтому работать файловая база данных будет даже быстрее.

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

В репозиториях, оставленных мной, вы можете посмотреть интересующие вас моменты реализации, а в разделе Releases скачать готовые выпуски прошивок для устройств.


Это продолжение статьи: Умный дом (Самое начало) — ч.1
В прошлой статье я писал о том что такое умный дом и с чего начать при его создании. Теперь я постараюсь описать техническую часть: железо и ПО. На всякий случай напомню дорогому читателю, что это не HOW to, а обзорный материал, потому конкретных решений и code-вставок для копипаста тут скорей всего не будет. Технологий и методов решения поставленной инженерной задачи очень много и описать все в моих статьях не получится.
Вся информация написана с упором на личный опыт, никаких «диванных» домыслов.
Теперь возвращаемся к теме.
Как говорилось ранее, ядро системы должно размещаться в каком-то изолированном от жильцов месте, а что, собственно, это ядро из себя представляет с аппаратной точки зрения? Конечно же сервер. Да-да, сервер, не Ардуино, не РазБери, не роутер с OpenWrt, а именно сервер. Почему? Потому что производительность, а ещё потому, что все Ардуины и пр. изделия созданы для того, чтобы обучать школьников/студентов программированию микроконтроллеров и работе с периферией. Эти устройства изначально не предназначены для развертывания полноценного готового и стабильно работающего решения. Точнее нет, развернуть-то можно, но на свой страх и риск. А вообще, если уж совсем грубо выразиться, то это конструктор для взрослых, типа как Lego Mindstorms, только чуть сложнее. Я ни в коем случае не имею ничего против этих устройств, просто у каждого свои задачи. Не знаю как кто, а лично я бы не доверил управления газовым котлом конструктору Lego.
Но под словом «сервер» я подразумеваю не стойку как в ДатаЦентре, набитую blade`ами, а какой-нибудь небольшой сервачок. Нам ведь нужно управлять домом, а не вычислять сворачиваемость белков, правда?
Сервером может быть небольшой mini-ITX компьютер с двухядерным процессором типа D525 и 2Гб оперативной памяти. Это решение обойдётся приблизительно в $200.

Это эдакое маленькое красивое решение. Если захотите развернуть на этом сервере media-хранилище, то можно воткнуть по USB внешний диск объёмом ~3Тб.
Если под сервер заложено денег по-больше, то можно взять HP microserver, типа вот такого:

у него есть потенциал для роста, но кого-то могут не устроить габариты.
Цена около $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 градусов ниже нуля. Полезай ко мне в печку, погрей свои косточки».
Так вот, учитывая концепцию «Изолированного и самодостаточного умного дома» (про которую говорилось в первой части), всякие поделки на базе сервисов 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делать ядро умного дома собственными руками, без использования решений с ограниченным функционалом. Самое важное: чёткий план, грамотно поставленная инженерная задача и прямые руки.
Вот теперь всё. На вой взгляд, для самого начала и для осознания приблизительных масштабов работы, этой информации должно хватить.
Возможно я вспомню что-то ещё, и если информации наберётся достаточно, то напишу следующую статью.
Спасибо всем за внимание.
С наступающими вас праздниками, уважаемые читатели! Счастья вам и вашим близким, мир вашему дому!
P.S. Очень-очень внимательно вычитывать текст времени не было, поэтому если будут вопиющие опечатки/описки — сообщайте и я поправлю.