Статья

Home Assistant перфекциониста. Часть 1: знакомство, железо, установка

Знакомство

Добавляя очередное, только что приобретенное, устройство в HA, я понял, что так дальше продолжаться не может и архитектура моего проекта должна быть переписана с чистого листа. Мой зоопарк устройств насчитывает не так много жителей, всего около 30 различных лампочек, кнопочек, датчиков и прочих вещей, которых, раз вы читаете эту статью, и в вашем доме не меньше. Home Assistant дает огромные, если не безграничные, возможности для реализации управления своим умным домом, но в этом и кроется проблема, так как нет единых стандартов, даже нет примеров как "хорошо" и как "плохо", и вы вольны творить то, что вашей душе угодно, пока весь ваш проект превращается в одну большую свалку, где все автоматизации и компоненты живут своей жизнью, а не являются частью однородной системы.

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

Железо

Рассматривать Raspberry как основой сервер умного дома стоит только в том случае, если вы пока не готовы тратить большую сумму на полноценное оборудование. Моя сборка основана на Raspberry Pi 4B, так как это один из самых мощных вариантов из доступного ценового сегмента.

Многие знают, а кто-то и сталкивался, с проблемой умирающих карт памяти, которые просто изнашивают весь свой заложенный цикл перезаписи за год, а иногда и меньше, поэтому было принято решение использовать чип eMMC с помощью переходника с Aliexpress. Кстати, сейчас вышли новые версии, я так понимаю, на основе ROCK PI 4, выглядят посимпатичнее.

Конечно же, не забудем про корпус, ибо внешний вид никто не отменял. На KickStarter представили еще один очень крутой корпус от Cooler Master, но пока он только едет и не известно, когда придет. Поэтому пока воспользуемся Argon Neo, один из самых красивых, как по мне, и подходящих под наши задачи корпус (потому как Argon One, например, больше предназначен как компьютерный корпус, а не серверный).

Собираем это все в единую кучу и немного огорчаемся, потому как переходник не влезает в корпус, но быстро находим кусок наждачной бумаги, подсточим края и все влезает (возможно, позже перепаяю это соединение, либо заверну в термоусадочную трубку, но на время тестов оставим так).

Установка

Первая проблема, с которой вы столкнетесь, если будете использовать eMMC память - ее поддержку добавили только с недавним обновлением bootloader'а, так что для начала необходимо будет обновить его. Есть несколько вариантов как это сделать, я выбрал самый простой и воспользовался утилитой Raspberry Pi Imager. Берем обычную карту памяти (которая работает в raspberry без танцев с бубном), подключаем к компьютеру, устанавливаем и открываем утилиту, там идем по пути "Choose OS -> Misc utility images -> Raspberry Pi 4 EEPROM boot recovery" и записываем образ на карту памяти. После этого вставляем в вашу малинку, подключаем питание, ждем пока зеленый светодиод не начнет мигать (около 10 секунд) - все, загрузчик обновлен, можно двигаться дальше.

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

Home Assistant OS - должен использоваться тем, кто впервые сталкивается с HA, так как иначе справиться с наплывом информации весьма проблематично. По сути, единственный минус, который вы получаете при таком варианте установки - у вас нет возможности пользоваться операционной системой как линуксом, от слова совсем, нельзя установить никакие дополнительные программы, пакеты, надстройки напрямую в ОС.
Home Assistant Container - лучший вариант, если вы хотите абсолютного контроля над каждым программным компонентом на вашем сервере. Вы всегда контролируете к каким данным, интерфейсам, портам имеет доступ любой из контейнеров. Но это так же и главный минус, так как вы очень сильно теряете в удобстве, у вас больше нет вкладки Hassio и вы один в поле, любой addon (к примеру, zigbee2mqtt, node-red, mosquitto и тд) вам придется устанавливать, настраивать и интегрировать это все в контейнер Home Assistant вручную. Лично мне этот вариант нравится идеей, но сам я не смог протянуть, слишком много времени необходимо уделять на то, что при обычном раскладе делается одной кнопкой.
Home Assistant Core - самый странный вариант из всех. Произведя установку данным способом, вы лишаетесь все того же пресловутого hassio со своим магазином (все те минусы, что были описаны выше), так еще и полностью засорите вашу основную систему (в отличии от варианта с докер контейнером, где система остается первозданно чистая).
Home Assistant Supervised - вариант, если мы хотим удобства базовой Home Assistant OS, но при этом нужен доступ к операционной системе. Магазин Hassio доступен только при установке этим и базовым способами. К минусам можно отнести то, что нужно соблюдать некоторые требования и быть весьма аккуратным при работе в основной операционной системе, так как supervised решение устанавливает все пакеты прямо внутрь вашей ОС.

Мой выбор остановился на Supervised вариации, хотя концептуально очень нравится контейнерное решение, может однажды я решусь и перейду на него, но пока что удобство берет верх.

