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:

  1. Runtime - wbudowane moduły (EventBus, MQTT client, timery, rejestr obiektów)
  2. user.lua - plik użytkownika (opcjonalny, błędy są logowane, nie przerywają startu)
  3. om.lua - obiekty z Grenton Object Manager (generowany automatycznie)
  4. modules/*.lua - Twoje automatyzacje, sceny, dashboardy
  5. 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ś setTimeout lub setInterval jest 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#

PlikOpisEdytowalny
user.luaGlobalny kod użytkownika (MQTT client, zmienne)Tak, ale OM nadpisuje
om.luaObiekty z Object ManagerNie - generowany przez OM
modules/*.luaAutomatyzacje, sceny, dashboardyTak
modules/init.luaEntry point - require() dla każdego modułuTak

Pliki user.lua i om.lua są nadpisywane przez Grenton Object Manager. Swój kod pisz w modules/.