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#

graph TD
    subgraph Go["Go Process"]
        subgraph Engine["LuaEngine"]
            lstate["LState<br/><i>Lua VM</i>"]
            timermgr["TimerMgr<br/><i>Go</i>"]
            lstate --> runloop
            timermgr --> runloop
            runloop["RunLoop (10ms)"]
            runloop --> proc_timers["ProcessTimers()"]
            runloop --> proc_http["ProcessHTTPServer()"]
            runloop --> proc_gpio["PollGPIOInputs()"]
        end
        httpmgr["HTTPManager"]
        kvstore["KVStore"]
        gpiomgr["GPIOManager"]
    end

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
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
DashboardyPubliczne dashboardy z widgetami, wykresami
MetrykiDane historyczne (temperatura, wilgotność, wykresy)
DebugowanieExecute, REPL, introspekcja
LogiSystem logowania