Установка Home Assistant CENTOS 8

Минимальные требования

В то время как Home Assistant отлично работает на Raspberry Pi для простых вещей, со временем он может начать становиться вялым и чувствовать себя недостаточно мощным, поскольку вы, как и все мы, становитесь зависимыми и продолжаете добавлять в него автоматизацию. Это особенно тяжело, когда вы начинаете добавлять автоматизацию, которая включает видео и увлекается другими.

Tаким образом, если вы любитель и планируете со временем развивать автоматизацию своего дома, Raspberry Pi недостаточно хорош. Маленький компьютер ( и, конечно же, это руководство ? ) — лучший вариант.

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

Память: 8 ГБ

ПРОЦЕССОР: >= Intel i5

СЕТЬ: >= 100 Мбит/с. Настоятельно рекомендуется, чтобы сервер, который вы выбрали для настройки Home Assistant, использовал физический сетевой кабель, а не WiFi.

МЕСТО: >= 32 ГБ Хранилище действительно важно, только если вы планируете установить домашнее наблюдение (в частности, видеокамеры). Если да, то вместо этого нацеливайте свое хранилище на 512 ГБ или больше. Это позволит вам записывать с ними и сохранять контент локально (если вы решите это сделать).


Вот разбивка того, где находится все хранилище ( относительно этого руководства ):

/etc/homeassistant/    1ГБ    Ваши файлы конфигурации малы ( менее 256 КБ ), однако Home Assistant поддерживает так называемый рекордер, который отслеживает себя в базе данных SQLite. Эта база данных SQLite имеет тенденцию расти со временем в размере (который вы можете контролировать). Здесь же находится ваш файл homeassistant.log, который также может увеличиваться в размере. Предоставляя себе (по крайней мере) 1 ГБ здесь, вы просто предоставляете достаточно места для будущего роста, который никогда не прервет вашу настройку с течением времени. Подробнее о содержимом этого каталога рассказывается в конце этого блога.
/opt/homeassistant/    2ГБ    Вся установка Home Assistant будет находиться здесь после того, как вы завершите это руководство. Фактическая установка (с большинством наворотов) составляет чуть менее 1 ГБ. 2 ГБ — это всего лишь рекомендуемый размер, потому что у вас будет много места для будущего роста.
/    6ГБ    Ваша корневая файловая система и все связанные с ней основные каталоги, такие как / boot , / tmp , / home , / usr , / var и т . Д.
6 ГБ более чем достаточно для размещения операционной системы Linux и всего, что ей необходимо, при этом у вас остается достаточно места для роста.

Загрузите последнюю копию CentOS 8 и вставьте ее на запасной USB-накопитель, который у вас есть, и / или запишите на DVD, чтобы установить на свой компьютер.

Настройка Base Home Assistant

На этом этапе предполагается, что вы настроили свой сервер или уже запустили его. Давайте настроим рабочую среду, в которой может работать Home Assistant. Перед запуском команд ниже в каждом разделе важно иметь права root или sudo .

Общая подготовка сервера

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

# Again.. our basic layout will be:
# User: homeassistant
# HA Config: /etc/homeassistant
# HA Core: /opt/homeassistant

# Prepare our user:
sudo useradd -rm homeassistant \
   --home-dir /opt/homeassistant

# The dialout group allows us to access our external USB
# devices such as the Aeotec Z-Stick Series 5 (which is
# what I use). We want to add our user to this group:
sudo usermod -aG dialout homeassistant

# Prepare our configuration directory
sudo mkdir /etc/homeassistant

# Adjust our permissions
sudo chown -R homeassistant:homeassistant \
   /opt/homeassistant /etc/homeassistant

# Some of the packages later installed with pip3
# require that they are compiled in your environment
# (or it will not work) so the following is also
# required:
sudo dnf install -y gcc make gcc-c++ systemd-devel \
    unzip tar

Установка Python 3.8