Хорошо, с вариацией мы определились. Теперь приступим к самой установке. Для начала определимся с дистрибутивом. Мне лично больше нравится Ubuntu, по разным причинам, это дело каждого, и на Ubuntu есть возможность поставить HA Supervised. Но я столкнулся с большим количеством проблем уже после установки, в виде неработающего network manager и некоторыми незначительными, но вплоть до сегодняшнего дня я пользовался именно такой версией. Сегодня мы попробуем максимально приблизиться к официально поддерживаемой установке, хотя и осознанно будем нарушать правила. Информацию о том, как сделать установку официально поддерживаемой, можно найти тут. Если вы прочитаете требования, которые там предоставлены, то увидите пункт "Debian Linux Debian 10 aka Buster (no derivatives)", то есть Raspbian не является поддерживаемой ОС. Подумав, я принял решение все же ставить Raspbian, так как в ней заложено и настроено много софта для работы с Raspberry Pi (обновления загрузчика, настройки, управление внутренними регистрами, конфигами и тп), при этом Lite версия ничем не отличается от голой установки Debian 10.

Установка Raspbian (новое название Raspberry Pi OS) очень проста. Воспользуемся все той же утилитой Raspberry Pi Imager, выбираем образ Raspberry Pi OS Lite, выбираем eMMC память и нажимаем кнопку записи. На выходе будем иметь разбиение на несколько разделов, заходим в самый маленький раздел (он единственный форматирован в fat32 и потому будет доступен и из под windows), и создаем пустой файл ssh (можете создать текстовый файл и переименовать без расширения.txt)

Далее создаем нового пользователя (в моем случае, flamingo) согласно инструкции по обеспечению безопасности. Удаляем базового пользователя pi и его домашнюю директорию, больше они нам не понадобятся. На этом этапе соединение ssh разорвется, подключитесь снова, используя новые данные.

Теперь открываем конфигуратор Raspberry, командой

sudo raspi-config. Выбираем 4 пункт и в нем настраиваем часовой пояс согласно вашему. В 3 пункте можете выбрать страну, чтобы активировать WiFi модуль (отключен, пока не выберете доступные частоты). Далее очень важный 7 пункт, в нем выбираем первую опцию "A1 – expand file system", после чего подтверждаем, нажимаем Finish и соглашаемся на перезагрузку.

После того, как сервер включился, опять подключаемся по ssh и вводим команду для обновления всех пакетов sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y. После чего необходимо еще раз перезагрузиться, можно использовать команду sudo reboot.

Теперь непосредственно установка Home Assistant Supervised.

Для начала подготавливаем систему.

  1. Вводим команду sudo apt-get install -y software-properties-common apparmor-utils apt-transport-https avahi-daemon ca-certificates curl dbus jq network-manager для установки всех недостающих пакетов.
  2. Отключаем ModemManager, так как возможны конфликты, командой sudo systemctl disable ModemManager & sudo systemctl stop ModemManager.
  3. Устанавливаем Docker командой curl -fsSL get.docker.com | sudo sh, если у вас возникла ошибка во время установки - перезагружаем Raspberry и вводим команду еще раз, перезагрузкой все лечится :)
  4. Добавляем текущего пользователя в группу docker (flamingo поменять на имя своего пользователя) командой sudo usermod -aG docker flamingo.
  5. Загружаем установщик HA в текущую директорию curl -Lo installer.sh https://raw.githubusercontent.com/home-assistant/supervised-installer/master/installer.sh.
  6. Запускаем установщик с необходимыми нам параметрами, указав директорию конфигурации по удобному нам пути (например, прям в /home/flamingo, либо /home/flamingo/hassio, я выбрал второй вариант, так как не хочу захламлять домашнюю директорию) командой sudo bash installer.sh -m raspberrypi4 -d /home/flamingo/hassio.

После этого начнется установка Home Assistant Supervised. Через пару минут будет доступен онлайн статус по адресу http://ip.ip.ip.ip:8123, можете следить за ходом выполнения.

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


Вообще круто расписываешь - продолжай 

Аффтат пиши исчо

Жду продолжения, интересно видеть твою точку зрения идеальной конфигурации. Сам последние время задаюсь решением этой задачи, тем более приехал Synology DS720+ и буду туда переносить HA с чистого листа.

ну прям не для каждого

У меня HA в контейнере, и доступен магазин HASSIO. Что-то изменилось за год?

Скорее всего, у вас именно Supervised вариант установлен..? Потому как он управляет контейнерами под капотом, в том числе и контейнером HA. Про голую установку Home Assistant Container можете почитать https://www.home-assistant.io/docs/installation/">тут. (На модерации, увы, повырезали много ссылок из статьи)

Видимо так и есть.


Стоило похвастаться, и всё сломалось :) HA работает, на главной странице всё показывает (данные с датчиков и т.п.), а при выборе в боковом меню любого пункта, выдает ошибку (не найден какой-то файл .js). Сижу переустанавливаю. Нашел вот такой вариант: https://peyanski.com/home-assistant-supervised-and-container-how-to/#:~:text=The%20first%20method%20%E2%80%93%20called%20Home,experience%20and%20Add-on%20store.">https://peyanski.com/home-assistant-supervised-and-container-how-to/ 


