Новости проекта MajorDoMo (платформа домашней автоматизации)

    Прошло около двух месяцев с момента публикации на Хабре первой вводной статьи о проекте MajorDoMo и у меня есть новости.

    image

    Буквально на этой неделе было выпущено обновление в виде версии 0.1.8b, включающей большое количество мелких правок и несколько достаточно интересных нововведений, с которыми мне хотелось бы вас познакомить.

    Сцены

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

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

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

    Но, как говорится, лучше один раз увидеть, что получается:





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

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

    Визуальное программирование

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

    Скачав с google code последнюю версию Blockly, я посмотрел как он устроен — после этого он мне ещё больше понравился. Как оказалось, нет никаких проблем с добавлением собственных «кубиков», а так же с написанием собственного преобразователя из визуальной среды в программный код. Blockly «из коробки» поддерживает преобразование в JavaScript, так что я взял этот преобразователь за основу и переделал его в генератор PHP-кода, который используется в MajorDoMo для сценариев.

    Вот как выглядит простенький сценарий:

    image

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

    Я попробовал даже русифицировать блок-схемы, но пока от этого отказался — как-то оно уж совсем непривычно выглядит, хотя может к этому ещё как-нибудь вернёмся. Вот пример блок-схемы на русском:

    image

    Разное

    Кроме вышеупомянутого, можно ещё отметить следующие изменения:

    • (!) Русский и Английский язык интерфейса — да, теперь все текстовые строки берутся из словаря и можно будет легко и просто подключать дополнительные языки.
    • Для работы со сценариями в режиме кода теперь используется редактор с подсветкой синтаксиса
    • Добавился новый инфо-модуль «Календарь дел/событий»
    • Голосовые уведомления произносятся без накладывания друг на друга, а в порядке очерёдности
    • Модуль «веб-переменные» поддерживает вытягивание информации с закрытых паролем страниц
    • Автоматическое резервное копирование и восстановление повреждённых таблиц базы данных системы на старте
    • Полноценная поддержка 1-wire протокола: чтение и запись в устройства, подключенные по шине 1-wire.
    • большое количество совсем мелких исправлений и доработок


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

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

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

    Традиционно приглашаю на сайт проекта: smartliving.ru.
    Поделиться публикацией

    Похожие публикации

    Комментарии 13

      0
      Спешу спросить на счет: «Голосовые уведомления произносятся без накладывания друг на друга, а в порядке очерёдности».
      Когда я пробовал Вашу систему и arduino, у меня по событию она говорила фразу. Бывали случайно моменты, когда определяющая ножка МК оказывалась не подключенной и, само собой, ее состояние очень быстро хаотично переключалось туда-сюда и получался непрерывный многопоточный ее голос. А теперь очередь этих сообщений будет «бесконечно» долгой? :)
        0
        если хаотичное переключение будет постоянно, то да :)
        если это какие-то кратковременные глюки контроллера, то очередь будет ограничена количеством отправленных сигналов от устройства, а они не рождаются массово в одно мгновение, с учётом задержки на отправку запроса по http.
          +1
          Проверенно, несколько десятков в сек наверное у меня так получалось в результате переподключения датчиков на живую :)
          Возможно стоит ограничить очередь разумным числом)
            0
            обманул я насчёт бесконечной очереди… пересмотрел реализацию и увидел, что такое ограничение было заложено — голосовые сообщения в очереди имеют срок жизни в одну минуту, так что очередь сама себя укорачивает.
              +6
              Сделайте приоритеты у голосовых уведомлений. Если у меня «Температура котла достигла 120 градусов и продолжает расти», то мне абсолютно не интересно будет выслушивать, что «обнаружено новое устройство»
                0
                приоритеты уже есть, но сейчас они используются для того, чтобы была возможность задать минимальный уровень голосовых уведомлений — т.е. система может какую-то часть уведомлений просто не проговаривать. например, вечером система повышает минимальный уровень, чтобы ночью малозначимые события не произносились. но мысль насчёт влияния приоритета на очередь очень здравая — обязательно будет реализовано.
        0
        Идея со сценами отличная! Но хотелось бы, чтобы сцены не только отображали информацию, но и принимали команды. К примеру, сцена, на которой виден план этажа, и видно, в каких комнатах включен свет. Перед уходом достаточно открыть на планшете эту сцену, и тыкнуть пальцем в горящие комнаты, чтобы погасить их. Ну, и так далее.
          0
          уже :) в свойствах элементов можно указать сценарий, который выполнится по нажатию на элемент в определённом состоянии.
            0
            В таком случае начинаю изучение системы, для дальнейшего использования. Благодарю вас.
          0
          HiAsm style визуального программирования не проще/лучше ли будет?
            0
            помоему это круто в виде пазлов, сразу видно что куда нельзя подтыкать.
            0
            На сайте проекта вместо многих картинок показывается заглушка «Daily bandwidth limit exceeded». Jey, вроде же Clip2net ваших рук дело? О_о
              0
              моих, но у меня там нет особых преференций и не вписался в лимиты из-за хабраэффекта :)

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

            Самое читаемое