Установка home assistant на raspberry pi 4 ssd
На днях помогал установить систему умного дома на Home Assistant на Raspberry Pi 4. Решил записать, чтобы в следующий раз было проще это делать.
Способы установки
Есть, как минимум, два способа как можно установить Home Assistant на Raspberry Pi 4.
Первый способ — это скачать образ SD карты в котором находится специальная операционная система HassOS которая запускает Home Assistant. Тут плюс в том что это очень простой способ для установки Home Assistant: скачал файл, с помощью специальной программы записал этот файл на SD карту, и на этом все. Документация про этот способ.
Второй способ сложнее:
- Нужно скачать образ операционной системы Raspbian и с помощью специальной программы записать его на SD карту
- Установить Docker
- Установить Home Assistant
Но при использовании этого способа на Raspberry Pi появляется настоящая операционная система в которой можно что-то делать стандартными способами.
Для разных людей будут удобны разные способы установки. Когда я в первый раз устанавливал Home Assistant я использовал первый способ. Через некоторое время я понял что мне удобнее если есть настоящая операционная система и переустановил Home Assistant с помощью второго способа.
В этом тексте я описываю именно второй способ. Как установить Home Assistant на операционную систему Raspbian.
Установка Raspbian
- Raspbian Buster with desktop and recommended software
- Raspbian Buster with desktop
- Raspbian Buster Lite
Обычно лучший выбор — это скачать "Raspbian Buster Lite".
С помощью этой программы образ заливается на SD карту.
Настройка удаленного доступа
После того как образ записан на SD карту нужного на этой карте создать пустой файл с именем ssh — если такой файл есть, то при загрузке операционной системы можно будет зайти на устройство по ssh
Подключение
SD карта готова, нужно ее воткнуть в Raspberry PI, включить ее в розетку и подключить по проводу к роутеру.
Дальне нужно выяснить какой ip адрес ей выдал роутер. Многие роутеры в своем веб интерфейсе показывают список устройств и их адреса.
После того как ip адрес выяснили, нужно зайти по ssh на это устройство. На Linux и macOS команда ssh есть сразу, а в Windows обычно используют специальную программу PuTTY.
Установка докера
После того как вы зашли в консоль нужно выполнить следующие команды:
После того как компьютер перезагрузится нужно опять подключиться по ssh и выполнить команды:
Результат работы — это должна быть одна строчка вида:
Если вы видите такую строчку, то докер установлен и работает.
Установка Home Assistant
После того как на машине есть докер, нужно установить HA. Для этого нужно выполнить:
(В том случае если не указать "-m raspberrypi4", то будет ошибка "[Error] please set machine for armv7l").
Что нам понадобится
Для осуществления описываемых в этой статье действий понадобится:
- Вариант 1. Регулярно делать бэкапы и иметь резерв в виде 1-2 новых microSD-карт, чтобы при отказе одной карточки памяти можно было развернуть уже сконфигурированную систему на новом накопителе.
- Вариант 2. Купить eMMC-чип и microSD-адаптер для него. В сравнении с microSD память стандарта eMMC обладает не только более высокой скоростью чтения-записи, но и на порядки большим ресурсом.
- Вариант 3. Перенастроить Raspberry Pi для загрузки системы с подключенного по USB жесткого диска или SSD.
Более подробно о настройке загрузки Raspberry Pi с жесткого диска я рассказал в отдельной статье. А пока будем исходить из того, что система у нас грузится с microSD.
Почему именно Home Assistant
Варианты установки Home Assistant
Установить сервер Home Assistant можно различными путями. Можно воспользоваться ручной установкой в виртуальное окружение Python или развернуть систему в Docker-контейнере, можно воспользоваться готовыми дистрибутивами Hass.io или Hassbian.
O Hass.io стоит рассказать отдельно. Этот проект являет собой готовые сконфигурированные образы для наиболее популярных моделей миккрокомпьютеров (на данный момент поддерживается вся линейка Raspberry Pi, Asus TinkerBoard, несколько моделей Odroid и линейка компьютеров Intel NUC). Образ содержит в себе операционную систему, готовый к работе Home Assistant и свой собственный менеджер аддонов, позволяющих производить все манипуляции по настройке Home Assistant прямо из веб-интерфейса.
Hassbian в свою очередь является дистрибутивом Raspbian с уже установленным в виртуальное окружение Python сервером Home Assistant. К сожалению, проект закрылся и сборок на базе свежих дистрибутивов Raspbian с установленными на них свежими версиями Home Assistant больше не выпускают.
Преимущества | Недостатки | |
---|---|---|
Hass.io | Наиболее легкая установка, своя система бэкапов конфигурации | Нет полного доступа к системе со всеми вытекающими из этого последствиями, совместимость с ограниченным рядом устройств |
Ручная установка | Полный контроль над системой | Требуется хотя бы минимальное умение работы с Linux |
Hassbian | Те же плюсы, что и у ручной установки в виртуальное окружение Python | Поддержка Hassbian официально прекращена в октябре 2019 |
Docker | Надежность, легкость разворачивания и переноса | Необходимо уметь работать с контейнерами Docker |
Hass.io не устраивает меня отсутствием полного доступа к операционной системе, а работать с контейнерами Docker я пока что не умею. Поэтому в данной статье будет описан самый надежный и универсальный вариант с ручной установкой в виртуальное окружение Python.
Установка в виртуальное окружение Python
Сначала обновим все пакеты:
Затем установим необходимые для Home Assistant пакеты:
Создадим нового пользователя homeassistant, под которым в дальнейшем и будет работать наш сервер умного дома:
Создадим новую папку для установки и добавим права на нее пользователю homeassistant:
Теперь нужно переключиться на пользователя homeassistant и создать виртуальное окружение для установки и последующей работы Home Assistant:
Установим дополнительный пакет Python:
И запустим установку Home Assistant:
Дождавшись завершения установки (на что потребуется минуты три), запустим систему:
Осталось добавить его в автозагрузку. Для этого создадим файл:
Со следующим содержимым
И включим Home Assistant в качестве сервиса:
Первоначальная настройка
Первичную настройку я закончу на том, что удалю из интерфейса все бейджи и выведу карточки для мониторинга ситуации с коронавирусом, показателей системы и статуса Transmission. Также я сразу добавил кнопку для управления Xiaomi Mi LED Desk Lamp.
Обновление
Если Home Assistant устанавливался по моей инструкции, а именно:
- в папку /srv/homeassistant
- от отдельно созданного пользователя с именем homeassistant
То обновить его можно, выполнив следующие команды в терминале:
После установки обновления нужно перезапустить сервер:
Home Assistant → Настройки → Сервер → Перезапустить
Заключение
На базе Home Assistant можно реализовать любые проекты домашней автоматизации. Уже сейчас в продаже доступны сотни поддерживаемых системой устройств, и их количество растет с каждым месяцем.
В следующих статьях цикла будут рассмотрены более детально вопросы кастомизации пользовательского интерфейса, интеграция различных компонентов и создание автоматизаций для их совместной работы.
42 комментария на «Raspberry Pi. Установка Home Assistant»
Большое спасибо за твои статьи.
Добрый день, попробуйте перезагрузиться и запустить hass снова. И если опять будут ошибки, то невзирая на них надо попробовать открыть веб-интерфейс. Возможно они не мешают работе.
попробуй вытащить из юсб разъемов все флэшки до момента установки HA и не пропускай этап обновления системы
Лучшая статья которую я видел по установке HA.
И самая свежая на этот день что нашел, автор молодец!
Все, хорошо, а где у вас в HA вкладочка супервизор интересно? И как ее туда пришить обратно?
1) Не совсем понял в чем проявляется проблема, но если первый экран открывается, то скорее всего надо просто дольше подождать.
2) Нужно ввести пароль того пользователя, под которым вы залогинены на микрокомпьютере. Если это Raspbian, то по умолчанию пользователь pi с паролем raspberry. Сменить пароль можно консольной командой passwd.
Мы полагаем, что ваш системный администратор изложил вам основы
безопасности. Как правило, всё сводится к трём следующим правилам:
№1) Уважайте частную жизнь других.
№2) Думайте, прежде что-то вводить.
№3) С большой властью приходит большая ответственность.
Вот такое пишет. Пароль от Raspberry не подходит
вы в этот момент не под пользователем homeassistant сидите?
зайдите под пользователем pi
Добрый день, пути конечно же можно менять. И если у вас все равно подключен HDD или SSD, то можно настроить загрузку всей системы с него, а не только Home Assistant. Карта памяти в таком варианте вообще использоваться не будет.
Создайте snapshot, скачайте на комп, установите с нуля на SSD и загрузите snapshot, и вуаля, все настройки перенесены
Пробовал обновлять или устанавливать его на Python 3.9, не получается. Cыпит ошибками при установке sudo pip3 install homeassistant или hass
А вот по этой инструкции установился нормально. на питоне 3.7 понимаю.
Автозагрузка не работает, не могу сделать.
Доброго дня
При первой установке по инструкции возникла ошибка из-за не обновленного python. По Вашей второй статье обновил все пакеты и по новой установил homeassistant. В процессе выполнения pip3 install homeassistant появилась ошибка:
ERROR: After October 2020 you may experience errors when installing or updating packages. This is because pip will change the way that it resolves dependency conflicts.
А там не выводится рекомендация обновить pip, прямо вместе с нужной для обновления командой? Обычно после установки этого обновления ошибки исчезают.
Инструкция по обновлению Python есть тут.
Но мне нечего обновить так как неустанавливается
Python присутствует в системе изначально, он не является частью Home Assistant.
$ python -V
Python 2.7.16
During handling of the above exception, another exception occurred:
Здравствуите
падскажите как эту ошибку решить
Только сейчас актуальная версия 3.9.4, а в статье описана установка 3.9.1, так что надо будет цифры при скачивании и распаковке архива поменять.
Спасибо за подробное изложение!
С питоном вроде разобрался. Но вот такой вопрос- при описанном способе установки Home Assistant устанавливается без компонента Supervisor. В результате получаем по сути бесполезную игрушку. Как установить все вместе?
Не подскажете, что сделать?
Сколько же у Вас терпения все это объяснять раз за разом =) Спасибо за статью!
Данный мануал составлен мной после нескольких недель штудирования форумов, для тех, кто захочет пройти моим путем. Критика приветствуется.
Выбор стека
Про Home Assistant (далее для краткости - HA) сказано было многое, и, на мой взгляд, это самая удачная система умного дома. По теме выбора можно почитать тут:
Почему HDD? Много раз на форумах писали, что малинка с Home Assistant на борту кушает SD карты по одной за год. Кроме того, HA еще и логи пишет не понятно до каких пределов. Так что никаких SD.
Оборудование в наличии
Переходник SATA - USB (при необходимости)
Ноут (комп) c возможностью записи SD карт. (У меня ноут под Windows 10)
Роутер для выхода в сеть
Официальный сайт предлагает нам несколько способов установки Home Assistant:
Home Assistant Operating System для Raspberry Pi. Самый простой способ установки: залил образ и нет проблем. Все фичи в наличии. Рекомендован разработчиками. Минус - отсутствие полноценной системы.
Home Assistant Operating System (VM) для Linux. Поднимаем виртуальную машину. Качаем образ. Запускаем. Профит. Да, все фичи на месте. Рекомендован разработчиками. Минус - виртуальная машина более затратна для системы чем Docker. Впрочем, этот способ я не пробовал.
Home Assistant Container. Установка в контейнер Docker. Также рекомендован разработчиками. Минус - нет Supervisor.
Home Assistant Core. Устанавливаем окружение Python. Устанавливаем Home Assistant. Минус - нет Supervisor.
Home Assistant Supervised. Установка в контейнер Docker, но уже с Supervisor в комплекте. Вот что про это пишут разработчики:
Внимание! Этот способ запуска Home Assistant потребует всех ваших сил. У вас будут строгие требования, которым придется следовать. Если вы не понимаете зачем оно вам надо, используйте способы описанные выше.
Этот метод установки обеспечит полный функционал HA на обычной системе. Это значит, что все компоненты HA будут использованы за исключением Home Assistant Operating System. Пользователь сам ответственен, чтобы все требуемые компоненты были установлены и настроены. Список компонентов и их версии меняются со временем, а Home Assistant Supervised предоставляется как есть. И, вообще, мы принимаем багрепорты воспроизводимые только на свежеустановленном полностью обновленном Debian без дополнительных архивов.
Этот метод считается продвинутым и должен использоваться только если читающий - эксперт в управлении Linux, Docker и сетях. Приятно слышать.
Мы работаем только с Docker и ни с чем другим.
Дальше идет список требований. К нему вернемся в процессе установки.
Только вышеназванная версия Debian (на момент написания статьи это Debian Linux Debian 10 aka Buster (no derivatives)) поддерживается. Когда выходит новая версия Debian поддержка предыдущей прекращается в течение 4 месяцев. Если только новая версия не соответствует требованиям Supervisor.
Этот метод не будет работать если читающий где-то накосячит. Кстати, вот вам еще несколько дополнительных условий:
Эта система только для Home Assistant. Даже не думайте устанавливать еще какое-то ПО.
Читающий ответственен:
За установку и настройку ОС
За обновление компонентов, необходимых для Supervisor
За установку хоть чего нибудь, конфликтующего с Supervisor
За обновления безопасности
Время от времени требования к Supervisor меняются и читающий должен сам обновлять свою ОС и устанавливать недостающие компоненты
Заключение: Эксперт. Тебе будет непросто. Смирись.
Шаг 0. Первый контакт
Здесь и далее я буду подключать Raspberry через WiFi. Начнем с того, что пропишем в нашем домашнем DHСP сервере статический IP-адрес Raspberry. Это нужно для удобства, чтобы не выяснять каждый раз, как достучаться до малинки.
Качаем образ Ubuntu от сюда. На данный момент это Ubuntu Server 20.04.2 LTS 64-bit. Заливаем на SD карту при помощи Balena Etcher. Вынимаем карту и . снова вставляем откуда взяли. Это нужно, чтобы загрузочный сектор Ububuntu стал доступен в проводнике. Открываем файл network-config и прописываем туда параметры WiFi. Должно получится что-то вроде:
А теперь немного комментариев разработчиков:
Имя сети должно быть в кавычках
При первой загрузке Raspberry попытается присоединится к WiFi. Эта попытка обречена на провал. Но не расстраивайтесь, просто перезагрузите малинку sudo reboot -h now и все заработает.
Шаг 1. Настройка загрузки с HDD
Обновляем систему чтобы все было по фен-шую.
sudo apt update
sudo apt upgrade -y
Теперь устанавливаем пакет для работы с загрузчиком sudo apt install rpi-eeprom . На всякий случай перезагружаемся sudo reboot -h now .
У загрузчика имеется три версии релиза (выдержка из оригинальной статьи):
default - Обновляется для поддержки нового железа, исправления критических ошибок и регулярного обновления новых фичей, протестированных в релизе latest .
latest - Обновляется, когда новые фичи прошли успешное бета-тестирование
beta - Здесь тестируется все новое
Из вышесказанного понятно, что релизы проранжированы по степени новизны/стабильности.
На одном из форумов написано:
Будьте уверены, что используете последнюю версию релиза latest (он же stable ). Если же нет, Вы не сможете загрузиться с USB. Не существует default (он же critical ) релиза с поддержкой загрузки по USB.
Как по мне, все нормально запустилось с default ветки. По-видимому, на дату статьи релиз уже обновили.
Итак, делай раз: обновляем загрузчик до последней версии sudo rpi-eeprom-update -a . Перезагружаемся sudo reboot -h now .
Делай два: заливаем Ubuntu на USB (HDD) носитель. Как это сделать, описано в Шаге 0. Примечание: некоторые рапортуют о проблемах с питанием HDD при использовании переходника SATA-USB. Что с этим делать - думайте сами. Например, замените HDD на SSD. Лично у меня HDD Toshiba MK7575GSX нормально завелся.
Делай три: В загрузочном разделе (он всегда первый и отформатирован в FAT32) Находим файл vmlinuz , распаковываем его в эту же директорию (я использовал 7-Zip) и переименовываем в vmlinux . Идем в config.txt , комментим строки чтобы было как-то так:
И дописываем, чтобы было как-то так:
initramfs initrd.img followkernel
Все. Больше здесь ничего ни трогаем, впрочем кому как нравится.
Делай четыре: прописываем настройки wi-fi как в шаге 0.
Траблшутинг: Лично у меня была проблема - не запускалась малинка после очередного обновления ядра Linux или чего-то такого. Но потом ребята с GitHub'а все пофиксили и стало ОК. Так что, если у вас что-то идет не так: либо нарушили какой-то пункт из описанных выше, либо ждем обновления ветки (кстати, можно перейти на релиз latest и попробовать с него), либо повезет в любви. И еще, после обновления системы, выполняемого, например, командой sudo apt full-upgrade Ubuntu перестанет запускаться до тех пор, пока в загрузочном секторе мы снова не распакуем vmlinuz в vmlinux .
Шаг 2. Устанавливаем зависимости
Разработчики требуют, чтобы в системе было установлено Docker, Systemd, NetworkManager, AppArmor. Sysstemd и AppArmor уже установлены в системе - по ним дополнительных действий не требуется.
Хотя пакет jq отсутствует в официальных требованиях, без него установочный скрипт все-равно не запустится. С него и начнем. Выполняем sudo apt install jq . Готово!
Теперь возьмемся за NetworkManager. Для начала устанавливаем его командой sudo apt install network-manager . Добавляем в автозагрузку sudo systemctl enable NetworkManager . Но просто установить и запустить его недостаточно. В настоящий момент есть две альтернативные системы управления сетью systemd-networkd и NetworkManager. По умолчанию в системе установлена первая, а нам нужен именно NetworkManager. Чтобы переключится на него идем в /etc/netplan и редактируем файл конфигурации командой sudo vi /etc/netplan/50-cloud-init.yaml . Примечание: у меня это 50-cloud-init.yaml . Говорят, название может отличаться. Добавляем строку renderer: NetworkManager следующей строкой за network: . Обращаем внимание на отступы. В yaml отступы решают. Делаем sudo netplan generate и sudo netplan apply , перезагружаемся. Останавливаем systemd-networkd - он теперь больше не нужен - sudo systemctl stop systemd-networkd и отключаем его от автозагрузки sudo systemctl disable systemd-networkd , перезагружаемся.
Приступаем к установке Docker. Далее взяты инструкции с официального сайта Docker.
Вот и пришел заказанный Raspberry Pi 4B, начинаю потихоньку разбираться и переносить все с Mi Home на Home Assistant.
Существует несколько вариантов установки Home Assistant:
- Установка HassOS;
- Установка Raspbian и разворачивание системы в Docker-контейнере.
Первый способ самый простой, а во втором мы, помимо HA, сможем использовать Raspberry Pi для чего-то еще. На данный момент я выбрал первый вариант установки и если он чем-то не устроит в будущем, то установлю все на Raspbian.
Как установить Home Assistant на Raspberry Pi 4
Каких-то сложностей в установке возникнуть не должно, инструкция есть на официальном сайте и она достаточно простая, но на всякий случай я распишу весь процесс.
- Первым делом скачиваем образ системы для вашего устройства с официального сайта и распаковываем его в любую папку.
- Далее скачиваем и устанавливаем программу balenaEtcher. Она используется для записи HassOS на MicroSD карту. Запускаем, выбираем наш образ, карту памяти, нажимаем Flash и ожидаем завершения записи.
- Подключаем Raspberry к сети с помощью Ethernet кабеля, вставляем карту памяти и подаем питание. Если же планируется использовать Wi-Fi подключение, то:
- Берем USB флешку и форматируем ее в FAT32, в качестве имени тома пишем CONFIG
- На флешке создаем папку network, а в папке – текстовый файл с именем my-network и удаляем его расширение (.txt).
- Далее открываем созданный файл с помощью NotePad++ или WordPad и прописываем туда следующий код:
[connection] id=network
uuid=72111c67-4a5d-4d5c-925e-f8ee26efb3c3
type=802-11-wireless [802-11-wireless] mode=infrastructure
ssid=Название-Wi-Fi [802-11-wireless-security] auth-alg=open
key-mgmt=wpa-psk
psk=Пароль-Wi-Fi [ipv4] method=auto [ipv6] addr-gen-mode=stable-privacy
method=auto- Вместо “Название-Wi-Fi” и “Пароль-Wi-Fi” прописываем данные вашего Wi-Fi соединения. Сохраняем.
- Вставляем в Raspberry MicroSD карту, подключаем USB флешку и подаем питание.
- Ждем около 20 минут и подключаемся с помощью браузера к Home Assistant по адресу homeassistant.local:8123
- Все готово. Если вы использовали USB флешку, то ее можно вытащить.
Первоначальная настройка
Home Assistant установлен, осталось только выполнить небольшую первоначальную настройку.
Первое, что предлагается сделать – создать аккаунт администратора системы. Вводим имя, логин и пароль, после чего нажимаем “Создать учетную запись”.
В следующем окне задаем имя дома, выбираем расположение с помощью кнопки “Заполнить” или вручную, часовой пояс и систему мер.
Далее будет предложено добавить обнаруженные совместимые устройства. Это можно сделать как сразу, так и отложить на потом. У меня определился шлюз и роутер, причем шлюз почему-то 2 раза, а вот умные лампы автоматически не обнаружились.
Это было последнее окно первоначальной настройки, так что нажимаем “готово” и попадаем на главную страницу умного дома в Home Assistant.
Вам также может понравиться
Настройка Home Assistant: начало. File Editor. Настройка интерфейса
Подсчет времени работы устройства в Home Assistant
Умный дом на Home Assistant. Установка и настройки на русском
Mi Home
Карта дома в Home Assistant
Читайте также: