🏠 Prožívání · Bezpečnost a kamery

Bezpečnost která není paranoidní

Senzory na oknech a dveřích, multi-zone motion detection, away/home stavová logika a meta-vrstva Brain Guardian, která hlídá, jestli se dům chová jak má. Cíl není alarm na každý vrabec za oknem — cíl je vědět, když něco není v pořádku, a sám to napravit, kde to jde.

3Detekční vrstvy
2Stavy (home/away)
5Brain guardian skripty
15 minAnomaly check cron

Co to dělá

Tři vrstvy detekce + meta-vrstva

Vrstva 1 — fyzické senzory: door/window kontakty na klíčových oknech, PIR motion v kuchyni, mmWave presence ve open space, motion v koupelně. Každý senzor má capability v Homey a vlastní flow trigger. Nic exotického, jen klasická detekce.

Vrstva 2 — stavová logika: away/home preset přepíná chování celého domu. Geofence detekuje výjezd, presence skripty potvrdí, a všechny zóny se přepnou — topení na 16 °C, světla blokovaná, případně čistička reaguje na otevřené okno.

Vrstva 3 — Brain Guardian: meta-supervisor 5-skriptový modul, který sleduje, jestli stav domu odpovídá očekávání. Hlídá stuck priority gates, kotel běžící přes 4 h, dlouhodobě neaktualizované senzory, ghost state proměnné.

Camera stránka v dashboardu — placeholder pro budoucí venkovní kameru
Camera stránka v dashboardu — placeholder pro budoucí venkovní kameru, Frigate / HA integrace plánovaná

Denní provoz

Jak bezpečnost reaguje na situace

Většinu času pasivní. Reaguje teprve, když se stav zásadně změní.

  1. Doma

    Idle stav

    Senzory loggují aktivitu, motion → světla, presence → audio kontext. Žádné push notifikace, žádné alerty. Brain Guardian běží jednou za 15 min, kontroluje konzistenci.

  2. Odjezd

    Away preset

    Geofence detekuje výjezd → preset = away → topení 16 °C, světla blokovaná, případně robot vysavač spustí. Stav sh_rezim_doma='pryc' gate všech zóny — light_router odmítne, audio brain ztichne.

  3. Návrat

    Home preset

    Geofence + první motion v bytě → preset = home → topení boost na schedule slot, světla uvolněná, multi-signal confirm (geofence + motion v 5 min) potvrdí návrat. Single-signal je ignorován (ochrana proti false trigger).

  4. Anomálie

    Brain Guardian alert

    Když cron detekuje stuck state (priority='tts' déle než 1 min), kotel běžící 4+ h, senzor neaktualizovaný 24+ h, ghost var, vystaví alert do EventLog. Critical alerty (anti-freeze, water leak) jdou přes safety bypass.

Scény

Pět situací, pět odpovědí

Většinou se spouští bez user akce — z kontextu.

Otevřené okno

Door/window contact na okně otevře → flow vypne čističku vzduchu (zbytečné filtrovat venkovní). Po zavření obnoví. Reálný incident 26.4. — UUID change po re-pairu, 3 flows broken, čistička se nezapínala.

Odjezd

Geofence GPS opustí home zónu → multi-signal confirm s 5 min delay (eliminuje false trigger u sousedů) → preset = away → cascade do všech subsystémů.

Návrat

Geofence vstoupí + první motion v 5 min → preset = home. Topení dorovná k aktuálnímu schedule slotu, audio uvolněn pro briefing/comfort.

Anomaly detect

Brain Guardian cron 15 min → kontroluje 12 invariantů. Pokud něco off, vystaví brain_guardian_status proměnnou + EventLog alert. Push notifikace zatím manuální.

Critical bypass

Anti-freeze (zóna pod 7 °C), water leak, gas detection → ignoruje sleep guard, priority engine, všechny ostatní pravidla. Topení sepne, alert do speakeru v ložnici.

Hardware

Co reálně sleduje

Kontaktní senzory + motion + presence + soft layer Brain Guardian.

Door/Window Sensor Jídelna1

Aqara · Zigbee · contact

Kontakt na okně jídelny. Detekuje otevření / zavření. Trigger pro čističku (vypnout). Reálný incident 26.4. — re-pair vygeneroval nové UUID, 3 staré flows osiřely. Diagnose: GET /devices/device/<old> → 404.

Aqara FP2 (mmWave)

Presence · Zigbee · open space

Vidí klidného člověka. Pro security marker doplňuje motion sensors — někdo sedí v kuchyni i bez pohybu, FP2 to vidí. Bez něj by se po 2 min presence_off vypálilo.

