Перейти к содержанию

Алиса и Home Assistant: различия между версиями

Материал из Wiki yaboard
мНет описания правки
Нет описания правки
Строка 72: Строка 72:


PROFIT!!!
PROFIT!!!
== Несколько аккаунтом в одном Home Assistant ==
Инструкции находятся здесь:
* [[Home Assistant и несколько аккаунтов Яндекс: медиаплеер]]
* [[Home Assistant и несколько аккаунтов Яндекс: Умный дом]]




Строка 101: Строка 109:
       skill_id: yyyyyyyy-yyyy-yyyy-yyyyyyyyyyyy
       skill_id: yyyyyyyy-yyyy-yyyy-yyyyyyyyyyyy
       user_id: yyyyyyyyyyyyyyyyyyyyyyyyyyyy
       user_id: yyyyyyyyyyyyyyyyyyyyyyyyyyyy


== Возможные ошибки ==
== Возможные ошибки ==
Строка 113: Строка 122:


=== IPv6 ===
=== IPv6 ===
Если ваш сайт доступен по IPv6, убедитесь что навык доступен по этому протоколу, так как сервера яндекса будут в первую очередь стучаться по IPv6 если он задан для домена.
Если ваш сайт доступен по IPv6, убедитесь что навык доступен по этому протоколу, так как сервера яндекса будут в первую очередь стучаться по IPv6 если он задан для домена.


=== Ещё варианты ===
=== Ещё варианты ===
Так же поддержка рекомендует указать Сайт для верификации и добавить его в [https://webmaster.yandex.ru Яндекс.Вебмастер], если этого ещё не сделано.
Так же поддержка рекомендует указать Сайт для верификации и добавить его в [https://webmaster.yandex.ru Яндекс.Вебмастер], если этого ещё не сделано.
Если ничего не помогает и в логах сервера не видно запросов от яндекса, то ещё можно зарегистрироваться на [https://www.cloudflare.com CloudFlare CDN] и перевести сайт на работу через этот сервис, благо бесплатный тариф там имеет весьма широкие возможности.
Если ничего не помогает и в логах сервера не видно запросов от яндекса, то ещё можно зарегистрироваться на [https://www.cloudflare.com CloudFlare CDN] и перевести сайт на работу через этот сервис, благо бесплатный тариф там имеет весьма широкие возможности.

Версия от 18:56, 28 июля 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 сертификат если это ещё не было сделано.
  • Склонировать (или скачать архив и распаковать) 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!!!

Несколько аккаунтом в одном Home Assistant

Инструкции находятся здесь:

Уведомление УДЯ об изменении статуса устройств

Если вы хотите уведомлять Умный Дом Яндекса об изменении состояния ваших устройств, вам необходимо дополнительно настроить три параметра в конфигурации: 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

Если Вам нужно уведомлять несколько навыков или у вас несколько пользователей используют один навык (см. Шаринг навыков), Вы можете ввести их данные списком.

yandex_smart_home:
 notifier:
   - oauth_token: XXXXXXXXXXXXXXXXXXXXXXXXXXX
     skill_id: xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx
     user_id: xxxxxxxxxxxxxxxxxxxxxxxxxxxx
   - oauth_token: YYYYYYYYYYYYYYYYYYYYYYYYYYY
     skill_id: yyyyyyyy-yyyy-yyyy-yyyyyyyyyyyy
     user_id: yyyyyyyyyyyyyyyyyyyyyyyyyyyy

Возможные ошибки

Bad certificate

Опытным путём выяснилось, возникает не только для этого компонента, но и ряда Навыков. Тонкие настройки ssl, nginx с белым ip и корректным ssl от letsencrypt - к успеху не привели. При этом та же система работает с большинством других навыков.

Найденное решение: на сервере должен быть т.н. fullchain сертификат.

IPv6

Если ваш сайт доступен по IPv6, убедитесь что навык доступен по этому протоколу, так как сервера яндекса будут в первую очередь стучаться по IPv6 если он задан для домена.

Ещё варианты

Так же поддержка рекомендует указать Сайт для верификации и добавить его в Яндекс.Вебмастер, если этого ещё не сделано. Если ничего не помогает и в логах сервера не видно запросов от яндекса, то ещё можно зарегистрироваться на CloudFlare CDN и перевести сайт на работу через этот сервис, благо бесплатный тариф там имеет весьма широкие возможности.