Найти тему
Твой умный дом Z-Wave

Установка Home Assistant на Raspberry pi 4 для Ubuntu 20.04 и Debian 11

В этой статье я распишу как на имеющейся ваш контроллер умного дома RaZberry поставить сервер HomeAssistant для расширения возможностей автоматизации и интеграции других сервисов.

Данная статья так же подходит для установки Home Assistant Core на Ubuntu 22.04 и Debian 11. Если вы находитесь на этих операционных системах рекомендую пользоваться данной статьёй вдумчиво, так как установка всё-таки может отличаться, и некоторые проблемы вам придется решать самим. После их решения вы можете написать о своих трудностях на support@z-wave.me, и мир станет лучше :)
Также если у вас Raspbian Buster, Ubuntu 20.04, Debian 10 и в целом более старые дистрибутивы то я настоятельно рекомендуюсь обновиться до самых последний версией, иначе возможны разного рода проблемы с версиями библиотек.

В данной статье речь идет про установку на контроллер RaZberry 7, которой по сути является следующей сборкой:

Данная инструкция построена на основе оригинальной инструкции по установки Home Assistant Core на Raspberry Pi

ВНИМАНИЕ!!! Перед установкой homeassistant на образ Raspbian с Z-way, контроллер необходимо перезагрузить по питанию, что бы место на microSD расширилось. Статья про расширение памяти

Подготовка к установке Home Assistant

Для начала подключимся по SSH к контроллеру и выполним обновление системы командой ниже.

Статья о том как подключиться по SSH к вашей Raspberry Pi

sudo apt-get update && sudo apt-get upgrade -y

Процесс в среднем занимает от 5-15 минут, всё завесит от актуальности и количества установленного ПО и скорости интернета.

Установка Python 3.9 и дополнительных пакетов

У многих операционных систем нет репозитория поставляющего Python 3.9
Если в вашем случае и в вашей операционной системе содержатся репозитории поставляющее сразу Python 3.9 – то вы можете попробовать выполнить данную команду и установить все необходимые пакеты сразу и перейти сразу к созданию пользователя.

​sudo apt-get install -y python3 python3-dev python3-venv python3.9 python3.9-venv python3.9-dev python3-pip libffi-dev libssl-dev libjpeg-dev zlib1g-dev autoconf build-essential libopenjp2-7 libtiff5 libturbojpeg0-dev tzdata ffmpeg

Если магия не произошла и всё сразу же не установилось и вы столкнулись с такими ошибками:

Тогда необходимо установить python 3.9 вручную об этом ниже:

  1. Скачиваем исходники Python 3.9.9 для этого выполните команду:wget https://www.python.org/ftp/python/3.9.9/Python-3.9.9.tgz
  2. Устанавливаем инструменты для компилирования выполнив команду:
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev

3. Распаковываем скаченный архив и переходим в него командой:

tar -xzvf Python-3.9.9.tgz && cd Python-3.9.9/

4. Если всё прошло хорошо тогда переходим к последнему пункту по установки Python 3.9.9, а именно сборка и установка, если есть ошибки решаем их при помощи интернетаЗапускаем конфигурацию и проверку системы./configure --enable-optimizations

5. Завариваем чай/кофе и ждем окончания сборки, процесс не быстрый может занимать до 20 минут, зато вы получите максимально оптимизированную и последнюю версию Python 3.9.9 на вашей Raspberry PiСборка и установка, для этого выполните команду:sudo make altinstall

6. После установки Python проверяем что он установлен

python3.9 -V

Теперь выполним установку дополнительных покетов которые понадобятся серверу Home Assistant для корректной работы.

sudo apt-get install -y python3 python3-dev python3-venv python3-pip libffi-dev libssl-dev libjpeg-dev zlib1g-dev autoconf build-essential libopenjp2-7 libtiff5 libturbojpeg0-dev tzdata ffmpeg

Создаём пользователя для Home Assistant Core
Добавим учетную запись для Home Assistant Core под названием homeassistant. Поскольку эта учетная запись предназначена только для запуска Home Assistant Core, добавляются дополнительные аргументы -rm для создания системной учетной записи и создания домашнего каталога. Аргументы -G dialout,gpio,i2c добавляют пользователя в группу dialout, gpio и i2c. Первый требуется для использования контроллеров Z-Wave и Zigbee, а второй — для связи с GPIO.

sudo useradd -rm homeassistant -G dialout,gpio,i2c

Если вы производите установку не на Raspberry Pi а например на Ubuntu или Debian – то у вас не будет групп gpio и i2c по этому при создании пользователя произойдет ошибка, команда для вас будет следующая:

sudo useradd -rm homeassistant -G dialout

Создаём виртуальное окружение для Home Assistant Core

Сначала мы создадим каталог для установки Home Assistant Core и изменим владельца на учетную запись homeassistant.

sudo mkdir /opt/homeassistant && sudo chown homeassistant:homeassistant /opt/homeassistant

Теперь нам нужно войти в систему от нового пользователя homeassistant, для этого выполните команду:

sudo -u homeassistant -H -s

После этого в терминале вы будете отображаться как homeassistant@raspberrypi:/home/pi $ что значит что вы делаете всё правильно :D

Переходим в будущую директорию нашего сервера и создаём виртуальное окружение командой:

cd /opt/homeassistant;python3.9 -m venv .;source bin/activate

После этого в терминале вы будете отображаться как (homeassistant) homeassistant@raspberrypi:/opt/homeassistant $ что тоже значит что вы делаете всё правильно

Устанавливаем Home Assistant

