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żka | Zawartość |
|---|---|
/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.jsonoznacza 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:
init.lua(jeśli istnieje) — zawsze pierwszy- 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.luaiuser.luaręcznie. Object Manager nadpisze Twoje zmiany przy następnej synchronizacji. Własny kod umieszczaj wmodules/.
Backup#
vCLU automatycznie tworzy kopie zapasowe konfiguracji i kodu. Ustawienia backupu w .vclu.json:
| Parametr | Domyślna wartość | Opis |
|---|---|---|
autoEnabled | true | Automatyczny backup włączony |
intervalH | 24 | Interwał w godzinach |
maxBackups | 7 | Maksymalna 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.