Вот только на CentOS не встает, хочет AppArmor :(


P.S. Сейчас посмотрел, тот же самый вариант что и у вас, а если из скрипта убрать проверку AppArmor?

P.P.S. Убрал из скрипта все строки с AppArmor, установка прошла, HA запустился, буду проверять работу :)

Спасибо!

Очень интересно, как раз для моего уровня. Что значить "полноценное оборудование"? Я думал что либо Малина, либо Sprut Hub...

В идеале взять что-то из линейки Intel NUC на процессоре i5 или лучше. Это уже полноценное оборудование)

Был такой (nuc 10 с i5), недавно продал, сильно избыточно данное оборудование для HA. Только если брать его ещё и для других целей. Идеальное решение на котором остановился я, это NAS Synology из линейки +. Там и управление контейнерами удобное и куча приколюх, допустим можно сделать что при падении или перезагрузке нужных контейнеров будет приходить уведомление на тел. Ну и главное в этом что это ещё и HAS с кучей функций.

Интересно было бы почитать мнение опытных товарищей по поводу "достаточности" железа для HA. Кстати, Sprut Stick работает под какими системами? Он работает под Windows?

Если конфигурация без камер, то за глаза даже Raspberry Pi 2

Как альтернативу eMMC, можно взять M2 SSD Case и любой, вызывающий доверие, SSD. Проживёт такая конфигурация дольше. 

Присмотритесь к новому https://www.argon40.com/argon-one-m-2-case-for-raspberry-pi-4.html">корпусу от Argon. Починили проблему того, что невозможно сделать автозапуск малинки и добавили слот для m2 диска :)

Была такая идея, но уже был как раз Argon Neo, и менять на Argon One не хотелось 🙂. Хотя в качестве монолитного решения Argon One очень хорош. 

Neo хорош тем, что он менее габаритный и позволяет поставить Zigbee стик (по gpio) скрытно, так чтобы вообще ничего не торчало. One выглядит чуть поинтереснее, а теперь еще добавили возможность установки m2 диска и ИК-порт, но с Zigbee придется что-то мастерить... Очень жду обновления Neo :)

Ждем продолжения!

> Информацию о том, как сделать установку официально поддерживаемой, можно найти https://github.com/home-assistant/architecture/blob/master/adr/0014-home-assistant-supervised.md" title="Официально поддерживаемая Supervised установка">тут. 

Можно чуть раскрыть мысль? Там ничего не понятно, какой-то RFC просто
У меня тоже Supervised версия. HA пишет что неподдерживаемая конфигурация

У меня на CentOS так же пишет. Но ведь работает? :)

"Официально поддерживаемая" - это установленный образ, когда никаких модификаций в Raspbian не предусматривается

Как узнать, какая вериация установки НА?

А как удалить стандартного пользователя "pi", и как дать все полномочия новому пользователю?

По указанному в статье совету отключил ModemManager (но уже на рабочей системе). Проблему поймал уже после рестарта малины. Получил загрузку CPU на 98%. в топе висят процессы python3, avahi-daemon, mdns-repeater и жрут CPU (последние 2 сервиса нужны вообще?). Включил обратно ModemManager - помогло.

Очень сильно ждем продолжения! Желательно про подключение zigbee стика!

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

Несколько дней назад перестал стартовать HA. Даже после установки на чистую систему запускается только до ребута. После ребута уже не работает.



P.S. Нашел вот такое: https://community.home-assistant.io/t/installing-home-assistant-supervised-on-raspberry-pi-os/201836/188">https://community.home-assista...


The new docker version will not start my ha. I searched now on the forum and found following solution:


sudo apt remove docker-ce docker-ce-cli
sudo apt autoremove --purge -y
sudo reboot

and install it again with an older version and stay with this:


sudo apt install docker-ce-cli=5:19.03.14~3-0~raspbian-buster
sudo apt install docker-ce=5:19.03.14~3-0~raspbian-buster
sudo apt-mark hold docker-ce docker-ce-cli containerd.io
sudo reboot


Помогло.

Здравствуйте. 
А почему все пытаются построить ядро умного дома на малинке или её аналогах? Почему не взять полноценный б/у неттоп, можно даже безвентиляторный и получить SATA2/3, 4-6 USB 2.0, езернет 100/1000 Мб/с, WiFi ... и все это в базовом наборе. Например https://www.avito.ru/saratov/nastolnye_kompyutery/nettop_3q_2_yadra_1282003557?slocation=643560">https://www.avito.ru/saratov/n.... Потребляет 40 Вт/ч, но если поставить SSD, настроить динамическое понижение частоты CPU в ОС, то этот показатель можно снизить.
Я 8 лет назад на таком организовал домашний сервер: роутер для проводной и беспроводной сети, файловый сервер, принт-сервер, DLNA для ТВ, сейчас на нем же настраиваю HA.

Когда продолжение темы?


Вернуться назад

Устройства


Raspberry Pi

Raspberry Pi 4

(16 отзывов)

Вернуться назад