Прямое подключение (УДЯ)¶
Только для продвинутых пользователей!
Для использования прямого подключения вы самостоятельно создаёте приватный навык в Яндекс.Диалогах, который будет напрямую подключаться к вашему 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¶
-
Проверьте доступность 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 сертификата:
- Вставьте ссылку
-
Если сертификат настраивался вручную: убедитесь, что используется 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 не найден¶
Возможные причины:
- Некорректно задан
Endpoint URL
в настройках навыка - Компонент Yandex Smart Home не установлен
- Интеграция Yandex Smart Home не добавлена
Внутренняя ошибка навыка¶
Обычно возникает из-за проблем в разрешении IP-адреса из имени.
По состоянию на конец октября 2021 замечено, что без видимой причины могут не работать домены *.tplinkdns.com
(попробуйте использовать другой динамический DNS).