Home » SwitchBot Meter Pro CO2 ESPHome Интеграция BLE

SwitchBot Meter Pro CO2 ESPHome Интеграция BLE

от Дерек
0 Комментарии 10 мин на чтение

Несколько месяцев назад я опубликовал подробное руководство по сбор данных рекламы BLE с наружного термометра SwitchBot используя плату ESP32. Процесс включал сбор, декодирование и анализ данных на уровне байтов в ESPHome и преобразование их в функциональные датчики для Home Assistant.

Это подробная и довольно сложная процедура, во многом зависящая от наличия ключевой информации, необходимой для запуска процесса. Если вы хотите глубже погрузиться в технические особенности декодирования BLE, я настоятельно рекомендую прочитать эту статью. Он дает углубленный взгляд на мой мыслительный процесс и проблемы декодирования однобайтовых характеристик — общий подход, используемый SwitchBot и многими другими производителями.

SwitchBot Meter Pro (CO2) добавлен в Home Assistant через ESPHome Избранное изображениеSwitchBot Meter Pro (CO2) добавлен в Home Assistant через ESPHome Избранное изображение

В этой статье я не буду подробно рассматривать весь процесс. Вместо этого я выделю ключевые различия, с которыми я столкнулся при интеграции SwitchBot Meter Pro и SwitchBot Meter Pro (CO2) термометры.

Полный код см. пропустить до конца.

Зачем использовать ESP32 для сбора данных BLE?

В разделе комментариев к последней статье меня несколько раз спрашивали, зачем использовать плату ESP32 для анализа данных, а не просто использовать официальную интеграцию SwitchBot. Для справки: интеграция прекрасно работает, просто используя Bluetooth-модуль вашего сервера или даже ESP32 в качестве Bluetooth-прокси.

Я предпочитаю использовать ESP32 для всего, что связано с Bluetooth, поскольку они в той или иной форме есть повсюду в моем умном доме. Вот несколько ключевых отличий, которые я бы назвал преимуществами по сравнению с использованием встроенных радиомодулей Bluetooth:

  • Расширенный диапазон и надежность: ESP32 можно стратегически разместить ближе к устройствам, обеспечивая более сильный прием сигнала BLE по сравнению с центральной системой со стационарным радиомодемом Bluetooth (например, RPi).
  • Пользовательский анализ и контроль: ESPHome обеспечивает расширенную настройку и прямой анализ байтовых данных BLE, обеспечивая точную обработку неподдерживаемых или заблокированных функций устройства. Кроме того, вы можете настроить настраиваемые интервалы отчетов и окна сканирования Bluetooth, оптимизируя производительность и экономя время автономной работы.
  • Активные и пассивные соединения: С ESP32 вы можете выбирать между активным и пассивным сканированием BLE, обеспечивая большую гибкость, позволяющую сбалансировать скорость реагирования в реальном времени с энергоэффективностью и уменьшать помехи другим устройствам Bluetooth.
  • Централизованный BLE-концентратор: С помощью ESP32 вы можете управлять несколькими устройствами BLE из одного узла, консолидируя связь и уменьшая зависимость от интеграции Bluetooth Home Assistant для различных поставщиков. Например, я могу захватывать пакеты BLE с термометра SwitchBot, датчика температуры Xiaomi или HHCCJCY10 датчик установки на одном узле.
  • Масштабируемость: Несколько устройств ESP32 могут быть развернуты по всему дому для покрытия больших площадей, обеспечивая стабильное покрытие BLE и уменьшая мертвые зоны сигнала. Я просто повторно использую другие устройства на базе ESP32, которые уже использую дома, для сбора данных со случайного устройства. Например, я использую AirGradient’s ONE датчик для сбора данных с датчика температуры в спальне.

Понимание байтов рекламы BLE для SwitchBot Meter Pro и Meter Pro (CO2)

При интеграции SwitchBot Meter Pro и Meter Pro (CO2) с ESPHome крайне важно понимать структуру их рекламных данных BLE. Каждая версия использует определенные байты в рекламном пакете для представления температуры, влажности, уровня заряда батареи и — в модели CO2 — уровня углекислого газа.

Байтовая структура SwitchBot Meter Pro

