Pull to refresh

Как подружить Алису и HomeBridge

Reading time 3 min
Views 18K
image

UPD 06.08.2019: Свершилось, появилась возможность попросить саму Алису включить свет. Проект есть на гитхабе. Проверил на своем homebridge, все работает. Дальнейшую поддержку своего навыка считаю не целесообразной.

Давно хотел в дополнение к умному дому голосового ассистента понимающего и говорящего на русском языке. В итоге решил рискнуть и взять сырую новую колонку Яндекс.Станция с молодой, но уже многим полюбившейся Алисой. Первое впечатление было отличным, но когда я наслушался анекдотов и набеседовался вдоволь я начал познавать практическую сторону колонки. Больше всего меня интересовал вопрос взаимодействия Алисы с умным домом.

Описание проблемы
Мой дом функционирует на основе сервера HomeBridge. Про его настройку и использование на хабре и других ресурсах написано множество статей (раз, два, три), потому я не буду останавливаться на этом. Не изучив вопрос основательно, я был уверен в том, что в каталоге навыков Алисы уже полно решений для взаимодействия с системами управления умным домом. Оказалось, что на момент написания статьи большая часть навыков по тематике «Умный дом» требует устройство с дисплеем для работы, что не подходит для станции. Единственным навыком с виду отвечающим требованиям и умеющим работать без дисплея был «Альфред». Навык не подошел мне по причине того, что он жестко завязан на сервис — IFTTT. Допустим я хочу создать виртуальный переключатель, функционирующий в системе умного дома и позволяющий привязывать сценарии к его текущему состоянию. Альфред использует сервис WebHook для IFTTT с помощью которого можно только воздействовать на триггер создаваемый в апплете IFTTT, но нет возможности получить текущее состояние апплета (можно перевести переключатель в положение вкл или выкл, но нельзя узнать в каком состоянии сейчас переключатель).

Для решения вышеописанной задачи создан сервис Alice-HomeBridge, предназначенный для связи голосового помощника Яндекс.Алиса и различных систем управления умным домом. Далее в качестве примеров настроек будем рассматривать конфигурацию HomeBridge, но данный подход применим и для других систем таких как Home AssistantopenHAB и других. 

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



Изменить или узнать состояние переключателей можно с помощью специально сформированного GET запроса к сервису.



Для того чтобы сервис мог взаимодействовать с голосовым ассистентом «Алиса» создан навык «Ленивый Джимми».

Ленивый Джимми
Скажите Алисе: «Запусти навык ленивый Джимми» и он предложит вам сообщить код активации, который вы можете найти в своем личном кабинете



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

Для того чтобы диалог звучал более естественно присутствует возможность создавать переключатели с более понятными названиями, например, «С Утречком», тогда вы сможете сказать Алисе «Скажи Джимми С Утречком» и состояние переключателя изменится.

Осталось настроить HomeBridge. Для примера будем использовать расширение cmdswitch2. Создадим для HomeKit переключатель с названием «Alice Button 1».

{
  "platform": "cmdSwitch2",
  "name": "CMD Switch",
  "switches": [
    {
      "name": "Alice Button 1",
      "on_cmd": "curl --silent \"http://alicehomebridge.org/alice/switches.php?switch=34&hb=ADB7BYBT728O&state=set&val=true\"",
      "off_cmd": "curl --silent \"http://alicehomebridge.org/alice/switches.php?switch=34&hb=ADB7BYBT728O&state=set&val=false\"",
      "state_cmd": "curl --silent \"http://alicehomebridge.org/alice/switches.php?switch=34&hb=ADB7BYBT728O&state=get\" | grep -oh \"true\"",
      "polling": true,
      "interval": 2
    }
  ]
}

Для того чтобы не перегружать сервер лишними запросами значение параметра interval ставим не меньше 2 секунд.

Все готово.



Теперь, если сказать «Алиса скажи ленивому Джимми с утречком», переключатель «Alice Button 1» изменит состояние. Вот демонстрация того, как все работает в совокупности с настроенными сценариями HomeKit:


Полная версия файла конфигурации HomeBridge

P. S. Большинство систем управления умными домами, например, HomeKit, поддерживают создание сценариев. Вы можете создать сценарий, который хотели бы использовать в определенной ситуации, например, когда вы просыпаетесь и назначить его вызов на событие «Включение переключателя С Утречком».

P. S. Мой сервис только развивается и еще, мягко сказать, далек от идеала. Но и Алиса некоторые фразы, время от времени, в упор отказывается воспринимать. Например, она прекрасно передает навыку фразу «Включи свет», но фразу «Доброе утро» не передаст. Надеюсь в Яндекс знают о проблеме и скоро ее исправят. Жду ваших комментариев.
Tags:
Hubs:
+15
Comments 28
Comments Comments 28

Articles