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

Всё это становится в разы удобнее, если добавить голосовое управление — например, с помощью Маруси от VK. В этой статье мы по шагам расскажем, как настроить Home Assistant и «подружить» его с Марусей.

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

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

  • Перед установкой Home Assistant ознакомьтесь с исправлениями в выбранной вами версии HASS OS и более новыми.

  • В статье есть ссылки на сторонние репозитории — мы не можем гарантировать, что они не изменятся и в них не появится вредоносный код. Пожалуйста, используйте их ответственно.

0. Настройка Home Assistant

Если у вас уже настроен Home Assistant, пропустите этот раздел. А если нет, следуйте пошаговой инструкции.

Инструкция

Вам понадобятся:

  • Одноплатный компьютер Raspberry Pi 4 или 3

  • Блок питания 5V / 2A

  • Micro SD Card (флешка) не хуже Class 2, рекомендуемый объём — от 32 Гб

  • SD Card Reader

  • Ethernet-кабель

Установка Home Assistant на Raspberry Pi

1. Вставить флешку в компьютер.

2. Скачать и установить приложение для записи образов — например, Balena Etcher.

3. В приложении выбрать Flash from URL.

4. Вставить ссылку на нужный образ:

● Raspberry 4 (64 Bit): https://github.com/home-assistant/operating-system/releases/download/9.3/haos_rpi4-64-9.3.img.xz

● Raspberry 4 (32 Bit): https://github.com/home-assistant/operating-system/releases/download/9.3/haos_rpi4-9.3.img.xz

● Raspberry 3 (64 Bit): https://github.com/home-assistant/operating-system/releases/download/9.3/haos_rpi3-64-9.3.img.xz

● Raspberry 3 (32 Bit): https://github.com/home-assistant/operating-system/releases/download/9.3/haos_rpi3-9.3.img.xz

5. После скачивания образа выбрать флешку для установки:

6. Нажать Flash, чтобы записать образ на флешку.

Запуск Home Assistant на Raspberry Pi

1. Вставить флешку в Raspberry Pi.

2. Соединить с роутером при помощи Ethernet-кабеля.

3. Включить в розетку и подождать пару минут.

4. Открыть в браузере на компьютере ссылку: http://homeassistant.local:8123

5. Подождать 5–15 минут, пока Home Assistant загрузится.

После этого в Home Assistant можно добавить умные устройства. Здесь не получится сделать универсальную инструкцию, потому что у разных устройств — свои конфигурации. Примеры можно поискать в статьях других пользователей Хабра — например, в этой.

1. Настройка доступа к Home Assistant из внешнего мира

Это нужно, чтобы в дальнейшем вы могли удалённо подключаться к Home Assistant с устройств не в локальной сети, а также чтобы к нему получила доступ Маруся.

1. Установить в Home Assistant аддон SSH & Web Terminal: Settings → Add-ons → Add-on Store → Home Assistant Community Add-on → SSH & Web Terminal

2. Открыть настройки аддона и включить параметр Show in sidebar

3. Снова зайти в Add-on Store, выбрать Repositories и добавить адрес репозитория: https://github.com/ThomDietrich/home-assistant-addons

4. Установить аддон SSH Tunnel & Forwarding из Add-on Store. Зайти в настройки аддона, на вкладке Log найти такой фрагмент и скопировать из него ключ:

[13:19:53] INFO: The public key is:
ssh-ed25519 XXXXXXXXXXXXXXXXXXXX hassio-setup-via-autossh
[13:19:53] WARNING: Add this key to '~/.ssh/authorized_keys' on your remote server now!
[13:19:53] WARNING: Please restart add-on when done. Exiting…

5. Подключиться к удалённой виртуальной машине с внешним IP-адресом (внешний хост, VPS) по SSH: ввести адрес, логин и пароль, выданные хостом. Найти или создать файл .ssh/authorized_keys и добавить в него ключ, скопированный на прошлом шаге.

6. В конфигурации аддона SSH Tunnel & Forwarding ввести адрес и имя пользователя удалённой машины, к которой только что привязали ключ. Сохраниться и перезапустить аддон.

7. В зависимости от операционной системы, используя менеджер пакетов, установить на удалённой машине nginx. Добавить в конфигурацию такую секцию:

map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
server_name ha.yourhost.ru;

root /data/www/ha;

location / {
try_files $uri $uri/index.html $uri.html @backend;
}

location @backend {
proxy_pass http://127.0.0.1:8123;

proxy_set_header Host $host;
# proxy_set_header X-Forwarded-For $remote_addr;

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}

Вместо ha.yourhost.ru здесь и далее вписывать адрес своего домена, если он есть; а если нет, то IP-адрес удалённой машины.

8. Проверить доступность http://ha.yourhost.ru на компьютере в локальной сети. Если там отображается интерфейс Home Assistant, значит, всё настроено правильно.

2. Настройка Yandex-плагина для Home Assistant

Пока мы используем наработки IoT-энтузиастов для интеграции Home Assistant с умным домом от Яндекса, чтобы аналогичным образом подключить Home Assistant к Марусе.

