Миграция из Mi Home в Home Assistant. Часть 1
На днях тут ляпнул не подумав в комментариях, что могу рассказать как перетащить девайсы умного дома Xiaomi в Home Assistant, и внезапно в подписчиках у меня образовалось 258 человек. Люди, что ж вы делаете?) Придется рассказывать) А так как работаю я как раз в роли девопс инженера то тут уж никуда не деться.
Ну ладно, шутки шутками, а давайте всё же попробую.
Итак, начнем с общей информации для тех, кто не в теме. Что за звери этот Mi Home и кто такой Home Assistant? И зачем что-то куда-то перетаскивать?
Mi Home - это такое приложение от компании Xiaomi, в которое можно добавлять различные устройства умного дома от Xiaomi же. Этих устройств компания наплодила вагон и маленькую тележку, отличаются невысокой ценой и, внезапно, вполне достойным качеством. Тут вам и датчики дыма, и умный свет, и увлажнители с пылесосами и ещё черт знает что с хвостиком.
Стоит при этом всё это вполне разумных денег. Ну, имхо конечно же.
Процесс взаимодействия с умным домом Xiaomi происходит следующим образом - вы покупаете, например, робот-пылесос. Скачиваете приложение Mi Home на свой телефон, следуете нехитрой инструкции и вуаля - ваш пылесос резко умнеет, и умеет уже убираться по расписанию, убирать зоны квартиры и разве что кофе вам в постель с утра не приносит.
В общем-то всё это выглядит хорошо и здорово, за исключением одного неприятного момента.
ВСЕ ваши умные девайсы за редким исключением смотрят во внешнюю сеть, чтобы взаимодействовать с серверами Xiaomi, что само по себе является не очень-то приятным фактом.
Мало того, при использовании региона Китай, ещё и очень задумчиво с этими самими серверами общаются, а использовать сервера китайского региона вам по любому придется. В российском регионе набор поддерживаемых девайсов крайне скуден и неинтересен.
Чтобы решить эту проблему умные люди, собравшись с мыслями и покурив документацию на девайсы (а где-то и отреверсив прошивки девайсов) начали писать своё, открытое ПО для умного дома - а именно, Home Assistant, Domoticz и ещё кучу всяких разных. Суть этих решений заключается как раз в том чтобы отвязать ваши умные девайсы от злобных китайских серверов и управлять ими вне зависимости от того доступны они или нет.
Рассказывать я буду на примере своего "умного дома". И рассказывать именно про Home Assistant, потому что именно его и удалось успешно запилить.
Итак, что имеем на старте.
22 умных девайса, а именно: робот-пылесос, два шлюза Xiaomi, пачку разных лампочек, 3 датчика движения, датчик протечки и датчик дыма, датчики температуры и влажности. А также 2 увлажнителя и умную розетку для обогревателя. В Mi Home это выглядит как-то так:
Собственно, процесс добавления девайсов в приложение обычно не вызывает особых вопросов и отдельно его освещать я не буду.
Чтобы начать втаскивать всё это хозяйство в Home Assistant, вам понадобится:
1. Базовое знакомство с linux. Всё конфигурирование (по крайней мере основное) Home Assistant сводится к редактированию его конфиг-файла. Вас не должны пугать такие слова как docker, shell, daemon, логи и т д.
2. Наличие raspberry pi 3 b+ либо Intel Nuc. На самом деле, подойдет любой свободный ПК дома, но учтите, что он должен быть включен 24/7, и желательно иметь на борту встроенный Bluetooth.
3. Карточка microSD для Raspberry Pi 3b+. Крайне желательна побыстрее по скорости. Тут уж смотрите сами.
4. Wifi-роутер. У меня mikrotik hap ac v2, возможно будете использовать другой, но роутер должен быть. И он должен поддерживать 2.4 ГГц wifi.
5. Наличие Xiaomi Gateway 2. Нужен если планируете использовать датчики Xiaomi же, и прочие девайсы умного дома работающие по протоколу Zigbee.
Обратите внимание, что нужна именно вторая версия. Шлюз Aqara не подойдет, он не умеет переключаться в dev mode. Выглядит как-то так:
6. Наличие прямых рук и умения искать в гугле. Серьезно, искать в гугле - очень пригодится.
Итак, с чего бы начать. Наверное с настройки Raspberry Pi. Для сокращения размеров статьи я буду приводить ссылки на имеющуюся документацию в сети, по которой я сам проводил настройку.
Шаг 1.
Вы купили несколько девайсов, и купили Raspberry Pi 3b+. Для начала нужно установить на него операционную систему Raspbian 10. Вот этот гайд довольно неплохо описывает процесс. Вкратце - скачиваете NOOBS образ для Raspberry, заливаете его на SD карту и вставляете в девайс. По сути это вся установка ОС. Гайд немного устарел, поэтому качайте последние версии, у меня стоит Raspbian 10.
Шаг 2.
Конфигурирование установленной ОС. Как минимум вам понадобится docker для того чтобы завести на нём Home Assistant. Заходите по SSH на IP адрес Raspberry Pi, делаете sudo su и далее следуете этому гайду. Учтите, что архитектура Raspberry Pi armhf, в гайде есть места для сниппетов, где надо выбирать целевую архитектуру. У меня помнится были какие-то танцы с бубном при установке докера, но с помощью п.6 требований (умение гуглить, помните, да?) всё решилось)
Шаг 3
Установка непосредственно Home Assistant. Тут в принципе ничего сложного нет, но нужно повнимательнее читать документацию и делать всё строго по гайдам. По ссылке github-репозиторий со скриптами установки. По сути установка сводится к банальной команде:
curl -sL https://raw.githubusercontent.com/home-assistant/supervised-... | bash -s -- -m raspberrypi3-64
Ждём с полчаса, после чего пробуем зайти по адресу http://RASPBERRY_IP:8123
Если получилось, то нам удалось установить Home Assistant.
Шаг 4
URL с портом - некрасиво. Давайте поставим nginx? Делается это так:
sudo apt update
sudo apt install nginx-full
После чего надо проследовать в директорию /etc/nginx/sites-available и создать там файл hassio с вот таким содержимым (когда на пикабу можно будет вставлять код сниппеты?):
После чего сделатьmap $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
client_max_body_size 32M;
large_client_header_buffers 4 16k;
location / {
proxy_pass http://127.0.0.1:8123;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log crit;
}
ln -s /etc/nginx/sites-available/hassio /etc/nginx/sites-enabled/
systemctl restart nginx
После этих операций можно будет уже заходить на вебморду Home Assistant по URL http://RASPBERRY_IP (без порта в конце!)
Собственно, после входа home assistant предложит вам изменить имя пользователя/пароль по умолчанию, не забудьте сделать это.
Дико извиняюсь, но устал я что-то набивать эту простыню текста, продолжу завтра-послезавтра. Сегодня мы более-менее научились настраивать Raspberry Pi и худо-бедно установили на него home assistant)
Во второй части рассмотрим настройку шлюза Xiaomi, добавление его в Home Assistant и расскажу для чего там может понадобится паяльник. При условии, конечно, что эта статья зайдет)