Подключение Xiaomi Mijia Bluetooth Thermometer в Home Assistant с помощью ESP32
В экосистеме компании Xiaomi есть датчик температуры и влажности Mijia Hygrothermograph с дисплеем, подключаемый по Bluetooth. Подключить этот датчик в приложение Mi Home можно непосредственно с телефона, либо через BLE шлюз. В качестве BLE шлюзов выступают ночные светильники Mijia Bed Side Lamp первого поколения, камера видеонаблюдения Mijia Smart Home Camera, умная колонка Yeelight Voice Assistant и другие устройства, но проблема в том, что эти шлюзы не позволяют пробрасывать подключенные устройства в альтернативные системы автоматизации.
Подключить такое устройство в Home Assistant возможно через Bluetooth компьютера, на котором установлена система автоматизации (в случае Raspberry Pi), или сделать BLE шлюз на основе платы ESP32 стоимостью ~4$.
На всем известной китайской торговой площадке была заказана плата ESP32. Плата имеет Wi-Fi и Bluetooth интерфейсы, 4 мегабайта памяти, контроллер CP2102 и порт micro-ubs. Наличие контроллера CP2102 позволяет перепрашивать плату подключив ее к компьютеру кабелем micro-usb.

Прошивка платы ESP32
На плату будет залита прошивка, созданная в ESPHome, после чего она будет работать как полноценный BLE шлюз. Программная часть будет установлена на Raspberry Pi, а плата для первоначальной прошивки подключена к малинке кабелем micro-usb.
Для установки программной части подключаемся к Raspberry Pi по SSH. Устанавливаем Python3 т.к. поддержку Python2 обещают в скором времени вырезать.
$ sudo apt install python3-pip $ sudo pip3 install setuptools $ sudo pip3 install esphome $ sudo pip3 install tornado esptool
Т.к. Raspberry Pi оснащена bluetooth модулем, запустим сканер для определения MAC адресов необходимых нам устройств:
$ sudo hcitool lescan LE Scan . 4C:65:A8:DA:02:B1 MJ_HT_V1
После нахождения всех необходимых устройств прерываем работу сканера комбинацией клавиш:
Ctrl+C
Запускаем программное обеспечение ESPHome:
$ esphome config/ dashboard
В браузере открываем страницу:
http://raspberry_ip_address:6052/
Создаем новый проект нажав + в правом нижнем углу. Последовательно заполняем необходимые поля:
- Node Name — Уникальное имя node. Имя вводится латиницей в нижнем регистре, допускаются цифры и символ подчеркивания
- Device Type — Тип устройства, для нашего проекта выбираем NodeMCU-32S
- WiFi & Updates — В соответствующие поля последовательно вводим SSID точки WiFi, с которой будет происходить подключение, пароль для подключения к ней и пароль для OTA сервера обновлений. OTA в последствии позволит обновлять прошивки на устройстве, не подключая к компьютеру
- Finish — Подтверждение создания нового проекта
Для первой прошивки подключаем устройство к малине micro-usb проводом, в выпадающем меню в правом верхнем углу выбираем наше устройство.

