11 подписчиков

Умный дом: Bluetooth устройства.

Умный дом: Bluetooth устройства.
Умный дом: Bluetooth устройства.

Третьего дня, решил заняться заведением всяких bluetooth устройств в свой умный дом. В Home assistant для себя нашел 2 способа введений устройств:

  • Стик
  • Шлюз

СТИК

В качестве стика был выбран Buro BU-BT40С Bluetooth 4.0+EDR. Он пленил меня внешний антенной, а значит неплохим радиусом работы. Когда поставил он превзошел все самые смелые ожидания. Не только мониторил все мои устройства в немаленькой квартире, но некоторые соседские.

Buro BU-BT40С Bluetooth 4.0+EDR
Buro BU-BT40С Bluetooth 4.0+EDR
  Третьего дня, решил заняться заведением всяких bluetooth устройств в свой умный дом.-3

Подключение через модуль Passive BLE monitor, будут добавляться устройства для управления, для некоторых нужно подключение со стороны устройства.

Далее device_tracker позволяет отслеживать устройства поблизости полезен отслеживания наличия людей по телефонам или браслетам.

Что бы включить эту функцию надо в конфиг добавить:

device_tracker:
- platform: bluetooth_tracker
interval_seconds: 10
consider_home: 180
track_new_devices: yes

далее устройства отыскиваются и сохраняться в файл known_devices.yaml

Выглядит файл так:

jbl_e45bt:
name: JBL E45BT
mac: BT_B8:D5:0B:93:A0:5D
icon:
picture:
track: false
yandex_station_1509cf:
name: Yandex.Station-1509cf
mac: BT_CD:7B:93:91:DD:AF
icon:
picture:
track: true

Можно устройствам назначить картинки, иконки, отслеживать или нет. Для чужих я ставлю "track: false" так как если удалить, устройство появится снова.

Шлюз

Макетная плата ESP32  Wi-Fi + Bluetooth
Макетная плата ESP32 Wi-Fi + Bluetooth

В качестве шлюза можно использовать контроллер ESP32 на борту которого есть и Wifi и Bluetooth. Тут уже надо прописывать все устройства которые будут через шлюз управляться или сниматься с них показания. Из интерфейса HA через модуль ESPHome можно создать прошивку прописать туда устройства и залить на плату, далее обновляться уже будет по воздуху.

У меня модули в загашнике оказались старого поколения купленные года 3 назад, и на отрез отказались работать. Зато в наличии оказался модуль

Heltec Lora 32, который взял на себя функции шлюза bluetooth:

Heltec, Wi-Fi, Lora 32 V2, 433 МГц, ESP32, LoRa SX1278, esp32, OLED-дисплей 0,96 дюйма, плата для разработки Bluetooth для Arduino
Heltec, Wi-Fi, Lora 32 V2, 433 МГц, ESP32, LoRa SX1278, esp32, OLED-дисплей 0,96 дюйма, плата для разработки Bluetooth для Arduino

Может в дальнейшем ещё пару функций добавлю и корпус сделаю.

Итого что удалось сюда воткнуть:

  • Наличие моих умных часов MI Band 6
  • Наличие в сети и нажатие кнопки на iTag. Так же батарейку.
iTag
iTag
  • Xiaomi Mijia 2 Датчик температуры и влажности.
  Третьего дня, решил заняться заведением всяких bluetooth устройств в свой умный дом.-7
Xiaomi Mi Scale
Xiaomi Mi Scale

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

Скетч получился таким:

esphome:
name: gate-010
platform: ESP32
board: heltec_wifi_lora_32_V2
# Enable logging
logger:
# Enable Home Assistant API
api:
password: !secret api_password
ota:
password: !secret ota_password
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Gate-010 Hotspot"
password: "WiFi155775"
# Add webserver on port 80
web_server:
port: 80
captive_portal:
esp32_ble_tracker:
ble_client:
# Replace with the MAC address of your device.
- mac_address: FF:FF:DD:D5:4E:8E
id: itag_pink
binary_sensor:
- platform: template
id: pink_button
name: "Pink Button"
filters:
delayed_off: 200ms
# Браслет MI Band 6
- platform: ble_presence
mac_address: D5:50:F7:E4:05:07
id: mi_band_6
name: LOUSO MI Band
sensor:
# iTAG.
- platform: ble_client
ble_client_id: itag_pink
name: "Pink iTag btn"
service_uuid: 'ffe0'
characteristic_uuid: 'ffe1'
notify: true
update_interval: never
on_notify:
then:
- binary_sensor.template.publish:
id: pink_button
state: ON
- binary_sensor.template.publish:
id: pink_button
state: OFF
- platform: ble_client
ble_client_id: itag_pink
name: "Pink iTag Battery"
service_uuid: '180f'
characteristic_uuid: '2a19'
icon: 'mdi:battery'
unit_of_measurement: '%'
# Mijia bluetooth temperature & humidity sensor
- platform: atc_mithermometer
mac_address: A4:C1:38:C7:D3:A3
# bindkey: "08f53dd92a0dfb316cf2a7c3194f1462"
temperature:
name: "MI Temperature"
humidity:
name: "MI Humidity"
battery_level:
name: "MI Battery-Level"
battery_voltage:
name: "MI Battery-Voltage"
signal_strength:
name: "MI Signal"
# Весы
- platform: xiaomi_miscale
mac_address: 'FE:66:FB:C9:30:3F'
weight:
name: "Xiaomi Mi Scale Weight"
impedance:
name: "Xiaomi Mi Scale Impedance"
# 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

Web интерфейс
Web интерфейс
В HA.
В HA.