blog.vyoralek.cz

HomeAssistant #24 – Bluetooth zařízení a ESPHome proxy

V dnešním 24. dílu seriálu o HomeAssistantovi se podíváme na možnosti používání Bluetooth zařízení, které v poslední době konečně dostali pořádnou podporu.

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.

Protokol Bluetooth

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.

Verze Bluetooth

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.

Kanály Bluetooth vs. WiFi

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:

  1. nechceme a nebo nemůžeme využít přímo Bluetooth s počítače na kterém běží HomeAssistent
  2. 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.

Schéma ESPHome Bluetooth Proxy

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 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.

Webové rozhraní ESPHome Proxy

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í.

Objevené bluetooth 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.

Integrace 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 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.

Xiaomi LYWSDCGQ přidán

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

Objevené bluetooth zařízení

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).

Nastavení regionu v Xiaomi Home

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í:

Varování po přidání Bluletooth zařízení

které však můžeme vklidu přeskočit pomocí Odeslat a zařízení by mělo být přidáno.

Úspěšně přidané Bluetooth zařízení

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.

Nutnost přenastavení

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.

Zadání párovacího klíče pro Bluetooth zařízení

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

Úspěšné přidání
Xiaomi LYWSD03MMC přidán

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.

Qingping Alarm Clock

Bluetooth hodiny s budíkem, měřením teploty a vlhkosti,

$16 (cca. 400kč)

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. částIntegrace Sonoff s firmware Sonoff-Tasmota
  • 3. částIntegrace Homekit
  • 4. částIntegrace Sonoff s firmware Sonoff-Tasmota – 2 část
  • 5. částIntegrace s Wemos D1 a senzory teploty
  • 6. částIntegrace Sonoff s firmware ESPHome
  • 7. částIntegrace Sonoff POW s firmware ESPHome
  • 8. částIntegrace LED Magic Home s firmware ESPHome
  • 9. částIntegrace 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

13 comments

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..

  • 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.