Привет, друзья! Решил накатать короткую, но полезную статью — потому что у меня в блоге уже куча самописных IoT-решений на PHP, а про Home Assistant ни слова. Хотя это же один из самых популярных open-source хабов для умного дома. Давайте разберёмся, как его поставить на обычную Ubuntu (не HassOS!), подключить Zigbee-адаптер и начать управлять датчиками без танцев с бубном.
Home Assistant отлично работает в Docker-контейнере. Это проще, чем ставить через Python или виртуальное окружение.
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
Добавим себя в группу docker, чтобы не писать sudo каждый раз:
sudo usermod -aG docker $USER
newgrp docker
Создадим папку для конфигов и запустим контейнер:
mkdir -p ~/homeassistant/config
docker run -d \
--name homeassistant \
--privileged \
--restart=unless-stopped \
-e TZ=Europe/Moscow \
-v ~/homeassistant/config:/config \
-v /run/dbus:/run/dbus:ro \
--net=host \
ghcr.io/home-assistant/home-assistant:stable
Флаг --privileged нужен для доступа к USB-устройствам (в том числе Zigbee-донглу). --net=host — чтобы не мучиться с пробросом портов.
Вставляем донгл в USB. Убеждаемся, что система его видит:
lsusb
Если адаптер на базе Texas Instruments (CC2531/CC2652), скорее всего, он определится как Texas Instruments. Теперь нужно дать Home Assistant к нему доступ. В нашем случае — благодаря --privileged и --net=host — всё уже работает.
Открываем в браузере:
http://IP_ВАШЕГО_СЕРВЕРА:8123
Проходим первоначальную настройку: создаём аккаунт, указываем имя системы и т.д.
/dev/ttyACM0 или /dev/ttyUSB0Если всё прошло успешно — можно начинать добавлять устройства: кнопки, датчики движения, розетки и т.п. Просто зажимаем кнопку сопряжения на устройстве, и оно само появится в интерфейсе.
Контейнер уже перезапускается автоматически (--restart=unless-stopped), но не забудьте настроить бэкапы папки ~/homeassistant/config. Можно через cron + rsync или просто скопировать на NAS.
Если ты, как и я, не любишь «чёрные ящики» и хочешь понимать, как всё работает внутри, то лучший способ — установить Home Assistant Core вручную через виртуальное окружение Python. Это не самый «лёгкий» путь, но самый прозрачный. Никакого Docker, никаких образов — только терминал, Python и systemd.
sudo apt update && sudo apt upgrade -y
sudo apt install -y python3 python3-dev python3-venv python3-pip \
libffi-dev libssl-dev autoconf build-essential git
Это хорошая практика безопасности — запускать сервисы от отдельного пользователя без прав root.
sudo useradd -rm homeassistant -G dialout
Группа dialout даёт доступ к последовательным портам — это нужно для Zigbee-донглов вроде CC2652 или Sonoff.
sudo mkdir -p /srv/homeassistant
sudo chown homeassistant:homeassistant /srv/homeassistant
sudo -u homeassistant -H -s
cd /srv/homeassistant
python3 -m venv .
source bin/activate
python3 -m pip install --upgrade pip wheel
pip3 install homeassistant
hass
При первом запуске Home Assistant создаст папку конфигурации в /home/homeassistant/.homeassistant. Это может занять 5–10 минут — дождись сообщения вида Starting Home Assistant.
После этого открой в браузере: http://IP_СЕРВЕРА:8123 — должна появиться страница настройки.
Останови процесс: Ctrl+C, затем выйди из сессии пользователя:
exit
Создаём файл сервиса:
sudo nano /etc/systemd/system/homeassistant.service
Вставляем содержимое:
[Unit]
Description=Home Assistant
After=network-online.target
[Service]
Type=simple
User=homeassistant
WorkingDirectory=/home/homeassistant
ExecStart=/srv/homeassistant/bin/hass -c "/home/homeassistant/.homeassistant"
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
Загружаем и запускаем сервис:
sudo systemctl daemon-reload
sudo systemctl enable homeassistant.service
sudo systemctl start homeassistant.service
Проверяем статус:
sudo systemctl status homeassistant.service
Вставляем Zigbee-адаптер в USB. Проверяем, что система его видит:
lsusb
Обычно он определяется как Texas Instruments или Sonoff. Устройство будет доступно как /dev/ttyACM0 или /dev/ttyUSB0.
В веб-интерфейсе Home Assistant:
/dev/ttyACM0Когда выйдет новая версия — обновляешься вручную:
sudo -u homeassistant -H -s
source /srv/homeassistant/bin/activate
pip3 install --upgrade homeassistant
sudo systemctl restart homeassistant.service
А если захочешь MQTT, Samba или Zigbee2MQTT — ставишь их отдельно, как настоящий инженер 😉
Вот и всё! Теперь у вас есть полноценный open-source хаб для умного дома, который не зависит от облаков, работает локально и поддерживает Zigbee «из коробки». А если вы, как я, любите писать свои IoT-решения на PHP — ничто не мешает интегрировать Home Assistant через его REST API или MQTT.
Если будут вопросы — пишите в комменты. А я, пожалуй, скоро напишу статью, как связать свой PHP-блог с Home Assistant для отображения данных с датчиков. Пока!
Блог только запустил, все статьи генерирую через нейросеть т.к. лень, возможны ошибки. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.
Комментарии
Пока нет комментариев. Будьте первым!