📖 Příběh · Architektura

Script-first princip

Veškerá logika v jednom místě. Flow je trigger, skript je mozek, router je switchboard, device je výstup.

12 pravidel která jsem si zavedl

Každé pravidlo vzniklo z konkrétního incidentu, ne z teorie. Tady jsou všechna která dnes drží systém pohromadě.

REUSE FIRST

Před vytvořením nové entity (skript, flow, proměnná) zkontroluj zda podobná již neexistuje. Refaktor > nový kód.

SCRIPT-FIRST

Flow = trigger + set variable + run script. Žádná logika v Flow kartách. Logika ve skriptech je verzovatelná, debugovatelná, testovatelná.

DEVICE MAP

Žádný hardcoded device name. Vše přes sh_device_map_v1. Přejmenování zařízení = jedna změna, ne 20 broken skriptů.

MULTI-SIGNAL

Žádné kritické rozhodnutí z jediného senzoru. Vždy 2+ nezávislé signály (FP2 + Z-Wave motion, button + geofence).

SLEEP RESPECT

Žádné TTS, hlasité akce ani světla při sh_spim=yes. Výjimky: morning briefing, kritické alarmy.

PRIVACY INTERLOCK

Roleta otevřená → open space světla blokována. Garsonka v přízemí, kolemjdoucí vidí dovnitř. Efekt akvária.

IDLE RESET

Každý dočasný request musí být po dokončení akce resetován na idle. Bez resetu = stuck pipeline + ráno bez rádia.

WINDOW GUARDS

Triggery mají časová okna — ranní rutina 3:00–10:00, noční 22:00–6:00. Mimo okno skript odmítne pokračovat.

NO THROW

Nikdy throw new Error(). Vždy log + return false. Throw crashne před cleanup, zanechá proměnné v nekonzistentním stavu.

VARIABLE CACHE

Každý skript cacheuje proměnné (_varCache + _loadVars()). Bez cache = SIGABRT na 200+ proměnných.

IDEMPOTENCE

setCapabilityValue jen pokud se hodnota fakticky mění. Slepý set = kaskáda Flow triggerů a zbytečné zatížení.

NO REGRESSION

Před úpravou existujícího skriptu: přečíst celý, ověřit volající, minimální change. „Už to fungovalo" = nesahat přes silnou potřebu.