Zum Inhalt

Lizenzierung

Die Integration wird von der SpeicherGuru GmbH kommerziell vertrieben. Der Quellcode ist proprietär; Release-Archive werden Kunden im Rahmen ihrer kommerziellen Lizenz bereitgestellt.

Stufen

Stufe Umfang Gültigkeit
Trial Basis-Sensoren, Modbus lesen, Support-Session 30 Tage ab erster Einrichtung
Commercial Pro alle Sensoren, Schreibzugriff, Auto-Discovery, Profil-Updates signiertes Ablaufdatum, 14 Tage Grace
Free Basis-Sensoren nach Trial- oder Lizenzablauf

Die Trial startet automatisch bei der ersten Einrichtung. Sie liegt im .storage-Verzeichnis von Home Assistant und übersteht Neustarts.

Prüfmechanismus

Eine Lizenz ist ein mit Ed25519 signiertes JSON-Dokument:

{
  "payload": {
    "license_id": "lic-123",
    "tier": "pro",
    "customer": "Beispiel GmbH",
    "ha_uuid": "…",
    "issued_at": "2026-11-11T00:00:00+00:00",
    "expires_at": "2027-11-11T00:00:00+00:00"
  },
  "signature": "base64…"
}

Die Integration:

  1. dekodiert den Envelope,
  2. prüft die Signatur mit dem eingebetteten Public Key,
  3. vergleicht ha_uuid mit der Home-Assistant-Instanz-UUID,
  4. prüft das Ablaufdatum und wendet die 14-Tage-Grace an,
  5. speichert den Original-Blob in .storage und prüft ihn bei jedem Start neu.

Ein kopiertes .storage-Verzeichnis verschiebt die Lizenz nicht auf eine andere Instanz, weil die Instanz-UUID abweicht.

Lizenz aktivieren

Über den Dienst:

service: sg_energy_hub.activate_license
data:
  license_blob: |
    {"payload": { ... }, "signature": "..."}

Der Status-Sensor wechselt auf active. Einträge werden automatisch neu geladen, damit Pro-Sensoren erscheinen.

Instanz-UUID auslesen

Die UUID steht in:

  • den Attributen des Sensors Lizenzstatus,
  • der Diagnose,
  • der Antwort des Dienstes export_diagnostics.

Diese ID beim Lizenzkauf an den Hersteller senden.

Werkzeuge für den Vertrieb

python scripts/generate_license_key.py --output-dir /secure
python scripts/sign_license.py \
  --private-key /secure/sg-energy-hub-license-private.pem \
  --ha-uuid <instanz-uuid> \
  --customer "Beispiel GmbH" \
  --days 365

Der private Schlüssel gehört in den Secret Store (Infisical/Vault). Nur der Public Key steht in const.py.

Grace und Ablauf

  • Active: Ablauf liegt in der Zukunft; alle Pro-Features sind verfügbar.
  • Grace: bis 14 Tage nach Ablauf; Pro-Features bleiben verfügbar, der Status-Sensor meldet grace.
  • Expired: Pro-Features entfallen, Basis-Sensoren bleiben.
  • Free: keine gültige Lizenz und Trial beendet.

Schreibzugriff benötigt zusätzlich die Option enable_write. Beide Bedingungen müssen erfüllt sein.