Нам нужно установить Python 3.8 в нашу среду CentOS, потому что это минимальное требование для работы Home Assistant. Итак, в основном у нас есть 2 варианта: взять самую стабильную версию v3.8 или взять версию, управляемую CentOS, которая иногда устарела. В любом случае, я объяснил оба ниже:

  1. Вариант 1. Поддерживаемая версия CentOS :
    # Simply install the module
    sudo dnf module -y install python38 python38-devel
    
    # That's it... you're done :)
  2. Вариант 2: Последняя стабильная версия :
    sudo dnf install -y bzip2-devel expat-devel gdbm-devel \
        libuuid-devel libffi-devel\
        ncurses-devel openssl-devel readline-devel \
        sqlite-devel tk-devel xz-devel zlib-devel wget \
        gcc make gcc-c++ tar
     
    # At the time this blog was written, the current
    # version was v3.8.5:
    VERSION=3.8.5
    
    #
    # Acquire
    #
    wget https://www.python.org/ftp/python/${VERSION}/Python-${VERSION}.tgz
    tar -xf Python-${VERSION}.tgz
     
    #
    # Configure
    #
    cd Python-${VERSION}
    ./configure --enable-optimizations
    
    #
    # Build
    #
    
    # This step can take a while - so be patient!
    make -j 4
    
    #
    # Install
    #
    
    # This is very safe and will not over-write
    # existing Python that ships with CentOS
    sudo make altinstall

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

# Test the version out:
python3.8 -V

Установка домашнего помощника

Предполагая, что вы следовали приведенным выше разделам « Установка Python 3.8» и « Общая подготовка сервера» , теперь мы можем установить Home Assistant:

# First we switch to our new homeassistant user we created:
sudo -u homeassistant -H -s
 
# Optional SSH Keygen Setup
[ ! -f ~/.ssh/id_rsa.pub ] && \
   ssh-keygen -f ~/.ssh/id_rsa -C "Home Assistant" -q -N ""


# Change to our home directory (if we're not there already)
cd /opt/homeassistant


# Prepare our virtual environment
python3 -m venv .


# It's always VERY important you activate your
# environment before you start running pip3
# commands
source bin/activate


# Perform our installation:
pip3 install homeassistant home-assistant-frontend \
     homeassistant-pyozw colorlog flask-sqlalchemy


# Return back to our root user
exit

Наконец, мы должны создать файл запуска System D, чтобы упростить запуск / остановку нашего экземпляра Home Assistant:

# the following will drop us in a startup script we can use with our environment
sudo bash <<EOF
cat << _EOF > /usr/lib/systemd/system/home-assistant.service
[Unit]
Description=Home Assistant
After=network-online.target
 
[Service]
Type=simple
User=homeassistant
ExecStart=/opt/homeassistant/bin/hass -c "/etc/homeassistant"
WorkingDirectory=/opt/homeassistant
PrivateTmp=true
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
_EOF
EOF


# Pick up our new configuration
sudo systemctl daemon-reload


# Make it so Home Assistant starts even after a
# server reboot
sudo systemctl enable home-assistant


# Let's start it up now
sudo systemctl start home-assistant

Последняя часть головоломки — открыть порт 8123 для нашей сети, чтобы мы могли получить доступ к нашему экземпляру Home Assistant.

 

Завершение установки

Теперь вы можете посетить свой новый сервер Home Assistant по адресу http://ip.to.your.server:8123 и начать настройку своей учетной записи в первый раз.

При первом доступе к странице вы сможете создать первого системного пользователя (также учетную запись администратора), с которым вы сможете создавать автоматизацию.

Обновления Home Assistant

Вы обнаружите, что Home Assistant быстро расширяется и всегда исправляет проблемы и добавляет больше интересных функций, с которыми вы можете играть. Обновить Home Assistant очень просто:

# Switch to our home assistant user:
sudo -u homeassistant -H -s


