Registry pluginów#

plugins.json — indeks repozytorium#

Każde repozytorium publikuje plik plugins.json z listą dostępnych pluginów:

{
  "version": 1,
  "name": "vCLU Official Plugins",
  "namespace": "vclu",
  "description": "Official plugin repository",
  "author": "vclu",
  "url": "https://github.com/Domktorymysli/vclu-plugins",
  "plugins": [
    {
      "id": "weather",
      "name": "Weather Plugin",
      "version": "1.0.0",
      "description": "Weather data from OpenWeatherMap",
      "author": "vclu",
      "path": "plugins/weather",
      "tags": ["weather", "api"]
    },
    {
      "id": "telegram",
      "name": "Telegram Bot",
      "version": "2.1.0",
      "description": "Telegram bot integration",
      "author": "vclu",
      "path": "plugins/telegram",
      "tags": ["notifications"]
    }
  ]
}
PoleTypOpis
versionintWersja formatu (obecnie 1)
namestringNazwa repozytorium
namespacestringNamespace pluginów (np. "vclu")
urlstringURL repozytorium
pluginsarrayLista pluginów

Plugin listing#

PoleTypOpis
idstringShort ID pluginu
namestringNazwa wyświetlana
versionstringWersja
descriptionstringOpis
pathstringŚcieżka w repozytorium (np. "plugins/weather")
tagsarrayTagi

Zarządzanie repozytoriami#

Domyślne repozytorium#

vCLU zawiera domyślne repozytorium:

{
  "name": "vCLU Official",
  "url": "https://github.com/Domktorymysli/vclu-plugins",
  "enabled": true,
  "default": true
}

Repozytorium default: true nie może być usunięte.

Dodawanie repozytorium#

POST /api/plugins/repositories
{
  "name": "My Plugins",
  "url": "https://github.com/user/vclu-plugins"
}

Lista repozytoriów#

GET /api/plugins/repositories

Usuwanie repozytorium#

DELETE /api/plugins/repositories/:name

Instalacja z repozytorium#

Przebieg#

  1. GET /api/plugins/available — pobiera plugins.json ze wszystkich repozytoriów
  2. Użytkownik wybiera plugin w UI
  3. POST /api/plugins/install z {id, fullId, repository}
  4. Loader pobiera pliki z repozytorium:
    • Buduje URL: {repoURL}/plugins/{id}/plugin.json
    • Pobiera plugin.json + pliki z files[]
    • Zapisuje do plugins/{namespace}--{id}/
  5. Dodaje wpis do .vclu.json

URL resolution#

Dla GitHub:

Repo URL: https://github.com/user/repo
→ Raw base: https://raw.githubusercontent.com/user/repo/main/
→ plugins.json: {rawBase}/plugins.json
→ Plugin files: {rawBase}/{path}/init.lua

Konfiguracja w .vclu.json#

Zainstalowane pluginy zapisane w sekcji plugins:

{
  "plugins": {
    "repositories": [
      {
        "name": "vCLU Official",
        "url": "https://github.com/Domktorymysli/vclu-plugins",
        "enabled": true,
        "default": true
      }
    ],
    "installed": [
      {
        "id": "@vclu/weather",
        "version": "1.0.0",
        "enabled": true,
        "repository": "vCLU Official",
        "installedAt": "2026-02-17T10:30:00Z",
        "config": {
          "apiKey": "your-key",
          "city": "Warsaw",
          "interval": 3600
        }
      }
    ]
  }
}

Pola installed[]#

PoleTypOpis
idstringFull ID (@namespace/shortId)
versionstringZainstalowana wersja
enabledboolCzy plugin aktywny
repositorystringNazwa repozytorium źródłowego
installedAtstringData instalacji (ISO 8601)
configobjectKonfiguracja użytkownika

Oficjalne pluginy#

IDFull IDWersjaOpis
weather@vclu/weather1.0.0OpenWeatherMap
time-sync@vclu/time-sync1.0.0WorldTimeAPI sync
sun-position@vclu/sun-position1.0.0Pozycja słońca/księżyca
telegram@vclu/telegram2.1.0Bot Telegram
salda-recuperator@vclu/salda-recuperator1.0.0Rekuperator Salda
supla-power-meter@vclu/supla-power-meter1.0.0Licznik Supla
influx-metrics@vclu/influx-metrics1.1.0Metryki InfluxDB
example@vclu/example2.1.0Szablon pluginu