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:
- dekodiert den Envelope,
- prüft die Signatur mit dem eingebetteten Public Key,
- vergleicht
ha_uuidmit der Home-Assistant-Instanz-UUID, - prüft das Ablaufdatum und wendet die 14-Tage-Grace an,
- speichert den Original-Blob in
.storageund 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.