Home assistant yandex smart home не работает

Интеграция Home Assistant и Алисы по фамилии Яндекс

Умный дом Яндекс представляет из себя некий аккумулятор разных систем автоматизации, позволяющий управлять устройствами голосовыми командами при помощи Яндекс колонки или приложения Яндекс в телефоне. Имея большое количество готовых плагинов для подключения к различным устройствам, системам умного дома и автоматизации можно за пару минут получить голосовое управление устройствами в своем доме. К сожалению, решения из коробки для Home Assistant нет, но мир не без умных людей на GitHub есть проект Yandex Smart Home custom component for Home Assistant позволяющий выполнить подключение.

Необходимые требования

При интеграции умного дома Xiaomi и Yandex вся магия происходит в электронных облаках: отданная голосовая команда обрабатывается в облаке Yandex, затем команда на действие летит в облако Xiaomi и обрабатывается там, далее на шлюз, к которому подключено устройство и, в конечном итоге, на управляемое устройство. При этом, для выбранного региона «Китай» заметен лаг в пару секунд, но Яндекс об этом предупреждает.

При интеграции Home Assistant и Yandex путь от голоса к действию будет короче: отданная голосовая команда обрабатывается в облаке Yandex, а команда на действие летит непосредственно в наш Home Assistant, который перенаправляет команду на устройство. Т.к. облако Яндекс взаимодействует непосредственно с нашим сервером, то сервер Home Assistant должен быть доступен из сети Internet. Требования для интеграции:

  • Необходим белый статический или динамический IP адрес (Данный вопрос решается с интернет провайдером)
  • Необходимо доменное имя второго или третьего уровня (Покупается отдельно или используется сервис DDNS)
  • Необходим SSL сертификат для используемого домена (Как установить SSL сертификат описано здесь)
  • Зарегистрированный Yandex аккаунт
  • При нахождении сервера Home Assistant в локальной сети за NAT, пробросить порт до сервера на маршрутизаторе

Настройка интеграции

Подключаемся по SSH к серверу Home Assistant. В каталоге настроек .homeassistant создаем папку custom_componеnts . Для систем, установленных на Ubuntu по этой статье и Raspberry Pi с установленным Home Assistant вручную, будет так:

Скачиваем архив с компонентами:

Распаковываем и копируем папку yandex_smart_home в папку custom_components :

Удаляем ненужные распакованные файлы:

В файл configuration.yaml добавляем строчку:

Сохраняем, проверяем конфигурацию и перезагружаем Home Assistant.

Заходим на сайт https://dialogs.yandex.ru/developer/ аккаунтом под которым будут работать устройства для управления домом. Создаем новый Диалог -> Умный дом .

Создаем черновик нового навыка заполняя поля:

  • Название — Отображается в списке доступных навыков при подключении. Вводим любое понятное значение, например, My Home Assistant
  • Backend — Адрес, на который будут отправляться запросы. Выбираем Endpoint URL, ниже в поле вписываем путь до API на нашем сервере. https://_your_home_assistent_addr_:8123/api/yandex_smart_home. Где _your_home_assistent_addr_ — адрес, по которому доступен сервер Home Assistant из сети интернет. 8123 — порт, на котором работает сервер Home Assistant и если сервер находится в локальной сети за NAT, то этот порт необходимо пробросить на маршрутизаторе. Кто-то делает внешний порт 443 и пробрасывает с него в локальную сеть на порт 8123, но лучше иметь единую конфигурацию внутри и снаружи
  • Тип доступа — Приватный. Навык будет доступен только Вам
  • Подзаголовок — Копируем из названия
  • Имя разработчика — Все что угодно
  • E-Mail разработчика — Должен подставиться автоматически ваш адрес Yandex почты, либо указываем вручную
  • Официальный навык — Нет!
  • Описание — Все что угодно
  • Иконка — Загружаем иконку размером 224х224 пикселя. Иконку нужного размера и в нужном формате можно взять здесь https://commons.wikimedia.org/wiki/File:Home_Assistant_Logo.svg
