Produkcja vs development#

vCLU można uruchamiać zarówno na docelowym urządzeniu (Raspberry Pi), jak i lokalnie na komputerze deweloperskim (macOS, Linux x86). Różnice dotyczą głównie GPIO, trybu MCP i parametrów kompilacji.

MCP — warstwy dostępu#

Tryb developerski to przede wszystkim koncept MCP (Model Context Protocol). Serwer MCP udostępnia agentowi AI narzędzia w dwóch warstwach:

WarstwaNazwaNarzędziaWymaganie
Layer 1ProductionLista urządzeń, odczyt stanu, sterowanie, sceny, dashboardDomyślnie włączona
Layer 2Dev ModeOdczyt plików źródłowych, zapis draftów, sandbox, promote, grepWymaga DevMode
Layer 2+Exec ModeWykonywanie Lua na żywym runtime (vclu_exec)Wymaga DevMode + ExecMode

Każdy bot MCP ma indywidualne ustawienia — możesz mieć bota produkcyjnego (Layer 1) i bota deweloperskiego (Layer 2) jednocześnie.

Layer 1 — kontrola urządzeń#

Bot widzi urządzenia, odczytuje ich stan, steruje nimi i uruchamia sceny. Nie ma dostępu do kodu źródłowego ani możliwości modyfikacji systemu. Odpowiedni dla asystentów domowych i codziennej automatyzacji.

Layer 2 — tryb deweloperski#

Bot dodatkowo może czytać pliki Lua, pisać drafty (izolowana kopia robocza), testować je w sandboxie i promować do produkcji. Zmiany przechodzą przez pipeline: draft → validate → test → promote.

Exec Mode — wykonywanie na żywo#

Bot może wykonywać dowolne snippety Lua na działającym runtime. Przydatne do debugowania i inspekcji stanu, ale wymaga zaufania — kod wykonuje się bezpośrednio na produkcji.

Exec Mode daje botowi pełny dostęp do runtime Lua. Włączaj go tylko dla zaufanych botów deweloperskich, nigdy dla botów sterujących urządzeniami w produkcji.

GPIO — automatyczna detekcja#

vCLU automatycznie wykrywa platformę i wybiera odpowiedni kontroler GPIO:

PlatformaKontrolerZachowanie
Linux ARM64 (Raspberry Pi)RPiControllerPrawdziwe GPIO przez /dev/gpiomem
macOS / Linux x86MockControllerSymulacja w pamięci

Sprawdzenie aktywnej platformy:

local stats = gpio.stats()
print(stats.platform)  -- "rpi" lub "mock"

Mock controller zachowuje się identycznie jak prawdziwy — piny można ustawiać i odczytywać, obiekty GPIO_DOUT i GPIO_DIN działają normalnie. Jedyna różnica to brak fizycznych efektów.

Kompilacja#

TrybKomendaRozmiarWersja
Devgo build -o vclu ./cmd/vclu~18 MBdev
Productiongo build -ldflags="-s -w" -o vclu ./cmd/vclu~13 MBdev (bez tagu)
Releasegoreleaser~13 MBSemver z tagu git (np. 1.2.3)

Flagi -s -w usuwają tablicę symboli i informacje debugowania — zmniejszają binary o ~30%. goreleaser automatycznie wstrzykuje wersję z tagu git.

Praca lokalna na macOS#

Wszystkie funkcje vCLU działają na macOS — możesz rozwijać i testować bez Raspberry Pi:

# Kompilacja i uruchomienie
go build -o vclu ./cmd/vclu
./vclu --auto --data-dir ./data

Co działa identycznie:

  • Panel webowy i REST API
  • Broker MQTT (wbudowany)
  • Dashboard i metryki
  • HomeKit Bridge
  • Serwer MCP i boty AI
  • Edytor kodu i moduły Lua
  • Pluginy

Co jest symulowane:

  • GPIO — MockController zamiast prawdziwego sprzętu
  • Discovery Grenton — działa, ale w sieci nie ma prawdziwych CLU

Użyj flagi --data-dir ./data, aby trzymać dane deweloperskie oddzielnie od ewentualnej instalacji produkcyjnej.

Porównanie środowisk#

CechaProdukcja (RPi)Development (macOS/x86)
GPIOPrawdziwe piny (RPiController)Symulacja (MockController)
Instalacja/opt/vclu/, systemdDowolna lokalizacja, ręcznie
Dane/opt/vclu/data/--data-dir ./data
BinaryStripped, goreleaser, semvergo build, wersja dev
MQTTProdukcyjny brokerIdentyczny broker
HomeKitmDNS w siecimDNS w sieci lokalnej
MCP botyLayer 1 (zalecane)Layer 2 + Exec Mode
BackupAutomatyczny (24h)Opcjonalny
Restartsystemctl restart vcluCtrl+C, ponowne uruchomienie

Typowy workflow: rozwijaj i testuj na macOS z --data-dir ./data, a gotowy kod promuj na Raspberry Pi przez MCP lub ręczne skopiowanie katalogu modules/.