🤖 Как спасти свой умный дом

Grigorii Merkushev
3 min readMar 27, 2019

--

Я дважды полностью терял конфигурацию умного дома. Это происходило по причине непредвиденной потери питания, Linux переставал монтировать часть системных разделов. Первый раз это произошло с Raspberry Pi3 и я подумал что проблема во флеш карте, на которую была установлена система. Перевез все на обычный компьютер с SSD и жестким диском, но и это не спасло меня. Как итог, сейчас контроллер умного дома подключен через бесперебойник. Но вопрос того, как восстанавливать умный дом после сбоя в системе так и остался не решенным.

🧠 Что являтеся контроллером?

Стоит рассказать, что именно я использую в своем умном доме. Главный контроллер — Home Assistant — одна из лучшых платформ домашней автоматизации с открытым исходным кодом и огромным комьюнити. Home Assistant может быть установлен при помощи контейнеров Docker. Для меня данный способ доставки приложения на Linux оказался наиболее подходящим, так как по работе мне часто приходится иметь дело с контейнеризацией, и я верю, что за ними будущее.

🗄️ Как быть с конфигами?

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

☁️ Как доставлять код на сервер?

Я выбрал путь CI/CD, так как я не очень люблю возиться с yaml файлами в великолепном и неподражаемом vim. Этот подход позволяет править конфигурацию на моем ноутбуке, пушить ее в репозиторий и оттуда раннером доставлять на сервер с Home Assistant. Все секретные переменный хранятся на стороне Gitlab и доставляются в переменные окружения раннера при обновлении приложения.

Когда домашний сервер настроен и работает как часы, можно начать подготовку репозитория. Первым делом идем на gitlab.com и создаем новый приватный репозиторий с одним лишь файлом .gitignore следующего содержания.

Home Assistant — .gitignore

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

Теперь мы можем создать пустую папку config в которой будет храниться вся конфигурация приложения. Перед первым запуском эта папка должна быть пустой. Home Assistant сам создаст все необходимые файлы и нам останется только закоммитить и запушить их в репозиторй для дальнейшей доработки. Следующим шагом идет файл с настройкой самого контейнера. Для этого лучше всего подойдет docker-compose.

Home Assistant — docker-compose.yaml

В данном файле мы описываем какие порты выбросить наружу и в какую папку замапить конфиги. Не забываем создать папку на домашнем сервере со следующим путем

$ mkdir -p /srv/home-assistant-config

и выдать на нее права 777 для возможности записывать данные из контейнера на хост машину.

$ chmod -R 777 /srv/home-assistant-config

Когда все настроено, можно приступать к шагу CI/CD, а именно настройки Gitlab-CI

Home Assistant — .gitlab-ci.yaml

Gitlab-CI будет самостоятельно доставлять код на сервер, копировать новые конфиги в папку с проектом и перезапускать приложение. От нас лишь требуется описать эти шаги в конфигурации. В приведенном выше файле, уже описана базовая конфигурация, которя прекрасно справится с доставкой и разворотом прилоежине на вашем сервере. Если у вас остались вопросы, то в следующей статье можно прочесть как настроить Gitlab-CI самостоятельно.

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

Если у вас остались вопросы, то как говорится welcome

🧰 Все готово

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

PS. В следшеующей статье я расскажу как настроить умный термостат (почти что Nest) с минимальными вложениями времени и денег.

--

--