Установка homebridge на raspberry pi. Как научить siri исполнять маты?

Как использовать яблочный homekit в связке с Raspberry pi в качестве сервера автоматизации всех имеющихся датчиков и управляемых устройств и при этом управлять любым копеешным электрческим говном всем, что у вас есть из айфона?

Начиная с IOS 10, Аpple выпустила замечательную вещь — homekit. Вы можете видеть это в телефоне как программу Дом. Айтишные «Робин Гуды» сразу пропатчили этот функционал в правильную сторону, чтобы работать можно было с чем угодно. Даже с самым дешманским датчиком за семь рублей пятьдесят копеек, а не только со сверх-супер-пупер-сертифицированной продукцией (обычные датчики/устройства, но продаваемые за бешеные деньги с одобрения Аpple).
Для любителей коротких обзоров и желающих убедиться воочию, что из этого выходит, мы подготовили небольшое видео:

А для желающих собрать нечто подобное самостоятельно — немного терпения и добро пожаловать 🙂

Подготовка системы

Делаем апдейт и апгрейд:

ставим git и make, если не установлены

Если у вас установлена RASPBIAN JESSIE, все в порядке. У вас уже установлен необходимый компилятор, но на всякий случай лучше проверить.
Версия должна быть такой, как показано ниже:

Если же у вас другой дистрибутив или версия компилятора ниже, то придется поставить:

Установка NodeJS

Начиная с 4.0.0 версии NodeJS стала поддерживать ARM платформы по умолчанию. Львиная доля одноплатников работает именно на чипе ARM. Raspberry pi — не исключение.
Для желающих поставить NodeJS вручную на вашу малину или произвольный arm-одноплатник, можно воспользоваться этой ссылкой:
Установка ручками NodeJS для всех версий Raspberry pi.
Установка ручками NodeJS для Raspberry pi3.

Но стоит учесть, что homebridge, если не ошибаюсь, начинает работать с версии Nodejs 5.10 , поэтому стоит несколько модифицировать инструкции в ссылках и выбрать Nodejs посвежее.
Лично я предпочитаю не усложнять себе ситуацию совместимостью версий и поставлю последнюю доступную:

проверяем версию:

Установка Homebridge

Устанавливаем Avahi и другие зависимости. Это необходимо для пакета mdns из библиотеки HAP-NodeJS.

Проверьте ваши пути! Если вы все-таки ставили пакет ручками, а не через apt-get install — пути должны быть /usr/local/lib вместо /usr/lib/
Теперь ставим сам Homebridge и зависимости:

Можем проверить тестовым запуском:

Если видите что-то похожее, значит, все функционирует.
Строка: config.json (/home/pi/.homebridge/config.json) not found говорит, что не существует конфига для пользователя из-под которого мы совершили запуск. Нужно определиться с тем, из под кого мы будем запускать службу, и создать все необходимые директории и этот конфиг для выбранного пользователя.
Из-под кого все запускать? Конечно, в целях безопасности лучше из-под отдельного специально созданного пользователя, но тогда получим кучу геморроя с модулями, которые будут дергать различные системные скрипты и сценарии, придется много дебажить по каждому плагину и сценарию. Рекомендую для проверки использовать пользователя root, а в дальнейшем перевести всю работу на специально созданного пользователя. Создаем директорию и конфиг:

Пример минимального рабочего конфига можно скопировать из
/usr/lib/node_modules/homebridge/config-sample.json:

Проверим, все ли правильно:

Должны увидеть, что строка с отсутствием конфигурационного файла пропала.
Теперь необходимо сделать homebridge демоном и добавить его в автозагрузку. Для этого нам потребуется создать небольшой init скрипт:

Делаем скрипт исполняемым и добавляем в стандартные уровни загрузки:

Теперь при загрузке homebridge будет стартовать автоматически.
Проверим запуск и останов в ручном режиме, все должно отрабатывать:

Последний штрих — добавление аксессуара «My bridge to RPI» в homekit вашего айфона.
Для этого в айфоне должен быть включен bluetooth и оба девайса должы находится в одной сети WiFi.
Останавливаем службу homebridge, если она запущена и запускаем из-под root homebridge в интерактивном режиме:

Заходим в приложение Дом на айфоне, создаем новый дом, и нажимаем ‘добавить аксессуар’. Включится поиск (bluetooth должен работать на всех девайсах) и вскоре будет обнаружен ваш мост «My bridge to RPI». Добавляем мост, вводим руками пароль из homebridge (пароль из рамочки), со всем соглашаемся, радуемся!
Готово.  Можно проверить перезагрузкой малины ваш результат: после перезагрузки мост должен снова стать активен в вашем телефоне.

