Přeskočit na hlavní obsah

Bluetooth Proxy (ESPHome)

Bluetooth Proxy integrace není tradičním typem integrace, který přidává specifické produkty nebo služby. Místo toho umožňuje Home Assistantovi rozpoznat Bluetooth zařízení, která jsou mimo dosah samotného hardwaru, na kterém Home Assistant běží.

Bluetooth proxy podpora v Home Assistantovi

Home Assistant postupně zaváděl podporu pro Bluetooth, což rozšiřuje jeho možnosti integrace:

  • Verze 2022.08 přinesla podporu interního Bluetooth a USB donglů.
  • Verze 2022.09 umožnila pasivní čtení dat z ESP32 zařízení pomocí ESPHome Proxy.
  • Verze 2022.10 přidala možnost aktivního ovládání zařízení prostřednictvím aktivního Bluetooth proxy.

Role Bluetooth Proxy

Bluetooth proxy je užitečná v situacích, kdy:

  1. Home Assistant není dostatečně blízko Bluetooth zařízení.
  2. Chceme rozšířit Bluetooth pokrytí po domě.

HA BluetoothProxy schema

ESPHome funguje jako most mezi Bluetooth a WiFi/Ethernetem, a umožňuje tak připojení vzdálených zařízení.

Doporučený Hardware

Mě se hodně osvědčili úplně základní ESP32, které lze koupit doslova za pár korun. Obsahují jak WiFi (2.4GHz pouze) tak i Bluetooth a jsou přímo podporované ESPHome pro Proxy.

wifibluetooth
ESP32-WROOM

ESP32-WROOM

Základní ESP32 v mnoha variantách

Vytvoření Bluetooth proxy pomocí ESP32 a ESPHome

Postup se liší podle toho v jaké jsme aktuálně situaci:

  1. Pokud už ESPHome na nějaké ESP32 kompatibilním zařízení provozujeme
  2. Pokud ještě žádné ESPHome nemáme neinstalováno a nebo chceme zprovoznit ESPHome na dalším zařízením

Přidání do existujícího ESP32 s ESPHome

Budeme předpokládat, že už máme v Home Assistantovi nainstalovaný addon ESPHome a v něm můžeme editovat konfiguraci zařízení s ESP32.

Situace bude jednoduchá, jelikož stačí přidat dva řádky

# Příklad konfigurace pro aktivaci Bluetooth Proxy
bluetooth_proxy:
active: true

a aktualizovanou verzi do ESP32 nahrát.

První řádek přidává podporu pro Bluetooth Proxy a druhý nám říká zda chceme pouze pasivní nebo aktivní verzi. Výchozí hodnota je pouze pasivní proxy.

Vytvoření nového ESP32 zařízení s ESPHome

Při použití nového ESP32 zařízení dokonce není potřeba mít nainstalovaný ESPHome Addon do Home Assistanta a vše uděláme přes webové rozhraní.

Stačí ESP32 zařízení připojit do počítače pomocí USB, otevřít v prohlížeči Chrome webové rozhraní a po úspěšném nahrání firmware do ESP32 si jej Home Assistant při připojení do správné WiFi sítě sám najde a doinstaluje jako integraci.

Přidání Bluetooth zařízení do Home Assistanta přes ESPHome Proxy

Pokud už nám ESP32 s ESPHome Proxy běží a přidali jsme ho do Home Assistanta měli by nám po chvíli začít samy naskakovat zařízení s příznakem objeveno.

HA BluetoothProxy discovery

info

Čtyři písmena/číslice s názvu zařízení odpovídají posledním čtyřem znakům MAC adresy zařízení.

Pokud se zařízení z nějakého důvodu nezobrazí jako objeveno samo je stále možné ho přidat pomocí tlačítka Přidat integraci, kde si integraci vyhledáme ručně. Například pro Bluetooth zařízení od firmy Xiaomi nám poslouží integrace s názvem Xiaomi BLE.

Konkrétní kroky během přidání se mohou lišit dle výrobce a zařízení, ale nemělo by to být obvykle nic složitého.

My se podíváme na zařízení Xioami, které jsou jedny z nejrozšířenějších – tedy alespoň u mě – a konkrétně si ukážeme dva scénáře:

  1. Přidání zařízení bez párovacího kódu
  2. Přidání zařízení s párovacím kódem

Zařízení bez párovacího kódu

Jedná se o obvykle starší zařízení, které ještě nepoužívá šifrování přenosu dat, ale jeho přidání je o to jednodušší. Na druhou stranu si ho může přidat kdokoliv kdo je v jeho dosahu.

Příkladem takového zařízení může být teploměr Xiaomi Mijia LYWSDCGQ, který se ale podle všeho už v dnešní době nedá téměř sehnat.

Po přidání do HomeAssistanta můžeme vidět jak Teplotu a Vlhkost tak i stav tužkové baterie.

Zařízení s párovacím kódem – Xiaomi

Novější zařízení od Xioami naproti tomu vyžadují pro spárování token – respektive v oficiální aplikaci Xiaomi Home jste tohoto ušetřeni, ale interni se tento token generuje a používá.

Stejně jako v předchozím případě se nejprve zařízení objeví ve stavu Objeveno a pokud ještě neznáte párovací token tak doporučuji zatím nepřidávat – jak jej získat se podíváme níže

Příkladem takového zařízení může být teploměr Xiaomi Mijia LYWSD03MMC

bluetooth
Xiaomi Mijia Bluetooth Thermometer

Xiaomi Mijia Bluetooth Thermometer

Bluetooth teploměr a vlhkoměr od Xiaomi LYWSD03MMC

Zjištění stávajícího párovacího kódu

