Runtime & Lua#

To jest serce vCLU. Cały system opiera się na silniku Lua 5.1 (gopher-lua) osadzonym w procesie Go. Lua odpowiada za logikę automatyki, obsługę zdarzeń, timery, komunikację HTTP i zarządzanie modułami.

Jak to działa#

┌─────────────────────────────────────────────┐
│  Go Process                                 │
│  ┌───────────────────────────────────────┐  │
│  │  LuaEngine                            │  │
│  │  ┌─────────┐  ┌──────────┐           │  │
│  │  │ LState  │  │ TimerMgr │           │  │
│  │  │ (Lua VM)│  │ (Go)     │           │  │
│  │  └────┬────┘  └─────┬────┘           │  │
│  │       │              │                │  │
│  │  ┌────▼──────────────▼────────────┐  │  │
│  │  │        RunLoop (10ms)          │  │  │
│  │  │  • ProcessTimers()             │  │  │
│  │  │  • ProcessHTTPServer()         │  │  │
│  │  │  • PollGPIOInputs()           │  │  │
│  │  └────────────────────────────────┘  │  │
│  └───────────────────────────────────────┘  │
│                                             │
│  HTTPManager · KVStore · GPIOManager        │
└─────────────────────────────────────────────┘

Główna pętla (RunLoop) działa z tickiem co 10ms i obsługuje:

  • Timery — setTimeout/setInterval z gopher-lua
  • HTTP server — wbudowany serwer Lua dla endpointów
  • GPIO polling — odczyt stanów wejść cyfrowych

Cały dostęp do LState jest chroniony mutexem (sync.RWMutex) — gopher-lua nie jest thread-safe.

Sekcje#

StronaOpis
Model runtimeInicjalizacja, bootstrap, pętla główna
user.luaSkrypty użytkownika
om.luaObiekty wygenerowane przez OM (read-only)
RegistryCentralny rejestr obiektów
EventBusSystem zdarzeń
TimerysetTimeout, setInterval, Timer module
HelperySceny, sekwencje, matematyka, logowanie, debug
HTTPKlient HTTP, serwer HTTP, HttpListener
StoragePersystentny KV store
Data i czasos.time, os.date, harmonogramy
Zdalne CLUImport om.lua, proxy, protokol UDP
Parseryjson, xml, datetime, color
Wlasne modulyKatalog modules/, require(), struktura
DebugowanieExecute, REPL, introspekcja
LogiSystem logowania