Переезд умного дома Xiaomi в роутер Keenetic Viva и Home Assistant

6 min read
Если вам не нравится зависимость Mi Home от китайских серверов, если вы хотите писать более сложные сценарии, добавлять в систему сторонние устройства - выход есть!

Можно ли расширить возможности умного дома Mi Home, подключать к нему несовместимые с Mi Home сторонние устройства, писать очень сложные сценарии с тонкой настройкой, и не зависить от внешних серверов? Ответ: да.

Роутер Keenetic и Xiaomi Gateway 3

Здесь мы рассмотрим развёртывание системы умного дома Home Assistant прямо в роутере Keenetic Viva и управление существующим умным домом через Xiaomi gateway 3, при этом с полным сохранением функциональности как роутера, так и шлюза и без их перепрошивки, и с сохранением всей функциональности существующего Mi Home.

Много лет назад я начал пользоваться приложением Mi Home для устройств Xiaomi. Приложение простое в установке и достаточно удобное. Но со временем количество устройств росло, сценарии умного дома становились всё более сложными и запутанными, и недостатки приложения начали перевешивать его простоту. Напримар, мне нужно несколько сценариев, которые будут зажигать 8 лампочек, но при при этом не хочу объединять их в группу. В Mi Home можно написать автоматизацию, которая будет зажигать эти 8 лампочек, и потом вызывать её из нескольких сценариев, где это требуется. Удобно? Нет! Потому что тогда эти сценарии будут выполняться в режиме Облако, медленно и ненадёжно. Выход? Вручную в каждом сценарии прописывать включение каждой лампочки в нужном режиме.

Ещё вариант: замечательный датчик движения Xiaomi Mi Motion Sensor 2 у себя в логах пишет точное значение освещённости помещения в люксах. При этом всё, что вы можете использовать в автоматизациях - или "Обнаружено движение", или "Обнаружено движение, и окружающего света недостаточно". Кому "недостаточно"? "Темно" в настройках Mi Home совсем не совпадает с "темно" в реальности. А ввести точное значение освещённости невозможно.

Дальше. У Aqara есть датчики присутствия FP, которые фиксируют наличие человека в помещении, даже если он не движется. Прекрасно? Нет! Их нельзя (на момент написания статьи) добавить в приложение Mi Home.

Рано или поздно, у вас появятся устройства, которые видятся только если в приложении было выбран регион "Материковый Китай", и устройства, которые работают только при выборе в приложении европейской страны. Выход из положения? Ставить 2 приложения, в которых будут никак не связанные между собой группы устройств. Неудобно? Не то слово!

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

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

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

Итак, чем же хорош для этих целей роутер Keenetic Viva? Он имеет 2 USB порта, и поддерживает менеджер пакетов OPKG, что позволяет устанавливать на USB накопитель сторонние пакеты Entware. Сначала для наших целей нужно подготовить USB-накопитель, в основном следуя вот этой инструкции. Мне вполне хватило старой медленной флешки на 8Гб. Я отформатировал её в EXT4, после чего (у меня Linux) запустил gparted и добавил 1Гб раздел "linux swap". Это отличие от инструкции оказалось критически важным, я долго не мог понять, почему установвленный Home assistant при попытке запуска просто вешает на 10 минут роутер, а потом падает с сообщением "killed". Подробнее о файле подкачки можно почитать здесь.

Далее, устанавливаем репозиторий Entware. Финальным шагом будет установка необходимых библиотек и собственно Home Assistant. Я воспользовался имеющимися наработками Keenetic community, выполнив через SSH терминал следующие команды:

echo "src/gz ha http://bin.entware.net/mipselsf-k3.4/test/HA" >> /opt/etc/opkg.conf

opkg update

opkg install gcc ldd make gawk sed patch diffutils coreutils-install libffi

opkg install homeassistant

/opt/etc/init.d/S99hass start

После успешного запуска, в браузере по адресу http://192.168.1.1:8123 появилось приглашение Home Assistant. Произведя первоначальную настройку, нужно как-то подружить весь зоопарк Mi Home с новой системой. У меня в умном доме используется отлично зарекомендовавший себя шлюз Xiaomi Gateway 3, надёжно работающий и позволяющий подключать устройства как по Bluetooth так и Zigbee. И вот тут просто незаменимой оказалась интеграция Xiaomi Gateway 3 от AlexxIT.

Custom components, к которым относится эта интеграция, устанавливаются через HACS. Но можно воспользоваться и вторым вариантом, описанным в readme: берём каталог "xiaomi_gateway3" отсюда и копируем в роутер в каталог (в моём случае) "/opt//var/lib/homeassistant/custom_components". Перезапускаем Home Assistant, перезагружаем страничку в браузере, и у нас появится возможность добавить интеграцию Xiaomi gateway 3.

Здесь к сожалению не всё так просто, в зависимости от версии шлюза Xiaomi, возможно вам потребуется получить его ключ ("key"). Про это уже написано множество статей, я воспользовался вот этим руководством чтобы подключить к шлюзу переходник USB to TTL, после чего на Linux запустил minicom, и скопировал этот ключ из логов загрузки шлюза, возможно в вашем случае вскрывать роутер и лезть туда с паяльником не потребуется.

После успешного добавления шлюза в приложении Home Assistant появились все подключенные к нему устройства умного дома Xiaomi, осталось их только рассортировать и начать использовать.

На роутере Keenetic Viva HA работает достаточно быстро и не вызывает никаких проблем или побочных эффектов. А дополнительным бонусом такого роутера является их сервис доменных имён KeenDNS. На страничке "Сетевые правила" -> "Доменное имя" добавляем новый домен 4 уровня, выбираем назначение "Этот интернет-центр", порт 8123, и у нас совершенно бесплатно появляется внешний доступ к нашему умному дому, даже если у нас нет выделенного IP адреса.

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