MajorDoMo

Приветствую аудиторию Geektimes!

Мы это проект SmartLiving.ru, на котором ведётся активное обсуждение и разработка открытой платформы построения Умного Дома MajorDoMo.

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

Немного истории и философии

Про Умные Дома лично я впервые узнал наверное в конце 90-х, хотя и до этого не раз сталкивался с элементами домашней автоматики вроде светильников, зажигающихся от хлопка. Но первым проектом, который я изучил достаточно подробно, был открытый проект MisterHouse, написанный на Perl. Собственно, через годы он и вдохновил меня на создание MajorDoMo.

Проект MajorDoMo “официально” стартовал в 2012 году с запуском веб-сайта и выходом первой статьи на Хабре с общим обзором возможностей системы. Через некоторое время вышла ещё одна статья, ставшая достаточно популярной: «Типичный день под присмотром Алисы». С тех пор утекло много воды — проект развивался технически, росло сообщество пользователей, постепенно информация о системе расходилась по Сети. Сейчас мы подошли к тому этапу, когда для дальнейшего развития проекта уже недостаточно энтузиазма и свободного времени нескольких человек. Открывающиеся перспективы требуют профессионального подхода, иначе они могут и закрыться, а потому было принято решение о создании полноценного стартапа на базе проекта с выделением соответствующих ресурсов на его запуск и развитие. Так что, не смотря на относительно немалый (по меркам IT-продуктов) возраст проекта, всё самое интересное только начинается.

Как бы то ни было, основные “стержни” проекта всегда оставались и останутся неизменными:
  • Открытость
  • Доступность
  • Свобода выбора

Открытость

Открытый исходный код — любой желающий может подключиться к проекту на GitHub, сделать своё ответвление и прислать рекомендации по изменению основной ветки.

Лицензия MIT — проект может использоваться как в некоммерческих, так и коммерческих целях без каких либо ограничений, кроме указания его происхождения.

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

Доступность

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

Легко установить — установщик для Windows, инструкции по установке на различные дистрибутивы Linux, готовые образы для Raspberry.

Свобода выбора

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

Из поддерживаемых протоколов/оборудования можно выделить: Z-Wave, KNX/EIB, Modbus, Ноолайт, Uniel, Orvibo, MQTT, 1-wire, WirenBoard, MegaD… Сюда же можно добавить бесконечное количество разнообразных устройств на базе Arduino.

Кроме того, можно интегрироваться со многими сервисами и приложениями с помощью открытых API. Созданная на веб-технологиях платформа позволяет воспользоваться множеством готовых примеров.

Возможности

Если вывести кратко основные возможности платформы на данный момент, то получится во такой список:

  • Простая и быстрая установка
  • Кросс-платформенность (Windows/Linux)
  • Бесплатно для личного или коммерческого использования
  • Большое и активное сообщество вокруг проекта
  • Поддержка различного оборудования
  • Мульти-язычный интерфейс (Русский/English)
  • Веб-доступ с любого устройства
  • GPS-трэкинг и реакция на местоположение пользователей
  • Голосовые уведомления и распознание голоса
  • Push-уведомления
  • Интеграция со сторонними веб-сайтами и сервисами
  • Управление мультимедиа
  • Модель безопасности с разграничением доступа между пользователями
  • Учитесь на примерах и делитесь настройками (сервис Connect)
  • CloudSync — облачная синхронизация и простой доступ из любого места
  • Система обновлений в один клик
  • Построена на веб-технологиях (PHP/JS/HTML5)
  • ООП в реальной жизни: классы/объекты/свойства/методы
  • Программирование с помощью PHP и/или визуальной среды Blockly
  • Расширенный анализ состояния и самодиагностика
  • Маркет дополнений


