Одним из нововведений iOS 10 стало приложение «Дом», которое по замыслу корпорации Apple должно превратить ваш айфон или айпад в пульт управления «умным домом».
Программистами из Купертино был создан протокол HomeKit, который по их замыслу должен обеспечивать бесшовную интеграцию между «умными устройствами» и смартфонами и планшетами производства Apple.
Идея отличная — собрать контроль за всеми умными устройствами в одном месте, отказавшись от кучи разрозненных управленческих приложений, которые каждый производитель создает под собственную линейку устройств. Бонусом идет поддержка голового управления через Siri всем парком подключенных устройств.
Причем не надо каждый раз выдавливать из себя «Сири, включи лампочку Philips Hue White», достаточно сказать «Включи свет на кухне» — и голосовой помощник сам поймет какое именно устройство вы имели в виду.
Узким местом системы стало то, что поддержка протокола HomeKit требует обязательной сертификации устройства корпорацией Apple. Соответственно, это резко сужает спектр совместимых устройств, а сами сертифицированные устройства стоят дороже среднерыночного уровня подобных товаров и зачастую недоступны для приобретения в России.
Выход из проблемы — установка и использование HomeBridge, этакого «прокси-сервера» для HomeKit, позволяющего подключать к системе любые умные гаджеты, включая даже самоделки на Arduino и ESP8266.
Содержание
Что нам понадобится
Для осуществления описываемых в этой статье действий понадобится:
- Raspberry Pi 3 Model B
- Apple iPhone / iPad
- Какое-нибудь устройство с возможностью управления по Bluetooth или Wi-Fi
Я буду описывать действия на примере своего iPhone 5s, а умным устройством для интеграции в HomeKit послужит настольная лампа от Xiaomi.
HomeBridge мы будем устанавливать на Raspberry Pi 3, но в принципе эта система разворачивается на любых компьютерах как с ARM так и с x86 архитектурой.
Установка HomeBridge на Raspberry Pi
Начнем с того, что обновим все установленные в системе пакеты:
sudo apt-get update sudo apt-get dist-upgrade
Сам HomeBridge написан на JavaScript и требует для работы развернутой платформы Node.js, которая транслирует JavaScript в машинный код. Установим ее:
wget https://nodejs.org/dist/latest-v7.x/node-v7.10.1-linux-armv7l.tar.xz tar xJvf node-v7.10.1-linux-armv7l.tar.xz cd node-v7.10.1-linux-armv7l sudo cp -R * /usr/local/
Я привожу ссылку на актуальную версию дистрибутива на момент написания этой статьи. Когда будете повторять действия, советую сперва сходить по ссылке https://nodejs.org/dist/latest-v7.x/ и посмотреть не появилось ли обновленных пакетов.
Теперь установим дополнительные пакеты, нужные для работы HomeBridge:
sudo apt-get install libavahi-compat-libdnssd-dev
Ну а теперь пришло время установить и сам HomeBridge:
sudo npm install -g --unsafe-perm homebridge
Тут уже знакомые с основами работы в Raspbian Jessie люди должны обратить внимание на незнакомую команду «npm»: это менеджер пакетов, устанавливающийся в систему вместе с Node.js и работающий со своими собственными репозиториями.
Запускаем HomeBridge:
homebridge
Если установка прошла без ошибок, то на экране отобразится примерно следующее:
HomeBridge ругается на отсутствие плагинов и файлов конфигурации, но главное — она уже запускает свой серверный модуль, доступный для сопряжения с iOS-устройством.
Если HomeBridge не стартует и выдает какие-то сообщения об ошибках, то скорее всего у вас в системе установлена Node.js устаревшей версии. Обновите Node.js до свежей редакции по приведенной мною выше инструкции, после чего переустановите HomeBridge.
После того как приложение заработает можно приступать к его настройке.
Установка плагинов и настройка HomeBridge
HomeBridge сама по себе — голая оболочка, не позволяющая управлять ни одним устройством. Поддержка тех или иных устройств добавляется в нее при помощи плагинов. Для популярных устройств такие плагины уже написаны энтузиастами и доступны в интернете, а для самоделки такой плагин можно написать самостоятельно, вникнув в синтаксис уже готовых кодов.
Установим плагин для линейки устройств Yeelight, позволяющий управлять настольной лампой:
sudo npm install -g homebridge-yeelight
Теперь создадим файл конфигурации:
cd .homebridge sudo nano config.json
И впишем в него следующий текст:
{ "bridge": { "name": "YeeBridge", "username": "18:00:27:40:BC:1B", "port": 51825, "pin": "031-45-154" }, "platforms": [ { "platform" : "yeelight", "name" : "yeelight" } ] }
Думаю, что по синтаксису понятно что делает этот код.
И последний штрих — переключаем саму Xiaomi Mi LED Desk Lamp в режим для разработчиков, позволяющий управлять ей не только через китайский сервер Xiaomi, но и через сторонние приложения.
Через Mi Home это сделать нельзя, нужно установить на телефон приложение Yeelight (для iOS или для Android), залогиниться в нем в свой Mi-аккаунт и активировать в настройках Developer Mode:
Кстати, в отличие от Mi Home приложение Yeelight работает только с двумя регионами — Singapore и Mainland China, поэтому если лампа подключалась через Mi Home и при подключении был указан другой регион (U.S., например, или Other) — нужно удалить ее из списка своих устройств, сделать Reset и подключить заново, выбрав в качестве региона Mainland China. И все последующие устройства от Xiaomi привязывать к материковому Китаю даже если они имеют международные версии, так проблем с совместимостью будет меньше.
Сопряжение HomeBridge с HomeKit
HomeBridge установлен, плагин управления устройствами Yeelight добавлен, а лампа включена в сеть и переведена в режим для разработчиков.
Включаем HomeBridge на «малине»:
homebridge
Теперь уже можно взять в руки айфон и добавить устройства в эппловскую систему умного дома.
Для этого включаем на смартфоне Bluetooth, открываем приложение «Дом» и нажимаем «Добавить аксессуар»:
Приложение найдет HomeBridge и затребует восьмизначный код, который HomeBridge выводит в консоль при запуске (вы можете увидеть его на скриншоте терминала выше по тексту). Можно навести камеру на код и дождаться его распознания, а можно ввести его вручную.
На этом сопряжение будет завершено и в «Доме» появятся два аксессуара — сам HomeBridge и подключенная через него лампа:
Лампой можно управлять через приложение. Короткий тап по значку отвечает за включение и выключение, длинный тап открывает окно регулировки яркости:
Голосовое управление работает:
Команды регулировки яркости Siri тоже понимает. Можно сказать «установи яркость лампы на 50%» и она сделает.
А в центре управления (это меню, которое появляется при свайпе снизу вверх и доступно даже при заблокированном экране) появляется новая вкладка, через которую также можно управлять элементами умного дома:
В общем, хорошая игрушка. Вполне может послужить заменой Mi Home и других пультов управления умными гаджетами.
Добавление HomeBridge в автозагрузку
Последний шаг — прописать HomeBridge в автозагрузку.
Для этого создадим файл:
sudo nano /etc/init.d/homebridge
И впишем в него:
#!/bin/sh ### BEGIN INIT INFO # Provides: homebridge # Required-Start: $network $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start daemon at boot time # Description: Enable service provided by daemon. ### END INIT INFO dir="/home/pi" cmd="DEBUG=* /usr/local/bin/homebridge" user="pi"
Выставим права доступа и зарегистрируем:
sudo chmod 755 /etc/init.d/homebridge sudo update-rc.d homebridge defaults
Готово, теперь HomeBridge будет стартовать автоматически при включении Raspberry Pi.
Заключение
Вот таким образом Raspberry Pi может быть задействована в системе умного дома.
Со временем я опубликую статьи о системах Domoticz и openHAB, а также о создании Telegram-бота для управления как самой «малиной», так и контролируемыми ей смарт-устройствами через мессенджер Telegram с любого устройства по интернету.
Raspberry Pi 3B (английская сборка)в интернет-магазине GearBest Raspberry Pi 3B (китайская сборка)в интернет-магазине GearBest
Собрал уже несколько малин себе и родственникам по Вашим инструкциям, дай Бог Вам здоровья и процветания!
Единственное не работает торрент, пока не разобрался в чем дело.
А так слежу за Вашими статьями, продолжайте, очень интересно! Все сохраняю на будущее в PDF)
Спасибо!)
Огромное спасибо за такой туториал!! Вопрос — девайсы от Sonoff так же можно подключать к малине и они будут подгружаться в HomeKit?
Ну да, плагины Sonoff для HomeBridge существуют (навскидку: https://github.com/arendst/Sonoff-Tasmota/wiki/Homebridge, https://github.com/seikan/homebridge-sonoff-basic-espeasy), подключаются аналогично плагину Yeelight.
Дмитрий, а в Z-Wave можно аналогичным способом подключить лампу и прочие устройства?
Нет, Z-Wave и Wi-Fi работают в разных частотных диапазонах. Чтобы работать с протоколом Z-Wave устройство должно изначально иметь контроллер, позволяющий посылать и получать пакеты в нужном для Z-Wave диапазоне.
Как добавить вторую лампу в конфиг?
Точно так же, активировать режим разработчика и через плагин для homebridge. У ламп же разные уникальные ID, никаких конфликтов не будет.
Спасибо большое, единственный нормальный туториал во всём рунете, уже заказываю малину!
Подскажите если подключил связку домотикз и хомебридж. Как обновить данные на устройстве дом эпл.
Спасибо! Все получилось.
Но есть два ЖИРНЫХ «НО».
1. Автозапуск так и не заработал… :(
2. После перезагрузки «малинки» — не видит ленту(у меня Light Strip). Приходится выключать и заново включать Developer Mode.
Не знаете, как сие побороть? Спасибо! :)
Дмитрий, здравствуйте.
«username»: «18:00:27:40:BC:1B»,
здесь мы прописываем мак лампочки или распбери?
Добрый день, эта строка относится к самому Homebridge (установленному на Raspberry Pi), не к лампочке.
И ее менять не обязательно, достаточно просто скопировать как есть.
Здравствуйте!
При установке плагина на homebridge выдает ошибку
> node-gyp rebuild
gyp ERR! clean error
gyp ERR! stack Error: EACCES: permission denied, rmdir ‘build’
и так далее…
Это Homebridge криво встал, или плагин не стыкуется? В какую сторону искать?
Сделал все по инструкции, но homebridge приходится запускать вручную….