feat: Anlagentopologie im Manager abbilden
This commit is contained in:
@@ -206,6 +206,282 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "ExpansionPanel",
|
||||
"caption": "Anlagentopologie",
|
||||
"expanded": true,
|
||||
"items": [
|
||||
{
|
||||
"type": "List",
|
||||
"name": "AnlagenWechselrichter",
|
||||
"caption": "Wechselrichter",
|
||||
"rowCount": 4,
|
||||
"add": true,
|
||||
"delete": true,
|
||||
"sortable": true,
|
||||
"columns": [
|
||||
{
|
||||
"caption": "ID",
|
||||
"name": "ID",
|
||||
"width": "130px",
|
||||
"add": "wr-1",
|
||||
"edit": {"type": "ValidationTextBox"}
|
||||
},
|
||||
{
|
||||
"caption": "Name",
|
||||
"name": "Name",
|
||||
"width": "auto",
|
||||
"add": "Wechselrichter",
|
||||
"edit": {"type": "ValidationTextBox"}
|
||||
},
|
||||
{
|
||||
"caption": "Typ",
|
||||
"name": "Typ",
|
||||
"width": "130px",
|
||||
"add": "pv",
|
||||
"edit": {
|
||||
"type": "Select",
|
||||
"options": [
|
||||
{"caption": "PV", "value": "pv"},
|
||||
{"caption": "Batterie", "value": "battery"},
|
||||
{"caption": "Hybrid", "value": "hybrid"}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"caption": "AC Nennleistung",
|
||||
"name": "ACNennleistung_kW",
|
||||
"width": "150px",
|
||||
"add": 0.0,
|
||||
"edit": {
|
||||
"type": "NumberSpinner",
|
||||
"suffix": " kW",
|
||||
"minimum": 0.0,
|
||||
"digits": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"caption": "Einspeisegrenze",
|
||||
"name": "ACEinspeisegrenze_kW",
|
||||
"width": "150px",
|
||||
"add": 0.0,
|
||||
"edit": {
|
||||
"type": "NumberSpinner",
|
||||
"suffix": " kW",
|
||||
"minimum": 0.0,
|
||||
"digits": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"caption": "Bezugsgrenze",
|
||||
"name": "ACBezugsgrenze_kW",
|
||||
"width": "140px",
|
||||
"add": 0.0,
|
||||
"edit": {
|
||||
"type": "NumberSpinner",
|
||||
"suffix": " kW",
|
||||
"minimum": 0.0,
|
||||
"digits": 3
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "List",
|
||||
"name": "AnlagenPVFlaechen",
|
||||
"caption": "PV-Flaechen",
|
||||
"rowCount": 6,
|
||||
"add": true,
|
||||
"delete": true,
|
||||
"sortable": true,
|
||||
"columns": [
|
||||
{
|
||||
"caption": "ID",
|
||||
"name": "ID",
|
||||
"width": "120px",
|
||||
"add": "pv-1",
|
||||
"edit": {"type": "ValidationTextBox"}
|
||||
},
|
||||
{
|
||||
"caption": "Name",
|
||||
"name": "Name",
|
||||
"width": "auto",
|
||||
"add": "PV-Flaeche",
|
||||
"edit": {"type": "ValidationTextBox"}
|
||||
},
|
||||
{
|
||||
"caption": "DC-Leistung",
|
||||
"name": "DCLeistung_kWp",
|
||||
"width": "130px",
|
||||
"add": 0.0,
|
||||
"edit": {
|
||||
"type": "NumberSpinner",
|
||||
"suffix": " kWp",
|
||||
"minimum": 0.0,
|
||||
"digits": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"caption": "Neigung",
|
||||
"name": "Neigung_Grad",
|
||||
"width": "110px",
|
||||
"add": 30.0,
|
||||
"edit": {
|
||||
"type": "NumberSpinner",
|
||||
"suffix": " Grad",
|
||||
"minimum": 0.0,
|
||||
"maximum": 90.0,
|
||||
"digits": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"caption": "Azimut",
|
||||
"name": "Azimut_Grad",
|
||||
"width": "110px",
|
||||
"add": 0.0,
|
||||
"edit": {
|
||||
"type": "NumberSpinner",
|
||||
"suffix": " Grad",
|
||||
"minimum": -180.0,
|
||||
"maximum": 180.0,
|
||||
"digits": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"caption": "Wechselrichter-ID",
|
||||
"name": "WechselrichterID",
|
||||
"width": "150px",
|
||||
"add": "wr-1",
|
||||
"edit": {"type": "ValidationTextBox"}
|
||||
},
|
||||
{
|
||||
"caption": "MPPT",
|
||||
"name": "MPPT",
|
||||
"width": "90px",
|
||||
"add": "",
|
||||
"edit": {"type": "ValidationTextBox"}
|
||||
},
|
||||
{
|
||||
"caption": "Module",
|
||||
"name": "Modulanzahl",
|
||||
"width": "90px",
|
||||
"add": 0,
|
||||
"edit": {
|
||||
"type": "NumberSpinner",
|
||||
"minimum": 0,
|
||||
"digits": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"caption": "Modulleistung",
|
||||
"name": "Modulleistung_Wp",
|
||||
"width": "130px",
|
||||
"add": 0.0,
|
||||
"edit": {
|
||||
"type": "NumberSpinner",
|
||||
"suffix": " Wp",
|
||||
"minimum": 0.0,
|
||||
"digits": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "List",
|
||||
"name": "AnlagenBatterien",
|
||||
"caption": "Batteriespeicher",
|
||||
"rowCount": 4,
|
||||
"add": true,
|
||||
"delete": true,
|
||||
"sortable": true,
|
||||
"columns": [
|
||||
{
|
||||
"caption": "ID",
|
||||
"name": "ID",
|
||||
"width": "120px",
|
||||
"add": "bat-1",
|
||||
"edit": {"type": "ValidationTextBox"}
|
||||
},
|
||||
{
|
||||
"caption": "Name",
|
||||
"name": "Name",
|
||||
"width": "auto",
|
||||
"add": "Batteriespeicher",
|
||||
"edit": {"type": "ValidationTextBox"}
|
||||
},
|
||||
{
|
||||
"caption": "Nennkapazitaet",
|
||||
"name": "Nennkapazitaet_kWh",
|
||||
"width": "150px",
|
||||
"add": 0.0,
|
||||
"edit": {
|
||||
"type": "NumberSpinner",
|
||||
"suffix": " kWh",
|
||||
"minimum": 0.0,
|
||||
"digits": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"caption": "Nutzkapazitaet",
|
||||
"name": "Nutzkapazitaet_kWh",
|
||||
"width": "150px",
|
||||
"add": 0.0,
|
||||
"edit": {
|
||||
"type": "NumberSpinner",
|
||||
"suffix": " kWh",
|
||||
"minimum": 0.0,
|
||||
"digits": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"caption": "Max. Laden",
|
||||
"name": "MaxLadeleistung_kW",
|
||||
"width": "130px",
|
||||
"add": 0.0,
|
||||
"edit": {
|
||||
"type": "NumberSpinner",
|
||||
"suffix": " kW",
|
||||
"minimum": 0.0,
|
||||
"digits": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"caption": "Max. Entladen",
|
||||
"name": "MaxEntladeleistung_kW",
|
||||
"width": "140px",
|
||||
"add": 0.0,
|
||||
"edit": {
|
||||
"type": "NumberSpinner",
|
||||
"suffix": " kW",
|
||||
"minimum": 0.0,
|
||||
"digits": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"caption": "Wechselrichter-ID",
|
||||
"name": "WechselrichterID",
|
||||
"width": "150px",
|
||||
"add": "wr-1",
|
||||
"edit": {"type": "ValidationTextBox"}
|
||||
},
|
||||
{
|
||||
"caption": "Kopplung",
|
||||
"name": "Kopplung",
|
||||
"width": "130px",
|
||||
"add": "ac",
|
||||
"edit": {
|
||||
"type": "Select",
|
||||
"options": [
|
||||
{"caption": "AC", "value": "ac"},
|
||||
{"caption": "DC", "value": "dc"},
|
||||
{"caption": "Hybrid", "value": "hybrid"}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "ExpansionPanel",
|
||||
"caption": "Erweiterte Einstellungen",
|
||||
|
||||
@@ -6,7 +6,9 @@ require_once __DIR__ . '/../libs/ManagerSchnittstelle.php';
|
||||
require_once __DIR__ . '/../libs/Nachrichtenvertrag.php';
|
||||
require_once __DIR__ . '/../libs/ManagerRegler.php';
|
||||
require_once __DIR__ . '/../libs/Lizenzpruefung.php';
|
||||
require_once __DIR__ . '/../libs/Anlagentopologie.php';
|
||||
|
||||
use Belevo\EnelixEMS\Anlagentopologie;
|
||||
use Belevo\EnelixEMS\Lizenzpruefung;
|
||||
use Belevo\EnelixEMS\ManagerRegler;
|
||||
use Belevo\EnelixEMS\ManagerSchnittstelle;
|
||||
@@ -91,6 +93,9 @@ class Manager extends IPSModule implements ManagerSchnittstelle
|
||||
$this->RegisterPropertyString('Monatsgrenzen', $this->standardMonatsgrenzen());
|
||||
$this->RegisterPropertyFloat('SollwertSolarladen', 0.0);
|
||||
$this->RegisterPropertyFloat('Umschaltdifferenz', 5.0);
|
||||
$this->RegisterPropertyString('AnlagenWechselrichter', '[]');
|
||||
$this->RegisterPropertyString('AnlagenPVFlaechen', '[]');
|
||||
$this->RegisterPropertyString('AnlagenBatterien', '[]');
|
||||
$this->RegisterPropertyString('PrognoseAnschluss', '{}');
|
||||
$this->RegisterPropertyString('SDLAnschluss', '{}');
|
||||
$this->RegisterPropertyString('Lizenzcode', '');
|
||||
@@ -253,6 +258,14 @@ class Manager extends IPSModule implements ManagerSchnittstelle
|
||||
return json_encode($formular, JSON_THROW_ON_ERROR);
|
||||
}
|
||||
|
||||
public function AnlagentopologieExportieren(): string
|
||||
{
|
||||
return json_encode(
|
||||
$this->leseAnlagentopologie(),
|
||||
JSON_THROW_ON_ERROR | JSON_UNESCAPED_SLASHES
|
||||
);
|
||||
}
|
||||
|
||||
public function MessageSink($zeitstempel, $senderID, $nachricht, $daten): void
|
||||
{
|
||||
if ((int) $senderID === $this->ReadPropertyInteger('NetzleistungVariableID')
|
||||
@@ -1415,6 +1428,7 @@ class Manager extends IPSModule implements ManagerSchnittstelle
|
||||
$this->leseAktiveVerbraucherIDs('VerbraucherZuordnung');
|
||||
$this->leseAktiveVerbraucherIDs('AutomatischeVerbraucherZuordnung');
|
||||
$this->dekodiereMonatsgrenzen($this->ReadPropertyString('Monatsgrenzen'));
|
||||
$this->leseAnlagentopologie();
|
||||
foreach (['PrognoseAnschluss', 'SDLAnschluss', 'StoermeldeAnschluss'] as $property) {
|
||||
$wert = json_decode($this->ReadPropertyString($property), true, 512, JSON_THROW_ON_ERROR);
|
||||
if (!is_array($wert)) {
|
||||
@@ -1423,6 +1437,17 @@ class Manager extends IPSModule implements ManagerSchnittstelle
|
||||
}
|
||||
}
|
||||
|
||||
/** @return array<string, mixed> */
|
||||
private function leseAnlagentopologie(): array
|
||||
{
|
||||
return Anlagentopologie::ausJson(
|
||||
$this->ReadPropertyString('AnlagenWechselrichter'),
|
||||
$this->ReadPropertyString('AnlagenPVFlaechen'),
|
||||
$this->ReadPropertyString('AnlagenBatterien'),
|
||||
$this->ReadAttributeString('LizenzInstallationID')
|
||||
);
|
||||
}
|
||||
|
||||
/** @return array<int, float> */
|
||||
private function dekodiereMonatsgrenzen(string $json): array
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user