Управление умным домом Home Assistant через Яндекс Алиса

23 мая Яндекс представила свою систему “Умный Дом”. Умными устройствами можно управлять не только из мобильного приложения «Яндекс», но и голосом через помощника Алиса и умные колонки.  Нам же необходимо управлять устройствами Home Assistant, нормальную поддержку которого, на данный момент можно получить лишь с помощью пользовательского комонента.

На просторах GitHub был найден компонент, позволяющий подружить Алису и Home Assistant: https://github.com/dmitry-k/yandex_smart_home

Скачиваем из него все файлы и переносим в custom_components/yandex_smart_home/

Затем в configuration.yaml добавляем:

yandex_smart_home: !include yandex_smart_home.yaml

и создаем сам файл yandex_smart_home.yaml

В нем нужно прописать, какие типы устройств нужно добавить в Алису, а так же можно вручную указать имена для нужных устройств и их комнаты (если они не обозначены в самом Home Assistant):

exposed_domains:
  - switch
  - light
  - group
  - media_player
  - cover
  - input_boolean
  - fan

# Устройства:
entity_config:

# Спальня:
  light.bedroom_light:
    name: 'Cвет'
    room: 'Спальня'

и так далее.

Теперь переходим на https://dialogs.yandex.ru/developer/ и создаем Диалог Умный Дом.

Заполняем все поля в соответствии с инструкцией в репозитории:

Endpoint URLhttps://[YOUR HOME ASSISTANT URL:PORT]/api/yandex_smart_home

Теперь в новой вкладке перейдем в https://dialogs.yandex.ru/developer/settings/oauth и настроим Связку аккаунтов:

Client identifierhttps://social.yandex.net/
API authorization endpointhttps://[YOUR HOME ASSISTANT URL:PORT]/auth/authorize
Token Endpointhttps://[YOUR HOME ASSISTANT URL:PORT]/auth/token
Refreshing an Access Tokenhttps://[YOUR HOME ASSISTANT URL:PORT]/auth/token

Сохраняем, возвращаемся на вкладку создания Диалога, и выбираем созданную связку аккаунтов. Перезагружаем Home Assistant.

Скачиваем приложение Яндекс, заходим в аккаунт и жмем Устройства:

Жмем Умный дом:

Добавить устройство:

И выбираем созданный ранее Диалог:

Объединить аккаунты:

Откроется страница авторизации нашего Home Assistant, авторизуемся.

Затем Обновить список устройств:

И переходим к списку устройств.

Если все настроено правильно, можно смело просить Алису включить свет, установить ночник на 70% яркости и так далее

Огромное спасибо автору компонента https://github.com/dmitry-k

Поделитесь с друзьями

