-
Notifications
You must be signed in to change notification settings - Fork 10
/
evcc.html
419 lines (393 loc) · 22.2 KB
/
evcc.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<title>WARP Charger</title>
<meta content="width=device-width, initial-scale=1.0" name="viewport">
<meta content="" name="keywords">
<meta content="" name="description">
<!-- Favicons -->
<link href="img/favicon.png" rel="icon">
<!-- Bootstrap CSS File -->
<link href="lib/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<!-- Libraries CSS Files -->
<link href="lib/font-awesome/css/font-awesome.min.css" rel="stylesheet">
<link href="lib/animate/animate.min.css" rel="stylesheet">
<link href="lib/ionicons/css/ionicons.min.css" rel="stylesheet">
<link href="lib/owlcarousel/assets/owl.carousel.min.css" rel="stylesheet">
<link href="lib/lightbox/css/lightbox.min.css" rel="stylesheet">
<!-- Main Stylesheet File -->
<link href="css/style.css" rel="stylesheet">
<!-- Add non-invasive analytics. There is no cookie set and no personal data saved -->
<script type="text/javascript">
var _paq = _paq || [];
_paq.push(['disableCookies']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//www.tinkerforge.com/analytics/";
_paq.push(['setTrackerUrl', u+'piwik.php']);
_paq.push(['setSiteId', '1']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
})();
</script>
</head>
<body data-bs-spy="scroll" data-bs-target="#navbar" data-bs-root-margin="-20% 0px -70%">
<!--==========================
Header
============================-->
<header id="mqtt_header" class="header header-scrolled" style="position: sticky; overflow-y: hidden;">
<div class="container-fluid">
<div id="logo" class="pull-left">
<!-- Uncomment below if you prefer to use an image logo -->
<a href="/index.html"><img src="img/logo.png" alt="" title="" /></a>
</div>
<nav id="nav-menu-container" class="pt-xxl-3">
<ul class="nav-menu nav-menu-top">
<li><a href="/index.html">Zurück zur Hauptseite</a></li>
<li><a href="/documentation/faq.html">FAQ</a></li>
<li><a href="/documentation/api.html?v=2">API</a></li>
<li class="menu-active"><a href="/documentation/evcc.html">EVCC</a></li>
</ul>
</nav><!-- #nav-menu-container -->
</div>
</header><!-- #header -->
<div class="row" style="margin-right: 0">
<div class="d-none d-lg-block col-lg-4 col-xl-3">
<nav class="h-100 flex-column align-items-stretch">
<nav id="navbar" class="navbar navbar-light navbar-test flex-column">
<nav class="nav nav-pills flex-column ms-2">
<a class="navbar-brand" href="#">Inhalt</a>
<a class="nav-link" href="#evcc_main">Einführung</a>
<a class="nav-link" href="#evcc-rpi-preparation">Vorbereitung des Raspberry Pis</a>
<a class="nav-link" href="#evcc-mqtt-installation">Installation des MQTT-Brokers</a>
<a class="nav-link" href="#evcc-warp-mqtt">Verknüpfen des WARP Chargers</a>
<a class="nav-link" href="#evcc-wem-mqtt">Verknüpfen des WARP Energy Managers</a>
<a class="nav-link" href="#evcc-installation">Installation von EVCC</a>
<a class="nav-link" href="#evcc-meter-sim">Simulation von Stromzählern</a>
</nav>
</nav>
</nav>
</div>
<!--==========================
Intro Section
============================-->
<main id="evcc_main" class="col-lg-8 col-xl-9 col-xxl-6">
<header id="start" class="reference-section-header pt-4" style="padding-left: 15px; padding-right: 15px;"><h2>PV-Überschuss­laden mit EVCC</h2></header>
<section id="evcc-intro" class="section">
<div class="container">
<header class="reference-section-header">
<h3>Einführung</h3>
</header>
<p>
Dein WARP Charger ist mit <a href="https://evcc.io">EVCC</a> kompatibel. EVCC ist eine Open-Source-Lösung,
mit der du auf einfache Weise den Überschuss deiner Photovoltaik-Anlage zum Laden deines Elektroautos benutzen kannst.
EVCC implementiert zudem weitere APIs, mit denen du zum Beispiel eine Hausbatterie bevorzugt,
oder dein Elektroauto bis zu einem gewünschten Ladestand laden kannst.
Weitere Informationen zu EVCC findest du auf <a href="https://evcc.io">evcc.io</a>, detaillierte Dokumentation, ein Support-Forum und den Quellcode im <a href="https://github.com/andig/evcc">GitHub-Repository</a>.
</p>
<div class="row pb-2">
<div class="col-md-12 col-lg-6">
<p>
Diese Anleitung zeigt dir, wie du EVCC aufsetzt, deinen WARP Charger mit EVCC verknüpfst und wie weitere Komponenten, beispielhaft ein Elektroauto eingebunden werden können.
Hierfür benötigst du neben deinem WARP Charger nur einen Rechner, auf dem EVCC ausgeführt werden soll. Wir verwenden im Folgenden einen Raspberry Pi.
EVCC kann auch auf anderen Plattformen installiert werden, aber da die Steuerung des WARP Chargers möglichst robust sein soll,
bietet es sich an ein System nur für diesen Einsatzzweck abzustellen.
Die notwendigen Zähler, die die Stromerzeugung einer PV-Anlage, sowie den Gesamtverbrauch des Hauses messen, kannst du direkt in EVCC konfigurieren, oder zunächst simulieren.
</p>
</div>
<div class="col-md-12 col-lg-6">
<div class="impressions-container">
<div class="impressions-item filter-warp-charger" style="height: auto;">
<figure style="height: auto;">
<a href="img/evcc/evcc-schema.svg" data-lightbox="impressions" data-title="Ladesteuerung mit EVCC" class="link-preview" title="Preview">
<img src="img/evcc/evcc-schema.svg" class="img-fluid" alt="">
</a>
</figure>
<div class="impressions-info">
Ladesteuerung mit EVCC
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="section" id="evcc-rpi-preparation">
<div class="container">
<header class="reference-section-header">
<h3>Vorbereitung des Raspberry Pis</h3>
</header>
<div class="row pb-2">
<div class="col-md-12 col-lg-6">
<p>
Zunächst musst du eine SD-Karte mit dem Betriebssystem für den Raspberry Pi vorbereiten.
Am einfachsten ist das mit dem <a href="https://www.raspberrypi.org/software/">Raspberry Pi Imager</a>.
Der RPi-Imager lädt das ausgewählte Betriebssystem herunter und flasht es auf eine angeschlossene Micro-SD-Karte.
Wenn du mit der Benutzung einer Linux-Konsole vertraut bist, empfehlen wir das Raspberry Pi OS Lite, das im Imager
unter <code>OS auswählen</code> -> <code>Raspberry Pi OS (other)</code> zu finden ist. Falls du mit einer graphischen Oberfläche arbeiten
möchtest, kannst du das normale Raspberry Pi OS verwenden.
Mit der Tastenkombination <kbd>STRG+SHIFT+X</kbd> kannst du die erweiterten Optionen öffnen um z.B. den SSH-Server zu aktivieren,
oder ein WLAN-Netzwerk, die Spracheinstellungen und einen Hostnamen zu konfigurieren. Der Imager flasht nach Auswahl der SD-Karte und klicken auf
<code>Schreiben</code> das Betriebssystem auf die Micro-SD-Karte.
</p>
</div>
<div class="col-md-12 col-lg-6">
<div class="impressions-container">
<div class="impressions-item filter-warp-charger" style="height: auto;">
<figure style="height: auto;">
<a href="img/evcc/rpi_imager.png" data-lightbox="impressions" data-title="Raspberry Pi Imager" class="link-preview" title="Preview">
<img src="img/evcc/rpi_imager.png" class="img-fluid" alt="">
</a>
</figure>
<div class="impressions-info">
Raspberry Pi Imager
</div>
</div>
</div>
</div>
</div>
<p>
Du kannst jetzt die Micro-SD-Karte in den Raspberry Pi einlegen und ihn booten. Nachdem du dich gegebenenfalls eingeloggt hast
(per SSH auf <code>pi@raspberry</code>, oder in der Textkonsole als <code>pi</code>; Passwort ist jeweils <code>raspberrypi</code>), solltest du zunächst,
falls du die graphische Oberfläche gebootet hast, dem Einrichtungs-Wizard folgen.
In beiden Fällen solltest du danach in der Konsole mit <code>sudo apt update</code> und <code>sudo apt upgrade</code>
das System aktualisieren. Danach kannst du den Pi mit <code>sudo reboot</code> neustarten.
</p>
</div>
</section>
<section class="section" id="evcc-mqtt-installation">
<div class="container">
<header class="reference-section-header">
<h3>Installation des MQTT-Brokers</h3>
</header>
<p>
Die Kommunikation zwischen dem WARP Charger und EVCC erfordert den Einsatz eines MQTT-Brokers. Auf dem Raspberry Pi
kann mit <code style="white-space: normal; word-break: break-word;">sudo apt install mosquitto mosquitto-clients</code> der <a href="https://mosquitto.org/">Mosquitto</a>-MQTT-Broker installiert werden.
Mosquitto startet sofort und bei jedem Start des Systems automatisch.
</p>
<p>
Seit Mosquitto 2.0.0 muss explizit erlaubt werden, dass Mosquitto auf Netzwerk-Interfaces Verbindungen annimmt.
Hierzu musst du eine neue Konfigurationsdatei namens <code>/etc/mosquitto/conf.d/default.conf</code> mit einem Texteditor deiner Wahl, auf der Konsole zum Beispiel mit <code>nano</code><a href="https://xkcd.com/378/">*</a> anlegen und folgenden Inhalt einfügen:
</p>
<pre>listener 1883</pre>
<p>
Außerdem erlaubt Mosquitto 2.0.0 standardmäßig nur Verbindungen konfigurierter Benutzer. Einen Benutzer kannst du mit <a href="https://mosquitto.org/man/mosquitto_passwd-1.html"><code>mosquitto_passwd</code></a> anlegen. Alternativ kannst du in <code>/etc/mosquitto/conf.d/default.conf</code> zusätzlich
</p>
<pre>allow_anonymous true</pre>
<p>
einfügen, um Verbindungen ohne Benutzername und Kennwort zu erlauben.
</p>
<p>
Damit die geänderte Konfiguration verwendet wird, musst du Mosquitto danach mit <code>sudo systemctl restart mosquitto</code> neustarten, bzw. falls du Mosquitto manuell, also nicht über den systemd-Service, starten möchtest, musst du <code>mosquitto -c /etc/mosquitto/mosquitto.conf</code> verwenden.
</p>
</div>
</section>
<section class="section" id="evcc-warp-mqtt">
<div class="container">
<header class="reference-section-header">
<h3>Verknüpfen des WARP Chargers</h3>
</header>
<div class="row pb-2">
<div class="col-md-12 col-lg-6">
<p>
(Mehr Informationen zur MQTT-Konfiguration findest du in der <a href="https://www.warp-charger.com/api.html">API-Dokumentation</a>)
</p>
<p>
Im Webinterface des WARP Chargers kannst du jetzt die Verbindung zum MQTT-Broker konfigurieren. Hierzu musst du unter <code>Schnittstellen -> MQTT</code>
die Verbindung aktivieren und den Host eintragen (<code>raspberrypi</code> falls du ihn nicht geändert hast). Alternativ kannst du die IP-Adresse
des Pis verwenden. Diese kannst du in der Konsole mit <code>ip -brief a</code> auslesen: unter <samp>eth0</samp> die der LAN-Verbindung, oder unter <samp>wlan0</samp> die der WLAN-Verbindung.
Danach kannst du die Konfigurationsänderung durch Klicken auf Speichern anwenden. Das Webinterface startet dann neu.
</p>
<p>
Um zu Testen, ob die Verbindung zum MQTT-Broker funktioniert, kannst du zunächst die Status-Seite des Webinterfaces prüfen. Der
Status der MQTT-Verbindung sollte auf <samp>Verbunden</samp> stehen. Falls das nicht der Fall ist, kannst du im Ereignislog nachsehen,
was das Problem ist. Als weiteren Test kannst du in der Konsole des Pis die empfangenen Nachrichten mitlesen:
<code>mosquitto_sub -v -t 'warp/#'</code> bzw. bei einem WARP2 Charger <code>mosquitto_sub -v -t 'warp2/#'</code> liefert empfangene Nachrichten aller Wallboxen, die mit dem Broker verbunden sind.
</p>
<p>
Damit EVCC später den WARP Charger steuern darf, musst du unter <code>Wallbox -> Ladeeinstellungen</code> die externe Steuerung erlauben.
</p>
</div>
<div class="col-md-12 col-lg-6">
<div class="impressions-container">
<div class="impressions-item filter-warp-charger" style="height: auto;">
<figure style="height: auto;">
<a href="img/mqtt/mqtt_ui.png" data-lightbox="impressions" data-title="MQTT-Konfiguration" class="link-preview" title="Preview">
<img src="img/mqtt/mqtt_ui.png" class="img-fluid" alt="">
</a>
</figure>
<div class="impressions-info">
MQTT-Konfiguration
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="section" id="evcc-wem-mqtt">
<div class="container">
<header class="reference-section-header">
<h3>Verknüpfen des WARP Energy Managers (optional)</h3>
</header>
<div class="row pb-2">
<div class="col-md-12 col-lg-6">
<p>
Falls du einen WARP Energy Manager und das zugehörige Schütz zur Phasenumschaltung installiert hast, kannst du EVCC die Phasenumschaltung steuern lassen, um deinen PV-Überschuss besser auszunutzen.
</p>
<p>
Hierzu musst du zuerst, analog zum WARP Charger, die MQTT-Verbindung des Energy Managers konfigurieren. Die Verbindung kannst du wieder in der Konsole des Pis testen:
<code>mosquitto_sub -v -t 'wem/#'</code> liefert empfangene Nachrichten aller Energy Manager, die mit dem Broker verbunden sind.
</p>
<p>
Damit EVCC später den WARP Energy Manager steuern darf, musst du unter <code>Energiemanager -> Einstellungen</code> den Umschaltungsmodus auf <samp>externe Steuerung (EVCC)</samp> ändern.
Das PV-Überschussladen des Energy Managers wird dann deaktiviert, da EVCC diese Aufgabe übernehmen soll.
</p>
</div>
<div class="col-md-12 col-lg-6">
<div class="impressions-container">
<div class="impressions-item filter-warp-charger" style="height: auto;">
<figure style="height: auto;">
<a href="img/evcc/evcc_wem.png" data-lightbox="impressions" data-title="Energy-Manager-Konfiguration" class="link-preview" title="Preview">
<img src="img/evcc/evcc_wem.png" class="img-fluid" alt="">
</a>
</figure>
<div class="impressions-info">
Energy-Manager-Konfiguration
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="section" id="evcc-installation">
<div class="container">
<header class="reference-section-header">
<h3>Installation und Konfiguration von EVCC</h3>
</header>
<p>
Die Installation und Konfiguration von EVCC auf einem Raspberry Pi wird in der <a href="https://docs.evcc.io/docs/installation/linux"/>EVCC-Dokumentation</a> erklärt.
Alternativ kann EVCC wie <a href="https://docs.evcc.io/docs/installation/docker">hier beschrieben</a> als Docker-Container installiert werden.
Falls du die Verbindung von EVCC und dem WARP Charger testen willst ohne die notwendigen Zähler einzurichten kannst du diese simulieren, wie im nächsten Abschnitt beschrieben.
</p>
<p>
Bei der Ausführung von <code>evcc configure</code> kannst du als Wallbox <code>TinkerForge WARP Charger Smart</code> bzw. <code>TinkerForge WARP Charger Pro</code> auswählen und folgende Hinweise beachten:
<ul>
<li>Als IP-Adresse oder Hostname musst du <strong>nicht</strong> den entsprechenden Wert der Wallbox, sondern den in vorherigen Abschnitt konfigurierten Broker-Hostname oder dessen IP-Adresse eintragen.</li>
<li>Das Topic ist der in der MQTT-Konfiguration gesetzte Topic-Präfix, z.B. warp/ABC. Mit diesem beginnt das Topic jeder Nachricht, die du mit <code>mosquitto_sub -v -t 'warp/#'</code> bzw. <code>mosquitto_sub -v -t 'warp2/#'</code> sehen kannst.</li>
<li>Wenn du wie oben beschrieben einen WARP Energy Manager zur Phasenumschaltung verwenden möchtest, musst du den MQTT-Topic-Präfix des Energy Managers (z.B. wem/XYZ) angeben, wenn <code>evcc configure</code> nach <samp>energymanager</samp> fragt.</li>
</ul>
</p>
</div>
</section>
<section class="section" id="evcc-meter-sim">
<div class="container">
<header class="reference-section-header">
<h3>Simulation von Stromzählern</h3>
</header>
<p>
<code>evcc configure</code> unterstützt derzeit nur die Konfiguration "echter" Zähler. Simulierte Zähler können aber von Hand in die von <code>evcc configure</code> erstellte evcc.yaml-Datei eingetragen werden.
</p>
<p>
Hierzu musst du die angelegte Konfigurationsdatei (<code>/etc/evcc.yaml</code>) mit einem Texteditor deiner Wahl, auf der Konsole zum Beispiel mit <code>nano</code><a href="https://xkcd.com/378/">*</a> editieren.
Falls du bei der Konfiguration keine Zähler konfiguriert hast, sollte der site-Block der Konfigurationsdatei bis auf den Titel leer sein:
</p>
<pre>
site:
title: Mein Zuhause
meters:</pre>
<p>
Über dem site-Block fügen wir jetzt zwei simulierte Stromzähler hinzu. Der erste Zähler (gridmeter) misst den aktuellen Netzbezug bzw. die Netzeinspeisung am Hausanschluss, der zweite misst die aktuelle Einspeisung der Solaranlage (pvmeter). Wir simulieren eine dauerhafte Einspeisung von 10 kW und eine Netzeinspeisung von 9 kW:
</p>
<pre>
meters:
- name: gridmeter
type: custom
power:
source: script
cmd: /bin/sh -c 'echo -9000'
- name: pvmeter
type: custom
power:
source: script
cmd: /bin/sh -c 'echo 10000'</pre>
<p>
Die hinzugefügten Stromzähler müssen dann im site-Block registriert werden:
</p>
<pre>
site:
title: Mein Zuhause
meters:
grid: gridmeter
pv: pvmeter</pre>
<p>
Nach einem Neustart durch <code>sudo systemctl restart evcc</code> sollte die EVCC-Seite die simulierten Zähler anzeigen. Mit <code>evcc configure</code> können später echte Stromzähler hinzugefügt werden.
</p>
<p>
Hier die vollständige Konfigurationsdatei (getestet mit EVCC Version 0.95):
</p>
<pre>
# open evcc at http://evcc.local:7070
network:
schema: http
host: evcc.local # .local suffix announces the hostname on MDNS
port: 7070
log: info
levels:
cache: error
interval: 10s # control cycle interval
chargers:
- type: template
template: tinkerforge-warp
host: 192.168.178.72
port: 1883
topic: warp/ABC
timeout: 30s
energymanager: wem/XYZ # EnergyManager MQTT Topic (falls installiert) (optional)
name: wallbox1
loadpoints:
- title: Garage
charger: wallbox1
mode: off
phases: 3
mincurrent: 6
maxcurrent: 16
resetOnDisconnect: false
meters:
- name: gridmeter
type: custom
power:
source: script
cmd: /bin/sh -c 'echo -9000'
- name: pvmeter
type: custom
power:
source: script
cmd: /bin/sh -c 'echo 10000'
site:
title: Mein Zuhause
meters:
grid: gridmeter
pv: pvmeter
</pre>
</section>
</main>
</div>
<!-- JavaScript Libraries -->
<script src="lib/jquery/jquery.min.js"></script>
<script src="lib/jquery/jquery-migrate.min.js"></script>
<script src="lib/bootstrap/js/bootstrap.bundle.min.js"></script>
<script src="lib/easing/easing.min.js"></script>
<script src="lib/superfish/hoverIntent.js"></script>
<script src="lib/superfish/superfish.min.js"></script>
<script src="lib/owlcarousel/owl.carousel.min.js"></script>
<script src="lib/isotope/isotope.pkgd.min.js"></script>
<script src="lib/lightbox/js/lightbox.min.js"></script>
<script src="lib/touchSwipe/jquery.touchSwipe.min.js"></script>
<!-- Template Main Javascript File -->
<script src="js/main.js"></script>
</body>
</html>