1. Открыть терминал в Home Assistant, запустить скрипт установки HACS: wget -O - https://get.hacs.xyz | bash -

Дождаться его установки и перезапустить Home Assistant.

2. Открыть HACS → Integrations, нажать кнопку Explore & Download Repositories, найти и выбрать Yandex Smart Home, установить.

3. Зайти в Settings → Devices & Services, нажать кнопку Add Integration, найти и выбрать Yandex Smart Home. 

4. Открыть настройки интеграции, выбрать доступные устройства и тип подключения — «напрямую».

5. Проверить доступность внешнего адреса: http://ha.yourhost.ru/api/yandex_smart_home/v1.0/ping

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

3. Подключение своего умного дома к Марусе/

Подключение Home Assistant к Марусе

Для этого вам нужно будет завести свой умный дом на базе Home Assistant на платформе VK для внешних разработчиков. Тогда он появится в приложении Маруси.

1. Зайти на платформу, авторизоваться с VK ID, создать проект и приложение.

2. В настройках приложения указать такие параметры:

3. Через минуту открыть приложение Маруси, зайти в раздел «Умный дом», найти свой проект среди провайдеров и авторизоваться с логином и паролем, установленными при настройке Home Assistant. После этого ваши устройства и сценарии добавятся к Марусе, и вы сможете управлять ими голосом.

4. Результат

Смотрите, как может работать ваш умный дом на базе Home Assistant с Марусей:

Если в процессе настройки что-то пойдёт не так, напишите в комментарии — мы постараемся ответить на вопросы и помочь. Удачных интеграций!

Комментарии (11)


  1. xrays72
    03.12.2022 21:11

    аддон SSH Tunnel от AlexxIT будет поинтереснее в плане функциональности если нужно не только 80 и 443 в туннель прокинуть
    https://github.com/AlexxIT/hassio-addons/tree/master/ssh_tunnel


  1. xrays72
    03.12.2022 21:31

    В статье упомянут компонент Yandex Smart Home, который предлагает лёгкое и быстрое подключение через навык Yaha Cloud для пользователей без VPS/VDS.
    Есть ли в планах реализовать подобное? Всё равно устройства видны VK при подключении и вряд ли для VK это будет затратно в плане вычислительных мощностей.


    1. BlackWizard Автор
      05.12.2022 14:09

      Yaha Cloud  это же частная инициатива, если автор плагина захочет, то сможет поддержать и умный дом Маруси.

      Без VPS/VDS туннель можно поднять через https://vk.com/dev/vk_tunnel - это требует больших телодвижений и не совсем то, что вы хотите.

      Централизованная же поддержка зависит в первую очередь от востребованности данного функционала - будет спрос - будет и предложение.


  1. roofcat
    03.12.2022 23:14

    А что делать тем, кто home assisistant core поставил? Без аддонов, нимф и покера на закате?


    1. C4ET4uK
      04.12.2022 10:37

      Страдать(извините)


    1. DaemonGloom
      04.12.2022 13:27

      Сохранить конфигурацию и поставить полноценный вариант. Жить станет гораздо проще.


  1. Melias
    05.12.2022 10:42

    Я не настоящий сварщик (айтишник), поэтому позволю себе ламерский вопрос: а нельзя ли обойтись без VPS/VDS? Указать сразу свой внешний адрес, например, в duckdns?

    И еще вопрос: а можно ли для тех же целей воспользоваться "родным" облачным доступом от Nabu Casa (встроенным в ХА)?


    1. BlackWizard Автор
      05.12.2022 12:42

      1. Да, можно обойтись, только стоимость внешнего адреса сравнима со стоимостью VPS, которая у настоящих сварщиков (айтишников) уже обычно есть под рукой.

      2. Родной облачный доступ требует подписки и наличия карточки, способной ее оплатить. Если есть "халявный" способ - расскажите, я думаю всем будет интересно.


      1. Melias
        05.12.2022 15:11

        Честно говоря, ни у одного моего знакомого айтишника лишних оплаченных внешних VPS-серверов нет. У меня есть парочка поднятых вирт-машин на домашних компах, но внешнего, оплаченного, бесхозного - нет. Думаю, у большинства энтузиастов умного дома, которые, судя по всему, и являются аудиторией вашей статьи, их тоже нет.

        Что касается оплаты родного облака, то халявных способов я не знаю, но обладателей работающих карточек среди читателей Хабра не так и мало (например я).

        Но вернемся к основной теме:

        Правильно я понимаю, что если настроен внешний доступ к HA (например, через duckdns), то можно просто указать внешние адреса своего HA в настройках (типа ххххххх.duckdns.org)?


        1. BlackWizard Автор
          05.12.2022 15:35
          +1

          Да, все верно

          Половина статьи посвящена созданию внешнего туннеля - эту часть статьи можно просто пропустить


  1. J_8
    05.12.2022 12:36

    Какая радость Маруся научилась лучше греть уши!!!