16:29 Открытая система управления “умным домом” MajorDoMo |
В этой статье я расскажу об одном проекте, которым занимаюсь уже довольно продолжительное время и который с некоторых пор доступен широкой публике. Речь идёт о системе управления "умным домом” MajorDoMo (Major Domestic Module), являющейся центральным блоком комплекса программно-аппаратных решений, которые я, в силу своих скромных возможностей, внедряю в своём домашнем хозяйстве. Но обо всём по порядку… Ограничения использования Проект не является продуктом в каком-либо виде. Статус проекта – разработка и исследование. Проект не совсем прост в понимании и предназначен для энтузиастов в области домашней автоматизации. Глубокое внедрение и настройка проекта под собственные нужды потребует навыки программирования и хотя бы базового понимания объектно-ориентированного подхода в разработке. Нижеописанные возможности могут быть реализованы не в полной мере либо недостаточно тщательно протестированы. Не допускается использование системы в тех случаях, когда от надёжности функционирования элементов системы может зависеть жизнь либо здоровье людей. Но не будем о мрачном :) Концепция В основу проекта заложено несколько фундаментальных принципов, которые определяют направление развития. Принцип первый ("концептуальный”): умный дом – это не только (и не столько) "железо”. В моём понимании, гораздо важнее формирование "умной” среды, которая не ограничена датчиками и исполнительными механизмами. Да, датчики и исполнительные механизмы должны обеспечивать комфорт и безопасность, но это программа-минимум. Среда должна иметь внутренние и уметь использовать внешние информационные ресурсы, чтобы адекватно управлять имеющейся технической базой и даже помогать человеку в организации его жизни. Принцип второй ("приземлённый”): взаимодействие элементов системы строим на HTTP-протоколе. Во-первых, наличие сети дома не является чем-то "из ряда вон” – Ethernet/Wi-Fi прост в развёртывании, гибок в настройке, и, во многих случаях, оно уже есть в наличии. Во-вторых, HTTP-доступ встраивается во всё большее количество устройств – от специфичных контроллеров до сетевых камер, не говоря уже о наличии HTTP-API протоколов во многих приложениях и сервисах. Кстати, этот принцип не исключает интеграцию зоопарка специфичных протоколов и устройств, но только через вспомогательные программные либо аппаратные контроллеры. В рамках этого принципа стоит сказать о внутреннем мире системы – она работает на базе веб-сервера и интерфейсом пользователя является веб-сайт, так что получить доступ к управлению можно с любого устройства, имеющего веб-браузер. Принцип третий ("гибкость в интеграции”): глубина интеграции системы определяется потребностями пользователя (ну и степенью доверия к системе). Это значит, что роль системы может быть различной. В одном крайнем случае система может быть центром управления и отвечать за логику функционирования всей периферии, т.е. обрабатывать сигналы и давать команды всем "ведомым” устройствам. В другом же, система лишь часть распределённой сети среди датчиков и контроллеров, надёжность которых существенно выше в виду специализации задач. В последнем случае, контроллеры лишь сообщают системе о своём состоянии, но не полагаются на неё в принятии решений. Как показывает практика, в домашней среде наилучшие результаты даёт комбинированное решение, а степень смещения в одну или во вторую крайность определяется конкретной задачей. Принцип четвёртый ("лёгкость на подъём”): систему должно быть легко установить, чтобы посмотреть и что-то попробовать. Установка на Windows-компьютер не сложнее установки любого другого приложения. Для Linux-системы не сложнее поднятия сайта на локальном веб-сервере. Не нужно вообще никакого "железа” — можно пользоваться инфо-приложениями и программировать реакцию на данные из интернета. Но отвлечёмся от теории и перейдём к практике :) Возможности Ниже я перечислю возможности, которые были реализованы с помощью MajorDoMo. На сайте проекта собирается описание различных вариантов использования — я считаю, что это даёт самое наглядное представление о системе. Итак…
Варианты использования системы постоянно пополняются новыми сценариями от пользователей. Для реализации многих сценариев программирование не нужно вовсе – достаточно настройки имеющихся модулей и интерфейса управления. Для некоторых всё же необходимо написание скриптов – для внутренних скриптов используется язык программирования PHP, знать который, конечно, полезно, но во многих случаях достаточно использовать простые конструкции из имеющихся примеров и делать по аналогии. Железо и софт В качестве головного устройства используется обычный PC под управлением MS Windows, однако система может быть установлена и на Linux-компьютер – потребуется некоторая адаптация, но в целом почти всё работает одинаково на обоих системах прямо "из коробки”. В качестве платформы используется веб-сервер Apache, база данных MySQL и, уже упомянутый, PHP. Большая часть функционала исполняется через веб-сервер, но дополнительно запускается так называемый скрипт основного цикла – от отвечает за запуск задач по таймерам. Как уже говорилось, система может работать без периферийного железа, но, разумеется, чем больше к системе подключено датчиков и исполнительных устройств, тем больше возможностей открывается для использования. Первоначально базовым аппаратным модулем для общения с внешним миром являлся контроллер Arduino с Ethernet shield-ом на "борту” и подключенными к нему датчиками. Контроллер подключен к домашней сети и его задача инициировать HTTP-запросы к центральной системе при изменениях значений датчиков. Другой вариант прошивки контроллера позволял использовать его как устройство управление реле через встроенный web-сервер. Таких контроллеров может быть сколько угодно. Позже был сделан программный адаптер, позволяющий использовать Arduino без ethernet, а подключенный напрямую к компьютеру по USB. Принципиальный схемы контроллера и исходный код прошивок так же доступен на сайте проекта. Кроме Arduino в систему была встроена поддержка контроллера 1-wire сети. В данном случае система умеет общаться с сетью через модуль OWFS, который сам по себе кросс-платформенный и отвечает за взаимодействие непосредственно с "железом”. Из дополнительной периферии можно отметить Bluetooth-адаптер, задача которого в сканировании MAC-адресов имеющихся в эфире устройств. Про Ethernet-сеть, WiFi и настройку доступа из-вне я здесь останавливаться не буду – это отдельная тема и по ней можно найти много информации. В общем-то и всё. Дальнейшее развитие поддержки "железных” протоколов будет осуществляться по мере необходимости :) Планы Планов море! :) Во-первых, с увеличением числа людей, пробующих систему у себя, всплывают ошибки и пожелания – что, в общем, хорошо. По возможности эти запросы будут закрываться. Далее, будет доведена до ума мульти-язычность интерфейса – это уже заложено, но пока интерфейс смешанный: что-то на русском, что-то на английском, а что-то вовсе под интересными псевдонимами типа "SCRIPT_DESCRIPTION”. Много идей по добавлению внутренних инфо-приложений и интеграции с существующими веб-сервисами (почта, списки задач, социальные сети и т.п.) Есть некоторые заделы по развитию системы в сторону реакции на шаблоны поведения пользователей, когда будут автоматически выделяться последовательности событий и предлагаться их автоматизировать (если система "видит”, что утром, выходя из спальни, я прохожу через коридор и включаю свет в ванной, и это повторяется NN раз, то почему бы не предложить эту последовательность использовать – например, включая свет автоматически, либо использовать эту последовательность для дополнительного действия – включения кофеварки). Но это ещё только предмет изысканий. Вместо заключения Статья вышла скорее обзорной, нежели технической. Пожалуй, она таковой и задумывалась. Сайт проекта: smartliving.ru На сайте можно найти гораздо больше технической информации, скриншоты, описание встроенных функций, примеры кода для сценариев использования, а так же дистрибутивы самой системы. Кроме того, на сайте есть раздел Форум для обсуждения деталей и идей. Распространяется система под MIT-лицензией, т.е. практически без каких-либо ограничений (включая коммерческое использование), но с обязательным указанием авторства. Исходный код системы так же полностью открыт и доступен в Google-code: code.google.com/p/majordomo-sl Пользуясь случаем, приглашаю заинтересованных к совместной работе над проектом – задач полно, всем хватит :) (c) Сергей Джейгало |
|
Всего комментариев: 0 | |