Пользователь
0,0
рейтинг
13 апреля 2012 в 18:09

Разное → Открытая система управления “умным домом” MajorDoMo

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

image

Но обо всём по порядку…



Ограничения использования

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

Но не будем о мрачном :)

Концепция

В основу проекта заложено несколько фундаментальных принципов, которые определяют направление развития.

Принцип первый (“концептуальный”): умный дом – это не только (и не столько) “железо”.

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

Принцип второй (“приземлённый”): взаимодействие элементов системы строим на HTTP-протоколе.

Во-первых, наличие сети дома не является чем-то “из ряда вон” – Ethernet/Wi-Fi прост в развёртывании, гибок в настройке, и, во многих случаях, оно уже есть в наличии. Во-вторых, HTTP-доступ встраивается во всё большее количество устройств – от специфичных контроллеров до сетевых камер, не говоря уже о наличии HTTP-API протоколов во многих приложениях и сервисах. Кстати, этот принцип не исключает интеграцию зоопарка специфичных протоколов и устройств, но только через вспомогательные программные либо аппаратные контроллеры. В рамках этого принципа стоит сказать о внутреннем мире системы – она работает на базе веб-сервера и интерфейсом пользователя является веб-сайт, так что получить доступ к управлению можно с любого устройства, имеющего веб-браузер.

Принцип третий (“гибкость в интеграции”): глубина интеграции системы определяется потребностями пользователя (ну и степенью доверия к системе).

Это значит, что роль системы может быть различной. В одном крайнем случае система может быть центром управления и отвечать за логику функционирования всей периферии, т.е. обрабатывать сигналы и давать команды всем “ведомым” устройствам. В другом же, система лишь часть распределённой сети среди датчиков и контроллеров, надёжность которых существенно выше в виду специализации задач. В последнем случае, контроллеры лишь сообщают системе о своём состоянии, но не полагаются на неё в принятии решений. Как показывает практика, в домашней среде наилучшие результаты даёт комбинированное решение, а степень смещения в одну или во вторую крайность определяется конкретной задачей.

Принцип четвёртый (“лёгкость на подъём”): систему должно быть легко установить, чтобы посмотреть и что-то попробовать.

Установка на Windows-компьютер не сложнее установки любого другого приложения. Для Linux-системы не сложнее поднятия сайта на локальном веб-сервере. Не нужно вообще никакого “железа” — можно пользоваться инфо-приложениями и программировать реакцию на данные из интернета.

Но отвлечёмся от теории и перейдём к практике :)

Возможности

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

Итак…

  • Утром (не раньше 6 и не позже 11) при обнаружении первого движения в любой из комнат (кроме спальни), система рассказывает о текущем состоянии (температура на улице, время рассвета/заката) и включает музыку (случайную папку из добавленных в “избранное”)
  • При открытии гаражных либо въездных ворот система об этом сообщает. Так же напоминает, если они не закрыты (каждые 15 минут, но легко отключается если нужно)
  • Постоянно контролируется температура в контуре отопления — при выходе из номинального диапазона, идёт уведомление голосом и на скайп (к примеру: “Температура котла 65 градусов цельсия. Внимание — выше нормы и продолжает расти!”)
  • Система знает какая температура на улице и в комнатах дома
  • Система может принимать команды через внутренний чат, через skype, со смартфона (включая голосовое управление)
  • Интерфейс системы доступен на любом устройстве в домашней сети, а так же через интернет (закрыто паролем). Сам интерфейс оптимизирован для мобильных устройств (используется jQueryMobile).
  • В интерфейсе системы есть доступ к изображению с IP-камер и система может реагировать на обнаруженное камерами движение
  • Система управляет отдельными элементами внешнего освещения, включая его через полчаса после заката и выключая за час до рассвета
  • Ведётся контроль доступности устройств, подключенных к домашней сети – по ним можно выявить неполадки, либо определить присутствие кого-то из домашних (по автоматически подключенным к Wi-Fi гаджетам)
  • Система периодически сканирует bluetooth-диапазон на наличие новых либо опознанных ранее устройств (по MAC-адресу) в радиусе действия – по этим меткам так же определяется присутствие людей
  • Смартфон автоматически передаёт системе GPS-координаты и система ведёт историю перемещений пользователя, реагируя на вход/выход из определённых локаций (знает когда я подъезжаю к дому и в будущем сможет открывать въездные ворота, а при подъезде к магазину может напоминать о том, что список покупок не пустой)
  • Через интерфейс системы можно управлять проигрыванием медиа-контента с локального сервера на любом из домашних компьютеров (управление VLC-плеером, а также XBMC медиа-центром)
  • В системы есть приложение для ведения учёта продуктов и составление списка покупок


