Алиса и Home Assistant: различия между версиями
Нет описания правки |
Glebsterx (обсуждение | вклад) Уведомление УДЯ об изменении статуса устройств |
||
| Строка 72: | Строка 72: | ||
PROFIT!!! | PROFIT!!! | ||
== Уведомление УДЯ об изменении статуса устройств == | |||
Внимание! Этот функционал пока не является частью компонента yandex_smart_home. | |||
Если есть желание попробовать - форк по [https://github.com/glebsterx/yandex_smart_home_plus/tree/light ссылке]. | |||
Обсуждаем [https://github.com/dmitry-k/yandex_smart_home/pull/164 тут]. | |||
Если вы хотите уведомлять Умный Дом Яндекса об изменении состояния ваших устройств, вам необходимо дополнительно настроить три параметра в конфигурации: [https://oauth.yandex.ru/authorize?response_type=token&client_id=c473ca268cd749d3a8371351a8f2bcbd OAuth-токен], [https://dialogs.yandex.ru/developer идентификатор навыка] в Диалогах (skill_id) и идентификатор пользователя (user_id) Home Assistant (https://[YOUR_HOME_ASSISTANT_URL:PORT]/config/users), к которому привязан навык. | |||
[[Файл:User ID.png|мини]] | |||
Идентификатор пользователя (user_id) это ''не то же самое'', что имя пользователя Home Assistant. Это 32-значный идентификатор, который можно узнать, выбрав нужного пользователя в настройках (см. картинку). | |||
Пример настройки: | |||
yandex_smart_home: | |||
notifier: | |||
oauth_token: AgAAAAAEEo2aYYR7m-CEyS7SEiUJjnKez3v3GZe | |||
skill_id: d38d4c39-5846-ba53-67acc27e08bc | |||
user_id: f9701ad48ba05a91604e480dd60899b8 | |||
Версия от 08:18, 16 апреля 2021
Материал носит информационный характер, и не является прямым указанием к действию!
Небольшое введение
Open-source платформа умного дома Home Assistant (а подробнее на русском например, здесь), написанная на питоне, поддерживает Amazon Alexa и Google Assistant. К сожалению, на момент написания статьи Yandex Smart Home / Алисы в комплектных компонентах Ассистента отсутствует. Но есть и хорошая новость: существует система пользовательских компонентов, позволяющая добавить такую поддержку вручную. После завершения всех действий Home Assistant окажется виртуальным производителем в списке поставщиков УД приложения Яндекс.
Далее подразумевается, что Home Assistant уже настроен и работает - и осталось только соединить его с системой умного дома Яндекса.
Возможности компонента
Неофициальный компонент из текущей инструкции пока поддерживает следующие категории устройств:
- climate (вкл/выкл, температура, режим, скорость вентиляции)
- cover (вкл/выкл = закрыть/открыть)
- fan (вкл/выкл, скорость)
- group (вкл/выкл)
- input_boolean (вкл/выкл)
- light (вкл/выкл, яркость, цвет, цветовая температура)
- media_player (вкл/выкл, вкл/выкл звука)
- switch (вкл/выкл)
- vacuum (вкл/выкл)
Подключение компонента
- Настроить SSL сертификат если это ещё не было сделано.
- В каталоге настроек создать папку custom_components, если её нет (например, ~/.homeassistant/custom_components);
- Склонировать (или скачать архив и распаковать) github.com/dmitry-k/yandex_smart_home в созданную папку .homeassistant/custom_components (в результате получится, например ~/.homeassistant/custom_components/yandex_smart_home)
- Включить компонент в configuration.yaml:
- минимальная настройка - добавить строку "yandex_smart_home:"
- более тонкая настройка описана в README на github
- Перезапустить Home Assisstant
- Зайти на dialogs.yandex.ru и создать диалог "Умный дом" (ВАЖНО: это необходимо сделать из-под того аккаунта, который планируется использовать!)
- Заполнить форму;
- в качестве Endpoint URL использовать https://[YOUR HOME ASSISTANT URL:PORT]/api/yandex_smart_home
- включить приватность.
- Создать связку аккаунтов:
Client identifier https://social.yandex.net/ API authorization endpoint https://[YOUR HOME ASSISTANT URL:PORT]/auth/authorize Token Endpoint https://[YOUR HOME ASSISTANT URL:PORT]/auth/token Refreshing an Access Token https://[YOUR HOME ASSISTANT URL:PORT]/auth/token
- Опубликовать/"Отправить на модерацию" (для приватных навыков она автоматическая и моментальная).
- В приложении Яндекс на Android/iOS добавить устройства (созданный нами диалог должен появиться в популярных производителях).
PROFIT!!!
Уведомление УДЯ об изменении статуса устройств
Внимание! Этот функционал пока не является частью компонента yandex_smart_home. Если есть желание попробовать - форк по ссылке. Обсуждаем тут.
Если вы хотите уведомлять Умный Дом Яндекса об изменении состояния ваших устройств, вам необходимо дополнительно настроить три параметра в конфигурации: OAuth-токен, идентификатор навыка в Диалогах (skill_id) и идентификатор пользователя (user_id) Home Assistant (https://[YOUR_HOME_ASSISTANT_URL:PORT]/config/users), к которому привязан навык.

Идентификатор пользователя (user_id) это не то же самое, что имя пользователя Home Assistant. Это 32-значный идентификатор, который можно узнать, выбрав нужного пользователя в настройках (см. картинку).
Пример настройки:
yandex_smart_home:
notifier:
oauth_token: AgAAAAAEEo2aYYR7m-CEyS7SEiUJjnKez3v3GZe
skill_id: d38d4c39-5846-ba53-67acc27e08bc
user_id: f9701ad48ba05a91604e480dd60899b8
Возможные ошибки
Bad certificate
Опытным путём выяснилось, возникает не только для этого компонента, но и ряда Навыков. Тонкие настройки ssl, nginx с белым ip и корректным ssl от letsencrypt - к успеху не привели. При этом та же система работает с большинством других навыков.
Найденное решение: на сервере должен быть fullchain сертификат.
IPv6
Если ваш сайт доступен по IPv6, убедитесь что навык доступен по этому протоколу, так как сервера яндекса будут в первую очередь стучаться по IPv6 если он задан для домена.
Ещё варианты
Так же поддержка рекомендует указать Сайт для верификации и добавить его в Яндекс.Вебмастер, если этого ещё не сделано. Если ничего не помогает и в логах сервера не видно запросов от яндекса, то ещё можно зарегистрироваться на CloudFlare CDN и перевести сайт на работу через этот сервис, благо бесплатный тариф там имеет весьма широкие возможности.