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

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

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

В своем ПЛК я создал модуль Mobdus Slave с входными и выходными регистрами и написал блок синхронизации, а дальше в среде иридиум набросал простенький интерфейс.

image

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

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

image

Так выглядел интерфейс моего умного дома в приложении i2 Control на iPhone. Приложение я поставил на все мобильные устройства имеющиеся в семьи и тут я наткнулся на первую проблему. Ккогда работаешь на ноутбуке, а телефона под рукой нет, то было бы удобнее управлять светом непосредственно с ноутбука.

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

image
Визуализация в CoDeSys. К сожалению, моя версия ПЛК (программируемого логического контроллера, на котором построен мой умный дом) не имеет встроенного веб-сервера — иначе задача решалась бы гораздо проще.

От установки i2 Control на свой Mac я отказался и довольствовался управлением только с телефона и планшета.

Спустя некоторое время всплыла вторая проблема. Запуск приложения i2 Control занимает достаточно долгое время. Например, на моем iPhone 6 оно стартует около 9 сек. Наверное, если бы задача была управление медиа-центром, то это время было бы приемлемо — пока найдешь все пульты, включишь всю технику, настроишь нужное сочетание, то явно пройдет больше времени. Однако для управления светом эти 9 секунд оказались неприемлемо долго и зачастую я предпочитал встать и выключить свет, чем запускать приложение (сейчас вышел Iridium server, который по идее решает эту проблему, но руки протестировать его у меня пока не доходят).

Жить с умным домом и не управлять им с телефона было как-то неправильно и поэтому я решил седлать еще одну попытку. Идея была такая — на домашнем севере поднять веб-сервер и вынести все управление на веб-страницу. Знакомые посоветовали Node JS — мол, модная и перспективная платформа, а так как мне все-равно было что изучать (я не знал ничего), то остановился на Node JS. Единственное, что не хотелось делать — это разбираться в HTML, поэтому я заказал frontend у фрилансера, а на Github’е нашел библиотеку для работы в Modbus и очень быстро (сам удивляюсь) сделал задуманное.

image

Так выглядит сейчас интерфейс моего умного дома на Iphone. Интерфейс адаптивный, поэтому он хорошо смотрится на любых устройствах. Например, вот так он смотрится на моем макбуке:

image

На десктопе айфона у меня сделана ссылка на эту страницу, которая загружается достаточно быстро 1-3 сек. Я добавил ее также в закладки в браузеры и теперь управление светом всегда под рукой. Сервер Node JS выполняет также роль между ПЛК (контроллером умного дома) и контроллером z-wave, который используется для беспроводного управления разными лампами (об этом я расскажу в будущем).

Традиционно в конце плюсы и минусы решения.

Плюсы: Быстрый адаптивный интерфейс, который работает на любых устройствах, цена (я заплатил только за разработку фронтона).

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

Исходный код на Gitbub.

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

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


  1. vvzvlad
    17.01.2016 20:41
    +1

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


    1. apivovarov
      17.01.2016 21:07

      Как я написал, меня больше волнует скорость работы интерфейса. Собственно, именно это была причиной написания веб-сервиса. А покажите ещё интерфейс на телефоне, пожалуйста.


      1. apivovarov
        17.01.2016 21:08

        Торможу ))


      1. vvzvlad
        17.01.2016 21:20
        +2

        Пожалуйста


        1. apivovarov
          17.01.2016 21:41

          Я намеренно не стал делать графический интерфейс — в повседневном использовании важна скорость и простота. Зато теперь я использую его каждый день. Кстати, смешной момент. Дизайнеры кроме кнопки «Выключить все» сделали рядом кнопку «Включить все». Я спрашиваю — зачем?! Я не могу даже придумать сценарий, при котором нужно будте включить весь свет — в комнатах, кухне, коридоре, кладовке, ванной, туалете ))

          PS
          А Logic Machine безусловно интересная вещь и если бы я сейчас начинал делать, я бы ее покрутил. )


          1. NoOne
            18.01.2016 13:42

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


            1. apivovarov
              18.01.2016 13:55

              :-))))))


  1. Bluefox
    18.01.2016 12:19
    +1

    Как раз занимаюсь написанием системы(вот уже 3 года :) ), которая делает именно это. Летом появилась поддержка modbus и есть возможность создавать простые и сложные интнрфейсы. Написано всё на node.js.
    если интересно то iobroker.net


    1. apivovarov
      18.01.2016 12:31

      Спасибо, достаточно любопытно — если найду время, постараюсь посмотреть. Я правильно понимаю, что есть поддержка z-wave?


  1. Cepega
    18.01.2016 13:39
    +1

    А мне кажется, что «Умный дом» на то и умный, что им не надо управлять вручную. А перенос выключателей на телефон вряд-ли сделал дом умнее.


    1. apivovarov
      18.01.2016 13:52

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


  1. memtew
    18.01.2016 15:03
    +1

    У меня у контроллера хоть и есть встроенный веб-сервер, но на нём сделать что-то удобное затруднительно. Поэтому я поступил как вы, выделил под это дело отдельный сервер и написал веб-интерфейс:

    Вид


  1. doom369
    19.01.2016 04:09

    Ну или можно взять готовый Blynk.


    1. apivovarov
      19.01.2016 07:59

      По-моему, у них нет поддержки модбас. Мне сейчас архитектура с веб-интерфейсом нравится больше. Хотя если попытаться сделать что-то большее, чем простой пульт управления светом, то может я и изменю своё мнение. ))


      1. doom369
        19.01.2016 13:38

        По-моему, у них нет поддержки модбас.

        Ну там есть тоже nodeJs, так что можно точно так же как у вас добавить.

        Мне сейчас архитектура с веб-интерфейсом нравится больше.

        Странно. Обыно наоброт. Но то дело вкуса.


        1. apivovarov
          19.01.2016 14:06

          спасибо, я постараюсь посмотреть.


  1. Venikov
    19.01.2016 16:33
    +1

    Простите меня, пожалуйста, за занудство, но как можно делать «Умный дом» с гостинной?
    Вы не боитесь, что этот дом скоро станет умнее и поработит вас?


    1. apivovarov
      19.01.2016 18:03
      +1

      image
      )))))

      PS
      Но все же большое спасибо! сейчас исправлю.


    1. apivovarov
      19.01.2016 18:05

      Спасибо!
      image


      1. Venikov
        19.01.2016 18:18

        вам спасибо за понимание.