Интеграция устройств Xiaomi с Domoticz и Apple Home


Работать с устройствами для умного дома от Xiaomi через официальное приложение Mi Home может быть не слишком удобно — не хватает гибкости настройки, расстраивает отсутствие интеграции с Apple Home, а ещё дополнительно напрягает необходимость в соединении с китайскими серверами для этих устройств. Помимо разумной паранойи (непонятно какие данные обо мне собираются и куда они уходят), есть ещё и более реальная проблема: когда РКН играл в кошки-мышки с Telegram, на несколько дней в диапазон блокировок IP попали и сервера Xiaomi, из-за чего устройства работали с перебоями, либо же не работали вовсе. В моем случае не получалось даже залогиниться в Mi Home.

Немного покопавшись в теме, в голове выстроилась следующая схема: берем Raspberry Pi (который несколько лет пылился без дела в ящике), ставим на него Homebridge, чтобы прокинуть устройства в HomeKit (и наконец-то властно крикнуть «Hey Siri!»), Domoticz в качестве центрального узла управления всеми умными устройствами. Наконец, соединяем Homebridge и Domoticz плагином homebridge-edomoticz.

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

Предполагается, что на Raspberry Pi стоит актуальная версия Raspibian, устройство включено в домашнюю сеть, имеет статический IP-адрес, и к нему есть доступ по SSH. Версия самого устройства не имеет сильного значения, я проделываю операции на model B пятилетней давности — работает не очень быстро, но работает.

Domoticz

Установка

Запускаем скрипт установки и, по окончанию, по IP-адресу вашего Pi, на порте 8080, будет доступен веб-интерфейс.

curl -L install.domoticz.com | sudo bash

Существуют и готовые образы ОС для Pi с предустановленным Domoticz, но этот вариант я не пробовал.

Добавляем Xiaomi Gateway

В приложении Mi Home на смартфоне заходим настройки Gateway, переходим в пункт меню About и быстро нажимаем 3-5 раз на пустом месте, после чего должны появиться дополнительные пункты меню на китайском. В одном из них будет пароль, который надо запомнить и переключатель, который нужно будет включить, если он не включен (разрешает локальный обмен данными).

Открываем веб-интерфейс Domoticz и добавляем устройство в меню Setup > Hardware, вводим произвольное имя, тип выбираем «Xiaomi Gateway», вводим его IP-адрес, ставим порт 9898 и вводим пароль из настроек. После этого в разделе Setup > Devices должны быть доступны сенсоры Gateway (каждый, как отдельное устройство) и устройства, к нему подключенные.

Напротив каждого устройства есть зеленая стрелочка, её нужно нажать, чтобы устройство отображалось в списке доступных для использования.

Создаем Roomplan

В конфигурации Homebridge нам потребуется указать идентификатор Roomplan. По сути это некая группа, которая объединяет устройства. Нам нужно его создать, а затем добавить в него все устройства. Делается это на вкладке Setup > More options > Plans > Roomplan. Для создания необходимо лишь указать имя (какое захочется) и добавить туда устройства из списка на той же странице, которые нужно прокинуть в Apple Home.

Создание сценариев автоматизации

После проделанных манипуляций у меня перестали работать сценарии автоматизации, заданные в Mi Home, но это уже и не потребуется, так как Domoticz предоставляет более удобный инструмент для этих целей. Он находится на вкладке Setup > More Options > Events и представляет собой простой редактор скриптов. Скрипты можно делать визуально на языке Blockly, а можно писать кодом на Lua или Python. Лично мне понравился первый вариант за его наглядность: не нужно усложнять там, где это не требуется. Перетаскиваем нужные блоки из списков слева и создаем сценарии при помощи их комбинации. После того как сценарий создан, достаточно нажать Save и он сразу начнет работать.

Homebridge

Установка

Для начала установим Node.js. У меня старенькая Raspberry Pi Model B и ей нужна версия для ARMv6, если у вас более новая версия, можно воспользоваться простым скриптом для установки:

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs

В моём случае установка выглядела следующим образом:

wget https://nodejs.org/dist/v8.12.0/node-v8.12.0-linux-armv6l.tar.xz
tar xJvf node-v8.12.0-linux-armv6l.tar.xz
sudo mkdir -p /opt/node
sudo mv node-v8.12.0-linux-armv6l/* /opt/node/
sudo update-alternatives --install "/usr/bin/node" "node" "/opt/node/bin/node" 1
sudo update-alternatives --install "/usr/bin/npm" "npm" "/opt/node/bin/npm" 1

Установим ещё одну зависимость:

sudo apt-get install libavahi-compat-libdnssd-dev

Установим сам Homebridge через NPM:

sudo npm install -g --unsafe-perm homebridge

Установим плагин для интеграции с Domoticz:

sudo npm install -g homebridge-edomoticz

Автозапуск Homebridge

Нам необходимо, чтобы Homebridge стартовал самостоятельно, после перезагрузки Pi, поэтому нужно добавить его в автозапуск, я сделал это при помощи pm2 (менеджер процессов для Node.js), так как это самый простой (и на мой взгляд надежный) способ:

sudo npm install pm2 -g
pm2 start homebridge
pm2 startup
pm2 save

Конфигурация

В директории ~/.homebridge/ в любимом текстовом редакторе создаём файл config.json:

vi ~/.homebridge/config.json

Вставляем следующее содержимое:

{
    "bridge": {
        "name": "Homebridge",
        "username": "CC:21:3E:E4:DE:33",
        "port": 51826,
        "pin": "031-45-154"
    },
    "description": "Configuration file for (e)xtended Domoticz platform.",
    "platforms": [
        {
            "platform": "eDomoticz",
            "name": "eDomoticz",
            "server": "127.0.0.1",
            "port": "8080",
            "ssl": 0,
            "roomid":2,
            "mqtt": 1
        }
    ],
    "accessories": []
}

Где roomid это идентификатор Roomplan, который вы создали в Domoticz и куда планируете добавлять устройства.

После этого рестартуем Homebridge и проверяем по логам, что все устройства корректно прокинулись.

pm2 restart homebridge
pm2 logs homebridge

Если все прошло успешно, открываем приложение Home на любом совместимом устройстве Apple и добавляем Homebridge при помощи PIN-кода, указанного в конфигурационном файле. После этого у вас должно появиться устройство Homebridge и устройства, добавленные через Domoticz.

Можно использовать Siri для управления устройствами, правда хочу сделать ремарку, что на русском языке она упорно не хочет понимать, что от нее требуется и пытается запускать приложения вместо управления домом, на английском же языке предложения вроде «Turn on light in bedroom» понимаются без проблем.

Заключение

Все это выглядит как набор костылей, но на деле работает стабильно, и в целом относится к вещам из разряда «один раз настроил и забыл» (если не требовать странного). Удобно это прежде всего тем, что не привязывает вас к конкретной экосистеме, можно покупать практически любые недорогие устройства для умного дома и интегрировать их в единую систему. Даже если решите собрать что-то свое на коленке, это без труда можно будет добавить наряду с фабричными девайсами. С системами управления тоже не возникнет проблем: надоест сидеть в инфраструктуре Apple — относительно легко можно будет переключиться на аналогичные решения от Google или Amazon.

Ссылки

Рекомендую почитать