Установка плагинов homebridge

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

cmdswitch2
Простое включение/выключение устройств из скриптов. Ставим:

 

homebridge-cmd_light_control
Включение/выключение/димирование света скриптами. Ставим:

Теперь нам необходимо скорректировать конфигурационный файл homebridge и добавить в него ваши имеющиеся девайсы. Для примера будет лампа и вентилятор, подключенные через реле на 220 вольт.

Как видно из конфига, все управляется скриптами и обратная связь происходит тоже через скрипт. И это прекрасно! Ниже приведу простейшие примеры включения/выключения реле 220v и их обратного контроля, которые будут коммутировать фазу лампы и вентилятора. Кстати, кто не знает, как подключить такие реле и где нужно быть аккуратным — вам стоит прочитать подобную инструкцию. Рекомендую подойти ответственно и очень внимательно прочесть, если еще не сталкивались с управлением и коммутацией 220V.

Для лампы скрипты полностью аналогичны, только смените pin, на который вы подключаете сигнальный провод реле лампы. Делаем все скрипты исполняемыми, при необходимости ставим питоновские библиотеки для корректного исполнения скриптов.

Перезапускаем homebridge:

Заходим в айфон, в приложение дом — должны появиться 2 новых девайса.
Ура! Реле подключены как управляемые выключатель (switch) и лампа. Все, теперь мы владельцы сертифицированного и одобренного Apple вентилятора 89-го года выпуска и умнейшей диодной лампы за 32 рубля!

Шугар-он-топ

«Где же обещанные маты?» — спросите вы. Все просто:
снова идем в приложение Дом, нажимаем на плюсик, добавляем сценарий, выбираем пользовательский и именуем сценарий как хотим. Тоже самое касается девайсов. Их можно переименовывать как угодно. Стоит учесть регистр — иногда он влияет на результат распознания. В процессе распознания Siri пишет с заглавной только первое слово, а при именовании сценария — заглавная буква вылезает после каждого пробела.
Также хочу привести пример возможных команд по управлению устройствами для Siri. Хоть пример и на английском, но думаю, вам не составит труда перевести эти незамысловатые фразы:
“Turn on the lights” or “Turn off the lights.”

“Dim the lights” or “Set the brightness to 50%.”

“Set the temperature to 68 degrees.”

“Turn on the coffee maker.”

“Turn on the upstairs lights.”

“Turn off Chloe’s light.”

“Turn down the kitchen lights”

“Dim the lights in the dining room to 50%.”

“Make the living room lights the brightest.”

“Set the Tahoe house to 72 degrees.”

“Set the thermostat downstairs to 70.”

“Turn on the printer in the office.”

“Set up for a party, Siri.”

“Set the dinner scene.”

“Set my bedtime scene.”
Последние 3 фразы относятся к сценариям.

Ложка дегтя в бочке меда

Увы, сейчас нет возможности (может, мы об этом не знаем) нормально работать с Siri через SiriProxy.
С точки зрения мата, да и вообще произвольных речевых конструкций, SiriProxy — полная свобода действий. В ней можно было закладывать в свои программы различные фразы, проксируя распознанные запросы. Это было шикарно 🙂
Но, увы, протокол и логику Siri несколько переписали и с 7 версии IOS и выше SiriProxy работает в холостую. Согласитесь, жить на IOS6 сейчас будет несколько проблемно. Но мы не расстраиваемся и ждем очередной дыры подарков от Apple в использовании функционала на свое усмотрение!

