Добавляем 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) 27 дней назад

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

    • Рустам Панин (m_wildcat54)
      Рустам Панин (m_wildcat54) 27 дней назад

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

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

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

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

    • Сергей Драгунов (@SD)
      Сергей Драгунов (@SD) 27 дней назад

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

  2. (Zhel)
    (Zhel) отредактировано 27 дней назад

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

  3. Сергей Драгунов (@SD)
    Сергей Драгунов (@SD) 27 дней назад

    Спасибо!

  4. Олег Челбаев (sprut)
    Олег Челбаев (sprut) 27 дней назад

    Спасибо 👍

  5. (yalic)
    (yalic) 27 дней назад

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

  6. (lapatoc)
    (lapatoc) 26 дней назад

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

  7. (hellad)
    (hellad) 26 дней назад

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

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

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

  10. (Stein)
    (Stein) отредактировано 26 дней назад

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

  11. Евгений Селянин (Shico)

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

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

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

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

    • Евгений Селянин (Shico)
      Евгений Селянин (Shico) 21 день назад

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

  12. (hellad)
    (hellad) 21 день назад

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

    • Евгений Селянин (Shico)
      Евгений Селянин (Shico) 21 день назад

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

  13. (maikl)
    (maikl) 15 дней назад

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

  14. Eugene Firstov (Zyberex)
    Eugene Firstov (Zyberex) 12 дней назад

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

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

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

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

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

MI-DOM

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

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

15 ноября 2018, 13:11
Xiaomi Mi Remote 360 добавляем Apple HomeKit
09 ноября 2018, 20:54
Кейс создания умного дома без каких либо прокладок в виде Raspberry pi
15 ноября 2018, 09:42
Способы автоматизации механических ворот
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 за четыре команды в терминале.
01 ноября 2018, 09:27
Настройка Deconz USB стика ConBee от Dresden Elektronik в Hass.io и некоторые особенности эксплуатации
04 апреля 2019, 17:48
Расскажу о том за ~1 час перевезти УД с 2мя USB стиками с Raspberry PI на Synology NAS.