Содержание
Краткое введение: Bluetooth и ESP32
Bluetooth-прокси являются отличным способом захвата пакетов BLE с помощью платы ESP32. Этот компонент работает, используя ESP32 в качестве моста между устройствами Bluetooth Low Energy (BLE) и вашим сервером, например Home Assistant. Плата пассивно передает любой трафик BLE, который она захватывает, на сервер, где данные могут быть обработаны и интегрированы в системы автоматизации или информационные панели.
Использование прокси-сервера Bluetooth устраняет необходимость наличия у вашего ПК или сервера собственного адаптера Bluetooth, что позволяет вам использовать ESP32 для функций Bluetooth и снижает зависимость от оборудования на вашем основном компьютере. Вам не придется возиться с драйверами, ошибками совместимости и тому подобными проблемами.
В своей настройке я часто использую все платформы Bluetooth, предлагаемые ESPHome, либо в качестве ежедневных драйверов, либо в качестве устройств для тестирования и разработки. Совсем недавно я поделился способом захвата и декодирования BLE-рекламы Уличный термогигрометр SwitchBot и интеграция его в Home Assistant через ESPHome. Я настоятельно рекомендую эту статью всем, кто заинтересован в изучении процесса декодирования рекламы BLE для любого устройства.
В течение последнего месяца или около того я опробовал небольшие платы ESP, чтобы заменить некоторые стандартные ESP32, которые я использовал в своем умном доме. Я считаю, что нашел самую крошечную плату ESP32, которая может надежно работать в качестве прокси-сервера Bluetooth или пассивного трекера BLE с Home Assistant. Устройство имеет маркировку Плата разработки ESP32-C3 SuperMiniкоторый я купил за смешную цену 2,5 доллара на AliExpress!
Спецификация ESP32-C3 SuperMini
- Модель: Плата разработки ESP32-C3 SuperMini
- ПРОЦЕССОР: ESP32C3FN4, 32-битный одноядерный RISC-V, до 160 МГц
- Ресурсы: 400 КБ SRAM, 384 КБ ПЗУ, 4 МБ флэш-памяти
- Интерфейсы: 1xI2C, 1xSPI, 2xUART, 11xGPIO (ШИМ), 4xАЦП
- Wi-Fi: 802.11b/g/n, станция, SoftAP, гибридный режим
- Bluetooth: Блютуз 5.0
- Потребляемая мощность: Глубокий сон 43 мкА
- Размеры: 22,52×18 мм
- Цена: 2,5 доллара США на AliExpress
О размере
Плата разработки ESP32-C3 Super Mini очень и очень крошечная. Его длина составляет всего 22,52 мм, а глубина — 18 мм. Этот размер очень впечатляет и позволяет спрятать его где угодно. За телевизором, под умной розеткой или просто закрепите его где-нибудь подальше от глаз.
Поскольку он такой маленький, моей камере удалось уловить мельчайшие царапины на разъеме USB-C, а также на батарейке-таблетке, которую я использовал для сравнения. Интересно, что здесь используются стандартные разъемы 2,54 мм, равномерно расположенные по бокам.
ESP32-C3 Супер Мини имеет 16 доступных контактов GPIO, а общий ESP32-РУМ обычно имеет около 32 контактов GPIO. Компактный дизайн ESP32-C3 идеально подходит для проектов с ограниченным пространством, но имеет около На 50 % меньше контактов чем стандартный ESP32-WROOM, что ограничивает возможности подключения периферийных устройств.
Прошивка ESP32-C3 SuperMini
Эта крошечная плата похожа на любую другую плату разработки ESP32, ее можно легко прошить с помощью ESPHome и использовать для любого проекта умного дома. Например, вы можете прикрепить радар ммволны LD2410 и использовать его как датчик присутствия. Или вы можете подключить 1-проводные датчики Далласа и используйте его для контроля температуры в вашем помещении. Я обнаружил, что он не ограничен размером с точки зрения вычислительной мощности, хотя для периферийных устройств доступно меньше контактов GPIO.
Прошейте на плате базовую конфигурацию ESPHome, настроив свои учетные данные Wi-Fi, ключ OTA и резервную точку доступа. Для оптимальной производительности рекомендуется настроить компонент платформы ESP32 на использование esp-idf
рамки, как arduino
framework потребляет больше памяти и приводит к снижению производительности при включенном прокси-сервере Bluetooth. Например:
esphome:
name: esp32-c3-super-mini
friendly_name: ESP32-C3 Super Mini
esp32:
board: esp32-c3-devkitm-1
framework:
type: esp-idf
# 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:
Bluetooth-прокси
Для прошивки платы SuperMini с помощью прокси-сервера Bluetooth требуется добавить всего несколько строк кода. Стоит отметить, что функция прокси-сервера Bluetooth в ESPHome поддерживает до трех активных соединений одновременно. Если вы обнаружите, что ваши устройства используют активное соединение (например INKBIRD IAM-T1 Монитор качества воздуха) для анализа данных помните, что вы не можете превысить этот предел.
Чтобы улучшить прием, вы также можете настроить окно сканирования радио Bluetooth. Я обнаружил, что установка интервала и окна на 800 мс лучше всего подходит для большинства случаев использования. Вот конфигурация, которую необходимо добавить к базовой конфигурации ESPHome:
#Enable Bluetooth proxy
bluetooth_proxy:
active: true #Optional, defaults to false
#Change scanning window and interval
esp32_ble_tracker:
scan_parameters:
interval: 800ms
window: 800ms
Эта конфигурация будет передавать все данные Bluetooth как есть, а Home Assistant автоматически обнаружит любые интеграции для ваших устройств. Это просто, работает и не требует сложного кодирования и настройки.
ESP32 BLE-трекер
Пассивно передаваемые данные датчиков, которые объявляются определенными устройствами без необходимости активных соединений, принимаются отдельно и не ограничиваются количеством подключений. Я предпочитаю настраивать этот способ, потому что он позволяет мне отфильтровывать ненужные устройства BLE, которые мне не нужны в Home Assistant. В зависимости от платформы вашего устройства существует несколько способов настройки esp32_ble_tracker
компонент, отвечающий вашим потребностям.
Например, вот как настроить датчики для сбора данных с различных датчиков температуры и влажности Xiaomi:
#Change scanning window and interval
esp32_ble_tracker:
scan_parameters:
window: 800ms
interval: 800ms
active: False
sensor:
#Xiaomi LYWSD02 Climate Sensor
- platform: xiaomi_lywsd02
mac_address: "E7:2E:01:40:C9:08"
temperature:
name: "Living Room Temperature"
humidity:
name: "Living Room Humidity"
battery_level:
name: "Living Room Battery Level"
#Xiaomi QingPing CGG1 Climate Sensor
- platform: xiaomi_cgg1
mac_address: "58:2D:34:10:53:65"
temperature:
name: "Kids Room Temperature"
humidity:
name: "Kids Room Humidity"
battery_level:
name: "Kids Room Battery"
#Custom pvvx firmare sensor
- platform: pvvx_mithermometer
mac_address: A4:C1:38:BF:86:2E
temperature:
name: "Xiaomi Thermometer 3 Temperature"
humidity:
name: "Xiaomi Thermometer 3 Humidity"
battery_level:
name: "Xiaomi Thermometer 3 Battery-Level"
battery_voltage:
name: "Xiaomi Thermometer 3 Battery-Voltage"
Поскольку эти датчики пассивно сообщают о своих показаниях, нет необходимости поддерживать активное соединение Bluetooth. Данные анализируются через регулярные промежутки времени и отображаются в Home Assistant. Мне удалось настроить 8 различных датчиков LYWSD02 с платой ESP32-C3 SuperMini без каких-либо проблем или потери данных!
Краткое содержание
В настоящее время я заменил две стандартные платы ESP32, которые были у меня дома, на одну плату ESP32-C3 Super Mini. У меня есть еще в разработке, и я собираюсь использовать их все в своем доме. Я хочу полностью спрятать проводку и платы от глаз, поэтому эту плату
Нет реальной причины заменять существующие платы этой супермини-платой, но если вы ищете дешевые ESP32 для проектов, не требующих большого количества контактов, ESP32-C3 Super Mini стоит рассмотреть только из-за цены и размера! Вот несколько ссылок с AliExpress и Amazon: