Ручная установка Hass.io на Raspberry Pi: пошаговая инструкция

Несмотря на наличие официального образа HassOS для Raspberry Pi и некоторых других платформ, иногда возникает острое желание установить Hass.io на свою Raspberry Pi вручную, чтобы оставить себе возможность установки дополнительного софта и сохранения контроля над контейнерами. А для некоторых плат (например, Orange Pi) официально поддерживаемых образов вообще нет. Данная статья описывает установку Hass.io на любую машину с ОС Linux с помощью сприпта, предлагаемого сообществом Hass.io

Статья создана на основе другой инструкции с этого сайта и во многом заимствует её содержимое.

Терминология

  • Home Assistant (HA) - быстро развивающаяся система домашней автоматизации, написанная на языке Python, с огромным списком поддерживаемого оборудования и сервисов
  • Hass.io - набор docker контейнеров, позволяющий упростить установку и эксплуатацию HA, а также позволяющий расширить его функции с помощью большого количества готовых Hass.io аддонов, поддерживаемых коммьюнити.

Существующие вариаты установки Home Assistant:

  • Установка Home Assistant в виде python приложения в окружение virtualenv (для тех, кому по каким-то причинам не подходит docker)
  • Установка официального образа Home Assistant в контейнер на собственном docker-е (для тех, кто считает, что они сделают собственную копию Hass.io лучше, чем огромное комьюнити опытных разработчиков)
  • Установка Hass.io в виде образа SD карты для Raspberry Pi. Ранее этот образ был построен на базе ResinOS, которая недавно была заменена новой операционной системой HassOS, специально оптимизированной для запуска Hass.io (официально рекомендуется для установки на Raspberry Pi)
  • Установка Hass.io на любую линукс-машину, где предварительно установлен docker (ниже мы подробно опишем этот способ)

Шаг 1: Установка докер

Будем использовать официально рекомендуемый для установки Docker скрипт:

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh

Добавим текущего пользователя в группу docker, чтобы при вызове докера каждый раз не использовать sudo:

$ sudo usermod -aG docker pi

Чтобы изменения вступили в силу, нужно выйти из системы! Это можно сделать комбинацией клавиш Ctrl+D. Логинимся обратно и проверяем, что docker работает:

$ docker --version
Docker version 18.06.1-ce, build e68fc7a

Шаг 2: Установка зависимостей

На странице Hass.io есть список дополнительных пакетов, которые требуются для успешной инсталляции Hass.io. Если у вас установлена Raspbian Stretch, то фактически нужно доустановить только jq. В других дистрибутивах может понадобиться установка дополнительных пакетов, скрипт установки Hass.io заботливо проверит зависимости и скажет вам, чего не хватает.

Установим отсутствующие пакеты:

$ sudo apt install jq 

Шаг 3: Установка Hass.io

В официальной инструкции указано, что скрипт надо запускать от имени root, многие это пропускают и получают ошибку permission denied при попытке запустить скрипт.

Я использовал имеющуюся в хозяйстве Raspberry Pi 2, поэтому указал тип платы raspberrypi2, полный список поддерживаемых плат/архитектур можно увидеть здесь. Можно заметить, что Orange Pi в нём нет, но с мест сообщают об успешной установке на Orange Pi PC 2 выбором типа платы raspberrypi3-64.

$ curl -sL https://raw.githubusercontent.com/home-assistant/hassio-build/master/install/hassio_install | sudo bash -s -- -m raspberrypi2

[Warning] No AppArmor support on Host.
[Warning] No NetworkManager support on Host.
[Warning] Create DNS settings for docker to avoid systemd bug!
[Info] Restart docker and wait 30sec
[Info] Install supervisor docker
[Info] Install supervisor startup scripts
Created symlink /etc/systemd/system/multi-user.target.wants/hassio-supervisor.service → /etc/systemd/system/hassio-supervisor.service.
[Info] Run Hass.io