# Change to our home directory (if we're not there already)
cd /opt/homeassistant


# It's always VERY important you activate your
# environment before you start running pip3
# commands
. ./bin/activate
 
# Switch to our homeassistant user
pip3 install --upgrade homeassistant


# Return to our user with sudoer's permission
exit


# Restart Home Assistant
sudo systemctl restart home-assistant

Краткий обзор

На этом этапе у вас должны быть все настроены для работы с запущенной копией Home Assistant. Вот некоторые общие файлы и каталоги, которые начнут появляться в файловой системе вашего сервера в каталоге /etc/homeassistant/, о которых вы, возможно, захотите узнать:

homeassistant.log

Здесь будут отображаться все журналы, связанные с Home Assistant. Это отличное место для начала устранения неполадок, если у вас возникнут проблемы.

configuration.yaml

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

home-assistant_v2.db

Это домашний помощник для записи. На панели инструментов Home Assistant вы можете нажать кнопку «История» на панели инструментов, чтобы просмотреть содержимое.

 

secretts.yaml

Это простой файл, который позволяет отображать пары ключ / значение. Идея состоит в том, чтобы сохранить все свои пароли и / или токены, которые в противном случае вы бы хотели скрыть от посторонних глаз. Этому файлу должны быть предоставлены очень строгие разрешения:

# protect this file if you intend to use it
chmod 600 /etc/homeassistant/secrets.yaml

Например, вы можете использовать Apprise для отправки вам уведомления по электронной почте. Чтобы отправить электронное письмо, Apprise нужна ваша личная информация. Например, в файле configuration.yaml вы можете сделать это:

# /etc/homeassistant/configuration.yaml
# ...
notify:
  name: apprise
  platform: apprise
  url: !secret apprise_url

Затем в вашем файле secrets.yaml теперь вам нужна запись для нового созданного вами ключевого слова с именем apprise_url . Ваша запись в файле secrets.yaml может выглядеть так:

# /etc/homeassistant/secrets.yaml
# Define your Apprise details in a secure location:
apprise_url: mailto://myuser:mypassword@gmail.com

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

automations.yaml

 

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

Например, вы могли бы настроить автоматизацию, отправив нам электронное письмо с помощью Apprise на закате:

# /etc/homeassistant/automations.yaml
#
# Utilize Apprise to send a notification
#
alias: "[Interactive] - Sunset Apprise Notice"
trigger:
  platform: sun
  event: sunset


action:
  service: notify.apprise
  dаta:
    title: "Good evening"
    message: "This sun is setting."

Резервное копирование конфигурации

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

# For Backups (run these commands as the homeassistant user):
sudo mkdir -p /opt/homeassistant/backups
sudo chown homeassistant.homeassistant /opt/homeassistant/backups


# This is a simple script to get you started:
sudo bash <<EOF
cat << _EOF > /opt/homeassistant/bin/backup.sh
#!/bin/sh
# Create a backup of Home Assistant
TARGET=/opt/homeassistant/backups
SOURCE=/etc/homeassistant
 
[ ! -d "\$TARGET" ] && /usr/bin/mkdir -p "\$TARGET"
[ ! -d "\$TARGET" ] && exit 1
 
tar cfz "\$TARGET/\$(date +'%Y.%m.%d')-config.tgz" -C \$SOURCE .
RET=\$?
 
# Tidy; Keep X days worth
find -L \$TARGET/ -mindepth 1 -maxdepth 1 -name "*.config.tgz" -mtime +120 -delete
exit \$RET
_EOF
EOF


# Permissions to be executable
sudo chmod 775 /opt/homeassistant/bin/backup.sh


# Prepare ourselves a cron job that will run our backup every week
sudo bash <<EOF
cat << _EOF > /etc/cron.d/homeassistant_backup
0 0 * * 0 homeassistant /opt/homeassistant/bin/backup.sh &>/dev/null
_EOF
EOF
0