První možností je získání stávajícího párovacího kódu, který je uložený na Xiaomi Cloudu. K tomu budeme potřebovat stáhnout aplikaci Token Extractor z webu a připravíme si přihlašovací jméno a heslo do Xiaomi Cloudu (to co používáme v Xiaomi Home aplikaci na mobilu).

Instalaci provedeme ideálně z příkazového řádku:

wget https://github.com/PiotrMachowski/Xiaomi-cloud-tokens-extractor/releases/latest/download/token_extractor.zip
unzip token_extractor.zip
cd token_extractor

a budeme potřebovat ještě doinstalovat balíčky pro Python. Doporučuji to udělat ve vlastním Python Environment, který pak můžete smazat:

python3.11 -m venv venv
source ./venv/bin/activate
pip install -r ./requirements.txt

Aplikaci spustíme příkazem python token_extractor.py a po zadání přihlašovacích údajů bude ještě potřeba zadat server. Ten by měl odpovídat nastavení regionu v Xiaomi Home aplikaci – v našich končinách budeme mít zřejmě nastaveno Česko a pak název serveru je de (tedy Německo).

Proběhne samotné přihlášení do Xiaomi cloudu a měli bychom získat seznam všech zařízení včetně párovacích kódů – tady jsou označeny jako tokeny.

Server (one of: cn, de, us, ru, tw, sg, in, i2) Leave empty to check all available:
de

Logging in...
Logged in.

Devices found for server "de":

---------

---------
NAME: Teploměr #1
ID: blt.4.1b8ih56mcgc00
BLE KEY: 758679a38a4d356bc7aa926f40af2434
MAC: A4:C1:38:91:A4:DE
IP: 45.129.32.131
TOKEN: 07c5d233c078fb0b7d0be498
MODEL: miaomiaoce.sensor_ht.t2
---------
NAME: Teploměr #2
ID: blt.4.1ghihju9cgk00
BLE KEY: 2bab4851cc3adb58a87dcaca374d5dba
MAC: A4:C1:38:92:2A:45
TOKEN: 82ae1f02e05a3f4dbf6509ee
MODEL: miaomiaoce.sensor_ht.t2
---------
...

Press ENTER to finish
Upozornění pro teploměr Xiaomi Mijia LYWSDCGQ

Podle mých zjištění to vypadá, že teploměr Xiaomi Mijia LYWSDCGQ už nejde používat přes ESPHome Proxy v případě firmware 2.x. Pokud jste to ještě neudělali tak proto neprovádějte aktualizaci přes aplikaci.

Zda máte verzi 2 je možné zřejmě poznat už při získávání párovacího kódu, kde je u verze 2 přítomna i IP adresa.

HA BluetoothProxy xiaomi firmware

Generování nového párovacího kódu

Pokud nechceme z jakéhokoliv důvodu použít aplikaci pro získání kódu,, pak druhou možností, která ale není obecná, je v případě Xiaomi teploměru použití webu a vygenerování nového kódu. To provedeme po připojení pomocí Do Activation a následně si zkopírujeme si Mi Bind Key.

info

Nevýhodou tohoto řešení je fakt, že token zařízení bude změněn, tj. prostřednictvím aplikace Xiaomi Home se už do zařízení nepřipojíme – tokeny nebudou odpovídat.

Přidání zařízení do Home Assistanta

Nyní už můžeme kliknout na tlačítko Nastavit pro přidání. Pokud se do nového zařízení nyní podíváme zjistíme, že neobsahuje žádné entity. To je dáno tím, že posílání hodnot je šifrováno a my musíme ještě nastavit párovací kód.

Chvíli ještě počkáme a mělo by se nám zařízení znovu objevit nahoře v seznamu zařízení ve stavu Vyžadována pozornost.

HA BluetoothProxy discovery code

Pokud nyní klikneme na Přenastavit tak obdržíme dialog kam už můžeme zadat párovací klíč, který jsme si zjistili některým ze způsobů výše.

HA BluetoothProxy discovery code

Tím máme vše hotovo a zanedlouho nám postupně začnou přibývat entity.

HA bluetooth qingping

Zařízení s párovacím kódem – QINGPING

Očividně ne všechny integrace vyžadují znát i párovací kód a tak například budík od QINGPINGu se sice tváří jako Xiaomi zařízení, ale v Home Assistantovi lze přidat i přes QINGPING integraci, která zadávání párovacího kódu nevyžaduje.

HA bluetooth qingping

Stále ale můžeme pokud chceme přidat i QINGPING zařízení pomocí Xiaomi BLE integrace, která ale po nás párovací kód bude vyžadovat.

bluetooth
Qingping Bluetooth Alarm Clock

Qingping Bluetooth Alarm Clock

Bluetooth budík s teploměrem a vlhkoměrem

Zhodnocení

Zejména bluetooth teploměry od Xioami už používám poměrně dlouho, jelikož stojí doslova pár korun a mají displej. Nicméně do přidání pořádné podpory Bluetooth přímo do HomeAssistanta jsem integraci řešil pomocí ESP32 a ESPHome, kde jsem však jednotlivá zařízení nastavoval přímo v ESPHome.

Nový způsob pomocí ESPHome Proxy integrace bluetooth zařízení velmi zjednodušuje a možná trochu více nyní komplikuje jaké zařízení nakonec zvolit – zda WiFi, Zigbee a nebo nově i bluetooth.

Zejména u senzorů můžou být rozdíly a porovnání výhod/nevýhod mezi Zigbee a Bluetooth velmi těsné a rozhodování složitější. Výhodou bluetooth by měla být obvykle delší výdrž a zpravidla nižší cena. Nevýhodou pak nutnost šířit signál Bluetooth po domě pokud nechceme pokrýt pouze jednu místnost.

HA BluetoothProxy discovery

Komentáře