Vstup do bytu
FP2 detekuje presence → light_request='on' → priority engine allow → router → setCap. Při lux pod 120 dim na 40 %, jinak full.
🏠 Prožívání · Světla a osvětlení
Dva senzory na open space — mmWave radar pro klidného člověka, klasický PIR pro pohyb. Buď jeden, nebo druhý. Nikdy ne oba false. Nad senzory běží 4-vrstvá pipeline, která nakonec přepne kapacitu reálné žárovky — s privacy guardem, sleep guardem a triple-sensor anti-flicker logikou.
Co to dělá
V open space (jídelna + kuchyně) jsou dva senzory: Aqara FP2 (mmWave radar — vidí i sedícího člověka, micro-pohyby, dýchání) a klasický Z-wave PIR Fibaro (jen pohyb). Pravidlo je jednoduché — light zůstává zapnutý, dokud kterýkoli ze senzorů hlásí přítomnost. Vypne až když oba říkají „nic tu není".
Nad senzory ale není rovnou setCapability. Mezi tím je 4-vrstvá pipeline: request → priority engine (TTS má prioritu 100, světla 60 — TTS přebije) → light router → fyzický zápis. Když priority engine řekne „ne", světla počkají až řeč dohraje.
A nad pipeline ještě dvě pravidla: privacy guard (byt je v přízemí, když je roleta nad 20 % = z venku vidět dovnitř → otevřená světla open space zakázána) a sleep guard (když spím, žádné světlo se zapnout nesmí — ani na motion).
Denní provoz
Lux senzor rozhoduje, presence senzor potvrzuje, privacy a sleep mají právo veta.
Motion sensor v kuchyni zachytí pohyb. Sleep state je už unset (sleep brain detekoval probuzení). Lux pod prahem → kuchyňská světla zapnutá v dim modu, open space čeká na FP2 confirm.
Při lux nad 400 (denní světlo dostatečné) zůstávají světla zhasnuté i když někdo prošel kolem. Při lux pod 120 a presence true se zapnou. Hystereze zabraňuje blikání kolem prahu.
Když je venku tma a roleta je nad 20 % — Sektorka, Stůl jídelna a LED pásek se zapnout NESMÍ. Bezpečnostní interlock auto-zavře roletu na 0,15 a uvolní světla.
Sleep state = active → priority engine vrátí false na light request. Žádný motion, žádné FP2 vibration nezapne světlo. Pohyb v koupelně má vlastní jemnou cestu (bathroom router).
Scény
Žádné explicitní tlačítko — světla rozhoduje senzor + kontext.
FP2 detekuje presence → light_request='on' → priority engine allow → router → setCap. Při lux pod 120 dim na 40 %, jinak full.
Roleta nad 20 % a is night → safety interlock blokne light request. Pokud user explicitně chce → auto-zavře roletu na 0,15 a uvolní light.
Lux > 400 → světla zůstávají zhasnutá i v presence. Lux < 120 → zapnou se.
Mezi tím hystereze (config: sh_cfg_lux_open_space_on/off).
sh_spim='yes' → priority engine deny pro light request.
Pohyb se loguje, ale fyzická akce neproběhne. Bathroom má vlastní pravidla.
Když sh_priority_active='tts' přes minutu → brain guardian
detekuje a resetuje na 'none'. Světla začnou opět reagovat.
Hardware
Dva senzory + tři skupiny světel + jedna roleta která hraje roli v privacy logice.
mmWave radar · presence · Zigbee
Vidí i sedícího člověka, micro-pohyby a dýchání. Zóna „open space"
(jídelna + kuchyně). Capability alarm_presence. Falešně může
minutu mihnout na False — proto triple-sensor guard při presence_off.
PIR · motion · Z-wave
Klasický PIR. Detekuje pohyb (změna IR), ne klidného člověka. Capability
alarm_motion. Funguje jako guard pro presence_off — když je
motion stále true, presence_off se ignoruje.
Open space stropní · WiFi (Tuya)
Hlavní stropní svítidlo open space. Ovládaná přes
setCapabilityValue('onoff', ...). V privacy módu (roleta nahoře)
zakázaná — z venku přímo viditelná do bytu.
Stolní + ambient · WiFi
Stolní lampa nad jídelním stolem + LED pásek za TV. Stejný privacy guard jako Sektorka. Při lux pod prahem se zapínají s presence, jinak zhasnuté.
IKEA · Zigbee · windowcoverings_set
Hraje dvojí roli — fyzické zastínění a binární privacy signal pro light router. Pozice nad 20 % = „open" pro privacy účely. Při safety interlock auto-zavírá na 0,15.
Pro tech-savvy
Pipeline, dual-sensor logika, triple-sensor guard, privacy thresholdy.
sh_light_request='on'/'off'.
Tady končí senzorová cesta — žádné setCap zatím.
sh_priority_engine_v1): rozhodne, jestli
light může vyhrát. Když TTS běží, vrátí false a flow pipeline skončí.
sh_light_router_v1): aplikuje privacy guard,
sleep guard, lux check. Vrací konkrétní device + capability + value.
setCapabilityValue('onoff', ...)) na konkrétní device z device map.
Před 25.4. byl bug — pipeline končila u priority_engine, router se nevolal.
Fix: existující flow „SH – Priority – Light" rozšířen o 2. action chained
na outputSuccess. Žádný nový flow (REUSE FIRST).
Pravidlo: lights ON pokud FP2.presence === true OR motion.motion === true.
OFF jen když FP2.presence === false AND motion.motion === false.
Z-wave NEPOSÍLÁ event přímo do open space routeru. Čte se jako guard ze skriptu při presence_off.
FP2 občas „mihne" na False (cooldown / sensitivity). 15 min delay → presence_off. V té chvíli user už dávno zpátky. Lights neměly zhasnout. Fix:
if (normalized === 'off') {
if (motion.alarm_motion === true) → keep on (off_ignored_motion_active)
if (presence.alarm_presence === true) → keep on (off_ignored_presence_active)
if (max(open_presence_ts, open_motion_ts) > now - 5min) → keep on (off_ignored_recent_5min)
}
Byt je v přízemí. Když je roleta nad sh_cfg_blind_safety_threshold
(default 0,2 / 20 %), přímý pohled z ulice do obýváku. Otevřená světla
(Sektorka, Stůl, LED pásek) jsou v té situaci zakázána.
Bezpečnostní interlock při light request s privacy fail:
sh_cfg_blind_privacy_position (0,15)
v1.13 měla invertovanou comparison (< místo >) — user-zavřená
roleta byla považována za „open" a blokovala lights. Fixed v1.14.
Když TTS pipeline nedokončí (network glitch, speaker disconnect, …),
sh_priority_active='tts' zůstane zaseklý. Light request
priority 60 < TTS 100 → priority_engine vrátí false → light_router se
nikdy nevolá → tma i při presence.
active='tts' AND result='allow' AND age > 1 min = stucknone/idleSouvisející