Читайте также:  Яичников которые не работают

Теперь настраиваем связку аккаунтов — в пункте Авторизация кнопка Изменить. Заполняем необходимые поля:

  • Идентификатор приложения — https://social.yandex.net/
  • Секрет приложения — Вписал слово password, на сколько понимаю в нашем случае это поле роли не играет
  • URL авторизации — https://_your_home_assistent_addr_:8123/auth/authorize
  • URL для получения токена — https://_your_home_assistent_addr_:8123/auth/token
  • URL для обновления токена — https://_your_home_assistent_addr_:8123/auth/token

Сохраняем все настройки и переходим на вкладку Тестирование. В тестировании выбираем Черновик, в окне Умный дом нажимаем +, добавить Другое устройство. В списке выбираем созданный нами диалог и нажимаем кнопку Обновить список .

Если всё выполнено верно, то должен загрузиться список устройств из вашего Home Assistant.

Помимо управляемых устройств, будут загружены созданные помощники, датчики и скрипты. Датчики и скрипты отображаются как Умное устройство, но если в них зайти, то датчики показывают значение, а у скриптов доступна кнопка на выполнение.

Если в настройках Диалога всё создано верно, но подключения не происходит, то попробуйте удалить диалог и создать заново, у меня подключился только со второго раза.

После удачных тестов, возвращаемся на вкладку Настройки и нажимаем кнопку Опубликовать. Заходим в телефоне в приложение Яндекс -> Устройства -> Управление устройствами , если устройства не подтянулись во время тестирования, то нажимаем кнопку + -> Другое устройство , в списке производителей находим созданный наш навык.

Детальная настройка интеграции

Если в файл configuration.yaml добавить только строчку yandex_smart_home: , то в устройства умного дома от Yandex приедут все устройства, датчики, выключатели, вспомогательные элементы, их свойства, а также сцены и скрипты. В основном много что оказывается в умном доме Яндекса из Home Assistant совершенно ненужно. При удалении лишнего и последующем обновлении устройств всё лишнее прилетает обратно. В файле конфигурации можно настроить только те устройства, которыми необходимо управлять голосом, в основном это розетки и выключатели.

Для добавления в Yandex Smart Home только необходимых устройств файл конфигурации configuration.yaml будет выглядеть следующим образом:

В разделе Filter мы перечисляем устройства, которые необходимо включить в умный дом Яндекс или наоборот, которые не должны в него попадать.

  • include_domains — включаем в Yandex Smart Home все устройства, относящиеся к перечисленным классам. В нашем случае это light и switch . Это будут все источники света (лампы, светильники и т.д.) и все выключатели, розетки, реле, но приедут только управляемые элементы, ничего лишнего.
  • include_entities — если нам необходимы только какие-то конкретные устройства, а не весь класс, в котором могут быть десятки устройств, то перечисляем их в этом разделе. В конфигурации выше добавлен переключатель, отвечающий за автоматический обогрев комнаты, сцена ночника и скрипт отключающий весь свет в квартире. Сцены и скрипты находятся всегда в состоянии OFF и их можно только включить, поэтому звучит немного смешно фраза: «Алиса! Включи отключение всего света».
  • exclude_entities — здесь перечисляются устройства, которые необходимо исключить из списка добавляемого класса. В нашем случае это светильник шлюза, выключатель у кровати, обе линии реле, переключатель перезагрузки модуля ESP32 и переключатель добавления новых устройств ZigBee2MQTT.

В разделе entity_config описываем свойства добавляемых устройств так, как они будут отображаться в умном доме Яндекса. Обычно задается имя и помещение. Имя устройства обязательно должно быть на русском языке и не более 25 символов, иначе оно попадает в не настроенные устройства. Наименование помещения рекомендую тоже задавать сразу т.к. в Yandex устройства привязываются к помещению, если у устройства не указана локация, то оно попадает в не настроенные.

