Добавляем 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

Остались вопросы? Мы в Telegram - t.me/soprut

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

    Только один вопрос : зачем ? Зачем самодостаточную систему пихать в бидон ? И что в конечном итоге вы получили на выходе ? Умный дом стал работать в разы надежнее или до этого все тормозило и потом залетало или ... или ... Хоть один аргумент ))

    • Рустам Панин (m_wildcat54)
      Рустам Панин (m_wildcat54) 2 месяца назад

      Вау-эффект же. Ну и лишний раз пообщаться с женщиной с красивым голосом тоже приятно ;)

      Голосовое управление на колонке удобно, а раз уж приходится брать в руки смартфон, то проще уж в приложении кнопку тыкнуть...

    • Антон Калашников (GodinRaider)

      Все верно, как Вам писали чуть выше - все это сделано, именно чтобы упростить и добавить новые "инструменты" по управлению умным домом, в данном случае, мне достаточно шепотом и не очень внятно (еще не проснувшись) сказать "Алиса, Доброе утро", чтобы она включила свет, подсветки, удлинителя для техники, музыку и др. Мне это очень удобно.

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

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

  2. (Zhel)
    (Zhel) отредактировано 2 месяца назад

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

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

    Спасибо!

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

    Спасибо 👍

  5. (yalic)
    (yalic) 2 месяца назад

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

    • (gettoboy22)
      (gettoboy22) 7 дней назад

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

  6. (lapatoc)
    (lapatoc) 2 месяца назад

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

  7. (hellad)
    (hellad) 2 месяца назад

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

    после переноса файлов с гитхаба в папку 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

  8. Антон Калашников (GodinRaider)

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

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


  9. (iHun)
    (iHun) 2 месяца назад

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

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

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

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

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

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

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

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

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

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

  12. (hellad)
    (hellad) 2 месяца назад

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

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

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

  13. (maikl)
    (maikl) 2 месяца назад

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

  14. Eugene Firstov (Zyberex)
    Eugene Firstov (Zyberex) 2 месяца назад

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

    • Антон Калашников (GodinRaider)

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

  15. (TEDSv)
    (TEDSv) месяц назад

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

  16. (Sapik)
    (Sapik) отредактировано месяц назад

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

  17. (Is_king)
    (Is_king) 26 дней назад

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

  18. (Is_king)
    (Is_king) 26 дней назад

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

  19. пчОл Упртй (Starnger)
    пчОл Упртй (Starnger) 12 дней назад

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

    1000x_image.jpg?1565515336
К списку статей

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

MI-DOM

+7 977 282-80-53
Промокод:
SPRUTAI
Размер скидки:
5%

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

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

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

09 ноября 2018, 20:54
Кейс создания умного дома без каких либо прокладок в виде Raspberry pi
15 ноября 2018, 09:42
Способы автоматизации механических ворот
15 ноября 2018, 13:11
Xiaomi Mi Remote 360 добавляем Apple HomeKit
15 июня 2018, 12:13
Охранная система в гараж на ESP8266 с интеграцией в Apple HomeKit
24 августа 2018, 12:18
Пошаговая установка HomeAssistant
27 августа 2018, 10:14
Интегрируем ХА в HomeKit
19 марта 2019, 22:19
Обзор долгожданного 2х канального zigbee реле от Aqara, сравнение с конкурентами и небольшой тест на Deconz, Mi Hub и Aqara Hub.
28 августа 2018, 09:48
От голого Raspbian до веб-интерфейса homebridge за четыре команды в терминале.
04 апреля 2019, 17:48
Расскажу о том за ~1 час перевезти УД с 2мя USB стиками с Raspberry PI на Synology NAS.
01 ноября 2018, 09:27
Настройка Deconz USB стика ConBee от Dresden Elektronik в Hass.io и некоторые особенности эксплуатации