Не помню почему я выбрал установку HomeAssistant в виртуальное окружение из всех возможных способов установки. Может быть, посчитал, что docker - это пока слишком сложно.
Как бы то ни было, два года я прожил на HomeAssistant Core и, в общем-то, горя не знал. Часто видел на всяких форумах и ресурсах беседы о мистическом supervisor и не менее мистических аддонах. И вот, наконец, интереса ради решил перейти на этот самый Supervisor.
Конклюжн: почти ничего не изменилось, но стало лучше.
Поехали!
Устанавливаем Home Assistant Supervised
Здесь я сознательно не будут прописывать некоторые команды, потому что нет ничего лучше официальной документации, а все частные уроки и туториалы имеют обыкновение устаревать.
Посмотреть инструкцию по установке "от завода-изготовителя" можно на гитхабе: https://github.com/home-assistant/supervised-installer
Но сначала надо отключить SSL (закомментировать настройки сертификатов в configuration.yaml или что там у вас сделано) и сделать бэкап всей нашей системы - Настройка - Система - Резервные копии.
Пока делается бэкап, остановим и выключим Configurator, потому что он нам не понадобится (впрочем, это можно сделать и потом):
sudo systemctl stop hass-configurator.service && sudo systemctl disable hass-configurator.service
После того, как создание бэкапа завершится, остановим наш существующий Home Assistant:
sudo systemctl stop home-assistant.service
Выключать его пока рано, он нам может ещё пригодиться.
Приступаем к установке HASS Supervised:
- устанавливаем необходимые зависимости
- устанавливаем Docker-CE
- качаем OS Agent через wget с адреса https://github.com/home-assistant/os-agent/releases/latest
- устанавливааем OS Agent через dpkg
- качаем HASS Supervised: wget https://github.com/home-assistant/supervised-installer/releases/latest/download/homeassistant-supervised.deb
- устанавливаем: sudo dpkg -i homeassistant-supervised.deb
В другом окне консоли можно открыть лог системы:
sudo journalctl -f
Там будет много всего, но самое интересное будет подсвечено (у меня - красным жирным шрифтом). В том числе там будет написано, что подтян сервер по нашему адресу и порту 8123.
Если всё прошло верно и настройки SSL не конфликтуют (как было у меня, потому что пути до сертификатов недоступны оказались из контейнера), то можно зайти на свой сервер по http.
Там уже будет ждать приветственное окно с оповещнием об установке:
Долго ждём и вот, наконец, стартовая страница готова. Можно задать новые логин-пароль и сразу же подтянутся какие-то интеграции, доступные для настройки - deconz, keenetic, etc. Я ничего не подключал, потому что собирался восстановить всё из бэкапа.
Переносим все настройки
В окне онбординга будет предложено восстановиться из бэкапа:
Жмём ссылку внизу про восстановление из бэкапа, выбираем предварительно перенесённый с сервера к себе на комп архив с бэкапом и... ничего не происходит.
На самом деле бэкап восстанавливается, но на экране об этом ничего не говорится, какого-то прогресса нет, поэтому можно просто сходить и попить чай/кофе.
О том, что бэкап развернулся, я узнал по тому, что ничего не заработало. Почему не заработало, можно посмотреть в journalctl. В моём случае не поднялся модуль http с сертификатами - они не нашлись по тому пути, который указан в configuration.yaml. Не мудрствуя лукаво я эти сертифкаты в конфиге просто отключил и вуаля: HASSio запустился. И тут же предложил мне обновиться на последнюю версию:
Теперь нам надо восстановить некоторую функциональность, которую мы потеряли после перехода.
Конфигуратор
В первую очередь восстановим возможность редактировать конфигурации из интерфейса.
Установленный ранее конфигуратор можно отключить, если не сделали этого раньше.
sudo systemctl stop hass-configurator.service && sudo systemctl disable hass-configurator.service
Вместо него идём в магазин дополнений (Настройки - Дополнения) и ставим File Editor:
Особо настраивать тут нечего, включим автозапуск и добавим в боковую панель:
Всё, теперь у нас есть File Editor, который полностью аналогичен конфигуратору.
DuckDNS
Доступ извне у меня организован через Duck DNS, там зарегистрирована учётная запись и создан токен. Они нам понадобятся, чтобы вернуть DuckDNS в аддонах:
После добавления аддона страница с настройками не открылась, пришлось перезапустить HASS. После перезагрузки - настраиваем:
Указываем свои домен (без duckdns.org) и токен, остальное можно оставить как есть. В configuration.yaml меняем пути к сертификатам:
И перезапускаем. Но не работает. Потому что нет сертификатов.
Let's Encrypt
Сертификаты у меня - от Let's Encrypt. Он тоже доступен среди официальных аддонов:
Настраиваем: указываем домен (полный, yourname.duckdns.org) и email, на который зарегистрирован сертификат. Названия ключей я оставил дефолтными, они же прописаны в configuration.yaml в секции http.
После настройки запускаем и смотрим в Журнал аддона - там будут записи о том, что сертификат выпущен успешно или нет. Если используется deconz (как у меня), то будет ошибка, что порт 80 уже кем-то занят. Нужно остановить deconz, запустить аддон let's encrypt, дождаться выпуска сертификата и после этого запустить deconz обратно.
Затем можно перезапустить HASS и попробовать зайти по https - всё должно работать.
Потом планирую наконец-то перейти с DuckDNS на возможности Keenetic, но для этого надо будет повозиться с HA Proxy.
Яндекс
Если все реквизиты сохранились в неизменном виде, то, скорее всего, устройства и управление ими из Яндекса, с помощью Алисы, например, продолжит работать как ни в чём не бывало. Уменя - не стало, поэтому пришлось заново перепривязать свой навык в Умный Дом - нажать плюсик, чтобы перейти в меню добавления:
Добавить: Устройство умного дома:
Выбрать свой навык. Простым "обновить" тут не отделаешься, надо заходить внутрь:
И, наконец,
После чего появится окно HomeAssistant с вводом логина-пароля, и при успешном входе все подключенные устройства обновятся, а не подключенные ранее - подключатся.
Заключение
Что я получил, ради чего это всё? В первую очередь, конечно, чтобы попробовать что-то новое. Поработать с контейнерами, покопаться в аддонах.
А ещё хороший стимул - получить вот это:
Возможность поставить обновления Home Assistant из него самого - бесценна. Больше не надо заходить в консоль по ssh, искать или вводить по памяти команды для окружения, для обновления через pip и всё такое.
Но, увы, и тут есть нюанс. Как мы помним, сборка у меня на сервере Ubuntu 18.04, а Ubuntu какой-бы то ни было версии - не входит в число рекомендованных установок для Home Assistant, что приводит к маркировке Home Assistant как unsupported и, соответственно, unhealty, а значит и обновление может не запуститься. Выход есть - нужно перезапустить контейнер hassio_supervisor. Но это тоже не очень удобно, хотя и всё ещё удобнее, чем ходить через консоль. Тем более, что для управления контейнерами я поставил Portainer, но об этом уже в следующий раз.
И напоминаю, что следить за анонсми можно в моём телеграме, лайк и подписка.