143 lines
8.5 KiB
Markdown
143 lines
8.5 KiB
Markdown
# 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).
|