Тема интернета вещей сейчас как никогда наиболее популярна. Каждый день выходят новые интересные устройства способные общаться друг с другом через интернет. Пока различные производители договариваются о общем протоколе общения, Apple решила взять дела в свои руки и выпустила Framework HomeKit стандартизирующий способы управления устройствами различных производителей. В перспективе с помощью мобильного приложения HomeKit можно будет управлять различными лампочками, термостатами, розеточными модулями по wifi или bluetooth. Но это все в ближайшем будущем, хотя нет, постойте…
Вы уже сейчас можете работать более чем с 1000 HomeKit устройствами или создавать свои HomeKit совместимые устройства!!!
- О HomeKit шлюзе RaZberry
- Установка ПО автоматизации Z-Way
- Создание датчика температуры из данных OpenWeather и Реле из GPIO Raspberry
- Приложение 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, ну а мы уже готовы!
snyuryev
А у кого-нибудь работает русская Сири — в том плане распознает ли она «включить свет»?
У меня усердно пытается запустить программу «Свет» :)
ps: на Intel Edison есть аналогичный вариант поставить HomeKit.
aivs Автор
У меня и по английски Siri свет не включает. В приложении homekit есть устройство с названием Lamp, говорю ей: «lamp on», она понимает и отвечает: «не могу этого сделать.»
snyuryev
Если отвечает на русском, то и спрашивать надо на русском))
Кратко изложу свои изыскания. Нужно говорить «включи свет» вместо «включить свет». Во втором случае Сири пытается запустить приложение. Аналогично «выключи свет» вместо «выключить свет».
snyuryev
Если Сири точно настроена на английский, то нужно попробовать «lights on»
aivs Автор
У меня 50 различных устройств и среди них есть такие как: lamp, nightlight, light in living room.
Как мне сказать Сири, чтобы она включила именно ночник с названием nightlight?
snyuryev
Таким количество подключенных устройств не обладаю — поэтому мало чем могу помочь. Возможно как вариант — это настроить «зону», в которую прописать нужное устройство типа «свет».
utya
а можно ссыль на intel edison home kit
utya
github.com/KhaosT/HAP-NodeJS оно?
snyuryev
да, устанавливал оттуда
utya
И как нормально? а кто в роли исполнительного устройства
snyuryev
Всем управляет Intel Edison. Нужно только скопировать, собрать и запустить исходники выше на эдисоне.
По умолчанию там есть ряд шаблонов для девайсов — можно удалить лишнее или добавить свое. Ну и конечно нужно дописать в шаблоны нужные действия — например послать сигнал на нужное gpio.
С iPhone (или другого iOS девайса) нужно запустить приложение, которое поддерживает HomeKit — прекрасно подойдет и демо приложение от Apple (в статье указано) и сделать поиск устройств
Все должно происходить в одной wi-fi сети.
utya
А даже так, я думал эти исходники просто бридж, а там дальше эдисон шлёт команды кудато дальше, на какой-то контроллер умного дома, ну у вас наверно всё к эдисон подключено, и всё компактно в одном месте, а если разбросаны по дому датчики. А в какой среде вы исходники собирала Intel XDK?
snyuryev
Возможно есть реализации бриджа под эдисон, но мне показалось это достаточно простым способом поиграться с HomeKit, тем более нет никаких проблем подключить нужные реле на эдисона. Для того что бы запустить все это дело нужно просто скопировать исходники из репозитария, и выполнить две команды: npm rebuild и node Core.js и все. Здесь более подробно — github.com/KhaosT/HAP-NodeJS/wiki/Installing
Intel XDK не нужен, код можно править в любой удобной IDE. Я все делаю в web storm. Только дописал один скрипт который делает деплой на эдисон.
Не совсем понял про датчики, способы подключения зависят от вас и от выбранного железа)
utya
Насчёт установки понял. Насчёт датчиков, ну у меня по дому беспроводный датчики Z-wave, arduino(Mysensors), ясен пень что edison с ними напрямую не заработает.
aivs Автор
Я думаю возможно подключить плату RaZberry к Intel Edison. На Edison есть UART, к нему подключаем плату RaZberry. Для x86 Debian и Ubuntu есть софт (Z-Way) для работы с платой RaZberry. Возможно есть подводные камни, но на первый взгляд добавить Z-Wave к Edison возможно.