Нажимаем кнопку Edit . Первая часть конфигурационного файла будет заполнена информацией, которую мы ввели при создании проекта, далее мы включили BLE tracker для определения Bluetooth устройств, внесли данные о нашем датчике температуры Mijia Hygrothermograph , последние 3 сенсора это Uptime устройства, уровень сигнала Wi-Fi и кнопка перезапуска будущего BLE шлюза. Строчки с WEB сервером на устройстве закомментированы, т.к. он нужен только для отладки и показывает текущие показания сенсоров и Debug log, но для первоначальной настройки его желательно включить, убрав комментарий с двух соответствующих строчек.
Подробнее почитать о поддерживаемых Bluetooth устройствах компании Xiaomi можно на сайте проекта ESPHome.
esphome: name: ble_esp32 platform: ESP32 board: nodemcu-32s wifi: ssid: "MySweetSmartHome" password: "P@$$w.rd" captive_portal: # Enable logging logger: # Enable Home Assistant API api: password: "P@$$w.rd" ota: password: "P@$$w.rd" #web_server: # port: 80 esp32_ble_tracker: sensor: # Mijia bluetooth temperature & humidity sensor - platform: xiaomi_lywsdcgq mac_address: 4C:65:A8:DA:02:B1 temperature: name: mijia_bt_temperature humidity: name: mijia_bt_humidity battery_level: name: mijia_bt_battery_level # Uptime - platform: uptime name: ble_esp32_uptime # Wi-fi signal strength - platform: wifi_signal name: ble_esp32_wifi update_interval: 60s # Restart button switch: - platform: restart name: ble_esp32_Restart
Сохраняем Save и закрываем конфигурацию Close . Проверяем созданный проект Validate , запускаем сборку прошивки и отправку ее на устройство Upload . При прошивке через USB провод, возможно, устройство необходимо будет перевести в режим обслуживания зажав кнопку Boot и не отпуская ее нажать один раз кнопку Reset (En) .
После окончания прошивки устройство подключится к Wi-Fi сети, если был включен Web сервер, то проверить его работу можно открыв в браузере страницу:
http://ble_esp32_ip_address
Узнать полученный адрес устройства в домашней сети можно на маршрутизаторе в разделе DHCP сервер.
Подключение BLE ESP32 шлюза в Home Assistant
В Home Assistant добавляем новую интеграцию Configure -> Integration -> + . В списке находим ESPHome , заполняем IP адрес нашего BLE шлюза, порт по умолчанию 6053 , подтверждаем конфигурацию, в следующем окне вводим пароль, указанный в разделе api в конфигурационном файле устройства.

После подключения заходим в устройства Configuration -> Devices , находим подключенный BLE ESP32 шлюз.

Помимо сенсоров самой платы в списке отображаются сенсоры bluetooth термометра Mijia Hygrothermograph. Теперь их можно добавить на панель Lovelace .

Автоматизация
Следующая автоматизация будет управлять розеткой, к которой подключен увлажнитель воздуха. При падении влажности в помещении ниже 35% розетка будет включаться и при превышении 55% отключаться. В Configuration -> Automation или в automation.yaml добавляем:
- id: 'room_humidity_below_35_percent' alias: Room humidity below 35 percent trigger: - platform: numeric_state entity_id: sensor.mijia_bt_humidity below: '35' condition: [] action: - service: switch.turn_on entity_id: switch.xiaomi_socket_room_humidifier_switch data: <> mode: single - id: 'room_humidity_above_55_percent' alias: Room humidity above 55 percent trigger: - platform: numeric_state entity_id: sensor.mijia_bt_humidity above: '55' condition: [] action: - service: switch.turn_off entity_id: switch.xiaomi_socket_room_humidifier_switch data: <> mode: single
Следующая автоматизация будет уведомлять о низком заряде батареи в устройстве.
- id: 'mijia_ble_term_low_batt' alias: Mijia BLE termometr low battery trigger: - platform: numeric_state entity_id: sensor.mijia_bt_battery_level below: '15' condition: [] action: - service: notify.persistent_notification data: title: ⚠ - Battery low message: Mijia BLE termometr battery below 15 percent - service: telegram_bot.send_message data: message: Mijia BLE termometr battery below 15 percent mode: single
Итог
Используя плату NodeMCU-32S и программное обеспечение проекта ESPHome, мы получили полноценный BLE шлюз, подключили к нему градусник Mijia Hygrothermograph, прокинули его в Home Assistant и задействовали его в домашних автоматизациях.
К минусам данного решения можно отнести только то, что при подключении нового Bluetooth устройства необходимо добавлять его в конфигурационный файл и заново прошивать устройство.
К плюсам относится, что плата может работать автономно, достаточно только питания 5V через micro-usb провод, последующие прошивки можно производить, не подключая устройство к компьютеру.
Xiaomi Mi Thermometer 2 не только Bluetooth, но и ZigBee

