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

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

Дата Автор Dmitry7 комментариев 1 582 просмотров

Home Assistant – одна из наиболее популярных систем с открытым исходным кодом для организации “умного дома” своими руками.

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

Что нам понадобится

Для осуществления описываемых в этой статье действий понадобится:

Сервер Home Assistant не требователен к “железу” микрокомпьютера, однако в процессе его работы происходит большое количество операций чтения-записи, что приводит к ускоренному исчерпанию ресурса microSD-карт.

Например, во время работы первой конфигурации у меня отказала microSD-карта, которую я использовал еще в 2017 году во время написания того самого обзора Raspberry Pi 3. Ее ресурса хватило на 3 года работы “малинки”, но при постоянном логировании значений с нескольких подключенных к системе датчиков Home Assistant добил ее за месяц.

Как быть:

  • Вариант 1. Регулярно делать бэкапы и иметь резерв в виде 1-2 новых microSD-карт, чтобы при отказе одной карточки памяти можно было развернуть уже сконфигурированную систему на новом накопителе.
  • Вариант 2. Купить eMMC-чип и microSD-адаптер для него. В сравнении с microSD память стандарта eMMC обладает не только более высокой скоростью чтения-записи, но и на порядки большим ресурсом.
  • Вариант 3. Перенастроить Raspberry Pi для загрузки системы с подключенного по USB жесткого диска или SSD.

Более подробно о настройке загрузки Raspberry Pi с жесткого диска я расскажу в отдельной статье. А пока будем исходить из того, что система у нас грузится с microSD.

Также желательно иметь несколько сенсоров или “умных” устройств для интеграции. На начальном этапе можно обойтись и без них, но работать с системой, которая умеет мониторить лишь собственные показатели и прогноз погоды на ближайшее время не очень интересно.

Почему именно Home Assistant

Есть несколько причин, по которым из всего многообразия систем по управлению “умным домом” я предлагаю остановить свой выбор именно на Home Assistant.

  1. Огромное сообщество. А чем больше сообщество пользователей – тем больше найдено решений типовых проблем, тем легче войти в тему новичку. Home Assistant входит в топ-10 наиболее активно развивающихся проектов на GitHub, оставляя далеко позади другие популярные системы.
  2. Большое количество поддерживаемых устройств и экосистем. Естественное следствие из предыдущего пункта: большое количество пользователей создает большое количество интеграций, которые покроют 80% потребностей начинающего строителя “умного дома”.
  3. Удобный UI и большие возможности его кастомизации. Можно по-разному относиться к лежащему в основе интерфейса Home Assistant материальному дизайну, но трудно не согласиться с одним: интерфейсы других популярных систем выглядят гораздо хуже.
  4. Совместимость с Apple Homekit “из коробки”. Несмотря на то, что сам по себе Homekit обладает достаточно скромным функционалом и не может являться основой для действительно серьезного проекта умного дома, его можно использовать в связке с Home Assistant в качестве удобного пульта управления и для поддержки голосового управления через Siri.

Варианты установки Home Assistant

Установить сервер Home Assistant можно различными путями. Можно воспользоваться ручной установкой в виртуальное окружение Python или развернуть систему в Docker-контейнере, можно воспользоваться готовыми дистрибутивами Hass.io или Hassbian.

O Hass.io стоит рассказать отдельно. Этот проект являет собой готовые сконфигурированные образы для наиболее популярных моделей миккрокомпьютеров (на данный момент поддерживается вся линейка Raspberry Pi, Asus TinkerBoard, несколько моделей Odroid и линейка компьютеров Intel NUC). Образ содержит в себе операционную систему, готовый к работе Home Assistant и свой собственный менеджер аддонов, позволяющих производить все манипуляции по настройке Home Assistant прямо из веб-интерфейса.

Может показаться, что Hass.io – это идеальный вариант для начинающего, однако у проекта есть большой недостаток: пользователю не дается административного доступа к операционной системе. Соответственно, установив Hass.io на микрокомпьютер вы не сможете параллельно использовать его для других задач, несмотря на то что мощность Raspberry Pi 4 позволяет вытянуть на себе не только Home Assistant, но и еще пару-тройку сервисов.

