# Belevo EMS Hauptmanager

Das **Belevo EMS Hauptmanager**-Modul fasst mehrere untergeordnete **Belevo EMS Manager**-Instanzen zusammen und verteilt die globale verfügbare Leistung direkt auf die einzelnen Verbraucher-Instanzen – nicht nur auf die Manager. Jeder Unter-Manager meldet seine Verbraucher-Daten als JSON, der Hauptmanager berechnet die finalen Zuweisungen und liefert für jeden Unter-Manager ein JSON mit den fertigen Verbraucher-Leistungen zurück.

---

## Inhaltsverzeichnis

1. [Beschreibung](#beschreibung)  
2. [Voraussetzungen](#voraussetzungen)  
3. [Installation](#installation)  
4. [Instanz anlegen & Konfiguration](#instanz-anlegen--konfiguration)  
5. [Statusvariablen](#statusvariablen)  
6. [Funktionsweise](#funktionsweise)  
   1. [Mode-Entscheid](#1-mode-entscheid)  
   2. [Datenaggregation](#2-datenaggregation)  
   3. [Globale Soll-Ist-Differenz](#3-globale-soll-ist-differenz)  
   4. [Verbraucher-Priorisierung](#4-verbraucher-priorisierung)  
   5. [Leistungszuweisung](#5-leistungszuweisung)  
   6. [Rückgabe an Unter-Manager](#6-rückgabe-an-unter-manager)  
7. [Beispiel-Workflow](#beispiel-workflow)  
8. [Mapping auf Code-Komponenten](#mapping-auf-code-komponenten)  
9. [Zukünftige Erweiterungen](#zukünftige-erweiterungen)  
10. [Support](#support)  

---

## Beschreibung

Der Hauptmanager koordiniert beliebig viele Unter-Manager (z. B. Hausanschluss, ZEV-Cluster, LEG-Center). Jeder Unter-Manager sammelt in seinem Zyklus die Daten aller angeschlossenen Verbraucher (JSON-Array mit Feldern wie `deviceID`, `priority`, `requestedLevels`, `currentDrawn`, `receivedTotal` usw.) und stellt dieses JSON in seiner `DatenZurueck`-Variable bereit. Der Hauptmanager

1. liest alle `DatenZurueck` JSONs der Unter-Manager ein,  
2. entscheidet global über Solarlade- oder Peak-Shaving-Mode,  
3. berechnet eine einzige **globale** Soll–Ist-Differenz,  
4. führt Priorisierung und Fair-Round-Robin über **alle** Verbraucher durch,  
5. verteilt die verfügbare Leistung in Stufen (je Verbraucher aus `PowerSteps`),  
6. erzeugt für jeden Unter-Manager ein JSON mit den finalen `assignedLevel`-Werten pro `deviceID`,  
7. schreibt diese JSONs in die jeweilige `DatenHoch`-Variable.  

Die Unter-Manager übernehmen das JSON und senden die fertigen `assignedLevel`-Werte an ihre lokalen Verbraucher-Instanzen.

---

## Voraussetzungen

- IP-Symcon **≥ 8.0**  
- Bereits installierte **Belevo EMS Manager**-Instanzen  
- Zugriff auf Git-Repository:  
https://git.belevo.ch/dh/Symcon_Belevo_Energiemanagement_testing.git

yaml
Kopieren
Bearbeiten

---

## Installation

1. In IP-Symcon **Module Control** öffnen  
2. **Hinzufügen → Git-Repository**  
3. URL eintragen (s. o.)  
4. Modul **„Belevo EMS Hauptmanager“** installieren  
5. IP-Symcon neu starten  

---

## Instanz anlegen & Konfiguration

1. Rechtsklick auf **Instanzen** → **Instanz hinzufügen**  
2. Filter: **Belevo**  
3. **„Belevo EMS Hauptmanager“** auswählen und Instanz erstellen  

### Properties

| Name                   | Typ            | Beschreibung                                                                 |
|------------------------|----------------|------------------------------------------------------------------------------|
| **HauptmanagerAktiv**  | Boolean        | Schaltet globale Verteilungslogik ein/aus                                    |
| **Interval**           | Integer (s)    | Zyklusintervall für Verteilung und Mode-Entscheid                            |
| **Sollleistung_Max**   | Float (W)      | Max. Gesamtleistung, die verteilt werden darf                                 |
| **Ueberschussleistung**| Float (W)      | Untergrenze für Solarlade-Mode (z. B. 0 W)                                     |
| **Manager_Liste**      | InstanceList   | Liste aller untergeordneten Belevo EMS Manager-Instanzen                     |
| **DatenZurueck**       | SelectVariable | Variable-ID (Integer) in jeder Unter-Manager-Instanz, aus der JSON gelesen wird |
| **DatenHoch**          | SelectVariable | Variable-ID in jeder Unter-Manager-Instanz, in die JSON geschrieben wird      |

---

## Statusvariablen

| Ident                    | Typ       | Profil       | Beschreibung                                        |
|--------------------------|-----------|--------------|-----------------------------------------------------|
| **LetzteBerechnung**     | DateTime  | —            | Zeitstempel der letzten Verteilung                  |
| **Globale_Differenz**    | Float     | ~Watt~~W~    | Zuletzt berechnete Soll–Ist-Differenz global (W)    |
| **Anzahl_Manager**       | Integer   | —            | Anzahl aktuell verbundener Unter-Manager           |

---