Bluetooth podpora v HomeAssistantovi
Bluetooth podpora byla do HomeAssistanta přidána postupně v posledních třech vydáních.. Zajišťuje možnost připárovat zařízení chytré domácnosti (sensor, zásuvku atp.) používající Bluetooth protokol do systému ovládání chytré domácnosti, tj. v našem případě například HomeAssistanta.
Jako první jsme dostali podporu použití interního bluetooth a nebo USB donglu na počítače kde máme HomeAssistant (verze 2022.08).
Další měsíc jsme dostali podporu pasivního bluetooth proxy (verze 2022.09) – umí pouze číst údaje – pomocí ESP32 zařízení s ESPHome Proxy.
A konečně v posledním vydání se podpora rozšířila i na aktivní bluetooth proxy (verze 2022.10) – je možné věci ovládat, např. žaluzie, zásuvky atp.
Něco málo o Bluetooth
Než se pustíme do detailů související s přidáváním zařízení do chytré domácnosti hodilo by se vyjasnit si co je to vlastně Bluetooth a jaké jsou jeho výhody a navýhody oproti ostatním komunikačním protokolům.
Bluetooth patří do kategorie bezdrátové komunikace, tj. propojení dvou a více zařízení mezi sebou bez nutností kabelů. Vzniklo v roce 1994 jako náhrada sériového rozhraní RS-232 a aktuálně už máme verzi 5.
Zajímavostí je pro přenos dat se používá stejná frekvence jako u WiFi nebo Zigbee, tj. 2,4GHz. Aby nedocházelo k rušení dělí Bluetooth protokol pásmo na 79 kanálů o šířce 1MHz a provádí změnu kanálů až 1600x za sekundu.
Výhodou a zároveň nevýhodou Bluetooth ve srovnání s WiFi a Zigbee je relativní malý dosah, který je ale kompenzován menší energetickou náročností. Hodí se tak pro zařízení používající baterie.
Nevýhodou Bluetooth je pomalejší rychlost přenosu, což nám ale v případě prvků chytré domácnosti obvykle vůbec nebude vadit.
Další nevýhodou může být otevřenost spojení – připojit se k zařízení může každý kdo je v dosahu a ne všechny zařízení mají „krytí“ prostřednictvím párovacího kódu.
K čemu potřebujeme ještě Bluetooth proxy?
Řekli jsme si něco málo o Bluetooth a možná vám nyní ještě není jasné k čemu může být dobré Bluetooth proxy.
Jsou v podstatě minimálně dva scénáře:
- nechceme a nebo nemůžeme využít přímo Bluetooth s počítače na kterém běží HomeAssistent
- nebo Bluetooth zařízení, které bychom rádi přidali je mimo dosah signálu počítače, což může být typické například v domě, ale i ve větším bytě
Můžeme si tak umístit ESPHome proxy například do každého patra / místnosti a mít tak pokryté i oblasti z kterých bychom zařízení ani náhodou s HomeAssistantem nespárovali.
ESPHome pak slouží jako jakýsi převodník – proxy – mezi Bluetooth protokolem a WiFi / Ethernetem, pomocí něhož signál nakonec doputuje až do HomeAssistanta.
Vytvoření Bluetooth proxy pomocí ESP32 a ESPHome
Postup se liší podle toho v jaké jsme aktuálně situaci:
- Pokud už ESPHome na nějaké ESP32 kompatibilním zařízení provozujeme
- 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 HomeAssistentovi nainstalovaný addon ESPHome a v něm můžeme editovat konfiguraci zařízení s ESP32.
Situace bude jednoduchá, jelikož stačí přidat dva řádky
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 HomeAssistanta 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 HomeAssistant při připojení do správné WiFi sítě sám najde a doinstaluje jako integraci.
Přidání Bluetooth zařízení do HomeAssistenta přes ESPHome Proxy
Pokud už nám ESP32 s ESPHome Proxy běží a přidali jsme ho do HomeAssistenta měli by nám po chvíli začít samy naskakovat zařízení s příznakem objeveno.
? Č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:
- Přidání zařízení bez párovacího kódu
- 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 dozsahu.
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.
Xiaomi Mijia LYWSDCGQ
Bluetooth LCD teploměr a vlhkoměr na tužkovou baterii
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 – respektivě 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 o kterém jsem v minulosti sepsal i samostatný článek.
Xiaomi Mijia LYWSD03MMC
Bluetooth LCD teploměr a vlhkoměr
$7.50 (cca. 175Kč) 1ks / $11.5 (cca. 290Kč) 2ks / $15.6 (cca. 400Kč) 3ks
Zjištění stávajícího párovacího kódu
První možností je získání stávajicí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).
Aplikaci spustíme 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: Na stole
ID: blt.4.1b8ih56mcgc00
BLE KEY: 7127a66c24a4fc9d1d3f871dc1f459d3
MAC: A4:C1:38:91:A4:DE
TOKEN: 5f625029da26e81b7410ed98
MODEL: miaomiaoce.sensor_ht.t2
---------
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.
⚠️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 HomeAssistanta
Nyní už můžeme kliknout na tlačítko Nastavit pro přidání a můžeme dostat následující upozornění:
které však můžeme vklidu přeskočit pomocí Odeslat a zařízení by mělo být přidáno.
Pokud se na něj 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. Pokud chvíli počkáme mělo by se nám zařízení znovu objevit nahoře v seznamu zařízení ve stavu Vyžadována pozornost.
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.
Tím máme vše hotovo a zanedlouho nám postupně začnou přibývat entity.
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.
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.
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ěšné 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.
A co vy? Máte nějaké oblíbené bluetooth zařízení, které stojí za shlédnutí? Budu rád pokud nás v komentářích inspirujete.
Kompletní série o HomeAsistantovi obsahuje následující články:
- 1. část – Instalace HomeAsisstent
- 2. část –
Integrace Sonoff s firmware Sonoff-Tasmota - 3. část –
Integrace Homekit - 4. část –
Integrace Sonoff s firmware Sonoff-Tasmota – 2 část - 5. část –
Integrace s Wemos D1 asenzory teploty - 6. část –
Integrace Sonoff s firmware ESPHome - 7. část –
Integrace Sonoff POW s firmware ESPHome - 8. část –
Integrace LED Magic Home s firmware ESPHome - 9. část –
Integrace Xiaomi Mijia a Aqara - 10. část – Integrace vlastní Zigbee gateway
- 11. část – Vzdálený přístup do Hass.io z Internetu
- 12. část – zobrazení senzorových data pomocí InfluxDB a Grafany
- 13. část – Hass.io Add-ony, které používám
- 14. část – Integrace Xiaomi Mi Flora
- 15. část – Integrace Withings (Nokia)
- 16. část – náhrada SQLite databází MySQL
- 17. část – HACS Add-ony – instalace a konfigurace
- 18. část – Integrace Sonoff s firmware eWeLink
- 19. část – nová integrace Sonoff pro HA
- 20. část – měření spotřeby
- 21. část – automatické zálohy a obnovení ze zálohy
- 22. část – napojení hlasového asistenta Amazon Alexa
- 23. část – automatické zálohy na síťový sdílení disk (Samba)
- 24. část – Bluetooth zařízení a ESPHome proxy
- 25. část – nefunkční aktualizace HomeAssistanta
- 26. část – integrace SwitchBot produktů
- 27. část – integrace fotovoltaiky Growatt
Perfektní článek, děkuji. PT.
Děkuji za moc hezký článek. Mám po domě taky několik těch malých Xiaomi teploměrů, problém je však v tom že pokud je tam originální fw a původní „hostname“, tak všechny vidím jako LYWSD03MMC – tzn. nevím který z nich zrovna konfiguruju a jaký bindkey pro něj použít. Tohle by tam mohli ještě opravit – aby byla vidět aspoň část MAC adresy. Ve vašem případě jsem si všiml že už je máte pojmenované, takže zřejmě používáte custom fw. Asi ho tam nahraju taky :-).
To bych asi nedělal, neboť Xiaomi integrace najde jen ty teploměry s originálním firmwarem. Ty custom vůbec nevidí. Tím jsem si teď prošel já.
Co se týká toho rozpoznávání zařízení, asi nezbyde, než přidávat jedno po druhém (vyndavat baterky apod.). Pak to nové vždy rozpoznáte.
Taky možnost, byť ne příliš pohodlná. Nicméně ve screenshotu má autor v názvu Sensor A4DE takže by to s tím asi mělo fungovat? Nebo toho docílil jinak než alternativním firmwarem?
To sensor A4DE se tam doplňuje z integrace Xiaomi. To není název teploměru jako takového. Každopádně já mohu potvrdit, že teploměry s custom firmwarem to nenašlo, tudy tedy cesta nevede a platí to, co jsem napsal výše.
Jak píše Petr, ten název A4DE se tam doplnil sám, nicméně mám dobrou zprávu. Co jsem se koukal na MAC adresu toho teploměru, tak jsou to poslední čtyři znaky, takže to nakonec s tím rozpoznáváním teploměrů nebude úplně beznadějné. Pro potvrzení – měl jsem teploměr s oficiálním firmware od Xiaomi.
A co se týče alternativního software na to se chci také podívat. Konkrétně mě zajímá BTHome, který by podle všeho pokud to dobře chápu měl s ESPHome Proxy fungovat v pohodě a má to mít i nějaké benefity. Pro mě nejzajímavější je delší výdrž baterie, které se mě u těchto teploměrů zdá měním až nějak příliš často.
Díky oběma za komentáře. Tohoto jsem si ani při psaní článku nevšiml a věřím, že to může někomu pomoct.
Zdravím,
potvrzuji, že s integrací BTHome mi ty teploměry už chodí bez problémů tak jak bych si představoval.Jen je potřeba do těch teploměru flashnout tento firmware https://github.com/pvvx/ATC_MiThermometer, pak nezapomenout nastavit „advertising type to „BTHome“ and click „Send Config“. Po chvíli se ten teploměr objeví v BTHome a vše funguje na 1
Super Petře, díky za potvrzení. Já už mám na cestě další várku teploměrů tak si to na jednom z nich taky vyzkouším a sepíšu.
Díky za super článek, bohužel jsem došel ke dvěma zjištěním specificky k těm teploměrům.
1) pokud mám custom firmware, tak ho ta integrace pochopitelně nenajde a nenašel jsem zatím žádný způsob, jak ten teploměr do HA dostat jinak než přes původní ESPHome
2) když jsem nahrál do teploměru původní firmware, integrace mi ho už našla, ale je vidět, že ta integrace s teploměrem komunikuje narozdíl od toho ESPHome řešení jen jednou za několik minut, takže je tu mnohem menší hustota dat a mnohem delší doba čekání na ta data obecně
Ad1) Jaký přesně firmware zkoušíte?
Ad2) Hmm, toho jsem si také nevšiml a máte pravdu – jak tak koukám na graf za dnešek tak je to cca. jednou za 15-20minut, což ale v denním grafu, nějaký extrémní problém není a křivka teploty vypadá stále hezky.
Je pravda, že obecně s tou rychlostí taky nejsem zatím úplně spokojený. Hraju si tady ještě s dveřním senzorem od SwitchBot a ten má ty přenosů stavy jak kdy. Někdy je to ihned a někdy je to pár sekund zpožděné. Na druhou stranu jsme pár dnů od vydání této funkcionality v kompletní verzi, takže doufejme, že se to ještě odladí to mnohem lepšího stavu. Věřím, že tohle snad není konečná verze. U teploměrů s tím velký problém nemám, ale u např. toho dveřního senzoru je to poměrně velký hendikep.
ad 1) používám ATC_MiThermometer. Dneska zkusím ten druhý alternativné firmware, který by měl fungovat s tou integrací BTHome a dám vědět.
Dobrý den, měl bych dotaz k článku.
Signál bluetooth z iPhone používám jako jednoduchý device tracker na detekci přítomnosti v domě. Jak je v článku uvedeno, bluetooth má omezený dosah a pokud jsem s telefonem v jiných částech domu, kde není spojen s jednotkou HA, hlásí mi to, že jsem mimo domov. Pomohu si, když budu instalovat ESP32 jako bluetooth proxy, čímž bych si zvýšil dosah bluetooth? nevím přesně, jak potom probíhá spojení, ale je obecně známo, že iPhony se po nějaké době nečinnosti samy odpojují od wifi a jelikož proxy server je spojen přes wifi, vyhnu se tomuto problému?? Děkuji
Ano, další rozmístěné ESP32 BT Proxy zvýší dosah po celé bytě/domě. To Váš problém vyřeší, jak se ale chová iPhone netuším, v tom nepomohu.