Hassbian в свою очередь является дистрибутивом Raspbian с уже установленным в виртуальное окружение Python сервером Home Assistant. К сожалению, проект закрылся и сборок на базе свежих дистрибутивов Raspbian с установленными на них свежими версиями Home Assistant больше не выпускают.

Преимущества Недостатки
Hass.io Наиболее легкая установка, своя система бэкапов конфигурации Нет полного доступа к системе со всеми вытекающими из этого последствиями, совместимость с ограниченным рядом устройств
Ручная установка Полный контроль над системой Требуется хотя бы минимальное умение работы с Linux
Hassbian Те же плюсы, что и у ручной установки в виртуальное окружение Python Поддержка Hassbian официально прекращена в октябре 2019
Docker Надежность, легкость разворачивания и переноса Необходимо уметь работать с контейнерами Docker

Hass.io не устраивает меня отсутствием полного доступа к операционной системе, а работать с контейнерами Docker я пока что не умею. Поэтому в данной статье будет описан самый надежный и универсальный вариант с ручной установкой в виртуальное окружение Python.

Установка в виртуальное окружение Python

Сначала обновим все пакеты:

sudo apt-get update
sudo apt-get dist-upgrade

Затем установим необходимые для Home Assistant пакеты:

sudo apt-get install python3 python3-dev python3-venv python3-pip libffi-dev libssl-dev

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

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

Создадим новую папку для установки и добавим права на нее пользователю homeassistant:

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

Теперь нужно переключиться на пользователя homeassistant и создать виртуальное окружение для установки и последующей работы Home Assistant:

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

Установим дополнительный пакет Python:

python3 -m pip install wheel

И запустим установку Home Assistant:

pip3 install homeassistant

Дождавшись завершения установки (на что потребуется минуты три), запустим систему:

hass

Во время первого запуска Home Assistant создаст базовые конфигурационные файлы и будет загружать и устанавливать дополнительные модули для своей работы. Все эти процессы займут еще около 5-10 минут, причем уведомлений о готовности не будет. Понять, что первичная настройка завершена можно по статусу “Starting Zeroconf broadcast” в терминале:

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

После этого Home Assistant станет доступен через веб-интерфейс по адресу http://ip-адрес-raspberry-pi:8123:

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

Осталось добавить его в автозагрузку. Для этого создадим файл:

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

Со следующим содержимым

[Unit]
Description=Home Assistant
After=network-online.target

[Service]
Type=simple
User=%i
WorkingDirectory=/home/%i/.homeassistant
ExecStart=/srv/homeassistant/bin/hass -c "/home/%i/.homeassistant"

[Install]
WantedBy=multi-user.target

И включим Home Assistant в качестве сервиса:

sudo systemctl --system daemon-reload
sudo systemctl enable home-assistant@homeassistant
sudo systemctl start home-assistant@homeassistant

Первоначальная настройка

1. Создаем новую учетную запись:
Установка и настройка Home Assistant на Raspberry Pi2. Придумываем название своего дома и задаем его координаты на карте (определяются автоматически через запрос к гео-сервису):
Установка и настройка Home Assistant на Raspberry Pi3. На следующем шаге система попытается автоматически найти “умные устройства” и предложит их добавить. Можно пропустить этот шаг и вернуться к нему позже, либо выбрать какие-то интеграции самостоятельно из выпадающего списка:
Установка и настройка Home Assistant на Raspberry PiЭта статья пишется во время коронавирусной пандемии, так что в числе стандартных интеграций можно выбрать коронавирусный монитор. Я выбрал интеграции с iCloud, приложением Home Assistant для iOS, торрент-клиентом Transmission, коронавирусный монитор, сенсор для вывода локального IP-адреса устройства и виджет списка покупок.

Помимо этого система обнаружила в локальной сети мой телевизор:
Установка и настройка Home Assistant на Raspberry Pi4. На этом настройка завершена, и по клику на кнопку “Готово” мы попадаем в панель управления нашим свежесозданным умным домом.

