Давно хотел в дополнение к умному дому голосового ассистента понимающего и говорящего на русском языке. В итоге решил рискнуть и взять сырую новую колонку Яндекс.Станция с молодой, но уже многим полюбившейся Алисой. Первое впечатление было отличным, но когда я наслушался анекдотов и набеседовался вдоволь я начал познавать практическую сторону колонки. Больше всего меня интересовал вопрос взаимодействия Алисы с умным домом.
Для решения вышеописанной задачи создан сервис Alice-HomeBridge, предназначенный для связи голосового помощника Яндекс.Алиса и различных систем управления умным домом. Далее в качестве примеров настроек будем рассматривать конфигурацию HomeBridge, но данный подход применим и для других систем таких как Home Assistant, openHAB и других.
Сервис позволяет пользователям, после регистрации на сайте, создавать виртуальные переключатели.
Изменить или узнать состояние переключателей можно с помощью специально сформированного 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. Мой сервис только развивается и еще, мягко сказать, далек от идеала. Но и Алиса некоторые фразы, время от времени, в упор отказывается воспринимать. Например, она прекрасно передает навыку фразу «Включи свет», но фразу «Доброе утро» не передаст. Надеюсь в Яндекс знают о проблеме и скоро ее исправят. Поэтому жду ваших комментариев.
Автор: guinmoon