Демонстрация

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





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

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

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


  1. tvl
    11.06.2015 00:11

    А есть ли поддержка Bacnet?


    1. Jey Автор
      11.06.2015 10:22

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


  1. WebConn
    12.06.2015 22:49

    Вот почему на тему говорящего «Умного дома» у меня возникает стойкая ассоциация с…

    Portal?
    image


  1. ignat99
    13.06.2015 11:51

    Я не являюсь пользователем MJD, однако устанавливал 1 раз этот набор PHP скриптов на сервер почти 2 года назад. После обновления базы данных, удалось запустить в течении 2 часов. Участие в процессе принимали 2 опытных программиста.

    Судя по форуму, многие без участия создателя или опытного человека со знанием PHP не могут обойтись.

    Ещё одна проблема — потребление электричества центральным устройством. Например к 1 RPi можно подключить 3 камеры видеонаблюдения и использовать солнечные панели на 5 Вт для питания. MJD со всеми возможностями требует сервера с большей производительностью и потреблением IMHO.

    В то же время есть удачные проекты на JS и чистом СИ, с серверами запущенными на обычном старом мобильном телефоне или да же на ESP8266, которые в целом потребляют на порядок меньше электричества.

    Поэтому, IMHO, для профессионального подхода, желательно использовать более прогрессивный код и концепции. Например посмотреть в сторону Arduino IDE и перенести на СИ весь код связанный с работай со специфическими сенсорами.

    А верхний архитектурный уровень переписать на Drakon c возможностью в дальнейшем автоматического получения кода под различные языки и платформы. Или использовать microflo.org

    А графический (html) интерфейс создания классов в PHP — забыть как страшный сон.

    Так же я весьма осторожно отношусь к идее выкладывать автоматически конфигурацию своей домашней системы в открытый доступ. Или пользоваться для обслуживания дома сервером 3 лиц (в данном случае — сервером автора программы). Или обновлять конфигурации и код не глядя на содержимое.


    1. Jey Автор
      13.06.2015 22:35

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

      В процессе установки системы действительно могут возникнуть сложности, если она устанавливается не на Windows, а на Linux-платформу, для которой нет описанного процесса установки (или нет готового образа как в случае RPi). Над этим (как и над многим другим) ведётся работа. Про привлечение двух опытных программистов мне даже сказать нечего — вы удивитесь, для чего только не привлекают опытных программистов :) Отмечу лишь, что большинство пользователей системы далеко не программисты. Хотя я знаю таких, кто всерьёз рассматривает возможность сменить вид деятельности и стать программистом, получив базовый опыт программирования на системе.

      Кстати, про энергопотребление — требования к ресурсам сервера зависят от поставленных задач и аппетита пользователя. Когда много возможностей, тогда аппетит растёт и того же RPi уже не хватает, хотя тот же RPi 2 закрывает вопрос производительности очень неплохо.

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

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

      Обновлять код «не глядя» вас так же никто не заставляет — автоматического обновления нет как такового, а весь код всегда открыт на GitHub — обновления идут прямиком оттуда.

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


      1. ignat99
        14.06.2015 12:55

        Мы устанавливали вашу систему в двоём с одним из членов команды в Бразилии на облако компании Телефоника в Испании около 2 лет назад. Там были специфические конфигурации. Я установил PHP часть. А мой друг обновил (через одно заднее отверстие) базу данных на сервере. Только так и удалось поставить систему. Видимо инсталятор у вас не был готов к такой установке.

        Второе, если человек не является опытным PHP программистом, как он проверит код обновления?

        Свобода начинается там, где вы начинаете поддерживать стандартное API. Например OpenHUB.


        1. Bluefox
          15.06.2015 10:51

          Для open source системы 2 года это очень много. Может быть сейчас эта часть сильно переработана. :)

          OpenHAB — это не стандарт, а всего лишь софт, такой же как и MJD, ну может посильнее «пропиаренный». А вот mqtt, RESTful, modbus, RS485 это протоколы, которые стоит поддерживать и через них осуществлять обмен сообщений… Ну modbus, RS485 для этого мало годятся, а вот mqtt, «то что доктор прописал» :)


          1. ignat99
            15.06.2015 11:44

            JSON-RPC, но не советую делать параметры отличные от OpenHAB.

            github.com/openhab/openhab/wiki/REST-API

            Главное это шина данных через которую несколько устройств могут работать как одна система.

            Если нужна экономия ресурсов то: www.souliss.net


      1. osof
        15.06.2015 12:24

        Про привлечение двух опытных программистов мне даже сказать нечего — вы удивитесь, для чего только не привлекают опытных программистов :) Отмечу лишь, что большинство пользователей системы далеко не программисты.
        Если для простого программирования поведения системы надо вызывать программиста — то это плохая система. Я лично устанавливал и пользовал вашу систему, но напрягает несколько вещей. Если есть минутка — я их перечислю:
        1. Нифига не готовое решение «из коробки». Скачать, установить, заработало — такого нет. Сервер упорно запускается на 81 порту, после решения этой проблемы — проблемы с темной схемой отображения. Половина надписей — белая на белом. VLC с коробки у меня так и не завелся.
        2. Смущает связка windows-apache-php-command line tools. Здесь очень много звеньев, каждое может оказаться слабым. При этом, я так понимаю, вы начинаете продвигать систему как промышленную и настаиваете на ее надежности. Я бы надежной систему, которая работает на не-серверной win и крутит bat-ником жизненные скрипты не назвал.
        3. Любой сбой в БД укладывает систему. Есть простая система починки баз, но нет вообще системы дублирования. А с mysql и активном пользовании базы сбои будут.
        4. Непонятный и неюзер-френдли способ программирования поведений и сценария. Вот как например, народ настраивает будильник:
        пример будильникаAlarmWeekDay-> AlarmRun
        Код:
        if (isWeekDay()){ // сегодня рабочий день
        // все проснулись
        setGlobal(«SleepAllMode.active»,0);
        say('Пора вставать!');
        // включим радио
        callMethod(«Radio.RadioPlay»);
        // запланируем выключить радио
        SetTimeOut(«AlarmWeekEnd_RadioStop»,'callMethod(«Radio.RadioStop»);', 60*60);
        }

        или
        еще кодif (gg('Status.Status')==«1») {

        if (timeIs(gg('Time.Time'))) {
        say('Внимание это будильник.' ,2);
        playSound('gimn');
        }
        }

        И вы при этом говорите, что пользователи вашей системы совсем не программисты. Думаю, что те, которые не-программисты заканчивают настройку системы на получении погоды в своем регионе. О настройке более серьезных сценариев речь не идет. Я с уважением отношусь к Вашему труду, но мне кажется, что выход в массы Вы запланировали немного поспешно. Продукт, в котором половина фич не работает или требует курения мануалов, но зато есть «маркет» для меня сыроват.
        П.С. Сори за нечеловеческое оформление комемнтария. У меня теги не работают.


        1. Jey Автор
          15.06.2015 13:15

          Спасибо за развёрнутый комментарий! Да, система и в самом деле больше походит на development framework, нежели на готовое решение, но я бы сказал, что инструмент не такой уж сложный и очень гибкий. Надёжность и качество решений, реализованных на системе, в самом деле зависит от уровня владения «кунг-фу» и в собственных проектах мы, как разработчики, можем гарантировать беспроблемную работу и отсутствие необходимости конечному пользователю программировать что-то самому (хотя последнее для многих становится интересным увлечением). И в наших собственных проектах и в проектах других пользователей используется одна и та же платформа, так что идёт взаимовыгодный обмен опытом и проблемные моменты со временем «шлифуются».


          1. ignat99
            15.06.2015 14:12

            Да сейчас — каждая установка в отдельном доме или квартире уникальна и требует вмешательства программиста.

            Но есть проекты, которые обещают самоконфигурацию системы.

            Если смотреть презентации от Google и исходные коды на github.com/google/physical-web, то видно что компания взялась за стандартизацию. Так же есть решения от Samsung developer.samsung.com/artik

            Обратить внимания на спецификации и общие для обоих компаний протоколы: mDNS


  1. Satyricon
    18.06.2015 15:59

    Каждый раз спрашиваю и каждый раз огребаю минусы. Всё равно спрошу — зачем умный дом в квартире?


    1. ignat99
      18.06.2015 18:41

      Зависит от человека. Кому то надо. А кто то наслаждается обычными

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


    1. Jey Автор
      19.06.2015 11:01

      Это вопрос обычно задаётся как предлог для дискуссии, потому что зачастую подразумевает «зачем мне умный дом», т.е. является вопросом персональных потребностей и предпочтений. Если абстрагироваться от оценки полезно/бесполезно и рассматривать только принципиальные возможности, то сценариев достаточно много. Нужно понимать, что Умный Дом это не только управление бытовым оборудованием, но и возможность интегрироваться в информационные сервисы. Например, мой дом рассказывает мне список запланированных задач на день (интеграция с Wunderlist), когда «видит», что я зашёл утром в ванную. Дом ведёт статистику физической активности (интеграция с Moves), напоминает если пару дней не пользовался тренажёром (ведёт статистику по каждому члену семьи). Дом следит за тем, что ребёнок вовремя добрался до школы (GPS-трэкинг). Напоминает, что надо бы почистить робот-пылесос, чтобы он смог запустить его, когда никого не будет дома. Про управление светом, климатом и электро-приборами, наверное, не стоит даже и говорить — в квартире их не чуть не меньше, чем в частном доме. Пожалуй, основное отличие от квартиры в том, что в ней меньше инжерерных систем, обеспечивающих автономность проживания; в том, что касается обеспечения комфорта и безопасности, разница не такая уж и большая.


      1. ignat99
        19.06.2015 17:50

        А ещё можно экономить электроэнергию и деньги при помощи автоматизации процессов включения и выключения.