Тема интернета вещей сейчас как никогда наиболее популярна. Каждый день выходят новые интересные устройства способные общаться друг с другом через интернет. Пока различные производители договариваются о общем протоколе общения, Apple решила взять дела в свои руки и выпустила Framework HomeKit стандартизирующий способы управления устройствами различных производителей. В перспективе с помощью мобильного приложения HomeKit можно будет управлять различными лампочками, термостатами, розеточными модулями по wifi или bluetooth. Но это все в ближайшем будущем, хотя нет, постойте…
Вы уже сейчас можете работать более чем с 1000 HomeKit устройствами или создавать свои HomeKit совместимые устройства!!!

  1. О HomeKit шлюзе RaZberry
  2. Установка ПО автоматизации Z-Way
  3. Создание датчика температуры из данных OpenWeather и Реле из GPIO Raspberry
  4. Приложение HomeKit для iOS из примеров Apple


О HomeKit шлюзе RaZberry



На данный момент на мировом рынке присутствует более 1000 Z-Wave устройств и все они совместимы друг с другом. Устройства могут работать, как друг с другом напрямую так и через центральный контроллер, который выполняет роль шлюза Z-Wave <=> TCP/IP. Обычно такие шлюзы служат для управления Z-Wave устройствами из Web интерфейса или мобильного приложения. Одним из самых популярных шлюзов является Z-Wave контроллер RaZberry http://razberry.z-wave.me/.
RaZberry — это программно-аппаратный комплекс поддерживающий протоколы Z-Wave, HTTP, TCP и возможность запуска системных команд, например Bash. ПО автоматизации RaZberry называется Z-Way и благодаря поддержке HTTP API можно создать, датчик температуры, взяв данные с OpenWeather, который можно использовать в различных правилах автоматизации. Z-Way распространяется бесплатно и доступен для многих платформ, более того проект является OpenSource, за исключением части работы с Z-Wave, т.к. подписан NDA с Sigma Designs, владелицей протокола Z-Wave. В состав Z-Way входит модуль для работы с HomeKit, который и позволяет транслировать Z-Wave и HTTP устройства из RaZberry в HomeKit приложение на iOS.

Установка ПО автоматизации Z-Way


Скачайте Z-Way http://razberry.z-wave.me/z-way-server/ на ваш компьютер, есть различные сборки под Linux x86, Raspberry и Windows. Для Raspberry можно воспользоваться инсталлятором, который ко всему прочему установит еще и сервис удаленного доступа, позволяющий попасть в панель управления умным домом через сервис find.z-wave.me, используя RaZberry ID и пароль:
wget -q -O - razberry.z-wave.me/install/v2.0.1-rc24 | sudo bash

Для различных версий Linux скаченный архив нужно просто распаковать и запустить z-way-server:
LD_LIBRARY_PATH=./libs ./z-way-server &

Создание датчика температуры из данных OpenWeather и Реле из GPIO Raspberry


После запуска нужно перейти в Web интерфейс настройки автоматизации IP_ADDRESS:8083.


Выберите интерфейс Z-Way Home Automation UI.


Теперь нужно создать устройства, которыми будем управлять. Если используется плата RaZberry или USB Z-Wave Stick, то у вас уже есть устройства, иначе давайте создадим датчик температуры и подключим реле к GPIO выходам Raspberry.

Для создания датчика температуры перейдите на вкладку Preferences-->Modules-->Environment и выберите модуль OpenWeather.


Проводим не сложную настройку.


И получаем датчик температуры.


Далее добавляем реле. Управлять GPIO будем командой echo, поэтому системе автоматизации нужно разрешить использовать внешнюю программу. В z-way-server/automation/.syscommands вносим разрешенную команду echo:
echo "echo" >> .syscommands

Возвращаемся в интерфейс автоматизации и переходим на вкладку Preferences-->Modules-->Devices, здесь нужно выбрать модуль CodeDevice.


Указываем тип: SwitchBinary
Команда включить:
system('echo "1" > /sys/class/gpio/gpio24/value');

Команда выключить:
system('echo "0" > /sys/class/gpio/gpio24/value');



При старте системы автоматизации нужно настроить GPIO порт на выход, для этого переходим на вкладку Preferences-->Modules-->Scripting и выбираем модуль CustomUserCode, в текстовое поле пишем код:
system('echo "24" > /sys/class/gpio/export');
system('echo "out" > /sys/class/gpio/gpio24/direction');



Теперь у нас есть 2 работающих устройства.


Далее нужно активировать модуль HomeKit. Для сопряжения устройства с приложением HomeKit требуется ввести код, в Z-Way этот код можно посмотреть в логе, запускаем просмотр лога в консоле:
tail -f /var/log/z-way-server.log



И теперь запускаем модуль HomeKitGate на вкладке Preferences-->Modules-->Peripherals.


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


После запуска модуля смотрим в лог и видим код сопряжения HomeKit PIN:249-01-266.

