Większość osprzętu BLE pojawiła się u mnie dopiero po migracji z RPi na x86-64, więc nie mam bezpośredniego porównania z BT onboard (ale pamiętam, że było kiepsko).
Jeśli masz taką możliwość wyłącz kartę WiFi w RPi (np. dodajesz linijkę dtoverlay=disable-wifi
w pliku config.txt
na partycji boot), ale nie licz na cud.
Ponieważ planuję pozbycie się z NUCów kart WiFi+BT to zrobiłem testy 2 dongli BT4.x a konkretniej “udział wzięli”:
-
Asus USB-BT400, stick w rozmiarze “nano” na chipsecie Broadcomm BCM20702A0 ale przedstawia się jako Asus
-
Qumox (to raczej jakiś “noname” bo nieco rozpada się w rękach ) “USB Bluetooth nano stick” nazwa mówi wszystko, ale nano jest trochę oszukane - jest dłuższy o 2-3mm od Asusa ten za to na chipsecie Cambridge Silicon Radio, Ltd CSR8510 A10 i tak się przedstawia
HassOS posiada dla obu wbudowane sterowniki (przynajmniej wersja amd64).
Oba mają praktycznie identyczny zasięg (Asus trochę gorszy), ale tyłka nie urywa, tzn. i tak muszę korzystać ze zbudowanej wcześniej (za czasów RPi) bramki na ESP32, bo z miejsca instalacji zasięg żadnego nie sięga do najdalszych czujników.
Tak swoją drogą fabrycznie na pokładzie NUCa miałem kartę “Intel® Wireless-AC 3168 + Bluetooth 4,2” i jej zasięg mimo wbudowanych anten był podobny.
Za czasów RPi zbudowałem (określenie nieco na wyrost, bo w sumie to 99% roboty to było przygotowanie konfiguracji) bramkę na bazie modułu Lilygo TTGO T-7, ale można użyć dowolny moduł ESP32
Przykładowy konfig (jest on sporo okrojony z tego, który używam realnie) dla bramki na bazie ESPHome (w ESPHome yaml jest bardzo podobny do konfiguracji HA a mając włączoną opcję api:
sprzęt po wgraniu firmware integruje się w pełni plug-and-play z HA) z paroma dodatkowymi wodotryskami, w przykładzie jako czujniki występują LYWSD02, LYWSD03MMC (z alternatywnym firmware) i MiFlora, a tracker dla zegarka i pilota IR (ale można też używać dla diagnostyki czujników - brak obecności = problem)
esphome:
name: mini_bramka_ble
platform: ESP32
board: esp32dev
wifi:
ssid: "realny_ssid"
password: "oraz_klucz"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "mini_BLE_nie_mam_sieci!"
password: "0000000000"
captive_portal:
# Enable logging
logger:
# Enable Home Assistant API
api:
ota:
esp32_ble_tracker:
switch:
- platform: restart
name: "mini BLE Restart"
# Nigdy nie użyłem :P
binary_sensor:
- platform: ble_presence
mac_address: '48:D0:CF:00:00:00'
name: "BLE ESP Tracker O4A"
- platform: ble_presence
mac_address: 'DC:41:E5:00:00:00'
name: "BLE ESP Tracker Watch"
sensor:
- platform: wifi_signal
name: "mini BLE sygnał WiFi"
update_interval: 60s
- platform: esp32_hall
name: "mini BLE sensor Hall'a"
update_interval: 60s
- platform: uptime
name: "mini BLE Uptime"
- platform: ble_rssi
mac_address: '3F:59:C8:00:00:00'
name: "Zegar BLE ESP RSSI"
icon: "mdi:bluetooth"
- platform: ble_rssi
mac_address: '48:D0:CF:00:00:00'
name: "RSSI BLE ESP O4A"
icon: "mdi:bluetooth"
- platform: ble_rssi
mac_address: 'C4:7C:8D:00:00:00'
name: "MiFlora BLE ESP RSSI value"
icon: "mdi:bluetooth"
- platform: xiaomi_lywsd02
mac_address: '3F:59:C8:00:00:00'
temperature:
name: "Zegar BLE ESP Temperatura"
humidity:
name: "Zegar BLE ESP Wilgotność"
- platform: xiaomi_hhccjcy01
mac_address: 'C4:7C:8D:00:00:00'
temperature:
name: "MiFlora BLE ESP Temperatura"
moisture:
name: "MiFlora BLE ESP Nawodnienie"
illuminance:
name: "MiFlora BLE ESP Natężenie Oświetlenia"
conductivity:
name: "MiFlora BLE ESP Przewodność"
- platform: atc_mithermometer
mac_address: "A4:C1:38:00:00:00"
temperature:
name: "ATC BLE ESP Temperatura"
humidity:
name: "ATC BLE ESP Wilgotność"
battery_level:
name: "ATC BLE ESP Poziom Baterii"
battery_voltage:
name: "ATC BLE ESP Napięcie Baterii"
TL;DR zbuduj sobie bramkę na bazie ESP32 i umieść ją na tym końcu domu gdzie zasięg RPi nie sięga - to załatwia wszelkie problemy (a przy okazji można np. dodać sobie tracker BT czy mierzyć poziom sygnału radiowego czujników).