Многим пользователям умного дома известен квадратный датчик температуры и влажности от Xiaomi LYWSD03MMC. Его очевидные плюсы — это LCD экран, подключение к системе умного дома MiHome и конечно же цена. Его без преувеличения можно назвать если не самым, то точно одним из самых дешевых «умных» датчиков, которые имеют интерфесы для подключения к умному дому. В данном случае это популярный bluetooth, который позволяет подключиться к датчику со смартфона и увидеть показания. Поэтому он завоевал своё место в сердцах строителей умных домов как дешевое и надёжное беспроводное решение.
Однако, датчик помимо своих достоинств не был лишён и недостатков. Нерегулярные отправки данных в эфир, требование ключа для расшифровки, а также сложности в подключении к открытым системам управления умным домом, таким как HomeAssistant, OpenHab, и т.д. Возможно эти причины привели к созданию пользовательской прошивки https://github.com/atc1441/ATC_MiThermometer/, и затем её доработаной версии https://github.com/pvvx/ATC_MiThermometer/ которая существенно расширяла исходные возможности, такие как отправка нешифрованных пакетов в сеть, что позволяло подключать датчик без дополнительных усилий, настройка регулярности отправки данных в эфир, различные другие регулировки. Это ещё больше повысило популярность данного датчика.
Но у bluetooth на сегодняшний день есть достаточно неприятные ограничения в использовании в открытых системах умного дома. Датчики и управляемые устройства даже в рамках протокола bluetooth целиком ограничены экосистемой отдельного производителя. Если вы купили шлюз Xiaomi, вы не сможете подключить к нему датчики Tuya. Чайник Redmond не будет работать ни с чем, кроме своего родного шлюза. Или же как вариант использовать вместо шлюза смартфон с десятком приложений — по одному на каждый бренд — и ни о какой интеграции в единую систему речи уже не может идти. (Тут я могу порекламировать мою утилиту ble2mqtt для работы с некоторыми устройствами разных производителей, в т.ч. требующих подключения, и управлением по MQTT. Но в нём список поддерживаемых устройств ограничен и каждое новое устройство — это новое изобретение вендора). Частично эта проблема решается отдельными интеграциями для каждого отдельного бренда в Home Assistant, но ситуация далека от идеала.
Тут на помощь может прийти сеть ZigBee, которая стандартизует не только физический уровень взаимодействия, но и работу всей сети целиком. А также стандартизует атрибуты устройств так, что датчик протечки любого производителя на уровне сети выглядит одинаково. (Тут надо сделать замечание, что ряд производителей отступает от этого правила, но это всё ещё не мешает держать и управлять всеми zigbee устройствами в одной сети с помощью централизованного механизма). Для управления сетью обычно используется отличный проект zigbee2mqtt или же встроенные в умный дом системы управления. Например, в Home Assistant есть возможность использовать как встроенный компонент Zigbee Home Automation , так и выше упомянутый zigbee2mqtt или HOMEd Zigbee с помощью компонента MQTT.

Как же подружить bluetooth датчик из заголовка статьи с зигби сетью? Оказалось, что производитель чипов Telink предоставляет для своих изделий SDK под ряд популярных протоколов. Bluetooth, Bluetooth Mesh, Telink Mesh (не слишком популярный), а также Zigbee. Это значит, что микроконтроллер поддерживает работу с ZigBee, осталось только его научить. Сказано-сделано. Результатом проведённой работы стал репозиторий https://github.com/devbis/z03mmc/ где лежит исходный код, бинарные сборки в релизах, а также инструкция по прошивке. Поддерживается как конвертация по воздуху используя наработки проекта atc1441/pvvx, так и с помощью проводов и UART-USB адаптера, также с помощью скрипта из вышеупомянутых проектов. Дополнительно, в репозитории лежит конвертор для подключения устройства в zigbee2mqtt. За счёт полного соблюдения стандартов, в ZHA он залетит без дополнительных усилий.