Варианты использования системы постоянно пополняются новыми сценариями от пользователей. Для реализации многих сценариев программирование не нужно вовсе – достаточно настройки имеющихся модулей и интерфейса управления. Для некоторых всё же необходимо написание скриптов – для внутренних скриптов используется язык программирования 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

Пользуясь случаем, приглашаю заинтересованных к совместной работе над проектом – задач полно, всем хватит :)
Jey @Jey
карма
83,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разное

Комментарии (58)

  • –21
    Гостиная с одним «н» пишется — это я про интерфейс.
  • +4
    а majordomo претензий к названию не предьявит?
    • 0
      вы кого-то конкретно имеете в виду? :)
      en.wikipedia.org/wiki/Majordomo

      да, название не особо оригинальное, но почему бы и нет…
      • 0
        • +1
          да-да, есть такие. есть ещё известная система управления списками рассылки с таким названием. но не думаю, что сей скромный проект будет предметом претензий какой-либо серьёзной компании :)
          • 0
            Majordomo.ru не должны предъявить претензии, т.к. здесь сферы не соприкасаются. Вот если б товарищ хостингом занимался, тогда да.
    • +3
      На обычные английские слова сложно предъявить что-то. Особенно если это не является прямым конкурентом в той же области.
  • +2
    Отличная идея!
    Вот дострою дом и буду думать об придании ему интеллекта.
    Кстати, утром, когда встаешь, первое что хочется услышать:
    1. сколько сейчас времени
    2. сколько времени осталось до выхода (чтобы на работу не опоздать)
    3. прогноз погоды
    4. информацию о пробках.
    • +9
      ага, особенно жене, которой позже вставать на работу )
      • +2
        я обычно раньше жены тоже встаю. пока прохожу через коридор система понимает что кто-то встал и начинает докладывать статус, запуская установленные процедуры. я слышу, что она говорит находясь уже в ванной — аудио разведено по всему дому, но отдельные комнаты включаются и выключаются так же системой — так по утрам в спальне тишина, хотя в других комнатах уже играет музыка.
        • +4
          Ну вам надо ролик заснять %) Было бы отличное пиар-видео.
        • 0
          Могли бы вы кратко описать как реализовано у вас аудио по квартире и как управляется воспроизведение по отдельным комнатам?
        • 0
          А если ночью (или под утро), простите, в туалет встал? Она тоже начнёт всё докладывать? :)
          • 0
            задан промежуток времени с 6 до 11 утра, когда система именно так реагирует на первое движение. но если это будет после 6, но вставать вы ещё не собирались, то ничего не поделаешь, придётся выслушать доклад :)
            • 0
              Нужна обратная связь, чтобы система реагировала на команду «Заткнись» для остановки доклада или «Не сейчас» для откладывания его на час. :)
      • +1
        Потому рассказывать все это можно при первом обнаружении движения на кухне. Или в туалете :)
    • +6
      5. Новые посты на хабре
      • +1
        Хм, при движении в туалете новые посты на хабре зачитываются жене в спальне?:)
  • +3
    это как?
     if (!$_GET['nocache']) {
      $use_caching=0; // use cache?
     } else {
      $use_caching=0;
     }
    

    • +1
      Гараж закрыла, отопление включила, кеширование выключила…
      • +23
        … ВЫКЛЮЧИЛА, я сказала! :)
    • +5
      ну вот и code review начался, только давайте не на хабре — здесь не совсем это удобно :)
  • +1
    Очень круто, я считаю. Буду следить за проектом.
  • 0
    • 0
      Судя по тому, что на сайте проекта есть туда ссылка, автор о нём знает
      • 0
        Знает :)
        И, пользуюясь случаем, всем его рекомендует.
  • +1
    А фишка-то, собственно, в том, кто такая Аliсе :)
    • 0
      Я как увидел Alice, сразу подумал о том, что можно наделать, если найти дырку
      • НЛО прилетело и опубликовало эту надпись здесь
  • +5
    Даа, это действительно круто выглядит, мощный прыжок от постов про 1-2 датчика на балконе и любимую ОС:)
  • 0
    удачи в дальнейшей разработке :)
    • 0
      Спасибо :)
  • 0
    О-па! Как раз по работе проект попался, надо разработать веб-стстему как раз для умного дома.
    В Вашей системе все программируемо под AVR микроконтроллеры? А под диммеры какой компании пилится все это? Или есть определенный стандарт, которого придерживаются при изготовлении подобных устройств? Извините за такие глупые вопросы, просто тема для меня совсем нова…
    И еще, если дорабатывать уже имеющуюся систему совместно, какая ситуация будет с правами на нее? Не будет же она всегда opensource… Заранее спасибо за ответы
    • +1
      Будет всегда opensource :) Если хотите поучавствовать в разработке, то добро пожаловать на google code. Но лицензия MIT не запрещает брать систему и использовать в своих коммерческих решениях (с указанием оригинального авторства).

      Про «железо» я написал в статье — система не заточена на какое-то конкретное «железо». В ней есть нечто вроде программных «адаптеров» для передачи команд контроллерам. Такие адаптеры можно написать под любой протокол, были бы открытые спецификации интерфейсов.
  • 0
    А я чего-то подобное для z-wave делал. Только вот компьютер постоянно включенным держать не хотелось, потому в роли сервера выступал роутер. Но собрать нормальный ipk для него, добавить всё в автозагрузку и т.п. руки так и не дошли :(.
  • 0
    У вас там pChart используется для построения графиков… Просто интересно, я угадал?
    • 0
      Извиняюсь, исходники-то, внезапно, оказались открытыми… Угадал, но не считается. Жалко…
  • 0
    Автор, я так понял, вы решили не заморачиваться с коммуникаторами, и просто сделали для них мобильную версию веб-интерфейса?
    • 0
      именно. так проще, однако не без минусов — «нативный» интерфейс был бы приятней конечно…
      • 0
        Занимаюсь похожей системой, но решил заморочиться и изучаю написание приложений под андроид. Смело забудьте про этот «минус», когда надо будет — сделаете. Слишком много изучать приходится.
        • 0
          Разве это много? Много — это когда вы понимаете, что на каждую из нескольких сотен точек контроля/управления по ардуине не навесишь, и стены никто штробить не будет, когда вы поразбирались с Bluetooth, как наиболее доступным и защищенным протоколом, но поняли, что по энергоэффективности и реально поддерживаемому размеру сети он не проходит, и когда вы покупаете паяльную станцию, чтобы паять свои датчики на безвыводных чипах в QFN-корпусах и собираетесь писать свой беспроводной стек — вот тогда много изучать приходится ;-).
  • 0
    я, может быть, туповат, но скажите, а где найти подробности про организацию «железа»? ну т.е. как ардуино подключить к компу?
    • 0
      по USB :) Общаться можно просто командами через порт подключения.
      Подробно тут arduino.cc/playground/Interfacing/LinuxTTY
      • 0
        не, я имею в виду, а как датчики к ардуино подключать? и какой скетч лить? или я и правда тупой и не выспался? :))
        • 0
          на сайте проекта — там есть схемы, скетчи и прочее
  • 0
    Скажите, а что служит для индикации состояния гаражных ворот? На сайте ответа не нашел. Тыкните носом :)
    • 0
      Имеете в виду что на самих воротах стоит? Обычный датчик контакта на герконе. Датчик на ряду с другими подключен к Arduino, а она уже посылает команды в сеть при изменении состояния.
  • 0
    А почему не изпользовать протокол взаимодействия x10?
    Его достаточно было бы для одного дома. А для небоскреба z-bee есть, заранее прошу прощения, могу ошибиться в названии.
    • 0
      Можно и x10 и zigbee подключить — при текущей организации взаимодействия с «железом» это займёт минимум усилий. мне было удобней начать с arduino, потом был 1wire. Будут желающие видеть другие протоколы, будут и они :)
  • 0
    zig-bee правильнее, и не только для небоскрёба, для дома тоже очень не плохо подходит, модули по 400-800 грн правда…
  • НЛО прилетело и опубликовало эту надпись здесь
    • +2
      Я тоже хочу загородную резиденцию.
  • 0
    Отличный проект, спасибо. Как раз на носу ремонт квартиры. Сразу закладываю в проект все коммуникации, и хочется ничего не забыть, чтобы потом сопли по плинтусам не раскладывать. Буду признателен, если вы напишете, какие соединения вам понадобились.

    PS. Термометры Dallas можно по несколько штук на одну линию гирляндой вешать и меньшим количеством контроллеров обходиться.
    • 0
      на растерзание =)
    • 0
      А что там? К документу нет доступа.
      • 0
        пофиксил
  • 0
    Скажите пожалуйста, в чём вы рисовали 3д проект?

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