Home Assistant/Oura na hodinkách
Oura na zápěstí, i když appku nemá.
Oura Ring nosím na spánek a regeneraci, hodinky Galaxy Watch na sport a notifikace. Oura pro hodinky appku nemá, tak jsem si ji napsal. Bere data z Home Assistanta a ukazuje připravenost, spánek, tělo v noci a trendy přímo na zápěstí.
K čemu to je
Ráno stačí pohled na zápěstí
Oura appku v telefonu otevřu až po snídani. Na hodinkách vidím hned po probuzení tři kroužky: připravenost, spánek a aktivitu. Podle nich poznám, jestli mám den brát zlehka.
Klepnutím se dostanu do detailu: spánek s fázemi, co ovlivnilo připravenost, tělo v noci (tep, HRV, dech, teplota), stres a aktivita a trendy za týden. Vedle ciferníku je dlaždice a přímo na ciferníku tři komplikace.
Když teplota a klidový tep několik nocí po sobě vylezou nahoru, appka ukáže „Tělo bojuje · den N“. Tuhle funkci jsem dopsal v den, kdy jsem ležel nemocný a chtěl vědět, jestli se to lepší.
Proč
Samsung Health spánek z Oury ztrácel
Nejdřív jsem zkusil oficiální cestu: Oura zapisuje spánek do Health Connect a Samsung Health si ho odtamtud má vzít. Některé noci ale tiše vynechal, přestože v Health Connect byly.
Home Assistant data z Oury už má přes integraci a dostanu se k němu doma i venku. Místo boje se Samsung Health tak hodinky čtou přímo z něj. V hodinkách není přihlášení k Oura účtu, jen vlastní token do Home Assistanta, který jde kdykoli zrušit.
Jak to funguje
Z prstenu na zápěstí
- Prsten do cloudu, cloud do Home Assistanta. Oura Ring se synchronizuje přes telefon do Oura cloudu, odkud si oficiální integrace Home Assistanta stahuje zhruba osmdesát hodnot.
- Jeden dotaz na všechno. Hodinky pošlou Home Assistantu šablonu, která vrátí všechny hodnoty najednou. Druhý dotaz stáhne historii za sedm dní na trendy.
- Doma i venku. Nejdřív zkusí domácí síť, když neodpoví, jdou přes VPN v telefonu. Pamatují si, co naposledy fungovalo.
- Funguje i bez signálu. Poslední data drží hodinky u sebe a ukážou, z kolika hodin jsou. Dlaždice a komplikace sdílí stejná data a do deseti minut se znovu neptají.
- Ve stylu Oury. Tmavá noční modrá, tenké kroužky a barva jen tam, kde něco znamená: mátová optimální, bílá dobrá, korálová pozor.
Co jsem zjistil
Co jsem zjistil po cestě
Odpoledne od nápadu na zápěstí
Verze 0.1 až 0.4 vznikly za jedno odpoledne s AI asistentem. Bez Android Studia, jen příkazová řádka a instalace do hodinek přes Wi-Fi.
Dotazy na obnovu
Jeden na aktuální hodnoty, jeden na historii za týden. Doma je odpověď pod sekundu.
Nula znamená klid
V režimu klidu pošle Oura skóre aktivity nula, senzor režimu v Home Assistantu ale zůstane vypnutý. Appka proto nulu čte jako Klid.
Historie bez konce je krátká
Dotaz na historii v Home Assistantu bez konce období vrátí jen první den. Trendy za týden potřebují konec zadaný výslovně.
Komplikace bez nadpisu
Samsung ciferník ukáže místo ikony nadpis komplikace. Komplikace proto nadpis nemají, jen ikonu a číslo.
Klíčů k Oura účtu v hodinkách
Hodinky znají jen vlastní token do Home Assistanta. Když hodinky ztratím, zruším jeden token a Oura účet zůstane v bezpečí.
Co jsem se naučil
Tři věci, na které jsem narazil
Průměrný tep není noční
Hodnota z Oury, která se tváří jako průměrný tep, je průměr celého dne. Tep ve spánku má vlastní senzory. Všiml jsem si až na hodinkách, protože číslo nesedělo s Oura appkou.
Hodinky šetří Wi-Fi
Po zhasnutí displeje hodinky vypnou Wi-Fi a ladicí port se změní. Při ladění je proto nechávám na nabíječce.
První řádek pod hodinami
Seznam na kulatém displeji začíná ve výchozím stavu druhou položkou a první zaleze pod čas. Stačilo začít od nulté položky a přidat odsazení nahoře.
Pro AI agenta
Postav si to u sebe
Chceš si to postavit u sebe? Zkopíruj návod a dej ho svému AI agentovi, třeba Claude Code nebo Codexu. Je v něm cíl, postup krok za krokem, pasti, na které jsem narazil, a jak ověřit, že to funguje. Adresy ani hesla v něm nejsou, ty agent doplní s tebou.
Pro zvědavé
Technické detaily
Stack a tok dat Kotlin · Wear OS · Compose · HA
- Hodinky
- Galaxy Watch9 s Wear OS. Kotlin, Jetpack Compose for Wear OS, navigace přejetím zpět, posouvání lunetou. Dlaždice přes Tiles a ProtoLayout, komplikace přes Complications Data Source.
- Data
- Oficiální integrace Oura v Home Assistantu. Hodinky volají POST na šablonové API (všechny hodnoty z Oury plus odvozené jako jeden JSON) a GET na historii s obdobím sedmi dní pro trendy a počítání dní nemoci.
- Síť
- Nejdřív adresa v domácí síti, když neodpoví, adresa přes Tailscale. Venku jdou hodinky přes telefon, který je trvale ve VPN. Poslední fungující adresa se pamatuje.
- Paměť
- Poslední odpověď a historie v SharedPreferences. Dlaždice (obnova 30 min) a komplikace ji sdílí, do 10 minut se znovu neptají. Offline appka ukáže, z kolika hodin data jsou.
- Build
- Bez Android Studia: JDK 17, Android SDK command-line tools a Gradle. Instalace do hodinek přes ADB po Wi-Fi.
Obrazovky co kde najdeš
| Obrazovka | Co ukazuje |
|---|---|
| Dnes | tři kroužky, varování Tělo bojuje, baterie prstenu, rozcestník |
| Připravenost | skóre a hodnocení, teplota, trend 7 dní, 8 přispěvatelů |
| Spánek | skóre, délka a čas, fáze, efektivita, usínání, trendy, 7 přispěvatelů |
| Tělo v noci | karta Nemoc · den N, nejnižší a průměrný tep, HRV, SpO₂, dech, trendy |
| Aktivita a stres | skóre aktivity nebo Klid, stres a zotavení, kroky, kalorie |
| Trendy | týden připravenosti, spánku, HRV, tepu a teploty proti průměru |
Barvy: mátová optimální (85 a víc), bílá dobrá (70 až 84), korálová pozor (pod 70). Každé skóre nese barvu i slovo.
Pasti a jejich řešení pro ty, kdo to staví taky
Historie z Home Assistanta bez parametru konce vrátí jen jeden den. Průměrný tep z integrace Oura je denní, tep ve spánku má vlastní senzory. Režim klidu se v Home Assistantu neprojeví, pozná se podle nulového skóre aktivity. Samsung ciferník ukazuje nadpis komplikace místo ikony. Příznak, že se komplikace nemá ukazovat na zamčených hodinkách, Samsung ciferník zatím ignoruje. Hodinky po zhasnutí vypínají Wi-Fi a mění port pro ladění. Spárování ADB musí potvrdit člověk na hodinkách, kód zmizí dřív, než ho agent stihne opsat.
Dál