Home Assistant устанавливается и обновляется через установщик программ написанные на python 3 и перед самой установкой сервера home assistant необходимо обновить pip и установить менеджер зависимостей wheel, для этого выполните команду:
Обновляем pip:

python3.9 -m pip install --upgrade pip

Устанавливаем wheel:

python3 -m pip install wheel

а следом можно ставить уже сам Home Assistant

pip3 install homeassistant

Установка может примерно занимать от 5-25 минут, время будет зависеть от скорости записи microSD и скорости интернета.

Первый запуск

После установки требуется запустить Home Assistant в первый раз для создания конфигураций, для этого введите команду hass и снова подождите

hass

Если нет критических ошибок, пробуем открыть браузер и зайти в Home Assistant

-2

Ура, теперь можно настроить автозапуск и дело сделано :D

Останавливаем Home Assistant (В терминале Ctrl + C) и набираем

exit

Автозапуск

Создаём демон для нашего сервера, для этого выполните команду:

sudo nano /etc/init.d/hass-daemon

и при помощи сочетания клавиш Ctrl + Shift + V вставляем туда данный скрипт:

#!/bin/sh
### BEGIN INIT INFO
# Provides: hass
# Required-Start: $local_fs $network $named $time $syslog
# Required-Stop: $local_fs $network $named $time $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Home\ Assistant
### END INIT INFO
PRE_EXEC="source /opt/homeassistant/bin/activate;"
HASS_BIN="hass"
RUN_AS="homeassistant"
PID_DIR="/var/run/hass"
PID_FILE="$PID_DIR/hass.pid"
CONFIG_DIR="/var/opt/homeassistant"
LOG_DIR="/var/log/homeassistant"
LOG_FILE="$LOG_DIR/home-assistant.log"
FLAGS="-v --config $CONFIG_DIR --log-file $LOG_FILE"
start() {
create_piddir
if [ -f $PID_FILE ] && kill -0 $(cat $PID_FILE) 2> /dev/null; then
echo 'Service already running' >&2
return 1
fi
echo -n 'Starting service… ' >&2
local CMD="$PRE_EXEC $HASS_BIN $FLAGS > /dev/null 2>&1 & echo \$!"
su -s /bin/bash -c "$CMD" $RUN_AS > $PID_FILE
if [ $? -ne 0 ]; then
echo "Failed" >&2
else
echo 'Done' >&2
fi
}
stop() {
if [ ! -f "$PID_FILE" ] || ! kill -0 $(cat "$PID_FILE") 2> /dev/null; then
echo 'Service not running' >&2
return 1
fi
echo -n 'Stopping service… ' >&2
kill $(cat "$PID_FILE")
while ps -p $(cat "$PID_FILE") > /dev/null 2>&1; do sleep 1;done;
rm -f $PID_FILE
echo 'Done' >&2
}
install() {
echo "Installing Home Assistant Daemon (hass-daemon)"
update-rc.d hass-daemon defaults
create_piddir
mkdir -p $CONFIG_DIR
chown $RUN_AS $CONFIG_DIR
mkdir -p $LOG_DIR
chown $RUN_AS $LOG_DIR
}
uninstall() {
echo "Are you really sure you want to uninstall this service? The INIT script will"
echo -n "also be deleted! That cannot be undone. [yes|No] "
local SURE
read SURE
if [ "$SURE" = "yes" ]; then
stop
remove_piddir
echo "Notice: The config directory has not been removed"
echo $CONFIG_DIR
echo "Notice: The log directory has not been removed"
echo $LOG_DIR
update-rc.d -f hass-daemon remove
rm -fv "$0"
echo "Home Assistant Daemon has been removed. Home Assistant is still installed."
fi
}
create_piddir() {
if [ ! -d "$PID_DIR" ]; then
mkdir -p $PID_DIR
chown $RUN_AS "$PID_DIR"
fi
}
remove_piddir() {
if [ -d "$PID_DIR" ]; then
if [ -e "$PID_FILE" ]; then
rm -fv "$PID_FILE"
fi
rmdir -v "$PID_DIR"
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
install)
install
;;
uninstall)
uninstall
;;
restart)
stop
start
;;
*)
echo "Usage: $0 {start|stop|restart|install|uninstall}"
esac

Нажимаем Ctrl + O и Enter что бы сохранить файл. Теперь зададим права и выполним установку данного демона вот так:

sudo chmod +x /etc/init.d/hass-daemon
sudo service hass-daemon install

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

-3

Памятка

Сервер по умолчанию использует порт 8123, что бы зайти на страницу вам нужно просто знать IP адрес вашего контроллера.

Логи в реальном времени можно смотреть вот так:

tail -f /var/log/homeassistant/home-assistant.log

Запустить сервер:

sudo /etc/init.d/hass-daemon start

Остановить сервер:

sudo /etc/init.d/hass-daemon stop

Перезапустить сервер:

sudo /etc/init.d/hass-daemon restart

Войти в пользователя homeassistant:

sudo -u homeassistant -H -s

Активировать рабочую папку:

cd /opt/homeassistant;source bin/activate

Рады видеть Вас на нашей странице, подписывайтесь на нас в telegram и яндекс дзен, у вас всегда будет что почитать об умных домах и не только: тут есть обзоры новых устройств, производителей систем и реализованные проекты наши и наших партнеров.

А еще у нас отличные паблики  VK, instagram и конечно же наш сайт.

Поставьте 👍🏻 нашему  каналу, это поможет ему развиваться! Подписывайтесь. Задавайте любые вопросы!

Каталог устройств Z-Wave

https://rus.z-wave.me/shop/

#умный дом

#homeassistant

#homekit

#z-wave

#raspberry pi

#автоматизация