Статья

Xiaomi датчики температуры и влажности Bluetooth в HomeBridge, получение bindKey

В начале года я писал статью "Сравнение датчиков температуры и влажности (Bluetooth)", а сегодня я расскажу, как добавить эти датчики в HomeBridge (по аналогии можно добавить и в Home Assistant).

Первое, что необходимо сделать - это установить плагин Homebridge Mi Hygrothermograph, можно через Web-интерфейс самого бриджа.

Далее необходимо установить библиотеки и их зависимости, необходимые для Noble и обеспечивающие доступ к подсистеме Bluetooth:

sudo apt-get install bluetooth bluez libbluetooth-dev libudev-dev

После чего, нам необходимо получить MAC-адреса наших датчиков, тут можно пойти по одному из двух путей.

  • Посмотреть в приложении Mi Home. Для этого открываем приложение Mi Home, находим наш датчик, в правом верхнем углу три точки, About -> MAC adress.
  • Отсканировать BLE устройства. Открываем терминал нашей малины, пишем команду:

sudo hcitool lescan

Видим перечень всех Bluetooth устройств в зоне видимости нашей Raspberry Pi.

Если после ввода команды sudo hcitool lescan мы видим ошибку, а она возникает из-за того, что интерфейс Bluetooth занят, нам необходимо перезагрузить этот интерфейс.

Делается это командой:

sudo systemctl restart bluetooth

Итак, приступим к добавлению устройств в HomeBridge.

Пойдем по пути от простого к сложному. А простым у нас, как ни странно, является добавление часов LYWSD02MMC.

Часы LYWSD02MMC

Для добавления часов в HomeBridge, нам необходимо всего лишь знать его MAC-адрес. После чего добавляем в конфиг новый аксессуар:

{ "name": "Часы Зал", "address": "E1:1E:11:F1:64:36", "temperatureName": "Часы Температура", "humidityName": "Часы Влажность", "timeout": 15, "accessory": "Hygrotermograph" }

Далее перезагружаем HomeBridge и ждем, пока у устройства обновится температура, это происходит 1 раз в 10 минут.

Датчик LYWSD03MMC

Для добавления Датчика LYWSD03MMC, нам необходим не только MAC-адрес, но и bindKey.

Получение bindKey

Для получение bindKey необходимо проделать следующее.

Первое, что необходимо, - установить приложение Stream на наше iOS устройство. Далее:
Откройте Stream -> HTTPS Sniffing -> CA Install. Затем вы будете перенаправлены в браузер для загрузки профиля VPN. Перейдите в Общие -> Профиль -> Stream Generated CA... -> Установите профиль VPN.
После установки профиля VPN:
Открываем Stream -> HTTPS Sniffing -> нажимаем «CA Installed & Trusted».В настройках телефона: Основные -> Об этом устройстве -> Доверие сертификатам -> Stream Generated CA… в положение включено.

Второе. Открываем Mi Home, логинимся (если это еще не было сделано), обязательно указываем регион материковый Китай.

  • Открываем приложение Stream, нажимаем "Sniff Now". Сразу же переходим в Mi Home, начинаем добавление датчика (процедура добавления стандартная). Дождитесь, пока в плагине отобразится температура и влажность.
  • Возвращаемся в Stream и нажимаем "Stop Sniffing". На все про все у меня тратится чуть больше минуты.
  • Далее нажимаем "Sniff History" и выполняем поиск по ключевому слову "bltbind". Если поиск дал положительный результат, нажимаем "Edit" -> выделяем все файлы и нажимаем "Export HAR". Экспортируем любым привычным способом на свой компьютер.

Третье, уже на компьютере. На сайте Charles Proxy скачиваем свежую версию программы. Запускаем (триал версия на 30 дней).

  • Файл -> открыть наш архив HAR, экспортированный с iOS.
  • Далее в поиске пишем bind_key.

Чтобы не описывать, где и что нужно выбрать, приведу скриншот.

Я вас поздравляю, это было долгое и мучительное получение заветного ключа, но мы это сделали и можем приступать к добавлению датчика в HomeBridge.

Открываем конфиг и добавляем новый аксессуар.

{ "name": "Температура BLE Спальня", "address": "A4:C2:38:17:A6:6C", "temperatureName": "Температура BLE Спальня", "humidityName": "Влажность BLE Спальня", "timeout": 15, "bindKey": "697F650A6599839DF96A68B84D2C1841", "accessory": "Hygrotermograph" }

