Добавляем Home Assistant в Умный Дом Яндекса

29 мая 2019, 23:15

Необходимое для начала

  •  Аккаунт в Яндексе (он же у Вас есть, верно?)
  •  Настроенный Home Assistant, с подключенным внешним IP и ssl на домене, или настроенным dDNS (я использую duckdns.org). Описывать первоначальную настройку HA я не буду, здесь на sprut.ai написано об этом (и немного больше) уже очень много.

Сам процесс настройки подключения сервисов

Для начала необходимо создать новый каталог с именем "custom_components" , если у Вас его нет (как у меня ранее), путь ~/.homeassistant/custom_directory/ или ~/config/custom_components/ в зависимости от места и версии HA).

Далее нужно склонировать туда гит, на котором вся система и работает - GitHub (все лайки именно туда, писал его не я) или же создать вручную папку yandex_smart_home и туда скопировать файлы из архива, которые были скачаны из гитхаба оттуда.

Я в Хассио в конфигураторе в web загружал каждый из 10 файлов с указанного выше гита по одному. 

Но вы можете подключиться к малине по ssh, перейти в папку с конфигом вашей ХА сборки, перейти в папку custom_components (если ее нет - надо создать). И там сделать следующее:

git clone https://github.com/dmitry-k/yandex_smart_home.git

Далее прописываем в configuration.yaml этот самый компонент:

  • как я, просто добавляем в конце файла "yandex_smart_home:" (без кавычек, конечно);
  • или же "курим" расширенный мануал от создателя компонента этого: ReadMe.

После, проверяем, на всякий случай, конфигурацию в настройках, и перезагружаем HA.

После этого уже переходим на сам процесс подключения всего, что сделали, в Умный дом Яндекса:

  •  Создаём Навык Умный Дом на https://dialogs.yandex.ru/developer/  (Очень важно создавать навык именно залогинившись с того аккаунта, в котором будем будем устройства использовать в Яндексе).

  •  Заполняем все поля, отмеченные звездочкой.
  • Название - указывем любое вам понравившееся, которое не будет занято. 
  • В пункте Endpoint URL пишем https://[внешний_адрес_HA:порт]/api/yandex_smart_home.
  • Включаем приватность "Не показывать в каталоге".
  • Имя разработчика - пишем свой ник или что душе угодно. Ни на что не влияет.

Нужно также выбрать иконку размером 224х224, которую можете сделать сами или использовать уже выбранную мной для HA:

Не закрываем страничку и переходим пока на https://dialogs.yandex.ru/developer/settings/oauth , где добавляем новую связку аккаунтов:

  1. Название
  2. Идентификатор приложения/Client identifier : https://social.yandex.net/
  3. Секрет приложения/Client Password (без него сохранить не получилось связку, но в итоге она из неё сама удалилась. Я вписал туда стандартный, видимо, пароль из файла secrets.yaml. Может можно вообще что угодно вписать, или этот "секрет" где-то настраивается и это важно - но я об этом не знаю хD): password
  4. URL авторизации/API authorization endpoint: https://[внешний_адрес_сервера_HA:порт]/auth/authorize
  5. URL для получения токена/Token Endpoint: https://[внешний_адрес_сервера_HA:порт]/auth/token
  6. URL для обновления токена/Refreshing an Access Token: https://[внешний_адрес_сервера_HA:порт]/auth/token

Сохраняем связку, и выбираем её на страничке из списка, где мы настраивали сам навык ранее.

После, справа жмем кнопку "На модерацию" (она проходит мгновенно, так как мы выбрали ранее "приватный навык") и "Опубликовать".

По сути все: осталось в приложении Яндекс на Android/iOS или на ПК в браузере  добавить нашего нового "производителя". Покажу на примере мобильного приложения.

Открываем левое меню в приложении Яндекс и выбираем пункт Устройства.

Здесь открывается список с устройствами, которые можно подключить. Нам нужен пункт Умный дом.

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

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

Откроется страничка созданного навыка - его описание. Нажимаем на "Объединить аккаунты", нас перебрасывает на страницу входа в Home Assistant: вводим логин\пароль от своего аккаунта там.

Нас возвращает после этого на страничку самого "навыка", где уже нажимаем на "Обновить список устройств". Немного ждем..

И все доступные устройства из HA добавляются в список устройств.
Надписей красным цветом и восклицательных знаков не пугаемся: необходимо лишь переназвать каждое устройство, используя "кириллицу, без пунктуации и спецсимволов; между словами и числами ставьте пробелы".