Что в итоге? Мы получаем возможно самый дешевый зигби датчик на рынке, да и ещё с экраном в придачу, который отвечает всем стандартам сети ZigBee. Помимо этого за счёт открытости прошивки и исследованности платы, открывается простор для аппаратных доработок датчика. Например, уже есть варианты для блютус прошивки, где используется геркон, что с программной доработкой позволит сделать датчик открытия, или протечки. Или наоборот, управлять контактом реле (с дополнительным питанием).
А что если попробовал, но прошивка не понравилась? Всегда существует возможность отката на любую другую прошивку припаявшись проводами к тестпоинтам, используя утилиту TLSR825xComFlasher.py. Можно прошивать как оригинальную прошивку, так и любую пользовательскую.
Что дальше? Я планирую добавить регулировку отображения в Фаренгейтах. Также аналогичные микроконтроллеры стоят в некоторых других датчиках, что возможно сподвигнет кого-то доделать прошивку для работы с другими устройствами со схожим функционалом.
- Пользовательская прошивка для работы с Bluetooth
- Телеграм чат разработчиков прошивок для устройств зигби
Как подключить блютуз термометр через шлюз
You are using an outdated browser. Please upgrade your browser to improve your experience.
Пн — Пт
10.00 — 20.00
Свяжитесь с нами
Войти Регистрация
- Forgot your password?
- Forgot your username?
Ваша корзина пуста
- Security-Club.ru >
- Статьи >
- articles >
- Обзор IP-камеры Xiaomi Aqara Smart Camera G2 Gateway
В этой статье мы поговорим об основных моментах работы датчика температуры и влажности Xiaomi Mi Smart Temperature Humidity Sensor. Прокомментируем основные характеристики его работы и поможем установить этот датчик. Мы также дадим вам несколько важных рекомендаций по эксплуатации этого умного термометра и расскажем о некоторых нюансах взаимодействия его с другими устройствами умного дома от Xiaomi.
Какое предназначение Xiaomi Mi Smart Temperature Humidity Sensor?

Если вы решились сделать свой дом технологичным, то вам обязательно необходим датчик температуры. Именно он позволит запустить нужные сценарии , когда температура выйдет за заданные пределы . Именно он даст команду в ЦУ (центр управления) или как его еще называют шлюз , который, в свою очередь, включит или выключит обогреватель , запустит работу увлажнителя воздуха . Это особенно важно для людей, в доме которых находятся дети . Слишком сухая или влажная среда может служить причиной различных легочных заболеваний.
По привычке многие люди пользуются настенными термометрами, периодически узнавая об изменении температуры и влажности и включая нужные приборы вручную, но это уже “прошлый век”. Гораздо более эффективно отдать эту рутинную работу на откуп умным приборам и насладиться результатом.
Можно ли подключить датчик температуры и влажности напрямую к смартфону?

К сожалению, вы не можете подключить ни одно ZigBee устройство к вашему смартфону напрямую. Как и все девайсы Сяоми, датчик температуры и влажности не может передавать информацию на ваш смартфон непосредственно. Ему необходимо промежуточное умное устройство (один из четырех имеющихся на данный момент шлюзов), подсоединяющееся к вашему Wi-Fi роутеру.
Как мы уже говорили, датчики, камеры или другие ZigBee устройства, передают информацию в шлюз Gateway 2 или какой-то другой шлюз от Xiaomi (на сегодняшний день компания Xiaomi выпустила 5 разных шлюзов) по энергосберегающему протоколу ZigBee.
Шлюз, в свою очередь, подключается к Wi-Fi роутеру. Наличие роутера является обязательным условием подключения шлюза. Затем, через приложение MiHome информация идёт в Китай.
Затем она возвращается к вам в смартфон и идёт на исполнение вашей команды. Если вы находитесь вне зоны покрытия роутера, то соединение происходит по интернету через вашу Sim карту или другой Wi-Fi источник. Это позволяет контролировать ситуацию из любой точки планеты.
Что будет, если китайские сервера сломаются?
Устройства вашего умного дома перестанут реагировать на ваши команды: включить-выключить технику, но сценарии по прежнему будут работать , т.к. они хранятся в памяти устройств.
Внешний вид датчика температуры и влажности Xiaomi

Термометр имеет привлекательный дизайн. Это устройство круглой формы (3.5 см) с отверстием для воздуха и кнопкой для сопряжения с ЦУ (центром управления) или как его еще называют шлюзом . Имеется синий индикатор, который облегчит процесс сопряжения.
Термометр работает от батарейки CR2032, которая просто меняется. Вы проворачиваете заднюю крышку и она открывается.
А что умеет датчик температуры от Xiaomi?

