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

Прямое подключение (УДЯ)

Только для продвинутых пользователей!

Для использования прямого подключения вы самостоятельно создаёте приватный навык в Яндекс.Диалогах, который будет напрямую подключаться к вашему Home Assistant (не используя навык Yaha Cloud).

Предварительные требования

  • Доступность Home Assistant из интернета по доменному имени используя белый IP адрес или сторонние сервисы: Dataplicity, KeenDNS. По этому же доменному имени Home Assistant должен быть доступен и из локальной сети.
  • Настроенный HTTPS сертификат. При наличии белого IP адреса можно воспользоваться официальным аддоном Let's Encrypt. При использовании Dataplicity или KeenDNS HTTPS настраивается автоматически. Самоподписанные сертификаты работать не будут.
  • Прописанный адрес Home Assistant в разделе НастройкиСистемаСетьURL-адрес сервераИнтернет (для видимости раздела включите Расширенный режим в профиле пользователя).
  • Перед добавлением интеграции обязательно проверьте доступность HA из интернета.

Настройка

  • Установите компонент и добавьте интеграцию используя прямой тип подключения
  • Зайдите на dialogs.yandex.ru и создайте диалог (навык) с типом "Умный дом". Желательно это делать из под аккаунта, который планируется использовать для управления умным домом. При необходимости доступ к навыку можно предоставить другим пользователям Яндекса (вкладка Доступ).

  • Заполните параметры (вкладка Настройки):

Поле Значение
Язык Русский
Название Любое (например Home Assistant)
Подключение устройств Любой текст
Backend Endpoint URL: https://[YOUR_HA_DOMAIN:PORT]/api/yandex_smart_home
(пример: https://XXXX.dataplicity.io/api/yandex_smart_home)
Тип доступа Приватный
Имя разработчика Любое
Официальный навык Нет
Иконка Любая (например эта)
  • Заполните параметры (вкладка Связка аккаунтов):
Поле Значение
Идентификатор приложения https://social.yandex.net/
Секрет приложения Любой, например: secret
URL авторизации https://[YOUR_HA_DOMAIN:PORT]/auth/authorize
URL для получения токена https://[YOUR_HA_DOMAIN:PORT]/auth/token
URL для обновления токена https://[YOUR_HA_DOMAIN:PORT]/auth/token
  • На вкладке Настройки обязательно нажмите Опубликовать (для приватных навыков публикация автоматическая и моментальная). В этот момент УДЯ попробует подключиться к вашему Home Assistant, и если у него не получится - появятся ошибки валидации.

Все параметры навыка также продублированы в настройках интеграции в разделе Параметры навыка

Не используйте навык в режиме "Черновик", это может вызывать различные проблемы (дубли устройств, ошибки в нотификаторе)

При публикации навыка в журнале Home Assistant возникает ошибка Login attempt or request with invalid authentication. Это нормально и не влияет на работу компонента.

  • Откройте приложение Дом с Алисой
  • Нажмите иконку в правом верхнем углу → Устройство умного дома
  • Найдите в списке и выберите производителя (ищите по названию диалога, который создали ранее)
  • Нажмите кнопку Привязать к Яндексу, откроется страница авторизации Home Assistant. Рекомендуется создать отдельного пользователя специально для УДЯ и авторизоваться под ним. В этом случае в журнале событий будет видно, когда устройством управлял Яндекс.

Проблемы

Яндекс не может достучаться до Home Assistant

  1. Проверьте доступность Home Assistant из интернета через сервис httpstatus.io:

    • Вставьте ссылку https://YOUR_HA_DOMAIN:PORT/manifest.json и нажмите Check status.
      Альтернативная ссылка для проверки https://YOUR_HA_DOMAIN:PORT/api/yandex_smart_home/v1.0/ping – будет доступна только если добавлена хотя бы одна интеграция Yandex Smart Home, в остальных случаях по ней возвращается 404.
    • Убедитесь, что возвращается код 200 (столбец Status codes)
    • Если возвращаются другие ошибки - нажмите на стрелку слева от ссылки, чтобы узнать подробнее. Пример ошибки некорректной настройки SSL сертификата:

  2. Если сертификат настраивался вручную: убедитесь, что используется fullchain сертификат (в случае штатного аддона Let's Encrypt он в файле fullchain.cer):

http:
  ssl_certificate: /config/acme.sh/YOUR_HA_DOMAIN/fullchain.cer
  ssl_key: /config/acme.sh/YOUR_HA_DOMAIN/YOUR_HA_DOMAIN.key

Корректность установки сертификата можно проверить через этот сервис. 3. Если DNS запись добавлялась вручную: убедитесь, что у используемого домена нет AAAA записи (должна быть только A).

Появляются дубли устройств

Скорее всего часть устройств были добавлены в Черновик навыка. Удалите их оттуда вручную через dialogs.yandex.ru/developer (вкладка Тестирование).

Ошибки при публикации навыка

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

Превышено время ожидания ответа

Если Home Assistant доступен из интернета, но публикация навыка даёт ошибку Превышено время ожидания ответа, скорее всего проблема в неработающем (или частично работающем) DNSе внутри контейнера Home Assistant.

Такое иногда встречается на NAS (например QNAP). Для исправления:

  • Зайдите внутрь контейнера Home Assistant: docker exec -it homeassistant sh
  • Укажите DNS сервер Яндекса: echo nameserver 77.88.8.8 > /etc/resolv.conf

Исправление актуально только для публикации навыка и не требуется для обычной работы УДЯ.

Другая причина возникновения проблемы - использование Яндекс.DNS с фильтрацией. Попробуйте отключить фильтрацию, если вы её используете.

URL не найден

Возможные причины:

  1. Некорректно задан Endpoint URL в настройках навыка
  2. Компонент Yandex Smart Home не установлен
  3. Интеграция Yandex Smart Home не добавлена

Внутренняя ошибка навыка

Обычно возникает из-за проблем в разрешении IP-адреса из имени. По состоянию на конец октября 2021 замечено, что без видимой причины могут не работать домены *.tplinkdns.com (попробуйте использовать другой динамический DNS).