Данные летят в Китай? Только ты не допускай!
Большинство “умных” устройств всячески стараются затащить вас в свою постель экосистему и держать там как можно дольше. Всякие “умные” лампочки, розетки, камеры предлагают вам зарегистрировать устройство на собственном сервере, чтобы через приложение удобно им управлять.
“Шибко умные!”, — считают продвинутые пользователи, которым не сидится на месте ровно, и всячески пытаются перехватить управление этими устройствами в свои руки. Это отчасти связано с паранойей — “за нами следят”. Им кажется, что “товарищ майор”, либо “хитрый китаец” знают что происходит у них дома, следят за ними через камеру и в любой удобный момент могут отключить свет в туалете, пока они там находятся.
Поэтому, эти пользователи создают “хаки”, прошивки и другие обходные маневры, чтобы остановить слежку и перенаправить “умные” устройства на свой собственный сервер.
Сегодня я поддержу этих пользователей и расскажу как можно отобрать у компании Xiaomi контроль за их датчиками и кнопками, работающими по протоколу Zigbee. Эти датчики и устройства очень популярны среди любителей “этого дела” (домашней автоматизации и “Умных домов”) благодаря своей доступности и внешнему виду.
Пусть в Китай летят журавли, а наши данные останутся при нас.
Узкие места
Стратегически важным “местом утечки данных” считается Zigbee-Wifi-шлюз от Xiaomi, который подключен к сети и может отправлять какие-то данные на внешние сервера. Но это легко исправляется, если на роутере заблокировать внешний доступ этому устройству.
Еще одним “узким местом” является аккаунт в приложении MiHome, где настроено подключение к шлюзу и видны все устройства заведенные в него. Для этого случая уже давно известен способ включения developer-режима на шлюзе и получения управляющего токена. После чего, можно напрямую общаться со шлюзом по сети без приложения MiHome. Именно этим способом пользуются все системы “умного дома”, чтобы работать с датчиками и устройствами Xiaomi.
Но есть и более кардинальный способ — отказ от шлюза Xiaomi и MiHome. Т.е. организация своей собственной Zigbee-сети и подключение датчиков и устройств Xiaomi к ней. Вот об этом чуть более подробно.
Варианты решения
Один из вариантов — использовать иной хаб Zigbee-устройств. Например, Samsung SmartThings, Wink Hub 2, Mixtile Hub или какой-то иной. Но это “менять шило на мыло” и значительного профита никакого — данные как улетали, так и будут улетать, только в другие края.
Второй вариант — спец платы, добавляющие функционал Zigbee нашему серверу “Умного дома”. Это уже более удобный вариант для нашего параноика.
Эти устройства выступают в роли “Координатора” Zigbee-сети (вместо шлюза Xiaomi) и организуют сеть, регистрируют устройства и могут управлять ими. Дополнительно, эти решения позволяют подключать все разнообразные Zigbee-устройства, а не только от Xiaomi.
В Европе есть несколько экземпляров таких устройств.
Dresden Elektronik
Для работы требуют установки специального драйвера и приложения. А для возможности интеграции в систему “Умного дома”, требуется REST-плагин, обрабатывающий http-запросы:
Стоимость ~$35
Zigate
Совмещает в себе Zigbee и Wifi — может работать как шлюз.
Стоимость ~49.00 €
Есть готовые наработки по интеграции в системы “Умного дома”:
А вот у российских пользователей есть надежда на другой вариант, правда не сразу готовый для потребления:
Texas Instruments
cc2531 или платы на базе cc2530
Для работы в качестве координатора Zigbee-сети, необходимо прошить специальную прошивку. После этого возможна интеграция с системами “Умного дома”:
Стоимость ~$10
Основная логика находится не в прошивке, а в модуле интеграции с системой “Умного дома”, который работает с устройством. Поэтому, на текущий момент, еще не все zigbee-устройства Xiaomi через такой шлюз поддерживаются в системах “Умного дома”. Но это дело времени.
Чуть подробнее
Этот последний вариант я решил попробовать на себе.
Началось всё с библиотеки zigbee-shepherd для node.js , именно там я обнаружил упоминания о подключении датчиков xiaomi через zigbee-стик cc2531. Там же есть и прошивка и инструкция по прошивке.
Для прошивки, необходимо присоединить стик через DEBUG-разъем на плате. Это 10 пинов (2*5) с шагом 1.27 мм. Поэтому, можно приобрести отдельно контакты для подключения к такому разъему, либо взять такую плату с кабелем.
Существует как минимум 2 варианта прошить USB-стик cc2531:
- используя специализированные устройства, типа CCDebugger
- используя Arduino-совместимые микроконтроллеры
Приобрести CCDebugger можно например тут, либо чуть иной блок.
Нужно установить прошивальщик и скачать прошивку. Процесс прошивки очень быстрый — несколько секунд. Вот еще один вариант описан.Можно попробовать прошить через Arduino, с использованием проекта , но с небольшими доработками!!! Один из пользователей описал, что смог прошить CC2531 используя CCLib и описал свои замечания.
Этот способ я тоже попробовал — не понравилось. Процесс прошивки длился около 1.5 часа.
После прошивки можно попробовать пример из библиотеки, либо установить проект , работающий на указанной выше библиотеке и попытаться подключить устройства.
Именно так началась разработка драйвера для ioBroker. Не все zigbee-устройства xiaomi подключились сразу — где-то потребовалось доработать библиотеку, но т.к. ее автор пока забросил, то используется отдельный форк с изменениями.
В итоге, удалось подключить все доступные мне устройства и получить все их параметры.
Слева направо: cc2531, cc2530, cc2530+cc2591, cc2530+RFX2401.
Также можно попробовать устройства на базе cc2530 с внешними антеннами — они “бьют” дальше (~50м в пределах прямой видимости), но выглядят чуть хуже и подключаются через UART. Справа устройство с усилителем — оно “бьет” еще дальше, стоит дороже, но толку не больше — сами датчики Xiaomi не могут послать такой же сильный сигнал, поэтому устройство их не слышит на больших расстояниях.
Итого
Для нерешительных параноиков, подготовил сравнительную таблицу плюсов и минусов
Шлюз Xiaomi | cc253x (стик) |
❌ Нужен аккаунт Xiaomi для начальной настройки в MiHome | ✅ Независимость от аккаунта Xiaomi, Китая, наличия интернета |
❌ Работает только с устройствами Xiaomi | ✅ Возможность работы с другими Zigbee-устройствами (не только Xiaomi, уже проверено в IKEA TRÅDFRI bulb и FLOALT panel) |
❌ Ограниченный (~10м) радиус доступности устройств | ✅ Варианты с внешней антенной могут «услышать» устройства на достаточно большом расстоянии (~50м) |
❌ Стоимость ~ $30 | ✅ Стоимость ~ $10 |
✅ Отличный внешний вид | ❌ Голое устройство, с корпусом стоят дороже |
✅ Свободная возможность размещения (там где есть розетка) и доступ по Wifi | ❌ Вставляется в компьютер (или микрокомпьютер/одноплатник/малина) и зависит от его расположения |
✅ Благодаря MiHome может управлять устройствами как со смартфона, так и из сторонней системы «Умного дома» | ❌ Требует спец драйвер (софт), чтобы управлять устройствами из системы «Умного дома». Управление с телефона — только через систему «Умного дома». |
🌀 Сценарии работы устройств настраиваются в MiHome или в системе «Умного дома» | 🌀 Сценарии работы устройств настраиваются в системе «Умного дома» |
✅ Можно использовать встроенную лампу, радио и датчик освещенности. Агрегирует также wifi-устройства Xiaomi | ❌ Нет функций, кроме Zigbee |
✅ Не требует специальной доработки и работает «из коробки» | ❌ Требуется специальная прошивка, без нее не работает. Либо приобрести уже прошитый стик (в личку), но это увеличивает стоимость. |
И если вы всё-таки решитесь избавиться от шлюза Xiaomi — спрашивайте поддержку описанных устройств у своего поставщика системы “Умного дома”.
Comments