fix(manager): Prognoseberechtigungen verständlich diagnostizieren
This commit is contained in:
+5
-7
@@ -2266,12 +2266,7 @@ class Manager extends IPSModule implements ManagerSchnittstelle
|
||||
/** @param array<string, mixed> $lease */
|
||||
private function prognoseBerechtigungInLease(array $lease): bool
|
||||
{
|
||||
return Lizenzpruefung::berechtigungsMenge($lease, Lizenzpruefung::NETZFAHRPLAN) > 0
|
||||
|| (Lizenzpruefung::berechtigungsMenge($lease, Lizenzpruefung::PROGNOSE_PV) > 0
|
||||
&& Lizenzpruefung::berechtigungsMenge(
|
||||
$lease,
|
||||
Lizenzpruefung::PROGNOSE_VERBRAUCH
|
||||
) > 0);
|
||||
return Lizenzpruefung::hatPrognoseBerechtigung($lease);
|
||||
}
|
||||
|
||||
private function berechtigungLizenziert(string $kennung, ?string $lizenzcode = null): bool
|
||||
@@ -2421,7 +2416,10 @@ class Manager extends IPSModule implements ManagerSchnittstelle
|
||||
if (!$lizenziert) {
|
||||
return 'Prognosen sind deaktiviert. Fuer die Manager-ID '
|
||||
. $managerID
|
||||
. ' fehlen forecast_pv plus forecast_load oder grid_schedule.';
|
||||
. ' ist keine Prognoseberechtigung vorhanden. Benoetigt wird entweder '
|
||||
. 'PV-Ertragsprognose zusammen mit Verbrauchsprognose oder der '
|
||||
. 'Intelligente Netzfahrplan. Nach der Erweiterung im Lizenzportal '
|
||||
. 'die Lizenz erneut pruefen und binden.';
|
||||
}
|
||||
|
||||
return ($aktiv ? 'Prognosen sind aktiviert. ' : 'Prognosen sind deaktiviert. ')
|
||||
|
||||
@@ -279,6 +279,7 @@ stabile ID gebunden werden.
|
||||
| HTTP `429` | Zu viele Aktivierungsversuche; vor dem naechsten Versuch warten. |
|
||||
| `Lizenzserver nicht erreichbar` | DNS, Internetzugang, HTTPS und Systemzeit des Symcon-Systems pruefen. Eine bestehende Lease gilt nur bis `offlineUntil`. |
|
||||
| `Offline-Freigabe ist abgelaufen.` | Verbindung zum Lizenzserver wiederherstellen und Lizenz erneut pruefen. |
|
||||
| `Keine Prognoseberechtigung vorhanden` | Im Lizenzportal entweder PV-Ertragsprognose zusammen mit Verbrauchsprognose oder den Intelligenten Netzfahrplan ergaenzen. Anschliessend im Manager `Lizenz pruefen und binden` ausloesen, die Prognose aktivieren und die Konfiguration speichern. |
|
||||
|
||||
Fuer eine genauere Diagnose koennen die Diagnosevariablen eingeblendet werden.
|
||||
`Lizenzstatus` zeigt dann den aktuellen Zustand. Mit aktiviertem Debug-Logging
|
||||
|
||||
@@ -117,6 +117,19 @@ final class Lizenzpruefung
|
||||
return $menge;
|
||||
}
|
||||
|
||||
/**
|
||||
* Eine Prognose ist entweder durch den Netzfahrplan oder durch beide
|
||||
* Einzelberechtigungen fuer PV und Verbrauch freigeschaltet.
|
||||
*
|
||||
* @param array<string, mixed> $lease
|
||||
*/
|
||||
public static function hatPrognoseBerechtigung(array $lease): bool
|
||||
{
|
||||
return self::berechtigungsMenge($lease, self::NETZFAHRPLAN) > 0
|
||||
|| (self::berechtigungsMenge($lease, self::PROGNOSE_PV) > 0
|
||||
&& self::berechtigungsMenge($lease, self::PROGNOSE_VERBRAUCH) > 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Rechnet freie, bestehende Einzellizenzen auf nicht separat lizenzierte Waermepumpen an.
|
||||
*
|
||||
|
||||
@@ -228,6 +228,47 @@ final class LizenzpruefungTest extends TestCase
|
||||
Lizenzpruefung::pruefeVerbrauchermengen($lease, $pruefmengen);
|
||||
}
|
||||
|
||||
public function testPvUndVerbrauchGebenPrognoseFrei(): void
|
||||
{
|
||||
$lease = $this->lease('manager_standard');
|
||||
$lease['entitlements'][] = [
|
||||
'catalog_key' => Lizenzpruefung::PROGNOSE_PV,
|
||||
'quantity' => 1,
|
||||
'status' => 'active',
|
||||
];
|
||||
$lease['entitlements'][] = [
|
||||
'catalog_key' => Lizenzpruefung::PROGNOSE_VERBRAUCH,
|
||||
'quantity' => 1,
|
||||
'status' => 'active',
|
||||
];
|
||||
|
||||
self::assertTrue(Lizenzpruefung::hatPrognoseBerechtigung($lease));
|
||||
}
|
||||
|
||||
public function testEinzelnePrognoseBerechtigungReichtNichtAus(): void
|
||||
{
|
||||
$lease = $this->lease('manager_standard');
|
||||
$lease['entitlements'][] = [
|
||||
'catalog_key' => Lizenzpruefung::PROGNOSE_PV,
|
||||
'quantity' => 1,
|
||||
'status' => 'active',
|
||||
];
|
||||
|
||||
self::assertFalse(Lizenzpruefung::hatPrognoseBerechtigung($lease));
|
||||
}
|
||||
|
||||
public function testNetzfahrplanGibtPrognoseAlleineFrei(): void
|
||||
{
|
||||
$lease = $this->lease('manager_standard');
|
||||
$lease['entitlements'][] = [
|
||||
'catalog_key' => Lizenzpruefung::NETZFAHRPLAN,
|
||||
'quantity' => 1,
|
||||
'status' => 'active',
|
||||
];
|
||||
|
||||
self::assertTrue(Lizenzpruefung::hatPrognoseBerechtigung($lease));
|
||||
}
|
||||
|
||||
public function testLizenzcodeWirdWieAufDemServerNormalisiert(): void
|
||||
{
|
||||
self::assertSame(
|
||||
|
||||
Reference in New Issue
Block a user