комментариев 46

  1. После добавления компоненты и yaml файла в «Состояние» HA ничего не появляется ?

    • Не совсем понял вопрос. На стороне ассистента ничего не поменяется и не добавится, появятся только у Алисы

  2. 1. Почему-то после настройки Диалога я не вижу «своего устройства» в списке Яндекса. У меня там филипс хью и далее по списку популярных производителей. Может быть, Диалог ещё нужно отправить на модерацию или без неё должен появиться? Галочка «Опубликовать в каталоге» включена.

    2. Не знаете ли, как потом дать доступ к моему диалогу другим домочадцам? Отправлять на модерацию и, возможно, дом перейдёт под управление всего мира? Или каждому из членов семьи создавать в своей яндексовой учётке такой же диалог?

    3. Если с компьютера открыть страницу https://quasar.yandex.ru/skills/iot/ , должен ли пользователь увидеть там свой настроенный диалог или он только строго в приложении виден? Можете проверить?

    • Диалог должен быть опубликован. Насколько я знаю, если поставить галочку «Приватность», то публикуется мгновенно, если делать общедоступным, то уходит на модерацию. Может в этом дело.

      По поводу поделиться с домочадцами я не нашел как, у меня алиса на отдельном общем аккаунте.

      После перехода по адресу https://quasar.yandex.ru/skills/iot/ я вижу все то же самое, что и через приложение Яндекс — все свои устройства.

      А вообще, по поводу того, что не видно диалога в приложении, можете спросить у создателя плагина https://github.com/dmitry-k/yandex_smart_home

      • Действительно, надо бы сделать
        s/Сохраняем, возвращаемся на вкладку создания Диалога, и выбираем созданную связку аккаунтов. /Сохраняем, возвращаемся на вкладку создания Диалога, и выбираем созданную связку аккаунтов. Отправляем Диалог на модерацию. Если галочка «опубликовать в каталоге» не включена, модерация происходит мгновенно. /

        Правда мне это не до конца помогло. Диалог в списке появился, после нажатия «Соединить аккаунты» открывается страница логина в hass, логинюсь, возвращаюсь в Яндекс, а список устройств всё равно пустой. Попробую ещё с аккаунта супруги проделать эти трюки.

        Кстати, я так понял, русскоязычных пользователей hass множество, но ещё нет места для коммуникации в более реальном времени. Приглашаю всех в комнату https://riot.im/app/#/room/#ru.hass:matrix.org ! Для протокола matrix, к слову, тоже компонента имеется.

  3. Наконец-то получилось! На всякий случай опишу свои мытарства, вдруг ещё кто столкнётся с ошибками при связке аккаунтов.
    Сначала должен сказать, что лично у меня все андроиды старые (4.4), более-менее новый установлен в автомобильной системе. Соответственно на моих устройствах последнее приложение Яндекса седьмой версии, где нет настроек умного дома. Бегать в машину для настройки мне надоело и я решился запустить виртуалку. Поставил android studio, создал android virtual device (сначала эмулировал pixel 2 с android q, но там почему-то google play ничего не скачивал, поэтому вторым вариантом создал nexus 5 с android q), поставил туда Яндекс и дальше действовал по инструкции. Устройства появились сразу же, тут же выплыли мои косяки в yandex_smart_home.yaml . Скажем, я не все switch там прописал, где-то перепутал названия комнат, а наименование «Cвет» яндексу вообще не понравилось. Я подумал, это какое-то зарезервированное слово, но оказалось, что первую букву латиницей написал, а потом везде так скопировал. В общем, поправил yaml, перезапустил home assistant, но чтобы изменения отразились в яндексе, пришлось отвязать аккаунт и привязать снова.
    Теперь Алиса может включать-выключать лампочки. Самое приятное, что, поскольку обработка команд происходит на серверах яндекса, приложение на старом андроиде всё равно точно так же управляет домом. В общем, если появляются ошибки при связке аккаунтов, рекомендую попробовать сделать это в эмуляторе.
    Осталось только непонятным, может ли Алиса ставить kodi на паузу и возобновлять воспроизведение. Пробовал десятки разных вариантов команд, эффекта нет. Ну и хорошо бы узнать у работников яндекса, как расшарить Диалог для определённых домочадцев, не публикуя в общественном каталоге и не создавая каждому новый Диалог.
    Спасибо Вам и автору плагина за проделанную работу!

    • Оказывается, все команды конкретного «устройства» можно посмотреть на https://quasar.yandex.ru/skills/iot/

      Плеер
      Пульт управления
      Голосовые команды
      Вы можете управлять этим устройством с помощью голоса. Вот какие команды поймёт Алиса:
      Алиса,
      включи плеер
      выключи плеер
      выключи звук на плеере
      выключи звук плеера
      включи звук на плеере
      включи звук плеера

      Маловато пока что, но хоть что-то.

      • На гитхабе автор писал что медиаплееры поддерживают пока только вкл./выкл. громкости, все в процессе

        • media_player:
          — platform: kodi
          host: 192.168.1.20
          name: Кухня
          username: user
          password: pwd
          turn_off_action:
          service: media_player.media_pause
          turn_on_action:
          service: media_player.media_play

          Да, по умолчанию работает только включение/выключение звука, но если такой конфиг написать, то по командам «выключи/включи плеер на кухне» Алиса останавливает и продолжает воспроизведение. Только что проверил. Соответственно, работает команда «выключи всё на кухне». Мне этого предостаточно.

          • Ха) интересно придумано) спасибо за фичу

    • Спасибо большое за ваш комментарий. Я думаю Яндекс добавит возможность расшарить диалог с семьёй

  4. Полезная информация! Но у меня почему то не заработало в ХА при дабовлении yandex_smart_home: !include yandex_smart_home.yaml и создании файла файл конфигурации не проходит проверку и соответственно Ха не грузится!

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

        • Я имел ввиду климат как сущность в HA. Я кондером управляю через Broadlink через компонент SmartIR. А так в планах и котел завести в HA, никак руки не доходят

  5. Я конечно не в тему НО! Кто подскажет как сделать ssl Hassio что бы https:// было!

      • ssl работает и в локальной и с инета через duckdns! а вот в яндекс где добавлять устройства соединение аккаунтов по чему то не происходит

  6. Может кто сталкивался, все сделал по инструкции. Объединение аккаунтов проходит нормально, запрашивается авторизация и проходит. Потом нажимаю «обновить список устройств» и выходит «Internal Server Error». Пробовал пересоздавать яндекс навык, тоже самое.
    Куда можно копать? Логи custom components в ha ничего не показывают. Включил их в настройках.
    Как-то можно понять в чем ошибка?

        • Все перепроверьте и пробуйте заново. Internal Server Error может быть либо на вашей стороне (ha) либо у яндекса. Последнее менее вероятно. Если все перепроверили и все равно ошибка — откройте проблему https://github.com/dmitry-k/yandex_smart_home/issues

        • Если есть желание, гляньте api умного дома яндекса, вдруг это они что то поменяли

          • ок, попробую поковырять компонент, питон я знаю. Может чего-то найду.

          • Проблема была с настройками ha, сбросил конфиг на дефолт стало все работать. Буду по половине добавлять обратно, может найду причину что вызывало internal server error.

          • Как найдёте причину, сообщите, интересно все таки в чем дело было

    • Всем здрасте! Выложу тут свою переписку с техподдержкой Алисы. Может кому нить и поможет…
      1. «Здравствуйте! Сделал систему Умный дом на основе Home Assistant + Яндекс.Алиса + Умные колонки IRBIS A. Вот по этой инструкции https://kvvhost.ru/2019/05/31/home-assistant-alice/ Некоторое время все работало отлично. Но потом упал сервер Home Assistant. Я его восстановил из бекапа. Вроде все заработало, но при подключении Алисы, при обновлении устройств возникает ошибка. Тестировал в Яндекс.Диалоги, то же выскакивает ошибка при обновлении списка устройств. Помогите пожалуйста!»
      2. «Пожалуйста, пришлите ссылку на настройки диалога. Для этого необходимо перейти в личный кабинет ( https://dialogs.yandex.ru/developer/ ), выбрать диалог, скопировать ссылку в адресной строке браузера и отправить ее мне. Проверим, с чем может быть связана сложившаяся ситуация.»
      3. «Здравствуйте! Проблема решена. Оказывается связь между Home Assistant и Яндекс.Алисой блокировалась из-за использования протокола ipv6. Как только я отключил ipv6 все заработало. Возможно проблема не из-за самого ipv6 а тонельного брокера. У меня ipv6 не нативный. Большое спасибо за поддержку.»
      ЗЫ: Причем отключить ipv6 надо не у вас в доме, а на DNS сервере в зоне стереть записи АААА к вашему домену с HA. Что бы доменное имя разменовывалось на адрес ipv4…Скорее всего ошибка связана с тем, что Яндекс Алиса сразу лезет по ipv6, если у вас ipv6 не нативный а через брокера, то возникает ошибка. Ну по крайней мере у меня так было. Несколько раз воспроизвел её.

        • Здравствуйте! Надо отключить не сам ipv6, а сделать так, что бы на запрос вашего доменного имени с HA, dns сервер выдавал адрес в формате ipv4. Сделать это проще в админке вашего регистратора или хостера. Необходимо отредактировать записи зоны вашего днс имени, просто сотрите запись АААА.

          • Эдуард, извините может за глупый вопрос…. админке вашего регистратора или хостера? это где на роуторе или на сайте duckdns.org где зарегистрировано имя? подскажите как правильно.

          • Это там, где вы регистрировали свое доменное имя для своего HA. Хотя, если вы воспользовались duckdns.org, то я не знаю где он хранить днс зоны. Просто, по возможности, лучше у вашего провайдера получить белый ip адрес (100 р в месяц) и не извращаться со всякими заморочками. Имея белый ip адрес, регистрируете собственное доменное имя у регистратора (например reg.ru) он вам предоставляет свои днс серверы и панель управления. Там вы и творите чудеса. Попробуйте хотя бы на роутере отрубить ipv6, может поможет…

  7. не могу заполнить вкладку: Создание связки аккаунтов, выдает ошибку….куда копать?

    • Я думаю вам стоит все ещё раз внимательно проверить. Если все верно, то обратитесь в поддержку Яндекса.
      Какую ошибку выдает?

      • Тоже никак не могу заполнить, пишет «Произошла ошибка». Причем ссылка https://dialogs.yandex.ru/developer/settings/oauth ведет к настройкам. где нет вкладки «Связка аккаунтов». Обращался в поддержку Яндекса их ответ: » Нам понадобится некоторое время, чтобы разобраться в причине возникшей ситуации. Как только у меня появятся новости, я свяжусь с вами!»

  8. Всем привет!
    Подскажите как можно управлять через Алису своими девайсами в HA с таймером.
    Суть: моугу сказать «включи свет в зале» и она включит. А вот если сказать «Алиса, включи свет в зале через 5 минут» она ответит что не может.
    Может возможно как-то настроить для подобного?

  9. А есть вариант без открытия портов сервера HA наружу?

    ps. Гугль авторизация у вас не работает

    • Без открытия портов никак. Алиса работает только через свои сервера, соответственно, все через интернет.
      За авторизацию спасибо, разберусь

  10. Друзья, прошу помощи. Успешно интегрировал свой HA c Алисой. Могу управлять из Алисы светом, скриптами (на скриптах настроил включение ТВ).
    Проблема в следующем. В HA создал «виртуальный» сенсор температуры через шаблон. Он у меня успешно подтянулся в Алису, там даже видно значение этого датчика. Но как ГОЛОСОМ спросить у Алисы значение этого датчика? Если «зайти» в этот датчик, там даже нет вкладки «голосовые команды» (с случае с телевизором и светом она есть)

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

  11. После обновление HA, Яндекс перестал видеть устройства. Кто ни будь нашел решение?

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Exit mobile version