Найти тему

Установка HomeAssistant на Ubuntu 18.04 Server

Оглавление

Со вступлениями покончили, пора браться за дело - будем ставить сервер.

Напомню, что в качестве серверной машины был взят старенький, но полностью рабочий нетбук Asus VIVO S200, в котором по итогу всех манипуляций был заменён HDD на SSD. На нетбук была установлена Ubuntu 18.04 LTS Server.

Почему Ubuntu? С убунтой я уже был знаком ранее - несколько лет провёл на десктопной версии, познакомился с консолью и в целом операционка мне понравилась - немного непривычно после Windows, но в целом всё интуитивно понятно и не совсем непривычно для чайника. Поэтому в качестве сервера я выбрал ту же убунту, версию LTS (Long Term Support) - стабильная сборка с долгим сроком поддержки. Сначала накатил опять же десктопную версию, но после манипуляций с обновлением питона потерял многие интерфейсные вещи и без сожалений перешёл на серверную. Ещё одной причиной выбора убунты было довольно много упоминаний на 4pda, что говорит о том, что такая версия установки HomeAssistant жизнеспособна и в случае проблем можно поискать варианты решения.

На этот нетбук с убунтой и был установлен HomeAssistant. Официальные инструкции предлагают вариант установки в докере или в виртуальное окружение для отдельного пользователя. С докером я не знаком, к тому же часто встречал отзывы о том, что возникают трудности при привязке других компонентов к контейнеру с HomeAssistant, поэтому вариант с докером не рассматривался. Рецепт установки подходит к любой linux-based системы.

Установка

Можно было бы дать ссылку на официальную инструкцию по установке HomeAssistant под venv, но именно в случае с Ubuntu 18.04 она не совсем подходит, поскольку убунта поставляется по умолчанию с версией Pythhon 3.6, а современные сборки HomeAssistant требуют не ниже 3.7.

UPD: Начиная с 7 декабря 2020 года HomeAssistant требует версию python не ниже 3.8. Поскольку требования постоянно меняются, не забывайте узнавать актуальные требования в оригинальной инструкции, а шпаргалка ниже поможет соблюсти правильную последовательность действий для установки на Ubuntu.

Поэтому перед установкой рекомендую проверить версию python:

python3 -V

Если показывает версию 3.7.* и выше - можно спокойно воспользоваться официальной инструкцией и ниже не читать.

Если же версия python ниже 3.7 или вообще отсутствует - сначала ставим python 3.7:

sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install python3.7 python3.7-dev python3.7-venv python3-pip libffi-dev libssl-dev

Вот тут начинаются незаметные, но очень важные отличия от официальной инструкции. У нас образовалось две версии python3 на сервере: 3.6 по умолчанию и 3.7 дополнительно. Можно активировать по умолчанию версию 3.7, но это может повлиять на работу других программ в десктопных версиях. А можно просто указывать напрямую версию при установке и запуске компонент, как это сделал я. Поэтому почти все команды, которые в официальной инструкции содержат python3, я заменил на python3.7, иначе HomeAssistant не взлетит.

Создаём отдельного пользователя (для Raspberry предлагают сразу добавлять в группы gpio и i2c для доступа к интерфейсам, в любом случае их можно добавить потом):

sudo useradd -rm homeassistant -G dialout

Создаём рабочую папку для сервера HomeAssistant и раздаём права доступа:

cd /srv
sudo mkdir homeassistant
sudo chown homeassistant:homeassistant homeassistant

Переключаемся на нового пользователя,создаём виртуальное окружение и активируем его:

sudo -u homeassistant -H -s
cd /srv/homeassistant
python3.7 -m venv .
source bin/activate

После активации в начале командной строки добавится (homeassistant).

Продолжаем устанавливать компоненты:

python3.7 -m pip install wheel

И, наконец, устанавливаем сервер:

pip3 install homeassistant

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

hass

После того, как всё установилось и в консоли написано Home Assistant initialized in XXX.XXs - всё, сервер готов к работе. В браузере вводим IP-адрес сервера и порт 8123, например:

http://10.0.2.25:8123

И получаем приглашение на вход:

Создаём себе пользователя в HomeAssistant, задаём начальные установки - название сервера, свои координаты и предпочтительную систему мер и система готова к работе. Автоматически создались первоначальные объекты: датчик доступных обновлений Updater; элемент пользователя, к которому впоследствии можно привязать датчики отслеживания местоположения, на основе которых статус будет менять с "дома" на "ушел", а пока местоположение - неизвестно; датчик положения солнца (над горизонтом, за горизонтом), который часто используется в автоматизации освещения и стандартная карточка погоды на основе Норвежской метеорологической службы. Да, на картинке нарисовано 20 градусов, потому что я оставил дефолтные координаты Амтсердама.

-2

Дальше можно настраивать по своему вкусу, но прежде чем перейти к наполнению своего дашборда разными карточками и интеграциями, нужно добавить HomeAssistant в автозагрузку. Здесь уже можно воспользоваться инструкцией по добавлению демона systemd с официального сайта для виртуального окружения.

Автозапуск

Предварительно выходим из режима виртуального окружения командой

exit

Создаём файл запуска:

sudo nano -w /etc/systemd/system/home-assistant@homeassistant.service

Вставляем параметры:

[Unit]
Description=Home Assistant
After=network-online.target
[Service]
Type=simple
User=%i
ExecStart=/srv/homeassistant/bin/hass -c "/home/%i/.homeassistant"
[Install]
WantedBy=multi-user.target

Сохраняем Ctrl+O и выходим Ctrl+X

Обновляем systemd:

sudo systemctl --system daemon-reload

Включаем только что созданную службу:

sudo systemctl enable home-assistant@homeassistant.service

И запускаем её:

sudo systemctl start home-assistant@homeassistant.service

Сервер перезапустился и снова доступен через браузер.

Минус установки в виртуальном окружении, в отличие от докера - необходимость обновлять вручную. Хотя, может быть, не такой уж и минус, поскольку некоторые обновления напрочь вырубают какие-нибудь компоненты или вообще становятся несовместимы с вашим ПО.

Обновление

Заходим в консоль сервера и вводим команды:

sudo -u homeassistant -H -s
source /srv/homeassistant/bin/activate
pip3 install --upgrade homeassistant

Дожидаемся обновления, выходим из виртуального окружения:

exit

И перезапускаем службу:

sudo systemctl restart home-assistant@homeassistant.service

На этом установку можно считать законченной и можно переходить к настройкам. Но это в следующий раз.