Fibaro PIR motion

Z-wave · motion · kuchyně

Klasický PIR. Trigger pro „vstanu ráno" detection (motion + sleep_state=active = waking). Vyšší fidelitu hraje při light routingu, ne přímo bezpečnostní.

Brain Guardian (5 skriptů)

Soft layer · cron 15 min · LIVE od 26.4.

Top-level supervisor — sh_expected_state_engine, sh_state_validator, sh_brain_guardian, sh_release_guard, sh_anomaly_collector. Status zatím OK score 92. Detekoval reálný bug 26.4. (priority_active='tts' ghost).

IP kamera Plánováno

RTSP · ONVIF · venku

Venkovní kamera s nahráváním na NAS. Aktuálně systém pracuje bez kamer (privacy preference). Až bude — integrace přes Frigate / HA, motion zone jako bezpečnostní událost.

Pro tech-savvy

Co se děje pod kapotou

Multi-signal confirm, Brain Guardian invarianty, UUID stability lessons.

Multi-signal confirm (proč single-signal nestačí)

Geofence GPS na mobilu má rozptyl 30–50 m. Když projíždím kolem domu nebo jsem u sousedů, GPS může spadnout do home zóny i když nejsem doma. Single-signal by trigger preset=home → topení boost → zbytečná spotřeba.

Multi-signal confirm: geofence_in_home + první motion v bytě v 5 min okně → home preset. Bez motion confirm zůstane preset=away. Symetricky pro odjezd: geofence_out + 0 motion v 10 min → away preset (= jsem reálně pryč).

Brain Guardian — 12 invariantů

Cron sh_brain_guardian_v1 každých 15 min kontroluje konzistenci stavu:

  • Stuck priority: active='tts' AND age > 60 s → reset
  • Kotel runaway: boiler_state='on' AND runtime > 14400 s → forced off
  • Senzor stale: lastUpdated > 24 h → battery alert
  • Ghost state: priority_active='tts' a žádný recent TTS event → reset
  • Schedule sanity: target_temp < min_temp_ever → reset na default
  • Anti-freeze: jakákoli zóna < 7 °C → forced on (overrides mode)
  • Sleep consistency: sh_spim='yes' AND motion_count > 3 v 5 min → wake suspect
  • UUID orphan: device_map ref nedostupný → log do EventLog
  • Schedule overlap: 2+ slots se překrývající časem → first-wins + log
  • Variable type: number var s string hodnotou → reset na default
  • Future timestamp: until_ts > now + 7 d → expire (dirty data)
  • Cron drift: scheduler last_run > 600 s → flow not firing alert
UUID change po re-pair (silent fail)

Po výměně baterky / re-installu device Homey vygeneruje nové UUID. Stará UUID v device_map a flow trigger kartách = orphan reference, žádný error, prostě silent fail. Reálný incident 26.4. — Door/Window Sensor Jidelna1 přepárovaný, 3 flows broken, čistička se nevypínala při otevření okna.

Diagnose: GET /api/manager/devices/device/<old_id> → 404.
Fix: bulk OLD→NEW swap přes PUT každého affected flow.
Prevence (backlog): tools/find_orphan_device_refs.py preventive scanner, který běží před každým commitem.

Sleep state guards (sh_spim)

Centrální sleep state proměnná sh_spim ('yes' / 'no'). Když 'yes':

  • Priority engine deny pro light request → tma
  • Audio brain deny pro TTS (kromě critical alerts)
  • Heating night slot už byl aplikován scheduleru → nižší teploty
  • Robot vysavač blokován
  • Brain Guardian zvýšená tolerance pro motion (anti-false-positive)

Set body: Sleep Manual button (Cubo), Vstal Kuchyně motion, Phone geofence. Nikdy nesmazat set_asleep / set_awake actions ve flows jako „duplikát" — sync s native Homey presence (Mobile UI, HomeKit, Google Home).

Critical alert bypass (safety)

Některé situace musí proletět sleep guard, priority engine, vše. Implementováno přes sh_safety_bypass='yes' short-circuit:

  • Anti-freeze: jakákoli zóna < 7 °C → topení forced on, alert
  • Water leak (plánováno): Aqara water sensor → uzavře přívod, alert
  • Gas leak (plánováno): kombinovaný senzor → vypne kotel, alert
  • Smoke (plánováno): smoke sensor → vypne všechny silové spotřebiče

Bypass je read-only flag — žádný skript ho neresetuje, jen safety event log handler.