SwitchBot Meter Pro имеет следующую структуру байтов:

  • Температура: Байты 8 и 9.
    • Младшие 4 бита байта 8 (0x0F) представляют десятичную часть;
    • Старшие 7 бит 9-го байта (0x7F) представляют целую часть числа.
    • Старший бит 9-го байта (0x80) указывает знак (0 = положительный, 1 = отрицательный).
    • Пример: Байт 8 = 0x05 (0,5), Байт 9 = 0x98 (24, положительный), Температура = 24.5°C.
  • Влажность: Байт 10.
    • Младшие 7 бит (0x7F) представляют собой процент влажности.
    • Пример: Байт 10 = 0x64Влажность = 100%.
  • Батарея: Байт 2.
    • Младшие 7 бит (0x7F) представляют процент заряда батареи.
    • Пример: Байт 2 = 0x50Батарея = 80%.
  • Идентификатор служебных данных: Байт 0 (первый байт служебных данных).
    • Указывает тип устройства. Ценить: 0x34 (52).

Байтовая структура SwitchBot Meter Pro (CO2)

SwitchBot Meter Pro (CO2) имеет следующую структуру байтов:

  • Температура: Байты 8 и 9.
    • Младшие 4 бита байта 8 (0x0F) представляют десятичную часть;
    • Старшие 7 бит 9-го байта (0x7F) представляют целую часть числа.
    • Старший бит 9-го байта (0x80) указывает знак (0 = положительный, 1 = отрицательный).
    • Пример: Байт 8 = 0x05 (0,5), Байт 9 = 0x98 (24, положительный), Температура = 24.5°C.
  • Влажность: Байт 10.
    • Младшие 7 бит (0x7F) представляют собой процент влажности.
    • Пример: Байт 10 = 0x64Влажность = 100%.
  • Батарея: Байт 2.
    • Младшие 7 бит (0x7F) представляют процент заряда батареи.
    • Пример: Байт 2 = 0x50Батарея = 80%.
  • СО2: Байты 13 и 14.
    • Комбинируется как 16-битное целое число с обратным порядком байтов. Байт 13 = старший байт, Байт 14 = младший байт.
    • Пример: Байт 13 = 0x03Байт 14 = 0xE8СО2 = (0x03 .
  • Идентификатор служебных данных: Байт 0 (первый байт служебных данных).
    • Указывает тип устройства. Ценить: 0x35 (53).

Прошивка платы ESP32

Для сбора характеристик BLE от SwitchBot Meter Pro и Meter Pro (CO2) подойдет любой ESP32. Недавно я говорил о крошечная плата ESP, которую можно использовать в качестве прокси-сервера Bluetoothкоторый будет служить esp32_ble_tracker для этой цели.

Мой базовый код для этой платы выглядит следующим образом:

esphome:
  name: esp32-c3-super-mini
  friendly_name: ESP32-C3 Super Mini

esp32:
  board: esp32-c3-devkitm-1
  framework:
    type: arduino
    

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "XXXXX"

ota:
  - platform: esphome
    password: "XXXXX"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp32-C3-Super-Mini"
    password: "XXXXX"

captive_portal: 

Вы заметите, что я использую arduino рамки вместо esp-idf. Когда bluetooth_proxy конфигурация включена, esp-idf Framework рекомендуется, поскольку он использует меньше памяти и более стабилен. Для перехвата пакетов с пассивным esp32_ble_tracker компонент, arduino фреймворк работает лучше.

Полный код Meter Pro

Вот полный код для сбора данных SwitchBot Meter Pro BLE с помощью стандартной платы ESP32. Замените MAC-адрес и адаптируйте конфигурацию к вашей плате ESP32:

SwitchBot Meter Pro добавлен в Home Assistant через ESPHomeSwitchBot Meter Pro добавлен в Home Assistant через ESPHome
Meter Pro в Home Assistant с ESPHome

Полный код Meter Pro (CO2)

Вот полный код для сбора данных SwitchBot Meter Pro (CO2) BLE с помощью стандартной платы ESP32. Замените MAC-адрес и адаптируйте конфигурацию к вашей плате ESP32.

SwitchBot Meter Pro (CO2) добавлен в Home Assistant через ESPHomeSwitchBot Meter Pro (CO2) добавлен в Home Assistant через ESPHome
Meter Pro (CO2) в Home Assistant с ESPHome

Комбинированный код (оба устройства)

Вот полный код для сбора данных BLE обоих устройств с помощью стандартной платы ESP32. Замените MAC-адрес и адаптируйте конфигурацию к вашей плате ESP32.

SwitchBot Meter Pro и Meter Pro (CO2) добавлены в Home Assistant через ESPHomeSwitchBot Meter Pro и Meter Pro (CO2) добавлены в Home Assistant через ESPHome
Meter Pro и Meter Pro (CO2) в Home Assistant с ESPHome

Доступность устройства

SwitchBot Meter Pro и Meter Pro (CO2) — отличные комнатные термометры и датчики качества воздуха. Вы можете приобрести их в официальном интернет-магазине SwitchBot или в различных магазинах Amazon по всему миру. Вот где они доступны:

Источник

Вам может понравиться

Оставить комментарий