Для добавление в Home Assistant, добавляем в конфиг:

- platform: mitemp_bt encryptors: 'A4:C1:38:07:A6:6C': '697F650A6599839DF96A68B84D2C1841'

Xiaomi ClearGrass CGD1

Будильник Xiaomi ClearGrass CGD1 добавляется абсолютно так же, как и предыдущее устройство (для добавления необходимо получить bindKey). В приложении Apple HomeKit отображается как датчик температуры/влажности.

Mi Home

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

Небольшая ложка дегтя

Не обошлось и без недостатков. Привязанные датчики в Raspberry Pi не могут создавать BLE Mesh, датчики подключаются напрямую к малине. Поэтому важно, чтобы малинка располагалась в непосредственной близости к датчикам.

Итог

У меня четыре датчика, расположенных в квартире, один из них находится в ванной. Малинка находится на балконе. Вот именно тот датчик, который в ванной, и не достает. В дальнейшем думаю решить проблему внешним Bluetooth - USB свистком. В остальном меня все устраивает, за три месяца не было ни одного сбоя. При этом в Mi Home они продолжают работать и участвовать в автоматизациях.


Датчик LYWSD03MMC добавил, но в доме "этот аксессуар не отвечает". Мак адрес и bindKey верные. 

Возможно дело в Bluetooth на малине? sudo hcitool lescan выдает ошибку, даже после команды по перезагрузке bluetooth. В саму малину воткнут конби2 стик.

у меня после перезагрузки bluetooth, всегда все норм. попробуй поднеси датчик максимально близко.

Не помогает. На https://stackoverflow.com/questions/60668497/hcitool-lescan-set-scan-parameters-failed-input-output-error">стаковерфлоу есть такая же проблема, но без решения.

Абсолютно та же проблема - датчик прокинулся, но пишет, что аксессуар не отвечает. Мак адрес и bindKey проверил уже на 10 раз. Датчик лежит прям рядом с малиной.

Хотя извиняюсь. Перезагрузка Bluetooth со второго раза внезапно помогла. Спасибо большое за туториал!

Напишу тут еще, если перезагрузка БТ не срабатывает через SSH, необходимо остановить HB и уже после ребутнуть.

Что-то у меня после ребута HB вообще всё отвалилось внезапно и рестарт Bluetooth не срабатывает. Выдаёт Set scan parameters failed: Input/output error. Куда копать, не подскажите? 

Подождите 15 минут(или какой апатайм в настройках плагина), должно обновиться.

Спасибо.

Датчик пробросился но не отвечает. И перезагрузку БТ делал и HB нечего не помогает. Причём скан БТ делает он видит датчик. Что ещё можно попробовать?

Также bindkey можно получить с помощью доработанного приложения https://www.kapiba.ru/2017/11/mi-home.html">MiHome

Да можно, я привел один из вариантов. 

https://cleargrass.com/cg_temp_rh_monitor/overview">CGG1 Обнаружился сразу. достаточно только mac

А подскажите где взять приложение Stream? Не могу его в appstore найти.

А подскажите где взять приложение Stream? Не могу его в appstore найти.

А было у кого-то такое, чтобы при попытке запуститься с сенсором mitemp_bt(из hacs) малинка висла?

Что-то они изменили Charles proxy  и уже не получается найти bind_key таким образом.

есть такая проблема. тоже один датчик отвалился. и теперь не могу получить ключ. думаю дело в датчике 

Да у меня их 4 и ни один не находит. Вот этот мануал тоже нифига не работает что-то, не находит девайсы. https://github.com/mKeRix/room-assistant/issues/277">https://github.com/mKeRix/room...

Ребята, просто не понимаю что нужно еще сделать что бы этот мотор завелся! Все перепробовал! Даже тещу мамой назвал и все равно этот датчик не подключается. Пишет что сканирование остановлено, Нужно запускать через Sudo или иметь root . Запускаю вышеупомянутую команду

sudo hcitool lescan

в терминале, все окей сканирует и видит мой датчик. Но как подключиться то к нему?

Использую малину 4 и Hoobs.

Спасибо!!!

Какой ты именно датчик подключаешь ?

Квадратный, который 

LYWSD03MMC

Должен ли датчик быть перепрошитым? или со стоковой прошивкой тоже можно использовать?

а более лёгкого пути нет для добавления блютус устройств?


Вернуться назад

Устройства


Вернуться назад