Третьего дня, решил заняться заведением всяких bluetooth устройств в свой умный дом. В Home assistant для себя нашел 2 способа введений устройств:
- Стик
- Шлюз
СТИК
В качестве стика был выбран Buro BU-BT40С Bluetooth 4.0+EDR. Он пленил меня внешний антенной, а значит неплохим радиусом работы. Когда поставил он превзошел все самые смелые ожидания. Не только мониторил все мои устройства в немаленькой квартире, но некоторые соседские.
Подключение через модуль 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 на борту которого есть и Wifi и Bluetooth. Тут уже надо прописывать все устройства которые будут через шлюз управляться или сниматься с них показания. Из интерфейса HA через модуль ESPHome можно создать прошивку прописать туда устройства и залить на плату, далее обновляться уже будет по воздуху.
У меня модули в загашнике оказались старого поколения купленные года 3 назад, и на отрез отказались работать. Зато в наличии оказался модуль
Heltec Lora 32, который взял на себя функции шлюза bluetooth:
Может в дальнейшем ещё пару функций добавлю и корпус сделаю.
Итого что удалось сюда воткнуть:
- Наличие моих умных часов MI Band 6
- Xiaomi Mijia 2 Датчик температуры и влажности.
- 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