# Enelix-Verbrauchermodul Ladestation (EV Charger) Dieses Modul integriert smarte Ladestationen (Wallboxen) für Elektroautos als steuerbare Verbraucher in das Belevo Energiemanagement-System (Enelix). Es regelt die Ladeleistung dynamisch, unterstützt verschiedene Hersteller-APIs und optimiert das Laden nach PV-Überschuss oder Peak-Shaving-Vorgaben. --- ## Inhaltsverzeichnis 1. [Funktionsumfang](#1-funktionsumfang) 2. [Voraussetzungen](#2-voraussetzungen) 3. [Installation](#3-installation) 4. [Instanz anlegen & Konfiguration](#4-instanz-anlegen--konfiguration) 5. [Statusvariablen & Profile](#5-statusvariablen--profile) 6. [WebFront / Bedienung](#6-webfront--bedienung) 7. [Mapping auf Code-Komponenten](#7-mapping-auf-code-komponenten) 8. [Zukünftige Erweiterungen](#8-zukünftige-erweiterungen) --- ## 1. Funktionsumfang - **Hersteller-Integration:** Native Unterstützung verschiedener Ladestationen und Cloud-APIs (z.B. Smart-me Pico, Easee, eCarUp, generisches MQTT / REST-API). - **Phasenerkennung:** Das Modul erkennt automatisch (über Leistungsschwellen, z.B. > 7500W), ob das Fahrzeug 1-phasig oder 3-phasig lädt, und passt die internen Strom-zu-Leistung-Umrechnungen an. - **PowerSteps-Generierung:** Übersetzt die zulässigen Ladeströme (Ampere) in Watt-Schritte (`PowerSteps`), die dem Enelix-Manager für die Energieverteilung angeboten werden (abhängig vom definierten `Mindestaldestrom`, minimal 6A). - **Verzögerungs- und Schutzlogiken:** - `Ein_Zeit` / `Aus_Zeit`: Mindestlaufzeiten und Pausenzeiten, um den Schütz im Auto und in der Wallbox vor zu häufigem Schalten zu schützen (Taktschutz). - `Zeit_Zwischen_Zustandswechseln`: Dämpfung von Leistungssprüngen. - **Betriebsmodi:** - *Solarladen:* Automatische Regelung nach PV-Überschuss. - *Sperr-Priorität:* Regelung nach Peak-Shaving (Netzbezugsgrenzen). - *Fahrzeugerkennung:* Freigabe der Ladeleistung nur, wenn ein Auto gesteckt (`Car_detected`) und nicht voll (`Car_is_full`) ist. - **Token-Management:** Automatischer Login und Token-Refresh für Cloud-basierte Systeme (wie Easee, E-Car-Up). - **Tarifabhängiges Solarladen** Nutzerbasiertes Solarladen mit unterschiedlichen Tarifen für Solar- und Netzladen. Dieese Funktion ist nur über spezielle Token und kostenpflichtigen Konten von drittfirmen aktivierbar. Für weitere Informationen bitte die Belevo AG kontaktieren. --- ## 2. Voraussetzungen - IP-Symcon **≥ 8.0** - Modul-URL: `https://git.belevo.ch/dh/enelix.git` - Vorhandener und eingerichteter Enelix Manager. - Netzwerkzugriff auf die Ladestation (lokale IP) oder aktive Internetverbindung für Cloud-APIs. --- ## 3. Installation 1. In IP-Symcon **Module Control** öffnen. 2. **Hinzufügen → Git-Repository**. 3. URL eingeben und **Installieren**. 4. IP-Symcon neu starten. --- ## 4. Instanz anlegen & Konfiguration ### 4.1 Instanz anlegen - Rechtsklick **Instanzen** → **Instanz hinzufügen** - Filter: **Belevo** - Auswahl: **Ladestation v2 (Verbraucher)** ### 4.2 Properties | Name | Typ | Beschreibung | |---|---|---| | **IP_Adresse** | String | Lokale IP-Adresse der Ladestation (für lokale APIs). | | **Ladestation** | Select/Int | Auswahl des API-/Hardware-Typs (z.B. 1=MQTT, 2=REST, 3=Pico, 5=eCarUp, 6=Easee). | | **ID** | String | Stations-ID (z.B. für Smart-me Pico oder eCarUp). | | **Seriennummer** | String | Seriennummer der Station (z.B. für Easee). | | **Username** | String | Benutzername für Cloud-APIs. | | **Password** | String | Passwort für Cloud-APIs. | | **Interval** | NumberSpinner | Berechnungsintervall und Polling-Rate (Sekunden). | | **Max_Current_abs** | NumberSpinner | Absoluter Maximalstrom der Zuleitung/Station in Ampere (z.B. 16 oder 32). | | **Zeit_Zwischen_Zustandswechseln**| NumberSpinner | Verzögerungszeit zwischen zwei Leistungsanpassungen (in Minuten). | | **Ein_Zeit** | NumberSpinner | Mindestlaufzeit, wenn die Ladung gestartet wird (Minuten). | | **Aus_Zeit** | NumberSpinner | Mindestpausenzeit nach einem Ladeabbruch (Minuten). | | **Token_Easee** | SelectVariable | Referenz auf das externe Easee-Token (Variable). | | **Token_ECarUp** | SelectVariable | Referenz auf das externe eCarUp-Token (Variable). | | **IdleCounterMax**| NumberSpinner | Anzahl Interval-Zyklen zwischen Leistungsänderungen (Modul-Idle). | --- ## 5. Statusvariablen & Profile Das Modul verwendet viele interne (versteckte) Variablen für die Manager-Kommunikation. Hier die wichtigsten sichtbaren und steuerbaren Variablen: | Ident | Typ | Profil | Beschreibung | |---|---|---|---| | **Ladebereit** | Boolean | ~Switch | Hauptschalter: Ladestation generell freigegeben oder blockiert. | | **Solarladen** | Boolean | ~Switch | Aktiviert den reinen PV-Überschusslade-Modus. | | **Mindestaldestrom** | Integer | - | Minimaler Ladestrom in Ampere (normalerweise mind. 6A für Typ 2). | | **Is_1_ph** | Boolean | ~Switch | Anzeige: Das Fahrzeug lädt aktuell nur auf einer Phase. | | **Car_detected** | Boolean | ~Switch | Status: Ein Fahrzeug ist angesteckt und bereit. | | **Car_is_full** | Boolean | ~Switch | Status: Fahrzeugakku ist voll (Ladestrom < Schwelle). | | **Pending_Counter** | Integer | Zähler zum Abwarten des Stationszustandes bei Zustandänderung | | **Leistung_Delta** | Integer | Leistungsabweichung von vorgegebener Soll- und Istleistung | | **Idle** | Boolean | Status der Sperrzeit (`true` = bereit für neue Werte, `false` = gesperrt). | | **Ladeleistung_Effektiv**| Float | - | Aktuell gemessene reale Ladeleistung in Watt. | | **Bezogene_Energie** | Float | - | Rechnerisch aufsummierte Ladeenergie. | | **Aktuelle_Leistung** | Integer | Die aktuell von der Station erbrachte Leistung. | | **PowerSteps** | String | JSON-Array der dem Manager angebotenen Leistungsschritte. | | **Letzer_User** | String | - | Zuletzt authentifizierter RFID-Nutzer (z.B. via eCarUp). | | **Bezogene_Energie** | Float | Rechnerisch aufsummierte Energie (Leistung × Zeit). | | **PV_Prio** | Integer | Priorität des Verbrauchers für PV-Optimierung, Tiefe Nummer = Hohe Priorität | | **Sperre_Prio** | Integer | Priorität des Verbrauchers für Peak-Optimierung, Tiefe Nummer = Hohe Priorität | | **PV_Prio** | Integer | Priorität des Verbrauchers für PV-Optimierung, Tiefe Nummer = Hohe Priorität | | **Sperre_Prio** | Integer | Priorität des Verbrauchers für Peak-Optimierung, Tiefe Nummer = Hohe Priorität | --- ## 6. WebFront / Bedienung Im WebFront bietet die Instanz dem Nutzer Eingriffsmöglichkeiten in das Ladeverhalten: - **Ladebereit:** Kann genutzt werden, um die Wallbox per Knopfdruck komplett zu deaktivieren. - **Solarladen:** Zwingt das Modul in den Überschuss-Modus (es wird nur geladen, wenn Leistung durch den Manager zugewiesen wird), Andernfalls wird bei verbundenem Auto solange geladen, bis der Peakshaving-Modus die Leistung reduziert. - **Mindestaldestrom:** Definiert den Einstiegspunkt für die Ladung (z.B. 6A = ~1,4 kW bei 1-phasig / ~4,1 kW bei 3-phasig). - **PV_Prio** - Priorität des Verbrauchers für PV-Optimierung, Tiefe Nummer = Hohe Priorität - **Sperre_Prio** - Priorität des Verbrauchers für Peak-Optimierung, Tiefe Nummer = Hohe Priorität Zudem dient die Instanz zur Statuskontrolle (Ist ein Auto verbunden? Lädt es? Ist es voll?). --- ## 7. Mapping auf Code-Komponenten | Komponente | Funktion im Code (`module.php`) | |---|---| | **API-Schnittstellen** | `Get_Car_Status($carType)` fragt die jeweilige Hardware ab (cURL an REST/MQTT/Easee) und aktualisiert `Ladeleistung_Effektiv` sowie den `Fahrzeugstatus`. | | **Autodetektion** | `Detect_Car()` prüft den Zustand, zählt `Pending_Counter` hoch und entscheidet über `Is_1_ph` basierend auf Leistungsgrenzen (7500W). | | **Leistung → Strom** | `Get_Array_From_Current()` und `Get_Current_From_Power()` rechnen Watt in Ampere um ($P = U \cdot I \cdot Phasen$). | | **Manager-Interface** | `GetCurrentData($Peak)` baut die `PowerSteps` (z.B. [0, 4140, 4830, ...]) und übergibt diese dem Manager. | | **Stationssteuerung** | `sendPowerToStation($value)` übersetzt den Soll-Strom (Ampere) in API-spezifische Kommandos (z.B. `amp=16` oder `{"amps":16}`). | | **Taktschutz (Timers)**| `SetTimerNullMindestlast()`, `SetTimerOn()` und die entsprechenden Reset-Methoden sperren Zustandswechsel nach Start/Stopp. | | **Token-Refresh** | `Refresh_Token()` erneuert zyklisch das Access-Token (z.B. Easee) über die hinterlegten Credentials. | --- ## 8. Zukünftige Erweiterungen - **Automatische Phasenumschaltung:** Direkte Ansteuerung von Wallboxen, die eine Umschaltung zwischen 1- und 3-phasigem Laden im laufenden Betrieb unterstützen (zur Erweiterung des Regelbereichs bei wenig Sonne).