Files
Enelix-EMS/services/license/changes/20261006-heat-pump-header

Portal: Waermepumpe und Header

Stand: 6. Oktober 2026. Entwickelt und getestet, noch nicht live veroeffentlicht.

Aenderung / Pull-Request-Text

Der bestehende Katalogeintrag heat_pump wird im Lizenzkauf beruecksichtigt. Die bestehenden Preise bleiben unveraendert: CHF 20.95 Lizenz und CHF 27.25 Generator / Ersteinrichtung, jeweils netto. Die Bereitstellung aktiviert nur die Verfuegbarkeit des Produkts; sie kauft keine Lizenz und vergibt keine kostenlose Berechtigung an eine Anlage.

Der Wizard hat einen eigenen Waermepumpenschritt mit SG Ready oder Sperre/Erhoehung, zwei Kontakten, Betriebsrueckmeldung und Schutzzeiten. Gespeicherte Konfigurationen, Lizenzvorschlag und generiertes Symcon-Paket verwenden das Modul {A31C9274-54F7-4BD2-9804-7AF23E86C4D1}. Freie Bestandskontingente von consumer_single werden wie im Manager angerechnet, ohne Doppelbelegung. Technische Variablenkennungen duerfen zur Planung noch 0 sein. Das Bootstrap-Skript bricht vor Objektveraenderungen ab, wenn die Waermepumpen-Zuordnung unvollstaendig ist, das Modul fehlt oder die Rueckmeldung einen unpassenden Typ hat.

Dokumentation und Preise stehen als Textlinks rechts im Portalheader und nicht mehr in der Seitennavigation. Oeffentliche Links auf der Anmeldeseite bleiben.

Voraussetzungen und Konfliktschutz

  • Ziel: /home/agent/services/license auf enelix-services.
  • portal.patch zeigt ausschliesslich Aenderungen gegen den gelesenen Live-Stand.
  • manifest.json enthaelt SHA-256 vor und nach jeder Quellaenderung.
  • Die weiterentwickelte, nicht veroeffentlichte Wizard-Fassung auf ubuntu wird nicht durch diesen Live-Patch ersetzt.
  • Keine Aenderung an Symcon-Anlagen, Docker-Compose, Datenbankschema, Geheimnissen, Prognosediensten oder fremden Git-Aenderungen. Daniel Haefliger hat Commit und Push auf develop sowie den Portalneustart ausdruecklich freigegeben.

Tests

  • 32 Node-Tests: vorhandene Portalregressionen plus acht neue Waermepumpentests.
  • Browserpruefung mit isolierten API-Fixtures: Header bei 1440, 768, 390 und 320 Pixeln; Wizard konfigurieren, speichern, Lizenzvorschlag und erneut oeffnen.
  • Keine Browserfehler. Kein echter Kauf, keine Live-Lizenzvergabe und keine Schaltbefehle an eine Waermepumpe.
  • JavaScript-Syntax und Anwendbarkeit des Patches geprueft. PHP-Syntaxpruefung und Symcon-Laufzeittest konnten nicht ausgefuehrt werden: keine native PHP-CLI und kein Zugriff auf die Docker-Sockets in dieser Agent-Ausfuehrung.
  • tests/ enthaelt neue bzw. angepasste Tests. Im Testcheckout in dessen vorhandenes tests/ uebernehmen und node --test tests/*.test.mjs ausfuehren.
  • Browserpruefung: node tests/browser-smoke.mjs mit installiertem Playwright und Chromium; optional BROWSER_PACKAGE und BROWSER_EXECUTABLE fuer vorhandene Testwerkzeuge setzen. API-Antworten stammen ausschliesslich aus Test-Fixtures.

Bereitstellung

Der Portalneustart ist vom Auftraggeber freigegeben; dem Serverkonto agent fehlt jedoch der technische Zugriff auf den Docker-Socket. Ein berechtigter Administrator prueft dieses Paket und fuehrt auf dem Diensteserver aus:

python3 /PFAD/ZUM/PAKET/deploy.py

Das Skript verlangt Root, prueft alle Ausgangshashes und Container-Mounts und bricht bei Abweichungen ohne Quellaenderung ab. Es sichert die betroffenen Dateien und den Katalog, stoppt nur enelix_license_portal, schreibt die Quelldateien unter Erhalt der Datei-Bind-Mounts und setzt ausschliesslich die Produktfreigabe items.heat_pump.available auf true. Anschliessend startet es den Portalcontainer und prueft Healthcheck, Wizardkatalog und ausgelieferte Oberflaeche. Es nimmt keine Bestellung vor und laesst alle Produktpreise unveraendert.

Das Stoppen/Starten verursacht eine kurze Portalunterbrechung. Backoffice und Anlagensteuerungen werden nicht neu gestartet. Vor Ausfuehrung parallele Katalogbearbeitungen im Backoffice fuer das Wartungsfenster aussetzen.

Ruecksetzen und Nachkontrolle

Bei Fehlern stellt das Skript die gesicherten Quellinhalte wieder her und startet den Portalcontainer erneut. Ein nachtraeglich anderweitig veraenderter Katalog wird dabei nicht blind ueberschrieben. Sicherungen liegen unter /home/agent/services/license/change-backups/heat-pump-header-<Zeitpunkt>.

Nach erfolgreicher Bereitstellung angemeldet Headerlinks, neue Lizenzzeile, Waermepumpenschritt, Speichern und Wiedereroeffnen kontrollieren. Zahlungen nur mit einem ausdruecklich freigegebenen Sandbox-Test abschliessen. Das erzeugte Symcon-Paket zuerst in einer isolierten IP-Symcon-8-Installation pruefen; das Ausfuehren des Pakets kann Kontakte schalten und ist kein Bestandteil dieser Portalbereitstellung.