Strana 1 — IDLE
Default. Žádné gesto neaktivní. Stojí na poličce, kdykoli můžu otočit na něco
jiného. cube_face=1 + tap = nic.
📦 Zařízení · Tlačítka a ovladače
User input bez nutnosti otvírat telefon. Aqara Cube T1 Pro jako primární gestural ovladač — šestistranná kostka, kde každá strana = jiný režim, otáčení = volume, ťuk = trigger. Plus Sleep Manual button a fyzická tlačítka jako fallback.
Co to dělá
Smart home s mobilní aplikací jako jediným UX je nepoužitelný — když mám ruce v testě, nebo právě vstávám, nikdo netáhá telefon. Proto fyzický ovladač jako primární vstupní vrstva: Aqara Cube T1 Pro stojí na poličce, jednou rukou, různá gesta = různé akce.
Cube má tři typy gest: flip (otočit na novou stranu —
cube_face capability hodnota 1–6), rotate
(točit kostkou ve stejné straně — cube_rotate emitting +/- delta),
tap (klepnout — cube_tap event). Každé gesto má
jiný handler ve flow / scriptu.
Plus jsou tu fyzická tlačítka jako fallback (Sleep Manual, Home Reset). Single press, double press, hold = různé eventy. Použito výjimečně, ale když je potřeba, funguje bez Wi-Fi i bez kostky.
Denní provoz
Většinu dne se nedotknu — kontext rozhodne za mě. Ovladač je pro výjimky.
Po probuzení natočím kostku na stranu 3 = TV channel control. Rotate = channel
up/down (key_channel_up / key_channel_down). Single
tap = TV mute toggle. Bug v1.10 měl špatné capability ID (channel_up bez prefixu),
fix v1.11.
Strana 2 = volume control aktivní speakeru. Rotate vlevo/vpravo posílá
cube_rotate event s delta ±. Skript přepočte na nové volume,
setCap na speaker zóny dle aktivního TOD.
AI coordinator vyhodnotí evening_idle → TTS suggest. User answer = tap na cube
= accept (sh_user_intent_request='accept'). Bez tap je suggest
ignorovaný (po bathroom misroute fix).
Hard fyzické tlačítko vedle postele. Single press → sh_spim='yes'
+ sleep_brain cleanup. Double press → emergency lights ON (kdyby něco). Hold
5 s → reset všech sleep state vars.
Scény
Každá strana kostky = jiná role. Některé live, jiné v plánu.
Default. Žádné gesto neaktivní. Stojí na poličce, kdykoli můžu otočit na něco
jiného. cube_face=1 + tap = nic.
Audio volume control aktivního speakeru. Rotate ± delta → setCap volume_set. Tap = mute toggle. Cílový speaker dle TOD: ráno kuchyně, večer ložnice.
TV remote shortcut. Rotate = channel up/down (key_channel_up),
tap = mute, hold = power toggle. Bug fix v1.11 (3 týdny starý) — channel
capability prefix.
Cyklicky přepíná light scenes — bright / dim / mood / off. Tap = next scene. Rotate = brightness fine-tune aktivní scene. Plánováno, zatím v testu.
AI coordinator → comfort_suggest → TTS přečte návrh. User tap během 30 s okna
= accept → sh_user_intent='accept' → scéna provede. Bez tap
ignorováno.
Hardware v provozu
Jeden primární gestural + 1–2 fyzická fallback tlačítka.
Gestural · Zigbee · battery (2 roky)
Šestistranná kostka. Capability cube_face (1–6),
cube_rotate (delta), cube_tap (event). Magnetické
držení strany, akcelerometr pro rotaci. Cena ~700 Kč. Akcent ovladač.
Aqara · Zigbee · battery
Fyzické tlačítko vedle postele. Single / double / hold events. Trigger pro sh_spim toggle, emergency lights, reset state. Backup pro případ že kostka není v dosahu.
iOS / Android · over Wi-Fi/internet
Sekundární UX pro dálku, debugging, schedule editor. Není primární — most denních akcí jde přes cube nebo geofence. Mobilní app zachytí push alerty.
Wall · Zigbee · 2-tlačítkové
Místo klasického vypínače u dveří — 2 tlačítka, single/double/hold per tlačítko = 6 různých eventů. Plán pro „odchozí scéna" (single = vše off, double = away preset, hold = panic mode).
Local LLM · Whisper STT · HA Voice
Hlasové ovládání lokálně — Whisper STT + lokální LLM. „Snižte topení v ložnici" → parse intent → set var. Závisí na LLM host (RPi5, NAS). Iterace po Cube + tlačítka.
Pro tech-savvy
Cube event model, side dispatch, capability remapping.
Aqara Cube emituje 3 různé eventy přes Homey capabilities:
cube_face: hodnota 1–6, mění se na flip akci.
Je to state, ne event — drží aktuální stranu, dokud user
neflipne.
cube_rotate: event s delta v stupních.
Pozitivní = clockwise, negativní = counter-clockwise. Sample přes ~10°
inkrement, takže točení = sequence eventů.
cube_tap: jednorázový event. Single tap. Double tap
není native, simulujeme přes 2× tap v 500 ms okně.
Side dispatch je v sh_cube_dispatcher_v1 — switch (cube_face) on
event type, route do specific handlers (volume, channel, light scene).
Bug 2026-04-20 resolved: cube strana 3 = TV channels, ale rotate nedělalo nic. Hypotéz několik:
Cube_dispatcher měl setCapabilityValue('channel_up'), ale Android TV
driver capability je key_channel_up (s prefixem). Žádný error, jen
silent ignore. Fix v1.11: channel_up → key_channel_up.
Memory: todo_cube_tv_channels.md — solved record.
Comfort suggest pipeline:
sh_user_intent_request='accept'sh_user_intent_request='timeout_idle''accept'Bez tohoto bypass okna by AI coordinator sám aktivoval scény → bug 25.4. (bathroom radio misroute). Fix v1.8 přidal eksplicitní accept guard.
Aqara Cube má dvě CR2032 batterky, životnost ~24 měsíců při typické denní aktivitě (5–10 gest/den). Sleep manual button má AAA, ~12 měsíců.
Brain Guardian sleduje measure_battery:
Po výměně baterky nové UUID (silent fail flow trigger). Nutný
re-pair check — diagnose GET /api/manager/devices/device/<old> → 404.
Fault tolerance design — když primární ovladač nefunguje, jdou se nižší vrstvy:
Související