Einleitung
EVSE-WiFi erweitert deine EVSE WB oder EVSE DIN um eine WLAN-Schnittstelle. Damit kannst du deine Wallbox sehr einfach von der Ferne aus steuern. Das WLAN-Modul basiert auf einem ESP8266 Mikrocontroller und kommuniziert über ModBus (UART) mit dem Ladecontroller (EVSE WB/DIN). EVSE-WiFi stellt ein Webinterface bereit, das viele Einstellungsmöglichkeiten bietet. Optional, aber dringend empfohlen, kann ein S0- oder Modbus-Zähler angesteuert werden, um die Ladeaktivitäten zu dokumentieren. Für Modbus-Zähler ist ein RS485-TTL Adapter notwendig. Mit einem zusätzlich erhältlichen RFID-Modul kann eine Freischaltung per RFID Karte erzwungen werden. Eine HTTP-API lässt eine Steuerung auch von anderen Geräten zu.
Funktionsumfang
- WLAN-Schnittstelle (Als Access Point oder als WLAN-Client)
- Aktivieren und Deaktivieren des EVSE WB/DIN Ladecontrollers über
- Webinterface
- Taster
- RFID-Tags
- API
- „Always Active“ Modus -> keine Aktivierung nötig. Die Wallbox ist immer freigeschaltet
- HTTP-API: Lässt zu, dass EVSE-WiFi von anderen Geräten ferngesteuert wird
- Einstellen des Ladestroms
- Anzeige der aktuellen Ladedaten
- Eingestellter Ladestrom (A)
- Leistung (kW)
- Ladedauer
- Geladene Energiemenge (kWh)
- Kosten des Ladevorgangs (€)
- Errechnete geladene Reichweite (km)
- Benutzerverwaltung von RFID-Tags
- Dokumentation der letzten 100 Ladevorgänge (Username bei RFID-Freischaltung, Ladedauer, geladene Energiemenge, Kosten des Ladevorgangs)
- Konfigurationsmöglichkeiten:
- WLAN-Einstellungen
- Zählerkonfiguration
- RFID-Konfiguration
- Einstellung des Lademodus
- Manuelle Konfiguration und Übersicht der EVSE-Register
- NTP-Einstellungen
- Ansteuerung einer LED
Voraussetzungen
Hardware
- Eine Wallbox, die auf dem EVSE Wallbox oder EVSE DIN Ladecontroller aufgebaut ist (min. Software Revision 8 (2017-10-31) – Kontaktiere uns, falls Du noch eine ältere Software im Einsatz haben solltest) Achtung: Software Revision 9 funktioniert aufgrund eines Bugs in der Firmware nicht (diese wurde nur für eine kurze Zeit im Jahr 2018 verkauft)
- Das EVSE-WiFi WLAN-Modul
- Ein 5V-Netzteil (min. 1A)
- Stromzähler mit S0 oder RS485/Modbus-Schnittstelle. Derzeit werden ausschließlich SDM120 und SDM630 Zähler mit Modbus unterstützt. Bei S0-Zählern, gibt es keine bekannten Einschränkungen. (optional, aber empfohlen)
- Taster mit LED (optional, aber empfohlen)
- (optional) RFID Modul (PN532 und Wiegand RFID-Reader werden noch nicht unterstützt)
- (optional) RFID Karten abhängig der Anzahl der Nutzer
Verkabelung
EVSE-WiFi kann auch ohne Authentifizierung betrieben werden. Dann sind weder ein Taster, noch ein RFID-Reader nötig. Mit einem entsprechenden Stromzähler wird die geladene Energiemenge je Ladevorgng mitgeloggt.
Die Mindestvoraussetzung für den Betrieb von EVSE-WiFi ist die Verkabelung mit dem EVSE WB/DIN Ladecontroller.
5V Netzteil (notwendig)
WLAN-Modul | Netzteil |
---|---|
5V | + / 5V |
G | – / GND |
EVSE WB/DIN (notwendig)
WLAN-Modul | ESP8266-GPIO | EVSE WB/DIN |
---|---|---|
D1 | GPIO5 | TX |
D2 | GPIO4 | RX |
G | GND |
Die entsprechenden Anschlüsse am jeweiligen Ladecontroller (klicken, um das Bild zu vergrößern):
Taster (optional, aber empfohlen)
WLAN-Modul | ESP8266-GPIO | Taster |
---|---|---|
D4 | GPIO2 | Pin 1 |
GND | Pin 2 |
Bei der Verkablung des Tasters spielt die Polarität keine Rolle
S0-Stromzähler (optional, aber empfohlen)*
WLAN-Modul | ESP8266-GPIO | Stromzähler |
---|---|---|
D3 | GPIO0 | S0+ |
GND | S0- |
LED (optional)
WLAN-Modul | ESP8266-GPIO | LED |
---|---|---|
D0 | GPIO16 | Anode (+) |
GND | Kathode (-) |
Modbus-Stromzähler (optional als Alternative zum S0-Zähler)**
TTL->RS485 | WLAN-Modul |
---|---|
RX | RX |
TX | TX |
VCC | 5V |
GND | GND |
TTL->RS485 | Modbus Meter |
---|---|
A+ | A |
B- | B |
RFID-Reader (optional, aber notwendig, wenn Authentifizierung gewünscht ist)
WLAN-Modul | ESP8266-GPIO | RFID-Modul |
---|---|---|
D5 | GPIO14 | SCK |
D6 | GPIO12 | MISO |
D7 | GPIO13 | MOSI |
D8 | GPIO15 | SDA |
GND | GND | |
3.3V | 3.3V |
Es wird ein geeignetes Netzteil für das WLAN-Modul benötigt. Mindestens 700 mA werden für einen stabilen Betrieb empfohlen.
* Wenn Sie einen Stromzähler mit S0-Schnittstelle verwenden, achten Sie darauf, dass die S0-Schnittstelle auf GND schaltet. Verwenden Sie nicht den 3,3 V oder 5 V Pin des WLAN-Moduls!
** Zum Betrieb eines Modbus-Stromzähler über RS485, wird zusätzliche Hardware benötigt, um UART in RS485 zu übersetzen. Für EVSE-WiFi empfiehlt sich dieses Modul: RS485->TTL Modul. Der Modbus-Zähler muss auf Baudrate = 9600, Parity = none, Stopbit = 1 und die Slave-ID auf „002“ gesetzt werden. Derzeit werden nur die Modbus-Zähler SDM120 und SDM630 unterstützt! Andere Modelle, können aber in der Regel über die S0-Schnittstelle verwendet werden.
Vorbereitung der EVSE WB/DIN
Für die Nutzung von EVSE-WiFi wird die Modbus-Schnittstelle der EVSE WB / DIN benötigt! Standardmäßig ist diese aber deaktiviert. Um Sie zu aktivieren, schließen Sie einen Taster zwischen den AN-Eingang und GND am EVSE WB/DIN Ladecontroller. Drücken Sie dann innerhalb von 3 Sekunden fünfmal den Taster, unmittelbar nachdem der Ladecontroller mit Strom versorgt wurde. Das Modbus-Register 2001 wird dadurch auf 1 gesetzt (Modbus ist aktiv). Achtung: Diese Änderung wird nicht gespeichert und ist nach dem nächsten Neustart des Ladecontrollers wieder zurückgesetzt! Um die Einstellungen zu speichern, müssen Sie eine Schreib-Operation an einem Register >= 2000 auf der EVSE WB/DIN durchführen. Der einfachste Weg, dies zu tun, ist das Aktivieren und Deaktivieren über die WebUI auf der Seite „EVSE Control“. Alternativ kann auf der Seite „Settings“ auch manuell ein Modbus-Register (>= 2000) geschrieben werden.
PP-Widerstand
Der PP-Widerstand dient sowohl der Wallbox, als auch dem Fahrzeug zur Erkennung, mit welcher Stromstärke das verwendete Ladekabel maximal belastbar ist. In der Regel findet sich auf beiden Seiten des Ladekabels im Ladestecker zwischen dem PP-Kontakt und PE (Schutzleiter) je ein PP-Widerstand. Bei fest angeschlagenen Kabeln wird der Widerstand direkt am Ladecontroller installiert.
Ob ein Kabel für ein- oder mehrphasige Ladung ausgelegt ist, kann vorerst weder vom Fahrzeug, noch von der Wallbox erkannt werden.
Widerstandswert | Strombelastbarkeit | Kabelquerschnitt |
---|---|---|
1500 Ω | 13 A | 1,5 mm² |
680 Ω | 20 A | 2,5 mm² |
220 Ω | 32 A | 6 mm² |
100 Ω | 63 A | 16 mm² |
Software
Sollten Sie das WLAN-Modul bei uns im Shop erworben haben, müssen ist die entsprechende Firmware bereits in der jeweils aktuellen Version aufgespielt. Updates können manuell über das Webinterface installiert werden.
Erste Schritte
Beim ersten Start von EVSE-WiFi wird ein WLAN-Zugangspunkt mit dem Namen „evse-wifi“ eingerichtet. Sie können eine Verbindung mit Ihrem WLAN-Endgerät (Smartphone, Tablet, PC, …) ohne Passwort herstellen. Um die Konfiguration vorzunehmen, öffnen Sie die Adresse http://192.168.4.1/ in Ihrem Browser. Das initiale Passwort lautet adminadmin. Sie sollten zuerst die Einstellungen überprüfen, um das WLAN-Modul in den Client-Modus zu versetzen und eine Verbindung zu Ihrem lokalen WLAN-Netzwerk herzustellen. Das WLAN-Modul wird danach neu gestartet. Wenn es nicht neu startet, drücken Sie einmal die Taste ‚RST‘ an der Seite des Moduls.
HTTP API
EVSE-WiFi lässt sich mithilfe einer HTTP API von anderen Geräten fernsteuern. Dies ermöglicht gesteuerte Ladevorgänge und Anpassungen des Ladestroms durch andere Geräte. Die folgenden Aufrufe sind möglich:
getParameters()
gibt die folgenden Parameter im JSON-Format zurück:
Parameter | Beschreibung | Datentyp |
---|---|---|
vehicleState | Fahrzeugstatus (1: bereit | 2: Fahrzeug angeschlossen | 3: Fahrzeug lädt) | integer |
evseState | EVSE Status (true: EVSE freigeschaltet | false: EVSE gesperrt) | boolean |
maxCurrent | Maximaler Ladestrom (abhängig vom PP-Widerstand und dem konfigurierten maximalen Ladestrom in EVSE-WiFi – je nachdem welcher Wert niedriger ist) | integer |
actualCurrent | Aktueller Ladestrom in A (z.B. 20) | integer |
actualPower | Aktuelle Ladeleistung (nur wenn Stromzähler angeschlossen ist) | float |
duration | charging duration in milliseconds | integer |
alwaysActive | Always Active Mode enabled (true/false) | boolean |
lastActionUser | The user name of the user who performed the last action (activate/deactivate) | String |
lastActionUID | The UID of the user who performed the last action (activate/deactivate) | String |
energy | charged energy of the current charging process in kWh | float |
mileage | charged energy in km | float |
meterReading | actual meter reading in kWh | float |
currentP1 | actual current in A (phase 1) | float |
currentP2 | actual current in A (phase 2) | float |
currentP3 | actual current in A (phase 3) | float |
Beispiel
GET http://192.168.4.1/getParameters
Antwort im JSON-Format:
{ "type": "parameters", "list": [{ "vehicleState": 2, "evseState": false, "maxCurrent": 32, "actualCurrent": 32, "actualPower": 5.79, "duration": 1821561, "alwaysActive": false, "lastActionUser": "GUI", "lastActionUID": "GUI", "energy": 9.52, "mileage": 82.3, "meterReading": 54.35, "currentP1": 8.54, "currentP2": 8.54, "currentP3": 8.54 }] }
getLog()
gibt die folgenden Parameter im JSON-Format zurück:
Parameter | Beschreibung | Datentyp |
---|---|---|
uid | UID des RFID Tags mit dem der Ladevorgang freigeschalten wurde „GUI“: Der Ladevorgang wurde über die Weboberfläche freigegeben „API“: Der Ladevorgang wurde über die HTTP API freigegeben „Button“: Der Ladevorgang wurde über den Taster freigegeben | String |
username | Der zugehörige Benutzername, bei RFID-Freischaltung, ansonsten analog Parameter „uid“ | String |
timestamp | Unix-Zeitstempel in Sekunden an dem der Ladevorgang gestartet wurde | integer |
duration | Ladedauer in Millisekunden | integer |
energy | Geladene Energiemenge in kWh | float |
price | Zum Zeitpunkt des Ladevorgangs konfigurierter Preis in ct/kWh | float (bis v.0.3.1: integer) |
Beispiel
GET http://192.168.4.1/getLog
Antwort im JSON-Format:
{ "type": "latestlog", "list": [{ "uid": "ABCD1234", "username": "GUI", "timestamp": 1523295915, "duration": 7504266, "energy": 10.32, "price": 21 }, { "uid": "-", "username": "GUI", "timestamp": 1523568920, "duration": 1152251, "energy": 2.17, "price": 23 }] }
setCurrent()
mit dem Aufruf setCurrent() wird der zulässige Ladestrom gesetzt (z.B. 18A)
Parameter | Beschreibung | Datentyp |
---|---|---|
current | Zu setzender maximaler Ladestrom | integer |
Beispiel
GET http://192.168.4.1/setCurrent?current=8
… setzt den zulässigen Ladestrom auf 8A und gibt zurück:
S0_set current to 8A
Im Fehlerfall werden folgende Meldungen zurückgegeben
Antwort | Beschreibung |
---|---|
E0_could not set current – internal error | Interner Fehler (unspezifiziert) |
E1_could not set current – give a value between x and y | Falscher Wert angegeben |
E2_could not set current – wrong parameter | Falscher Parameter angegeben |
setStatus()
Aktiviert/Deaktiviert die EVSE WB/DIN
Parameter | Beschreibung | Datentyp |
---|---|---|
active | true: EVSE Aktivieren false: EVSE Deaktivieren | boolean |
Beispiel
GET http://192.168.4.1/setStatus?active=true
… gibt den Ladevorgang frei und gibt zurück
S0_EVSE successfully activated
Im Fehlerfall werden folgende Meldungen zurückgegeben:
Antwort | Beschreibung |
---|---|
E0_could not activate EVSE – internal error | Interner Fehler (unspezifiziert) |
E0_could not deactivate EVSE – internal error | Interner Fehler (unspezifiziert) |
E1_could not process – give a valid value (true/false) | Falscher Wert angegeben |
E2_could not process – wrong parameter | Falscher Parameter angegeben |
E3_could not activate EVSE – EVSE already activated! | EVSE ist bereits aktiviert |
E3_could not deactivate EVSE – EVSE already deactivated! | EVSE ist bereits deaktiviert |
doReboot()
startet EVSE-WiFi neu
Parameter | Beschreibung | Datentp |
---|---|---|
reboot | true: Startet EVSE-WiFi neu | boolean |
Beispiel
GET http://192.168.4.1/doReboot?reboot=true
gibt zurück
S0_EVSE-WiFi is going to reboot now...
Im Fehlerfall werden folgende Meldungen zurückgegeben
Antwort | Beschreibung |
---|---|
E1_could not do reboot – wrong value | Falscher Wert angegeben |
E2_could not do reboot – wrong parameter | Falscher Parameter angegeben |