Поначалу она будет выглядеть ужасно:
Установка и настройка Home Assistant на Raspberry PiПоэтому первое, что надо сделать – это отключить автоматическое управление интерфейсом Lovelace UI, нажав на символ из трех вертикальных точек в верхнем правом углу и выбрав пункт “Настройка интерфейса”.
Установка и настройка Home Assistant на Raspberry PiСистема спросит, уверены ли мы, что хотим получить доступ к редактированию интерфейса и попытается напугать тем, что при этом автоматически добавляться сенсоры новых добавляемых устройств. Это не должно смущать, т.к. сенсоры все равно никуда не денутся: Home Assistant перестанет автоматически выводить их все в одну кучу, но их по-прежнему можно будет найти в системе и настроить вывод самостоятельно и в удобной для себя форме.

Основные элементы в интерфейсе Home Assistant – это Entities и Glance. Они представляют собой группы сенсоров / кнопок / информеров, оформленные списком (Entities) или панелью иконок с подписями (Glance).

Также есть Badges – круглые значки, выводимые сверху. Именно в них Home Assistant по умолчанию вывел в системе сенсоры.

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

Первичную настройку я закончу на том, что удалю из интерфейса все бейджи и выведу карточки для мониторинга ситуации с коронавирусом, показателей системы и статуса Transmission. Также я сразу добавил кнопку для управления Xiaomi Mi LED Desk Lamp.

Обновление

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

Если Home Assistant устанавливался по моей инструкции, а именно:

  • в папку /srv/homeassistant
  • от отдельно созданного пользователя с именем homeassistant

То обновить его можно, выполнив следующие команды в терминале:

sudo -u homeassistant -H -s
cd /srv/homeassistant
source bin/activate
python3 -m pip install --upgrade homeassistant

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

После установки обновления нужно перезапустить сервер:

Home Assistant → Настройки → Сервер → Перезапустить

Заключение

Французскому архитектору Ле Корбюзье приписывают высказывание «дом – это машина для жилья». Однако реализовать концепцию “дома-машины” стало возможным только в сейчас, когда уровень развития бытовой автоматики намного шагнул вперед.

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

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

Raspberry Pi 4 1/2/4 Gb RAMна AliExpress

7 комментария на «Raspberry Pi. Установка Home Assistant»

  1. Добрый день.
    при первом запуске выдаёт такое:
    2020-06-21 19:05:08 ERROR (MainThread) [homeassistant.setup] Error during setup of component alexa
    Traceback (most recent call last):
    File “/srv/homeassistant/homeassistant/lib/python3.7/site-packages/homeassistant/setup.py”, line 190, in _async_setup_component
    result = await asyncio.wait_for(task, SLOW_SETUP_MAX_WAIT)
    File “/usr/lib/python3.7/asyncio/tasks.py”, line 416, in wait_for
    return fut.result()
    И далее всё с ошибками

    • Добрый день, попробуйте перезагрузиться и запустить hass снова. И если опять будут ошибки, то невзирая на них надо попробовать открыть веб-интерфейс. Возможно они не мешают работе.

      Если и ошибки возникают и интерфейс недоступен, то я бы предположил, что возникли какие-то проблемы с установкой Python и виртуального окружения, и нужно заново провести установку на “чистой” системе.

      • К сожалению не получается. При повторно hass выдаёт:
        06:26:21 WARNING (Recorder) [homeassistant.components.recorder] Ended unfinished session (id=6 from 2020-06-21 12:46:32.857253)
        К веб интерфейсу не подключается.
        Система с нуля – это уже вторая попытка.

        • Аналогичная ситуация.
          Все установил на чистую систему, но запустить не могу – те же ошибки.

          • попробуй вытащить из юсб разъемов все флэшки до момента установки HA и не пропускай этап обновления системы

  2. Лучшая статья которую я видел по установке HA.
    И самая свежая на этот день что нашел, автор молодец!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

[Хамство, оскорбления и попытки крауд-маркетинга будут удалены]