Вторая моя заметка про решение для умного дома Xiaomi Aqara, возможно даже не последняя. В этой заметке я расскажу, как обеспечить работу всей домашней автоматизации оффлайн (например, если на даче отключили интернет), а также (если Вы немного параноик), как не делиться данными со всех своих датчиков с китайцами.
Раскладываем по полочкам
Итак, начнем с архитектуры этого решения. С точки зрения железок, эта штука представляет из себя хаб: девайс, втыкающийся в розетку и являющийся мостом между беспроводной сетью ZigBee (в которой работают датчики) и WiFi. К нему подключаются, собственно ZigBee датчики и устройства на любой вкус и цвет. Разумеется, где-то рядом должен также быть WiFi роутер с доступом в интернет. На этом деле инфраструктура, которая устанавливается непосредственно в доме счастливого владельца этого чуда враждебной техники заканчивается.
Как же оно связывается с мобильным приложением, шлет уведомления и так далее? Разумеется, через сервер наших китайских братьев по разуму. Иными словами, все данные с датчиков летят в китай на сервера Xiaomi. Приложение на нашем телефоне взаимодействует с серверами Xiaomi. Каждый раз, когда мы нажимаем кнопку «включить лампочку» в приложении, запрос летит куда-то на сервера к китайцам, а уже оттуда обратно к нашему шлюзу, который уже передает его на «умный выключатель».
Все правила автоматизации (например, при срабатывании датчика протечки — перекрыть кран и отключить котел) также храняться где-то далеко, а шлюз тупо получает инструкции.
Помимо (не всегда критичных, но дико раздражающих) задержек, а также необходимости делиться всеми данными с китайцами, это приводит к одному очень неприятному моменту: Если отвалился интернет — никакая автоматизация работать не будет. Равно как если Хлаоми решит, что сервис пора сворачивать, чтобы освободить рынок для «датчиков нового поколения», то все устройства и правила ВНЕЗАПНО превратяться в тыкву бесполезные куски железа и пластика. Эпичные случаи уже были.
Сервер автоматизации (HomeAssistant)
От этого мы никак не отвертимся. Если мы хотим автономности, то сервер автоматизации нам придется устанавливать. На самом деле HomeAssistant (hass) не единственный выбор, но я на нем остановился как на самом адекватном. Это выбор любого красногразого, для которого поднять свой серверочек — задача на один вечер под чай с печеньками. Приводить полностью процесс настройки не буду, он отлично документирован.
По сути это решение заменяет официальные сервера и наш хаб взаимодействует с ним. К слову, hass поддерживает не только Aqara, но и еще целую кучу разных систем, включая самоделки на esp8266 с mqtt. В плане ресурсов он не слишком прожорлив и отлично крутиться на Raspberry Pi (есть готовая прошивка), Odroid-X2 (мой случай) или вообще ТВ-стике на Android. В моем случае потребление платы, на которой был развернут сервер hass составило где-то 2-3 ватта по замерам.
Вариант 1: Используем родной шлюз от Xiaomi
В случае Xiaomi Aqara, заставить работать хаб с Home Assistant не очень тривиально, и требует хитрых шаманств в приложении. Описание процедуры в вики HomeAssistant ведет на страничку в документации к domoticz. Суть сводится к следующему:
- Включаем режим разработчика для шлюза в приложении от Хлаоми
- У шлюза становится доступен REST API, который может и будет пинать HomeAssistant
- Переписываем код доступа к API из приложения в конфигурационный файл hass
- (опционально) перекрываем доступ в интернет для шлюза на роутере, ибо нефиг шпионить за нами
Полностью дублировать описание не буду, перейдем сразу к настройке роутера (OpenWRT). Главное, не забываем перезагрузить Aqara шлюз или сам роутер, так как добавление этого правила не разорвет уже установленное соединение
Заходим в Network->Firewall->Traffic Rules и добавляем новое правило. Так как дача у меня соединена через VPN с домом и он же является единственным каналом в интернет, то внешней фаерволл зоной у меня является VPN (У большинства тут будет WAN).
И редактируем. Как source mac выбираем lumi-gateway-блабла (это и есть наш шлюз), а в поле Action ставим Reject.
Сохраняем, применяем, перезагружаем Aqara, и проверяем что приложение более не может подключиться к шлюзу. В итоге наша сеть и автоматизация стала выглядеть так:
Минус у такого решения только один — управление через API хаба Xiaomi доступны/полны не для всех устройств. Из того, с чем я столкнулся:
- От умных розеток в hass не поступала информация о расходуемой энергии и текущем токе потребления. Это исправили в последнем обновлении прошивки хаба.
- E27 Aqara лампочками нельзя управлять через API в принципе. Ждем следующего обновления.
Вариант 2: Используем мост Zigbee<—>MQTT
Если мы совсем не хотим использовать шлюз Xiaomi, то мы можем использовать usb<—>zigbee адаптер и мост с ZigBee<—>MQTT. К плюсам стоит отнести то, что помимо датчиков от Aqara можно использовать еще целый рой разнообразных ZigBee датчиков от других производителей из других экосистем умного дома. И эта прошивка не будет пытаться слить Ваши данные китайцам. До кучи для этого решения доступны средства визуализации ZigBee сети, что может пригодится. Также поддерживаются некоторые устройства (типа все тех же многострадальных ZigBee лампочек), через которыми нельзя управлять через API родного шлюза хлаоми.
К минусам, то что придется добывать отладочную плату от Texas Instruments, прошивать ее особой прошивкой (И еще искать где-то либо фирменный CC Debugger для прошивки, либо пытаться использовать ардуину для этой задачи, благо есть готовая реализация). Это все резко поднимает градус красноглазия на порядок. Еще один минус — обновлять прошивку самих датчиков через такую штуку просто так не выйдет, по крайней мере с ходу такого я не нашел.
Так или иначе, этот путь я пока не проделывал сам, только знаю что он есть, потому просто оставлю ссылки:
«Но мне нечего скрывать!?» или минутка паранойи
Собственно, о поводах для небольшой здоровой паранойи я решил написать отдельно. Учитывая современные реалии, можно с уверенностью спекулировать, что собранные данные могут и будут продаваться при любом удобном случае как минимум рекламщикам и банкирам, а на огромном массиве данных будут обучаться нейросети. Спецслужбы, судя по новостям, тоже хотят себе доступ к этим данным.
С одной стороны, возможно, мы скоро узнаем много нового в профильных журналах по психологии, ибо простор для изучения поведения человека в естественной среде обитания это предоставляет просто колоссальный. С другой стороны, невольно вспоминается Оруэлл и 1984, ибо вообще не ясно, каких демонов эта всеобщая добровольная слежка выпустит в этот мир.
На закуску приведу пачку страшных ссылок, из последних новостей. Если что упустил, пишите в комментариях.