После настройки всех необходимых устройств проверяем конфигурацию Home Assistant, Configuration -> Server Controls -> Check Configuration , если все хорошо перезапускаем Home Assistant.

При смене конфигурации в Home Assistant в Yandex Smart Home удаляем все ненужные устройства, устройства у которых изменилась конфигурация и устройства, отображаемые как не настроенные. Нажимаем +, выбираем добавить устройство, выбираем наш диалог и обновляем привязку.

Читайте также:  Если не служил можно работать пожарным

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

Проблемы, возникающие в интеграции Home Assistant и Yandex Smart Home

Проблема #1. При настройке диалога не происходит подключение к Home Assistant, но всё настроено верно и доступ снаружи до сервера Home Assistant есть.

Решение: Удалить диалог и настроить заново.

Проблема #2. Периодически отсыхает авторизация на Home Assistant, выражается это так: колонка не может управлять устройствами, из интерфейса умного дома Yandex невозможно управлять устройствами, выводится ошибка.

Решение простое в интерфейсе устройств Яндекса нажимаем +, выбираем добавить устройство, выбираем наш диалог и обновляем привязку, в процессе обновления авторизуемся на сервере Home Assistant.

Проблема #3. После обновления Home Assistant отсыхает авторизация, симптомы как в проблеме #2, но решение, описанное в ней, не помогает.

Решение: Необходимо обновить компонент Yandex Smart Home. Смотрим раздел Настройка интеграции описанный выше. В совсем запущенных случаях бывает необходимо удалить диалог и настроить его заново. У меня после удаления диалога из списка в Яндексе удалились не все устройства, при заходе в них выдавало ошибку. Что бы удалить такие устройства сначала необходимо в настройках Yandex Smart Home удалить Комнаты , к которым привязывались устройства, после чего устройства будут отображаться как не настроенные и их можно будет удалить.

Источник

Управление Яндекс.Станцией и другими колонками с Алисой из Home Assistant

Мы привыкли называть умными устройства, которыми можем управлять, не вставая с дивана. Включить лампочку, вентилятор, кофеварку или стиральную машину.

Колонки с Яндекс Алисой хоть и называются умными, но вы не можете изменить громкость не находясь рядом с колонкой (орать через всю комнату не считается). Вы не можете перемотать песню из мобильного приложения Яндекса. Или остановить сказку, запущенную на колонке в детской, из своей кровати в спальне.

В январе 2020 кто-то обнаружил, что Яндекс.Станция поддерживает некий локальный протокол. На GitHub начали появляться проекты по управлению Яндекс.Станцией. Мне хватило пару часов, чтоб разобраться и выпустить первую версию компонента для Home Assistant. Это достаточно популярная система домашней автоматизации, написанная на языке Python.

На сегодняшний день компонент поддерживает управление всеми колонками с Яндекс Алисой и при желании может выглядеть так:

Инструкции по установке, настройке и использованию компонента можете найти на GitHub странице проекта.

Локальный протокол

Устройства Яндекса обнаруживаются в локальной сети по протоколу mDNS и имени _yandexio._tcp.local. .

Локальный протокол представляет собой подключение к станции по WebSocket и обмен JSON-сообщениями в две стороны. Создавался он для приложения Яндекс.Музыки и поддерживает полный перечень команд управления станцией, как медиа-устройством: включить песню по ID из каталога Яндекс.Музыки, перемотать, изменить громкость и т.п.

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

Кстати подключение к колонкам Google через протокол Chromecast не ограничено какими-либо паролями или аккаунтами. Управление колонкой доступно любому пользователю той же локальной сети.

К многим устройствам с AirPlay первой версии подключение также не ограничено паролем.

Помимо медиа команд протокол поддерживает функцию, делающую Яндекс.Станцию совершенно уникальным устройством на рынке. Это возможность отправить на колонку текстовую команду. И колонка её выполнит, будто услышала команду через микрофон.