Ждём, пока скрипт отработает и вернёт нас в командную строку.

Шаг 4: Проверка работоспособности

Убедимся, что контейнеры запущены и работают:

$ docker ps

CONTAINER ID IMAGE                                    COMMAND               CREATED       STATUS       NAMES
4b21032640b4 homeassistant/qemux86-64-homeassistant   "/usr/bin/entry.sh"   2 minutes ago Up 2 minutes homeassistant
9dc2af4a981d homeassistant/amd64-hassio-supervisor    "python3 -m hassio"   2 minutes ago Up 2 minutes hassio_supervisor

Данная команда должна показать нам довольно кривой список из двух контейнеров hassio_supervisor и homeassistant в статусе Up. Если вы счастливый обладатель очень широкого монитора, возможно вам удастся увидеть все данные в одну строку, как замышляли авторы docker. В конце статье (в полезностях) указано, как выводить только избранные колонки для команды ps, чтобы при чтении не вытекали глаза. Если сейчас открыть страницу Home Assistant по адресу: http://ваш_ip:8123, можно увидеть вот такой тизер:

1538600742052

Из логов hassio_supervisor в то же время видно, что он скачивает и устанавливает образ последней версии home assistant:

docker logs hassio_supervisor -f

[...]
18-10-03 21:18:38 INFO (MainThread) [hassio.addons] Startup application run 0 add-ons
18-10-03 21:18:38 INFO (MainThread) [hassio.tasks] All core tasks are scheduled
18-10-03 21:18:38 INFO (MainThread) [hassio.core] Hass.io is up and running
18-10-03 21:18:38 INFO (MainThread) [hassio.homeassistant] Setup Home Assistant
18-10-03 21:18:38 INFO (SyncWorker_4) [hassio.docker.interface] Pull image homeassistant/qemux86-64-homeassistant tag 0.79.3.

В зависимости от скорости соединения может потребоваться какое-то время, прежде чем Home Assistant будет скачан и запущен. Может даже показаться, что Hass.io завис. Дождитесь появления в логе строчек вида:

18-10-03 21:38:29 INFO (SyncWorker_4) [hassio.docker.interface] Tag image homeassistant/qemux86-64-homeassistant with version 0.79.3 as latest
18-10-03 21:38:29 INFO (MainThread) [hassio.homeassistant] Home Assistant docker now installed
18-10-03 21:38:29 INFO (MainThread) [hassio.homeassistant] Start Home Assistant
18-10-03 21:38:29 INFO (SyncWorker_2) [hassio.docker.interface] Stop homeassistant/qemux86-64-homeassistant Docker application
18-10-03 21:38:33 INFO (SyncWorker_2) [hassio.docker.interface] Clean homeassistant/qemux86-64-homeassistant Docker application
18-10-03 21:38:33 INFO (SyncWorker_2) [hassio.docker.homeassistant] Start homeassistant homeassistant/qemux86-64-homeassistant with version 0.79.3

Открываем URL: http://ваш_ip:8123

1538602914072

Создаём аккаунт и логинимся в Home Assistant:

1538603064911

Мы это сделали!

Шаг 5: Несколько полезностей

Где хранится конфигурация Home Assistant и как её редактировать:
nano /usr/share/hassio/homeassistant/configuration.yaml

Выход из редактора nano командой Ctrl+X.

Можно также воспользоваться онлайн редактором конфигурации, доступном в виде аддона Hass.io: HASS Configurator.

Как перезапустить Home Assistant из докера:
docker restart homeassistant
Как удалить базу данных HA и начать “с чистого листа” (нужна перезагрузка Home Assistant):
rm /usr/share/hassio/homeassistant/home-assistant_v2.db
Укороченный вариант команды docker ps, удобный для нешироких экранов:
docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Status}}\t{{.Names}}"

Его можно добавить в алиасы и вызывать, например, командой dps.