Комментарии к “Установка homebridge на raspberry pi. Как научить siri исполнять маты?”: 19

    1. Будет работать на любом микрокомпьютере с процессором ARM.
      Ставил на pi zero, pi3, orange pi plus2, banana.

  1. Здравствуйте, не подскажете:
    Все настроил, работает на ура, но только при ручном запуске homebridge -D
    Если же перезагрузить малинку, то при запуске также все запускается без ошибок, но iPhone не видит моста. В логах показывается успешный запуск, в процессах — homebridge запущен также, в логах ошибок — ничего нет.

    Как понимаю все запущено и работает. Также на компьютере пробую открыть в браузере http://192.162.x.x:port тоже открывает белый экран с ответом 200.

    Т.е. по факту все работает вроде, но iphone не видит моста, когда его запускает юзер homebridge после перезагрузки. А если сделать service homebridge stop а потом homebridge -D, то iPhone сново видит мост.

    В чем может быть проблема?

    1. с вашего описания — похоже нахватает прав. вы в ручном режиме запускаете из под рута?
      а сервис из под кого пытается стартовать homebridge?
      Для чистоты эксперимента можете настроить и проинсталлировать все с руторскими правами. После этого если все функционировать начинать заниматься безопасностью

      1. Спасибо за ответ! Посмотрите, пожалуйста: https://ibb.co/e2mi2v
        Добавил 2 моста с разными именами/mac/pin чтобы убедиться в работе первого.
        Мост iBridge — запускаю из под рута, вместе с ним его аксессуары включаются успешно
        Мост iBridge2 — запускается по крону, тоже становится активным, но его аксессуары не включаются. Подозрение, что питон скрипты не отвечают.

        Скрипты, конфиги все идентичные. Относительно пользователя, под которым запускает /init.d/ его сделал по инструкции https://github.com/nfarina/homebridge/wiki/Homebridge-autostart-at-boot-(init.d)-on-Ubuntu-(linux)

        Большие сомнения, что мост и все работают, а вот python не отвечает..

      1. писал Вам на почту, еще раз продублирую: перешлите питоновские скрипты и дайте вывод прав на них и вывод прав на файлы конфигураций и желательно директории конфигураций (ls -al). у вас недостаточно прав в каких то файлах или директориях. пользователь homebridge, как я понял, а файлы скорее всего были созданы из под рута.

  2. Здравствуйте. Хочу заказывать «Малинку». Если не трудно, посмотрите по ссылке (как вариант) это то, что сейчас самое новое или есть ещё новее?? Стоит это брать? Спасибо.
    https://m.banggood.com/ru/4-In-1-Raspberry-Pi-3-Model-B-V31-Acrylic-Case-Pi-Fan-Aluminum-Heatsink-Set-p-1048293.html?admitad_uid=c2edee64f0ad36d58ec3c528b8c54e08

    1. Здравствуйте. Новее нет, только Pi Zero W, но это совсем другая весовая категория.
      по поводу этого выбора — корпус ужасный, максимум что с ним можно сделать — поставить на стол.
      кулер вам не потребуется — малина и так нормально себя чувствует (плюс этот кулер еще и займет питание если вы его включите на пины).
      радиаторы без термоскотча — тоже считайте мимо. сами будете потом искать термоскотч или нормальную пасту?)

      если вы живете в центральной части россии — закажите в москве с гарантией год за 2800-2900р
      нормальная английская версия будет.

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

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

        1. Извиняюсь за пару оЧепяток.. Ещё вопрос, а там по ссылке- Китайская версия??😀 Дайте пожалуйста ссылку , где купить. Если они в регионы высылают конечно..

  3. Спасибо за подробное описание! В сети крайне мало толковых материалов на русском языке. Подскажите как можно объеденить малину с установленным node js с реле по wifi через esp8266

  4. Добрый день!
    Подскажите пож. можно ли как-то вызывать по http те устройства, что работают на Homebridge. Предположим завели мы в Apple Home Kit универсальный пульт ДУ Broadlink rm pro, через Сири все работает, но вот хотелось бы эти устройства из виртуального устр-ва на Fibaro HC2 запустить. Можно ли такое сделать не подскажете?

  5. Добрый день!
    Подскажите, развернул homebridge по инструкции (огромное Вам спасибо) на одном устройстве добавил в дом аксессуары, а вот на втором устройстве под другим apple id не удается добавить сначало пишет что не может добавить а потом говорит что устройство уже добавлено. в чем может быть проблема

  6. Здравствуйте!
    Все установил, все работает, но при попытке обновления состояния лампочки (светодиод подключенный напрямую к 20-му пину GPIO) всегда показывает «Вкл» и в командной строке сразу всплывает «[cmdSwitch2] лампочка is on», хотя в этот момент 20-й пин GPIO в положении LOW (лампочка соответственно не горит). В чем может быть проблема?

    P.s. Скрипты просто копировал и вставлял, поменял только «вентелятор» на «лампочка»

  7. Доброе время суток! В этой схеме можно подключить отдельный внешний включатель

  8. Здравствуйте, есть Raspberry pi3B+ на нем установлен retropie хотелось бы чтобы там еще крутился homebridge получится это сделать как вы описали выше? На русском информацию не нашел на каком то немецком форуме вроде пишут что можно, я в этом не силен нужна помощь. Спасибо.

  9. У меня не работает(пишет недоступно) и когда я делал в автозагрузку вылезала ошибка.

Добавить комментарий

А не бот ли вы? *