Очень удобно — посмотреть температуру в доме, находясь за 1000 километров от него.
К сожалению, это не решит проблему, скажем, при влажности в вашей комнате 25 %. Здесь нужен увлажнитель , который может быть включен удалённо и только через сценарии, которые вы сами задаёте в вашем смартфоне.
Хотя если вы имеете умные розетки от Xiaomi вы можете включить обогреватель или увлажнитель вкручную . Но зачем тратить на это время и постоянно мониторить температуру и влажность, когда все это могут делать ваши сценарии?

Итак, в приложении MiHome в несколько кликов вы пишете нужных для вас сценарий с заданными параметрами нижних и верхних границ температуры и влажности и программа делает все за вас.
Это очень удобно, особенно, если в комнате находятся спящие дети. Температура за ночь может существенно повышаться или понижаться, и только умный термометр может в нужный момент забить тревогу.
Mi Home не подключается датчик к шлюзу
Последнее время очень часто в комментариях пишут, что не могут подключить устройство к шлюзу. Якобы он не совместим и продолжить добавление ZigBee устройства не получается.

Это ограничение по большей части затрагивает российский регион и шлюзы DGNWG05LM из европейского набора и Gateway 3, видимо производитель пытается заставить приобрести евроверсию шлюза Aqara, который заметно дороже. Или это попытка перетащить всех в официальное приложение Aqara Home.
Эти ограничения работают на уровне самого приложения, и для некоторых устройств легко обходится прямым подключением. Возьмем для примера датчик протечки и шлюз Gateway 3 (который независимо от версии может без проблем подключиться и в российском и в китайском регионе). Если верить приложению, то они несовместимы:

Но это без проблем можно обойти за 30 секунд. Порядок действий такой:
1. Быстро нажимаем кнопку на шлюзе 3 раза, чтобы индикатор начал мигать розовым цветом.
2. Зажимаем кнопку датчика, до того как индикация моргнет 3 раза синим цветом.
3. Шлюз издает несколько звуковых сигналов, уведомляя об успешном подключении.
Записал небольшой ролик с инструкцией:
После этих манипуляций water sensor отображается в разделе дочерних устройств шлюза и полноценно работает.

Но решение не универсальное. Обратите внимание, что некоторые устройства без картинки, это указывает на несовместимость устройства и региона. Датчик дыма, газа, электрокарнизы и почему-то беспроводные кнопки Aqara (WXKG11LM и WXKG12LM) работать не хотят. Т.е. к шлюзу они подключаются без проблем, но вот в приложении уже есть ограничение и пользоваться ими не получится. Если используете Android, можно просто установить модифицированное приложение от товарища Vevs, там эти ограничения отключены.
Если используете iOS или хотите использовать оригинальное приложение, перед покупкой проверьте наличие устройства в общем списке. Возьмем к примеру выключатели Aqara D1. В разделе добавления устройства ищем раздел «Переключить» и смотрим доступные устройства:

В списке есть только выключатели из первой линейки (и только версия без нулевой линии), а значит 99% версия D1 работать не будет. Но с другой стороны, после добавления напрямую к шлюзу, они пробросились в Алису от Яндекса и отлично там управлялись.
По моему опыту, лучше использовать китайский регион как основной. Во-первых, туда можно добавить большинство устройств Xiaomi, да и практически все новинки выходят с поддержкой Китая. Есть конечно исключения, может помните историю с мойками воздуха SmartMi, когда производитель заблокировал китайские версии, используемые вне Китая. Конечно обходные пути решения найти удалось, но осадочек остался. Во-вторых, там больше функциональных возможностей. Например можно использовать NFC метки, которые пригодятся в некоторых сценариях. Многие утверждают, что российский регион работает быстрее, но сколько не проверял, сильной разницы не заметил.
Купить именно китайские версии можно на Aliexpress и в магазине FoxPox.ru.
Если Вам требуется убедиться в совместимости определенного устройства, можете написать в комментариях. Если все необходимое будет у меня на руках – обязательно проверю.
А на этом все, благодарю за внимание!