Приложение HomeKit для iOS из примеров Apple


В AppStore есть одно работающее приложение HomeKit — MyTouchHome (на момент написания статьи), стоит 1.99$.


Для iOS разработчиков компания Apple охотно делится примерами, поэтому мы сами можем скачать исходники и скомпилировать себе приложение на iOS устройство. Исходники примера HomeKit берем здесь:
https://developer.apple.com/library/ios/samplecode/HomeKitCatalog/HomeKitCatalog.zip
Для сборки приложения требуется аккаунт разработчика, без него приложение сообщало об ошибке, что не может подключиться.
После запуска приложения находим наш контроллер, добавляем его в наш дом, и видим список наших устройств, которыми можем управлять.


Состояния устройств полностью синхронизированы, управлять можно и из Web панели и из приложения HomeKit.


Надеюсь в скором времени появится много функциональных приложений с поддержкой HomeKit, ну а мы уже готовы!

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


  1. snyuryev
    05.04.2015 19:44

    А у кого-нибудь работает русская Сири — в том плане распознает ли она «включить свет»?
    У меня усердно пытается запустить программу «Свет» :)
    ps: на Intel Edison есть аналогичный вариант поставить HomeKit.


    1. aivs Автор
      05.04.2015 21:12

      У меня и по английски Siri свет не включает. В приложении homekit есть устройство с названием Lamp, говорю ей: «lamp on», она понимает и отвечает: «не могу этого сделать.»


      1. snyuryev
        06.04.2015 14:59

        Если отвечает на русском, то и спрашивать надо на русском))
        Кратко изложу свои изыскания. Нужно говорить «включи свет» вместо «включить свет». Во втором случае Сири пытается запустить приложение. Аналогично «выключи свет» вместо «выключить свет».


      1. snyuryev
        06.04.2015 15:02

        Если Сири точно настроена на английский, то нужно попробовать «lights on»


        1. aivs Автор
          06.04.2015 18:40

          У меня 50 различных устройств и среди них есть такие как: lamp, nightlight, light in living room.
          Как мне сказать Сири, чтобы она включила именно ночник с названием nightlight?


          1. snyuryev
            07.04.2015 11:36

            Таким количество подключенных устройств не обладаю — поэтому мало чем могу помочь. Возможно как вариант — это настроить «зону», в которую прописать нужное устройство типа «свет».


    1. utya
      06.04.2015 16:46

      а можно ссыль на intel edison home kit


      1. utya
        06.04.2015 17:02

        1. snyuryev
          07.04.2015 11:31

          да, устанавливал оттуда


          1. utya
            07.04.2015 11:33

            И как нормально? а кто в роли исполнительного устройства


            1. snyuryev
              07.04.2015 11:40

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

              С iPhone (или другого iOS девайса) нужно запустить приложение, которое поддерживает HomeKit — прекрасно подойдет и демо приложение от Apple (в статье указано) и сделать поиск устройств

              Все должно происходить в одной wi-fi сети.


              1. utya
                07.04.2015 11:44

                А даже так, я думал эти исходники просто бридж, а там дальше эдисон шлёт команды кудато дальше, на какой-то контроллер умного дома, ну у вас наверно всё к эдисон подключено, и всё компактно в одном месте, а если разбросаны по дому датчики. А в какой среде вы исходники собирала Intel XDK?


                1. snyuryev
                  07.04.2015 12:01

                  Возможно есть реализации бриджа под эдисон, но мне показалось это достаточно простым способом поиграться с HomeKit, тем более нет никаких проблем подключить нужные реле на эдисона. Для того что бы запустить все это дело нужно просто скопировать исходники из репозитария, и выполнить две команды: npm rebuild и node Core.js и все. Здесь более подробно — github.com/KhaosT/HAP-NodeJS/wiki/Installing

                  Intel XDK не нужен, код можно править в любой удобной IDE. Я все делаю в web storm. Только дописал один скрипт который делает деплой на эдисон.

                  Не совсем понял про датчики, способы подключения зависят от вас и от выбранного железа)


                  1. utya
                    07.04.2015 12:20

                    Насчёт установки понял. Насчёт датчиков, ну у меня по дому беспроводный датчики Z-wave, arduino(Mysensors), ясен пень что edison с ними напрямую не заработает.


                    1. aivs Автор
                      07.04.2015 13:30

                      Я думаю возможно подключить плату RaZberry к Intel Edison. На Edison есть UART, к нему подключаем плату RaZberry. Для x86 Debian и Ubuntu есть софт (Z-Way) для работы с платой RaZberry. Возможно есть подводные камни, но на первый взгляд добавить Z-Wave к Edison возможно.


  1. utya
    06.04.2015 16:59

    Правильно ли я понимаю RaZberry просто добавил поддержку HomeKit в свой дистрибутив?


    1. aivs Автор
      06.04.2015 18:42

      Написали модуль HomeKit Bridge, который берет данные Z-Wave устройства и передает их в HomeKit.