Main

Идея

(текст был составлен где-то в конце 2010 года)

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

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

Что касается вопроса "надо ли?", то тут для меня ответ однозначный -- мне это надо. Здесь есть очень тонкий момент -- я сам программист и в этом разбираюсь, поэтому я могу себе позволить реализовать такую систему своими силами, но глядя на предложения "инсталляторов" у меня волосы на голове встают дыбом из-за стоимости даже самых базовых решений, не говоря уже о какой-то интеграции разнородных систем и нестандартных сценариев взаимодействия. Именно поэтому я не буду ратовать за то, чтобы каждый владелец дома в обязательном порядке устанавливал себе такие системы -- цена, к сожалению, слишком высока. Однако, для энтузиастов и любителей вроде меня, имеется очень много возможностей, для реализации которых нужно лишь желание, техническая грамотность и некоторый бюджет. Кроме того, есть опасность, что система, сделанная самостоятельно, будет требовать больше времени на доводку и обслуживание, но здесь всё зависит от собственной квалификации. В моих планах, по крайней мере, сделать систему максимально независимую от моего вмешательства, само-диагностирующуюся и легко восстанавливаемую при отказе каких-либо её частей.

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

Итак, в качестве центрального контроллера (ЦК) у меня используется компьютер. Операционная система Windows (возможен и Linux, но у меня некоторые части системы используют windows-компоненты, например система преобразования текста в речь, skype-робот и кое-что по-мелочи). Системные требования указывать не буду, т.к. с задачами обработки событий справится любой бюджетный компьютер. В данный момент у меня оно испытывается на совсем старом ноуте, но в будущем я думаю либо о более свежем ноуте (плюс -- энерго-независимость), либо небольшой системный блок по типу nettop-а.

Центральный контроллер подключен к общей домашней сети через ethernet. Сама сеть имеет выход в Интернет, так что и ЦК при необходимости получает какие-то данные из Интернета, а так же представляет свой веб-интерфейс для доступа , чтобы я мог, к примеру, с броузера мобильного телефона иметь доступ к системе для анализа и, если потребуется, оперативного вмешательства. Кроме того, на ЦК запущен Skype и какое-то уведомление, а так же приём команд осуществляется по этому каналу.

Мозгом ЦК является система на основе интернет-технологий, состоящая из множества скриптов и веб-интерфейса. Скрипты отвечают за реакцию системы на различные события, а интерфейс служит для управления настройками и работы с информационными приложениями внутри системы (например, список продуктов для похода в магазин). Внутри системы устройства добавляются как объекты, имеющие свои методы (например, включить/выключить) и свойства (например, температура для датчиков). Сейчас не буду подробно останавливаться на этом, но если в кратце, то я старался реализовать принципы объектно ориентированного программирования для управления устройствами (с классами, наследованием и т.п.)

Так же на ЦК имеется Bluetooth-адаптер для автоматического определения имеющихся в пределах досягаемости устройств -- это нужно для того, чтобы ЦК "знал", кто из домачадцев был замечен дома и как давно (по таким событиям могут отрабатывать какие-то сценарии).

Непосредственно к ЦК не подключены никакие исполнительные механизмы и датчики. Механизмы и датчики будут подключаться к вспомогательным контроллерам (ВК), связанных с ЦК через домашнюю сеть по ethernet либо wifi. На данный момент в качестве вспомогательного контроллера я использую систему на базе Arduino -- очень гибкий контроллер с возможностью подключения различных устройств, имеющий ethernet-порт и достаточно несложно программирующийся (кому интересно, могут найти море информации о подобных устройствах в Сети). Общение ВК и ЦК происходит по сети по протоколу HTTP. Сейчас у меня ВК является инициатором событий и не принимает никаких команд, т.к. к нему подключены только датчики температуры, но совсем несложно изменить программу контроллера, чтобы он принимал команды от ЦК и выполнял какие-то действия с подключенными устройствами (включал свет, выключал насос и т.п.).

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

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

Важной частью системы будут терминалы управления -- с учетом того, что она построена на веб-технологиях, то таких терминалов можно будет повесить сколько угодно и где угодно. Я присматриваюсь к недорогим планшетам на базе системы Android, которые, имея WiFi на борту, могут быть стационарно размещены в любом месте дома, где будет доступ к розетке (прихожая, кухня, гараж), либо использоваться как мобильные терминалы на всей территории участка.

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