Вы можете включить плейлист дня с Яндекс.Музыки, лайкнуть песню, спросить погоду, вызвать такси, управлять умными устройствами, подключенными напрямую в экосистему Яндекса.

И вишенкой на торте — вы можете попросить станцию произнести любую фразу голосом Алисы. Это тот самый голос, который по праву признан лучшим голосом TTS для русского языка на сегодняшний день. Этот голос является эксклюзивом Яндекс Алисы и его нет даже в Yandex SpeechKit.

Читайте также:  Можно ли работать водителям суточные смены не нарушая законодательство

Но и это ещё не всё! Помимо зачечательного голоса вам доступна настройка генератора речи и библиотека звуков из платформы Яндекс.Диалоги.

Облачное управление

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

В начале мая Яндекс выпустил очень интересное обновление для своей платформы. В сценарии умного дома добавили возможность отправить на любую колонку пользователя любую текстовую команду. Как и в случае с большой станцией — колонка её выполняет.

По задумке авторов сценарий выполняется по заданной активационной фразе, которую пользователь произносит своему устройству с Алисой. Это может быть колонка, мобильное приложение Яндекс или Яндекс.Браузер с Алисой на компьютере. Но в интерфейсе управления сценариями есть кнопка ручного запуска любого пользовательского сценария.

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

Я ранее сталкивался с внутренними API этого приложения для реализации функции управления HDMI выходом большой станции. Да, есть ещё такая недокументированная возможность и компонент её поддерживает.

Научить компонент создавать сценарии и выполнять их не составило особого труда. Через сценарии можно как выполнять команды, так и произносить любые фразы.

Единственным большим минусом такого подхода является отсутствие обратной связи от колонки. Неизвестно что играет станция на данный момент и вообще играет ли она что-либо. У локального протокола такой проблемы нет, там выводится полная информация о исполнителе и красивая обложка из Яндекс.Музыки.

YandexStation 2.0

Некоторое время ушло на объединение локального и облачного режима работы. При старте Home Assistant все колонки включаются в облачном режиме и запускается поиск колонок, поддерживающих локальный режим. mDNS довольно капризный протокол и иногда может искать колонку довольно долго. Но благодаря наличию облачного режима — управление станцией сохранится, пусть и в обрезанном режиме без обратной связи. При обнаружении локальной колонки — управление переключается на локальный протокол.

Похожим образом работает другой мой компонент для управления устройствами eWeLink (Sonoff) на оригинальной прошивке — SonoffLAN. В линейке популярных китайских реле также есть устройства, которые поддерживают локальное и облачное управление. И устройства, которые поддерживают только облачное управление.

Могу написать отдельную статью про компонент, если интересно.

Home Assistant Windows Portable

Для пользователей, испытывающих трудности в установке Home Assistant, я собрал портативную версию Home Assistant под Windows на базе WinPython — HassWP. Эта версия подойдёт для ознакомления и экспериментов. В ней уже установлен Home Assistant Community Store (HACS) и компоненты YandexStation и SonoffLAN.

Для повседневного использования всё же рекомендую установить Hass.io на Raspberry Pi, NUC (или аналог) или виртуальную машину с Linux. Но слышал у VirtualBox есть проблемы с Multicast. Это тот самый mDNS без которого в локальной сети НЕ найдутся ваши Яндекс.Станции, устройства Sonoff, колонки Google, плееры с поддержкой AirPlay и многие другие полезные гаджеты.

Заключение

Я знаю довольно много людей, кто купил колонки с Алисой благодаря выходу этого компонента. Решение показывает, что при наличии фукнционального API — эти колонки могут стать почти обязательным устройством в каждом умном доме.

Это далеко не все крутые вещи, на которые способны колонки с Алисой и экосистема умного дома Яндекса. Просто у меня пока ещё не дошли руки реализовать всё задуманное.

Следить за развитием этого и других моих проектов можно на канале в Telegram. На странице GitHub вы можете найти и другие полезные компоненты для Home Assistant.

Источник

Оцените статью