Компания Xiaomi постепенно отказывается от технологии ZigBee в своих новых датчиках для Умного Дома. Все больше и больше девайсов появляются на технологии Bluetooth — новой для построения Умных Домов. Сердцем такой системы является Bluetooth шлюз. Об особенностях этой технологии и поговорим в данной статье.
Главным отличием протокола связи Bluetooth в отличие от Зигби является принцип подключения датчиков и взаимодействия с шлюзом. В случае старого доброго ZigBee все дочерние устройства (датчики, выключатели ит.д.) подключаются непосредственно к конкретному шлюзу, даже если их у вас несколько.
А в технологии Bluetooth — датчики просто (в случае срабатывания или через определенные интервалы времени) шлют сообщения с данными в эфир всем доступным Bluetooth шлюзам, и если последние находятся в радиусе действия они их принимают и отправляют в облако.
Xiaomi судя по всему заблаговременно начали готовиться к переходу на технологию связи по Bluetooth для своей экосистемы MiHome поскольку уже несколько лет назад они начали оснащать многие свои гаджеты BLE шлюзами.
XIAOMI ЧАСЫ на ЧЕРНИЛАХ с ТЕРМОМЕТРОМ, ГИГРОМЕТРОМ и BLE нового поколения
Так например, такие шлюзы встроены в популярный увлажнитель воздуха Smarmi 2, настольную лампу Bedside и даже в робота пылесос Xiaomi Vacuum Cleaner G1. Правда производитель запретил в приложении работу нестандартных блютуз шлюзов в регионах где они официально не поддерживаются, но эту проблему можно легко обойти на модифицированном MiHome читайте далее в статье.
Какой блютуз шлюз купить?
Несмотря на то, что блютуз шлюзы есть во многих устройствам Xiaomi, наиболее рационально будет именно покупка, специализированного девайса, — на данный момент это Xiaomi Gateway 3. Который обладает поддержкой всех протоколов используемых в Умном Доме Xiaomi Mihome — ZigBee 3.0, Bluetooth и Bluetooth Mesh.
Касательно последних 2-х стоит понимать что это две разные технологии, если ble — это пассивное отправление данных с датчиков в эфир, то ble mesh создает активную сеть, через которую гаджетами можно будет управлять, например выключателями или светильниками, а не только принимать от них данные.
Нестандартные BLE шлюзы
Это как раз bluetooth шлюзы которые находятся в устройствах выполняющих другую функцию — например увлажнитель воздуха, но и попутно могут принимать данные от bluetooth датчиков, например к такому шлюзу вы сможете подключить датчик температуры и влажности Mijia Bluetooth Hygrothermograph 2 не покупая специализированный Gateway 3.
Правда у такого решения будет недостаток в том, что нестандартные шлюзы отправляют данные в облако не мгновенно, а по прошествии определённого времени, обычно раз в 10 минут. Поэтому полагаться на них в критичных автоматизациях не самое правильно решение.
Активация нестандартных Bluetooth шлюзов
Поскольку Xiaomi ограничила возможность применения нестандартных BLE шлюзов в «неродных» для девайса регионах, то на оригинальном MiHome из Play Market или AppStore вы не сможете ими воспользоваться. К счастью, энтузиасты из проекта kapiba.ru вернули возможность включения их на уровне приложения. Чтобы активировать нестандартные шлюзы, вам понадобится смартфон на Android и установленный MiHome Vevs. Далее по шагам.
1 Заходим в Профиль — Экспериментальное.
2 Включаем пункт — Нестандартные BLE шлюзы.
После этого даже на не родных для устройств регионах, например для Китайского увлажнителя Smarmi 2 подключенного на регион Россия, появится возможность подключения к нему блютуз датчиков или других девайсов.
Источник: rumihome.ru
Протокол Bluetooth Low Energy: поддержка устройствами и специфика работы
Способов трансляции данных «по воздуху» создано и используется довольно много. Популярностью обзавелся протокол BLE, который внедрен в электронику различного типа и успешно используется и по сей день. Что из себя представляет данный протокол и в каких сферах применим — рассмотрено в этой статье.
Зачем разработали BLE
После изучения и успешного применения передачи информации без проводов, появилась потребность передавать данные, используя устройства с автономными источниками питания. Проблема состоит в том, что с этим устройством должно работать еще одно, которое постоянно передает данные либо слушает эфир.
Если у приемника и передатчика имеется батарейное питание, то наблюдаются проблемы со связью при разрыве постоянной передачи связи для экономии энергии, которые решили с новым протоколом передачи данных BlueTooth Low Energy (BLE).
BLE – это режим низкого энергопотребления, способствующий экономии заряда аккумулятора у сопряженных устройств.
Протокол стал частью Bluetooth 4.0. Операционная система Android поддерживает BLE с версии 4.3. В качестве пары, работающей с BLE, берется телефон с современной ОС, совместно с батарейной малой техникой (например, гарнитура). Но не исключены и взаимодействия иных гаджетов.
Чтобы принимать и передавать данные в необходимом объеме беспроводным способом, в стандарт Bluetooth LE включена скорость передачи информации, равная 1 Мбит/сек. Постоянный обмен данными затрачивает энергию, тем самым расходуя ее запасы. Поэтому протокол подразумевает разрыв постоянного эфира для экономии. Поэтому в протоколе не только важна скорость, а и то, что гаджеты умеют синхронизироваться друг с другом тогда, когда это необходимо.
Около 99% всего времени гаджеты спят и экономят энергию. Потом просыпаются на короткий период для обмена данными и снова засыпают. Но чтобы пребывать в данном режиме, устройства сперва между собой необходимо синхронизировать. Этот режим и называется advertising.
В каких сферах применяется
Протокол BLE используется по сценарию: редко передавать данные и обрабатывать долгое время. В частности, возможно использование двухрежимных гаджетов BLE в смартфонах, планшетных ПК, ноутбуках. Однорежимные могут использоваться во множестве сфер деятельности. Под эти сферы попадают устройства из разделов здоровья, автоматизации, анализа, управления.
Множество задач могут решаться, когда в радиусе двухуровневого модуля определяются иные одноуровневые BLE-приборы. К этим приборам относятся приборы-сигнализаторы, что уведомляют владельца об удалении от сумки, барсетки, кошелька, переносной тары и иных персональных вещей, оснащенных BLE-модулем. Отличное применение данным брелкам с BLE находят в качестве маячков для ребенка, чтобы не потерять его в достаточно людных местах.
Устойчивая работа и низкое энергопотребление протокола BLE позволяют рассматривать его в качестве замены NFC, а именно RFID-меток. Но вариант совмещенной работы BLE + NFC выглядит более привлекательно. BLE дает большой радиус, сопряженный с устойчивой работой, второй отвечает за логическое сопряжение пары, плюс обеспечивает надежную защиту за счет малого радиуса действия.
Не обходят стороной данную спецификацию в системах умных домов. Работа приборов через блютуз с низким энергопотреблением позволяет открывать удаленно двери, ворота и приводить в действие прочие механизмы с большого расстояния, подолгу не меняя аккумулятор в беспроводном и компактном органе управления.
Кроме того, внедрение в смартфон, который всегда под рукой, BLE-модуля позволит на приличном удалении через сопряженные каналы управлять любыми приборами и аксессуарами умного дома. Или подключаться к сенсорной панели для удаленного управления с другой комнаты.
Поддерживаемые устройства
Протокол BLE содержится в модулях со встроенным программным обеспечением. Модулями оснащаются конечные устройства. В качестве модулей можно выделить:
- BT111 – создан для приложений, где нужна работа со стандартными протоколами Bluetooth и BLE.
- BLE112 – однорежимный BLE-модуль для сенсорных систем и прочих аксессуаров с батарейным питанием.
- USB BLED112 – аналогичный однорежимный BLE-модуль со всеми свойствами BLE112, но выполнен в форм факторе USB-флешки.
- Спортивные аксессуары по типу шагомеров, пульсометров, ритмометров, которые имеют форму часов для руки или браслета.
- Различные сенсоры для определения движения, температуры, влажности.
- Системы чтения и отображения информации с автономным источником питания.
- Бытовая медтехника по типу измерителей глюкозы, тонометров, температурных измерителей.
- Гаджеты для удаленного вызова, по типу радио-няня.
- Приборы бытовой электроники, по типу беспроводной периферии (клавиатуры, мышки), панелей и пультов.
- Устройства для автоматизации в жилом доме по типу шлюзов между соединенной к Smart House сенсорной сетью и смартфонами с Блютуз.
- Устройства безопасности, по типу тревожных кнопок, бесконтактных ключей и прочее.
Определение поддержки
- BLE Checker.
- LightBlue.
- Bluetooth LE Scanner.
Множество таких «определителей» находится в Play Market и доступны для использования бесплатно. Модели телефонов, выпущенные до 2015 года включительно, могут не поддерживать данную опцию.
Вопросы безопасности BLE
Защита канала передачи данных между парой устройств в протоколе BLE обусловлена двумя режимами LE Секьюрити мод 1 и LE Секьюрити мод 2. Первый режим работает на Data Link layer (DLL), второй на ATT -уровне к PDU плюсуется двенадцати байтная сигнатура.
Режимы безопасности включают в себя несколько уровней, используемых в зависимости от типа соединения.
- Первый – на канальном уровне два модуля обмениваются информацией о доступных возможностях ввода-вывода, а после принимают решение, по какому из обнаруженных произойдет взаимодействие.
- Второй – создание ключа для третьего этапа, который называется «временный ключ краткосрочного значения». Он послужит для надежной передачи данных о временном ключе. Ключ может быть передан тремя способами: с использованием альтернативного канала NFC, с введением шестизначного кода, вводимого пользователем, или без проверки аутентификации, если первый и второй способ организовать невозможно.
- Третий – конечные точки соединения обмениваются тремя 128 битными ключами и, если нарушений не замечено, пара успешно синхронизируется.
Источник: future2day.ru
BLE шлюз из Xiaomi Gateway DGNWG05LM *без BLE
В этом посте я расскажу как можно собирать данные BLE и передавать через MQTT в системы умного дома, например в HomeAssistant.
Как все начиналось?
Эта история началась в прошлом году: у меня появился несколько таких шлюзов. В то время было несколько статей по получению root доступа, интеграции miio в HA и по прошивке чистого openwrt на шлюз. Толчком к развитию стал сезон распродаж в разных магазинах, где стоимость шлюза стремилась к нулю , и многие энтузиасты получили интересную железку.
Было обнаружено, что в wifi модуле rtl8723bs европейской версии шлюза есть встроенный bluetooth с поддержкой BLE.
Bluetooth инициализируется через rtk_hciattach при запуске шлюза. После загрузки мы получаем такую картину hciconfig
Я знаю 2 пути, как можно включить bluetooth адаптер.
- Руками hciconfig hci0 up
- изменив параметр AutoEnable конфиге /etc/bluetooth/main.conf на true
Я выбираю второй. Интерфейс запущен. Для проверки можно запустить скан hcitool lescan
Работа с BLE
Мои знания по BLE были на нуле, и чтобы было проще разобраться я искал что-то готовое по типу zigbee2mqtt. Перепробовал несколько решений на Node.Js, в том числе пакеты для node-red. Остановился на проекте EspruinoHub. (хоть и код там не супер современен и технологичен, но зато работает)
После запуска с отсылкой данных в локальный mqtt сервер, в CLI и web интерфейсе уже показались распарсенные данные с части датчиков LYWSDCGQ (круглые гигротермографы) .
Это меня порадовало, но у меня было еще несколько устройств, данные от которых я увидел почти в raw виде. И я решил использовать эту программу и немного улучшить ее.
Многие устройства Xiaomi с bluetooth шлет BLE Advertising Packet, в большинстве случаев в нем содержится полезная нагрузка в виде измерений, которые производит устройство. Часто данные отправляются открыто, но используется шифрование с ключом.
Например для браслета MiBand данные выглядят вот так. Если есть данные о пульсе то они добавляются в конец
В устройствах xiaomi, часто используется BLE сервис fe95. В интернете есть небольшая документация по нему .На github есть множество проектов которые умеют парсить эти данные. На основе этих данных и существующей реализации espruino я немного улучшил парсинг открытых данных, но потом я нашел более красивое решение из hannseman/homebridge-mi-hygrothermograph. Мне особенно понравилась стандартизация разных событий и расшифровка исходя из данных заголовка.
Этот парсер закрыл вопрос с большинством устройств Xiaomi, отправляющих данные в fe95. Можно еще попробовать добавить некоторые типы событий (движение, дым, нажатие на кнопку), но у меня нет таких устройств под рукой.
Я добавил в EspruinoHub данный парсер, и реализовал возможность указать настройки для разных устройств. Это необходимо для устройств, которые шифруют с помощью bindKey свои пакеты. Получить bindKey можно из miHome.
MQTT Discovery — Home Assistant
Данных стало больше, но хотелось чтобы они автоматически появлялись в HomeAssistant. EspruinoHub отправляет данные которые и слышит в эфире, и не имеет на данный момент привязки к конкретным устройствам. Поэтому в момент появления данных, если они из списка поддерживаемых отправляется config устройства в топик homeassistant в mqtt и устройства появляются в системе умного дома
Добавленные и протестированные устройства.
В результате изучения разных решений и raw сообщений от устройств удалось добавить или улучшить интеграцию следующих устройств в пассивном режиме (только слушаем эфир не подключаемся к устройствам и не тратим батарейку).
LYWSDCGQ — работал «из коробки». Добавил только mqtt discovery в HA
LYWSD02 — температура, влажность и батарейка
Самый бюджетный датчик температуры и влажности с экраном LYWSD03MMC — температура, влажность и батарейка (нужен bindKey). Существует 2 альтернативные прошивки, они очень крутые и продвинутые. Особенно от Виктора pvvx. Рекомендую использовать именно ее. Помимо лучшего потребления она шлет данные в одном пакете, а не в трёх и имеет множество настроек.
MI SCALE — 181d v1 По крупицам из разных источников допилена реализация в которой показываются данные о — стабилизации веса (весы моргают) — убрали вес (встали с весов) — дата и время измерения. 181b v2 Работает, но не тестировал лично. Возможно нужно что-то допилить
Mi band 3 fee0 Шаги и Пульс в режиме тренировки. Чтобы браслет отправлял данные необходимо включить обнаружение в MiFit.
Как оказалось шлюз очень хорошо и далеко слышит, а эта функция включена у многих людей. Работает это и для других моделей и даже на некоторых часах например Amazfit GTS
HHCCJCY01 MiFlora, Huahuacaocao — temperature, moisture, illuminance, conductivity, battery_level
Другие устройства тоже можно попробовать подключить. Если они шлют в кодированном виде, то в mqtt об этом будет ошибка с просьбой указать bindKey в конфиг.
YEERC — я обнаружил что прошивка для esp32 tasmota сообщает, что поддерживает данный пульт. Он идет в комплекте с многими люстрами YEELIGHT, но к сожалению у меня не получилось нигде найти как получить 32 символьный bindKey для него. Сообщения нажатий я вижу, но не могу расшифровать. (Значение event закодировано и зависит от counter который увеличивается с каждым нажатием) Возможно кто-то из читателей подскажет как добыть данный ключик. Пульт можно привязать к нескольким люстрам в разное время и они будут вместе расшифровывать и отрабатывать нажатия. Скорей всего ключ там не изменяется со временем или привязкой.
Как установить EspruinoHub на шлюз Xiaomi с OpenWrt ?
Можно установить и на другие устройства с помощью git / npm, инструкция на странице проекта EspruinoHub
Установка
Мои последние наработки собраны в пакет и ставятся с помощью opkg
Дальше установить собранный пакет.
opkg update opkg install node-espruinohub
Конфигурирование
По-умолчанию он будет пытаться подключиться к локальному mqtt без авторизации. Если вы хотите подключить к внешнему брокеру mqtt, то нужно изменить конфиг в /etc/espruinohub/config.json
Внимание! у некоторых настроек в начале стоят слеши чтобы они не применялись. (конфиг в этом проекте частично сделан как пример и я не стал ничего менять)
Пример конфига можно посмотреть тут. Если вы знаете мак адреса своих устройств то рекомендую их прописать и установить «only_known_devices»: true , чтобы не отправлялись данные с чужих устройств из эфира.
Для работы с HomeAssistant достаточно отправлять данные в json формате, а остальное можно выключить. По умолчанию будет отправлять в топики с группировкой по типу данных.
«mqtt_format_json»: true, «homeassistant»: true, «mqtt_cache_state»: true
Планы
Отслеживание носимых устройств по rssi между комнатами. Для этого в конфиг я добавил возможность указать минимальный rssi в разрезе устройства и таймаут присутствия.
Активные подключения: хочу попробовать управлять некоторыми устройствами по BLE, но для одновременного подключения и сканирования Bluetooth модуль и ПО могут работать нестабильно. Поэтому я пока только изучаю этот вопрос.
Альтернативные opensource проекты работающие с BLE на шлюзе
- devbis/ble2mqtt — своя реализация на python через bleak, умеет подключаться к чайникам, но сильно грузит процессор.
- Beetle-II/lumi — тот же парсер из hannseman/homebridge-mi-hygrothermograph, но без возможности задать индивидуальный ключ bindKey для устройства. Нет raw данных и управление через mqtt. + Умеет работать не только с BLE.
Спасибо, что дочитали до конца!
Если у Вас есть вопросы, то можете задавать их в комментариях.
- ble
- умный дом
- bluetooth low energy
- xiaomi gateway
- lumi.gateway.mieu01
- DGNWG05LM
- xiaomi mi band
- xiaomi mi flora
- homeassistant
Источник: habr.com