На данный момент поддерживаются только вот эти domains в HA:

  • group (on/off)
  • input_boolean (on/off)
  • switch (on/off)
  • fan (on/off)
  • light (on/off)
  • cover (on/off)
  • media_player (on/off, mute/unmute)

В дальнейшем будет также добавлена возможность проброса из Home Assistant в Яндекс:

  • поддержка громкости в media_player;
  • яркость/цвет ламп;
  • скорость увлажнителя/вентилятора.

На этом все, мы вместе смогли подключить те устройства, которые "нативно" не поддерживаются пока в Умном Доме Яндекс.
Кроме того, это позволяет избежать возможных лагов из-за cloud-2-cloud системы, когда Яндекс обращается в облако производителя, который обращается в облако подключенного к нему производителя, который.... - и все они лагают =)
Остаются, по сути, только Ваш сервер, за который Вы и в ответе, и облако самого Яндекса, куда все и интегрируется.


Текст составлен с неоценимой помощью @OXOTH1K , а также всего сообщества, которые и двигают весь прогресс на основе "ступенек" от компаний, подобных Яндексу.


Все новости мира умных домов - t.me/SprutAI_News или Instagram
Остались вопросы? Мы в Telegram - @Soprut

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. (Zhel)
    (Zhel) отредактировано 11 месяцев назад

    Голосовое управление для всех членов семьи, а не только на кого настроена привет сири. 

  2. Сергей Драгунов (@SD)
    Сергей Драгунов (@SD) 11 месяцев назад

    Спасибо!

  3. Олег Челбаев (sprut)
    Олег Челбаев (sprut) 11 месяцев назад

    Спасибо 👍

  4. (yalic)
    (yalic) 11 месяцев назад

    Есть кто уже настроил? Я столкнулся с проблемой на этапе "обновления" списка устройств, яндекс сообщает что "что-то пошло не так". 

    • (gettoboy22)
      (gettoboy22) 9 месяцев назад

      Та же ерунда. При обновлении пишет "internal server error".... ил это на яндексе беда какая-то?....

  5. (lapatoc)
    (lapatoc) 11 месяцев назад

    Удобнее сразу прописать entity_config. В яндекс влетает с нужными именами и по нужным комнатам. 

  6. (hellad)
    (hellad) 11 месяцев назад

    Не одскажете на какой версии ХА должен работать этот кастомный компонент?

    после переноса файлов с гитхаба в папку yandex_smart_home в custom_components и добавления нескольких строк в конфиг у меня в ХА версии 0.92.2 в докере на synology даже проверка конфигурации не проходит :( . причем веб морда ХА зависает на этом и приходится перегружать контейнер средствами докера. Если же пробовать запустить, то получаю в логе следующую ошибку (про атрибут медиа плеера):

    2019-05-30 00:26:05 ERROR (MainThread) [homeassistant.setup] Error during setup of component cloud

    Traceback (most recent call last):

      File "/usr/local/lib/python3.7/asyncio/runners.py", line 43, in run return loop.run_until_complete(main)

      File "uvloop/loop.pyx", line 1451, in uvloop.loop.Loop.run_until_complete

      File "/usr/src/app/homeassistant/__main__.py", line 283, in setup_and_run_hass

        log_no_color=args.log_no_color)

      File "/usr/src/app/homeassistant/bootstrap.py", line 180, in async_from_config_file

        config_dict, hass, enable_log=False, skip_pip=skip_pip)

      File "/usr/src/app/homeassistant/bootstrap.py", line 91, in async_from_config_dict

        await _async_set_up_integrations(hass, config)

      File "/usr/src/app/homeassistant/bootstrap.py", line 394, in _async_set_up_integrations

        for domain in domains_to_load

      File "/usr/src/app/homeassistant/setup.py", line 50, in async_setup_component

        return await task  # type: ignore

      File "/usr/src/app/homeassistant/setup.py", line 126, in _async_setup_component

        hass, config, integration)

      File "/usr/src/app/homeassistant/config.py", line 756, in async_process_component_config

        component = integration.get_component()

      File "/usr/src/app/homeassistant/loader.py", line 130, in get_component

        cache[self.domain] = importlib.import_module(self.pkg_path)

      File "/usr/local/lib/python3.7/importlib/__init__.py", line 127, in import_module

        return _bootstrap._gcd_import(name[level:], package, level)

      File "<frozen importlib._bootstrap>", line 1006, in _gcd_import

      File "<frozen importlib._bootstrap>", line 983, in _find_and_load

      File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked

      File "<frozen importlib._bootstrap>", line 677, in _load_unlocked

      File "<frozen importlib._bootstrap_external>", line 728, in exec_module

      File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed

      File "/config/custom_components/yandex_smart_home/__init__.py", line 12, in <module>

        from .const import (

      File "/config/custom_components/yandex_smart_home/const.py", line 73, in <module>

        (media_player.DOMAIN, media_player.DEVICE_CLASS_TV): TYPE_MEDIA_DEVICE_TV,

    AttributeError: module 'homeassistant.components.media_player' has no attribute 'DEVICE_CLASS_TV'

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):

      File "/usr/src/app/homeassistant/setup.py", line 153, in _async_setup_component

        hass, processed_config)

      File "/usr/src/app/homeassistant/components/cloud/__init__.py", line 156, in async_setup

        await prefs.async_initialize()

      File "/usr/src/app/homeassistant/components/cloud/prefs.py", line 25, in async_initialize

        prefs = await self._store.async_load()

      File "/usr/src/app/homeassistant/helpers/storage.py", line 81, in async_load

        return await self._load_task

    concurrent.futures._base.CancelledError

  7. Антон Калашников (GodinRaider)
    Антон Калашников (GodinRaider) 11 месяцев назад

    У меня 93.2 версия, последняя что доступна из вебморды, под крайней мере.

    Я когда сам разбирался, узнал что на последних версиях HA уже несколько раз менялась папка компонентов: когда-то ранее это была custom_component, и даже custom_directory


  8. (iHun)
    (iHun) 11 месяцев назад

    Для меня гораздо актуальнее другое -- как добавить устройства от яндекса в HA? А то подарили лампочку, но что с ней пока делать -- не понятно. 

  9. (Stein)
    (Stein) отредактировано 11 месяцев назад

    Homebridge интересно получится добавить когда-нибудь? Не хотелось бы еще и Home Assistant заводить.

  10. Евгений Селянин (Shico)
    Евгений Селянин (Shico) 11 месяцев назад

    Прошу помощи. Дошел до пункта "объединить аккаунты" в приложении яндекса,  перебрасывает на страницу входа в Home Assistant:  логин\пароль от своего аккаунта.

    Но ругается на провайдера аутентификации. 
    Выдаёт надпись красного цвета: "Error. Invalid client id or redirect uri

    Не могу зайти ни через Home assistant local, ни через Legacy API Password

    Настройка через duckdns,белый IP, так же через него проброшена GHmini и она спокойно работает. Через duckdns спокойно захожу к себе в умный дом.
    Я так понимаю что проблема в доступе именно яндекса к моему duckdns. Где это можно поглядеть или как его докинуть в доверенные источники?!

    • Евгений Селянин (Shico)
      Евгений Селянин (Shico) 11 месяцев назад

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

  11. (hellad)
    (hellad) 11 месяцев назад

    Разработчик кастомного компонента мне уточнил, что нужна версия ХА не ниже 0.93 (он добавил это в readme). После обновления моего hass удалось настроить связку с Яндексом как описано в статье.

    • Евгений Селянин (Shico)
      Евгений Селянин (Shico) 11 месяцев назад

      У меня самая последняя версия, 0.93.2
      И всё-равно не даёт пароли к учетной записи HA ввести, ругается:  "Error. Invalid client id or redirect uri

  12. (maikl)
    (maikl) 11 месяцев назад

    Спасибо за статью!

  13. Eugene Firstov (Zyberex)
    Eugene Firstov (Zyberex) 11 месяцев назад

    Спасибо за статью, пришлось использовать приложение на телефоне, чтобы объеденить аккаунты, в браузере никак не получалось. еще б команды можно было переименовывать, например - Алиса, пусти/выпусти кота. )

    • Антон Калашников (GodinRaider)
      Антон Калашников (GodinRaider) 11 месяцев назад

      Я сделал отдельные сценарии, где лишь одна команда, которая как раз и делает более удобным "живым" использовании устройств

  14. (TEDSv)
    (TEDSv) 10 месяцев назад

    А кто-то может подскажет как настроить https без убийства 80го порта и на белом IP?)

  15. Максим Сапожник (Sapik)
    Максим Сапожник (Sapik) отредактировано 10 месяцев назад

    Спасибо за статью. После нажатия на объединить идет переадресация на мой домен и тут же ошибка 404, хотя через браузер hass доступен по https. Подскажите в чем может быть дело?

  16. (Is_king)
    (Is_king) 9 месяцев назад

    Sapik, такая же ерунда((( не знаю, как починить

  17. (Is_king)
    (Is_king) 9 месяцев назад

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

  18. пчОл Упртй (Starnger)
    пчОл Упртй (Starnger) 9 месяцев назад

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

    1000x_image.jpg?1565515336
  19. Владимир Владимир (Vovka)
    Владимир Владимир (Vovka) отредактировано 7 месяцев назад

    В описании значится так: cover (on/off = close/open), но на практике все наоборот, что бы открыть шторы или поднять жалюзи, надо просить Алису их закрыть, а для того чтобы закрыть, надо попросить ее открыть! Так только у меня или у всех?

    • (pruwait)
      (pruwait) 6 месяцев назад

      У меня та же беда. Прошу открыть ворота, а Алиса закрывает! Как исправить?

  20. (pruwait)
    (pruwait) отредактировано 6 месяцев назад

    Как добавить компонент Яндекс.Хоум при установке хассио в докере?

    АПД: разобрался. Вроде несложно.

  21. (mindstomp)
    (mindstomp) 6 месяцев назад

    При попытке обновить список устройств стало появляться сообщение: "Произошла ошибка, попробуйте позже. Если ошибка продолжает возникать, поищите решение проблемы на странице помощи". Никто не сталкивался?

    • (nafigator)
      (nafigator) 5 месяцев назад

      Та же ситуация. Удалось ли победить?

      • (mindstomp)
        (mindstomp) 5 месяцев назад

        Да. У меня в configuration.yaml на тот момент появилось устройство с типом чайник (water_heater), после добавления которого все и перестало работать. Кастомный компонент не поддерживает этот тип устройств.
        После того как в ручную указал импортируемые типы - все заработало.

        • (nafigator)
          (nafigator) 5 месяцев назад

          Спасибо. Перепробовал минимальные конфигурации, но засада оказалась в адресе ipv6, прописанном на duckdns.org. Пока удалил и заработало по ipv4 только.

  22. Евгений Селянин (Shico)
    Евгений Селянин (Shico) отредактировано 5 месяцев назад
    Комментарий удален
  23. (rulezman)
    (rulezman) 2 месяца назад

    все по инструкции, https работает, в папку нужную все скопировал, в конфиг добавил, в HA ошибок нет, но когда создаю навык как указано и при опубликовании выдает:
    Ошибки валидации: — Endpoint URL: Ошибка реализации протокола умного дома: availability: Not Found devices: Not Found devices_action: Not Found devices_query: Not Found user_unlink: Not Found

    Помогите, Алиса скучает и палчет!

    • (BeAngel)
      (BeAngel) месяц назад

      А доступ в ХА из вне настроен?

  24. (sof07)
    (sof07) 10 дней назад

    Автор, а можно ссылку на статью по настройке SSL? Настроил все по инструкции, логинюсь через приложение яндекса НА, но после попытки обновить устройства выскакивает сообщение "Произошла ошибка попробуйте позже" Грешу на эти сертификаты, настраивал домен через роутер, а не через дюк ДНС

К списку статей

Скидки для сообщества

Интернет-магазин yourhomekit.ru

+7 914 550-51-11
Промокод:
SPRUT-BLG
Размер скидки:
8%
Cамый большой ассортимент в России аксессуаров Apple HomeKit

Похожие статьи

09 ноября 2018, 20:54
Кейс создания умного дома без каких либо прокладок в виде Raspberry pi
17 декабря 2019, 17:49
Универсальный привод для автоматического удаленного открытия окон с простой интеграцией в умные дома.
15 ноября 2018, 09:42
Способы автоматизации механических ворот
15 ноября 2018, 13:11
Xiaomi Mi Remote 360 добавляем Apple HomeKit
24 августа 2018, 12:18
Пошаговая установка HomeAssistant
30 августа 2019, 07:28
Несколько нетривиальных способов использования датчика открытия окон/дверей от Xiaomi/Aqara.
20 октября 2018, 22:57
Теоретические основы протокола MQTT и описание того, как он работает и для чего используется
28 августа 2018, 09:48
От голого Raspbian до веб-интерфейса homebridge за четыре команды в терминале.
19 марта 2019, 22:19
Обзор долгожданного 2х канального zigbee реле от Aqara, сравнение с конкурентами и небольшой тест на Deconz, Mi Hub и Aqara Hub.
27 августа 2018, 10:14
Интегрируем ХА в HomeKit