Model runtime#
Jak działa vCLU#
vCLU to kontroler smart home oparty na dwóch warstwach:
- Go - obsługuje sieć, szyfrowanie, serwer web, MQTT, HomeKit
- Lua - obsługuje logikę automatyzacji, sceny, sterowanie urządzeniami
Cały kod Lua wykonywany jest w jednym wątku. Zmiany w plikach Lua można załadować bez restartu całego programu (hot reload).
Sekwencja startu#
Przy uruchomieniu vCLU ładuje pliki w następującej kolejności:
- Runtime - wbudowane moduły (EventBus, MQTT client, timery, rejestr obiektów)
- user.lua - plik użytkownika (opcjonalny, błędy są logowane, nie przerywają startu)
- om.lua - obiekty z Grenton Object Manager (generowany automatycznie)
- modules/*.lua - Twoje automatyzacje, sceny, dashboardy
- Pluginy - zainstalowane pluginy z ich sandbox
Po załadowaniu wszystkich plików vCLU uruchamia SYSTEM.Init() i zaczyna nasłuchiwać zdarzeń.
Pętla główna#
vCLU co 10ms sprawdza:
- Timery - czy jakiś
setTimeoutlubsetIntervaljest gotowy do wykonania - GPIO - czy zmienił się stan pinów wejściowych (Raspberry Pi)
Dzięki temu automatyzacje reagują na zdarzenia w czasie rzeczywistym.
Hot reload#
Możesz zmienić kod Lua i załadować go ponownie bez restartowania vCLU:
- Z poziomu edytora w panelu webowym (przycisk Reload)
- Z poziomu MCP (narzędzie
vclu_reload) - Automatycznie po promote draftu przez agenta AI
Hot reload tworzy nowy silnik Lua, ładuje wszystkie pliki od nowa i przywraca stan integracji (MQTT, HomeKit, access control).
Gdzie są pliki#
| Plik | Opis | Edytowalny |
|---|---|---|
user.lua | Globalny kod użytkownika (MQTT client, zmienne) | Tak, ale OM nadpisuje |
om.lua | Obiekty z Object Manager | Nie - generowany przez OM |
modules/*.lua | Automatyzacje, sceny, dashboardy | Tak |
modules/init.lua | Entry point - require() dla każdego modułu | Tak |
Pliki
user.luaiom.luasą nadpisywane przez Grenton Object Manager. Swój kod pisz wmodules/.