Storage#

vCLU przechowuje wszystkie dane w jednym katalogu danych. Domyślnie jest to ./data — można go zmienić flagą --data-dir.

Struktura katalogów#

<data-dir>/
└── clu/                      # katalog główny runtime
    ├── .vclu.json             # konfiguracja główna
    ├── imports/               # zaimportowane pliki OM
    ├── metrics/               # dane metryk (time-series)
    ├── docs/ai/               # dokumentacja dla agentów AI
    ├── modules/               # moduły użytkownika (Lua)
    └── a/                     # dysk A (dostępny przez TFTP)
        ├── CONFIG.JSON        # konfiguracja modułów
        ├── config.txt         # konfiguracja TFTP
        ├── keys.json          # klucze szyfrujące (tryb 0600)
        ├── main.lua           # bootstrap Grenton
        ├── om.lua             # mapa obiektów (generowana przez OM)
        └── user.lua           # kod użytkownika (generowany przez OM)

Ścieżki produkcyjne#

Na Raspberry Pi (instalacja przez install.sh):

ŚcieżkaZawartość
/opt/vclu/Binary vclu, katalog web/, pliki runtime
/opt/vclu/data/Dane użytkownika (konfiguracja, moduły, metryki)

Katalog /opt/vclu/data/ jest jedynym, który wymaga backupu — zawiera całą konfigurację i kod użytkownika.

.vclu.json — konfiguracja główna#

Plik .vclu.json w katalogu clu/ przechowuje wszystkie ustawienia systemu:

  • Typ urządzenia i numer seryjny
  • Klucze szyfrowania (unicast, broadcast)
  • Hasło i uwierzytelnianie
  • Konfiguracja MQTT (port, użytkownik, hasło)
  • Integracja HomeKit (PIN, nazwa)
  • Serwer MCP (boty, uprawnienia, tryby)
  • Pluginy (repozytoria, zainstalowane)
  • Profile kontroli dostępu
  • Backup (harmonogram, retencja)
  • Metryki (definicje, interwały)

Plik jest zapisywany atomowo funkcją WriteMasterConfig() z uprawnieniami 0644. Zapis atomowy oznacza, że plik jest najpierw zapisywany do pliku tymczasowego, a następnie przenoszony — dzięki temu przerwa zasilania nie uszkodzi konfiguracji.

keys.json — klucze szyfrowania#

Plik a/keys.json zawiera klucz AES-128 i wektor inicjalizacji (IV) do szyfrowania komunikacji z urządzeniami Grenton. Generowany jest automatycznie przy pierwszym uruchomieniu.

Uprawnienia pliku: 0600 (odczyt/zapis tylko dla właściciela). Klucze nie powinny być udostępniane ani kopiowane między instancjami.

Utrata pliku keys.json oznacza konieczność ponownego sparowania z Object Managerem. Zadbaj o backup katalogu danych.

modules/ — kod użytkownika#

Katalog modules/ to jedyne miejsce przeznaczone do edycji przez użytkownika. Umieszczasz tu własne pliki Lua — automatyzacje, definicje urządzeń, sceny.

Pliki ładowane są w kolejności:

  1. init.lua (jeśli istnieje) — zawsze pierwszy
  2. Pozostałe pliki *.lua — alfabetycznie

Zmiany w modules/ są przeładowywane na żywo — nie trzeba restartować vCLU. Reload wykonuje się z panelu webowego lub przez MCP.

om.lua i user.lua — pliki generowane#

Pliki a/om.lua i a/user.lua są generowane przez Grenton Object Manager. Zawierają mapę obiektów, konfigurację modułów I/O i kod użytkownika z projektów OM.

Nie edytuj om.lua i user.lua ręcznie. Object Manager nadpisze Twoje zmiany przy następnej synchronizacji. Własny kod umieszczaj w modules/.

Backup#

vCLU automatycznie tworzy kopie zapasowe konfiguracji i kodu. Ustawienia backupu w .vclu.json:

ParametrDomyślna wartośćOpis
autoEnabledtrueAutomatyczny backup włączony
intervalH24Interwał w godzinach
maxBackups7Maksymalna liczba przechowywanych kopii

Backup obejmuje .vclu.json, pliki a/ oraz modules/. Kopie zapasowe zarządzasz z poziomu panelu webowego (zakładka Ustawienia).

metrics/ — dane metryk#

Katalog metrics/ przechowuje dane time-series zbierane z urządzeń (temperatury, stany, wartości analogowe). Dane są dostępne na dashboardzie w formie wykresów.

Metryki są lekkie — typowa instalacja z kilkunastoma czujnikami generuje kilka MB danych miesięcznie.

Aby przenieść vCLU na nowe urządzenie, wystarczy skopiować cały katalog data/ i uruchomić binary. Wszystkie ustawienia, moduły i metryki zostaną zachowane.