-
-
Notifications
You must be signed in to change notification settings - Fork 720
VolkerK62: noName PV&Batterie, SolarLog, DaheimLaden Smart 22kW, Ioniq 5, Wärmepumpe, diverse Shellys
Zu Testzwecken habe ich Anfang 2022 evcc auf dem Windowsrechner installiert und configure
ausgeführt.
Es hat nicht lange gedauert, evcc wurde für gut befunden und ein Raspberry musste her. Mein erster Kontakt zur Linux-Welt.
Meine noName PV-Komponenten sind an ein SolarLog angeschlossen. Sehr schnell habe ich festgestellt, dass das SolarLog als GridMeter nicht zu gebrauchen ist. Also musste ein IR-Lesekopf her, der mittlerweile durch einen Shelly 3EM ersetzt wurde, da dieser auch die Phasenströme messen kann.
Auto konnte nun mit Sonnenstrom geladen werden.
Doch so ganz zufrieden war ich noch nicht ... die Batterie fehlte noch.
Meine Hausbatterie ist ein geschlossenes System. Ich habe lediglich Zugriff auf eine Webseite des Herstellers. Also musste ich etwas tricksen, um diese in evcc implementieren zu können. Die Lade-/Entladeleistung wird lokal mit Hilfe eines Shelly EM (Stromzange) gemessen. Der Soc war dann meine erste (und einzige) Programmiererfahrung. Ein Script fragt alle 15 Minuten die Webseite ab und holt dort den aktuellen Soc. Zuerst wurde dieser in einer Datei gepseichert, mittlerweile nutze ich dafür MQTT.
Eigentlich ist die Firma DaheimLaden "schuld", dass ich bei evcc gelandet bin. Auf der Suche nach einer lieferbaren Wallbox (durch das KfW-Programm war das schwierig) bin ich bei DaheimLaden gelandet. Dort wurde mit der Anbindung an evcc geworben. So fing alles an.
Die Installation der Wallbox war für den Elektriker ein Graus. "Da muss man Ösen biegen." Durch einen Tipp vom DaheimLaden Support habe ich gleich einen Lasttrennschalter installieren lassen. Damit kann ich jetzt ganz bequem zwischen 1p und 3p umschalten.
Ansonsten war die Einbindung in evcc völlig problemlos. Die Box ist per Netzwerkkabel verbunden (WLAN wäre auch möglich). Seit einer Firmwareanpassung ist sogar die lokale Steuerung per Modbus möglich.
Eigentlich hat alles von Anfang an funktioniert, lediglich die Erkennung beim Anstecken nicht. Es stellte sich heraus, dass beim Ioniq 5 in Bluelink der Status B (verbunden, aber nicht ladend) nicht übertragen wird. Das wurde dann dadurch gelöst, dass die geöffnete Ladeklappe als Erkennungsmerkmal genutzt wird.
Meine Anlage hat "nur" 7,5 kWp. Aus dem Grund lade ich überwiegend 1p. Das Auto kann 1p bis zu 32A laden. Da passt optimal zur 22kW Wallbox. So kann ich mit bis zu 20A@1p (Schieflastgrenze) Überschuss laden. Viel mehr habe ich im Normalfall (wenn auch die Batterie geladen wird) auch gar nicht übrig.
Meine Wärmepumpe hat einen SmartGrid Kontakt zur Erhöhung der Solltemperatur. Dieser Kontakt wird mit einem Shelly1 geschaltet. Die Temperatur hole ich mit NodeRed per API aus meinem Heizungssystem (Windhager). Um im Sommer die Schaltvorgänge etwas zu entzerren, damit nicht beim jedem Grad Abkühlung wieder neu gestartet wird, habe ich eine 5 Grad Hysterese eingebaut.
Das Ladegerät ist in der Garage an einer Schaltsteckdose angeschlossen. Zuerst hatte ich dort einen Shelly PlugS. Es kam aber immer wieder zu Fehlern, weil der WLAN Empfang ziemlich dünn ist. Deshalb wurde diese durch eine Fritz-Dect Steckdose ersetzt. Um den Soc vom Fahrrad bequem nach evcc zu bekommen nutze ich die Smartphone App "Http Shortcut" und schicke den Soc per API an evcc.
Angeregt durch die tolle Erfassung der Ladevorgänge habe ich Waschmaschine und Trockner mit einem Shelly Plug (ohne S) ausgestattet. Die Ladepunkte stehen immer auf "schnell" und erfassen so jede Benutzung. Ebenso wird der normale autarke Betrieb der Wärmepumpe zu statistischen Zwecken erfasst. Da hier die Wassertemperatur nicht wichtig ist, lasse ich mir die Außentemperatur anzeigen.
Da ich von Programmierung und Scripten keine Ahnung haben (die Batterieaktion hat Wochen gedauert) bin ich mittlerweile ein Fan von NodeRed geworden.
Ich habe mir für diverse UseCases externe Steuerungen gebaut, die evcc mittels API genau so "manipulieren", wie es gewünscht ist. Da meine Batterie nicht unter 20% entladen wird, nutze ich verschiedene prioritySoc
Werte (zwischen 0 und 20) um die externen Steuerungen zu aktivieren/deaktivieren.
Beispiele:
- Meine Wallbox müsste per RFID freigegeben werden. Um das zu vermeiden "beobachtet" NodeRed den
enabled
Zustand des Loadpoint und startet bzw. stoppt die Wallbox per direktem Modbus-Kommando (gut das esmodbusproxy
gibt). - Einen Modus um im Frühjahr und Herbst möglichst keine Einspeisung zu haben und gleichzeitig die Batterie priorisiert zu laden.
- Einen Modus um am Nachmittag mit Hilfe der Batterie und ohne Netzbezug die Restsonne zu nutzen. Wobei hier nicht
bufferSoc
das Ausschalten bestimmt, sondern der Netzbezug. - Einen Modus um im Winter bevorzugt das Auto mit Sonne und Netzbezug zu laden.
network:
schema: http
host: evcc.local
port: 7070
interval: 5s
sponsortoken: ***
telemetry: true
log: debug
levels:
#site: trace
#lp-1: info
#lp-2: info
#lp-3: info
#lp-4: info
#daheimladen-mb: trace
#hyundai: trace
#main: trace
#cache: trace
#db: trace
#http: trace
#influx: trace
#mqtt: trace
#proxy-5200: trace
#gsi: trace
########################################################################
meters:
- name: grid
type: movingaverage
decay: 0.33
meter:
type: template
template: shelly-3em
usage: grid
host: 192.168.***.***
- name: pv
type: movingaverage
decay: 0.33
meter:
type: template
template: solarlog
usage: pv
host: 192.168.***.***
port: 502
- name: battery
type: movingaverage
decay: 0.33
meter:
type: custom
power:
##Shelly EM Stromzange 2
source: http
uri: http://192.168.***.***/emeter/1
jq: if .pf==0 then .power else .power / (.pf | fabs) end
soc:
source: mqtt
topic: Haus/Bat_SoC
timeout: 60m
capacity: 7.5
- name: aux
type: custom
power:
source: mqtt
topic: Haus/aux_pwr
timeout: 25h
########################################################################
chargers:
- name: wallbox
type: template
template: daheimladen-mb
host: localhost
port: 5200
- name: E-Bikes
type: template
template: fritzdect
uri: http://fritz.box
user: ***
password: ***
ain: ***
standbypower: 10
integrateddevice: true
icon: bike
- name: WP_SG
type: template
template: shelly
##Shelly 1 für SG-Kontakt
host: 192.168.***.***
standbypower: -1
integrateddevice: true
heating: true
icon: waterheater
- name: WP_autark
type: template
template: shelly
##Shelly EM für Fake-Kontakt
host: 192.168.***.***
channel: 0
standbypower: 10
integrateddevice: true
heating: true
icon: generic
- name: Waschen
type: template
template: shelly
host: 192.168.***.***
standbypower: 1
integrateddevice: true
icon: generic
- name: Trocknen
type: template
template: shelly
host: 192.168.***.***
standbypower: 1
integrateddevice: true
icon: generic
########################################################################
vehicles:
- name: auto
type: template
template: hyundai
title: (T)Raumschiff
user: ***
password: ***
language: de
icon: car
capacity: 72.6
mode: pv
maxcurrent: 20
- name: offline
type: template
template: offline
title: ohne Bluelink
icon: car
capacity: 72.6
mode: off
maxcurrent: 16
- name: bike
type: custom
title: E-Bikes
icon: bike
capacity: 0.625
soc:
source: mqtt
topic: evcc/vehicles/bike/minSoc
timeout: 2500h
- name: WasserSG
type: custom
title: WasserSG
icon: waterheater
capacity: 11 # 300 Liter x 100 Grad x 1,16Wh / 3 (COP) = 11kWh
soc:
source: mqtt
topic: Haus/Wasser
timeout: 60m
- name: WasserWP
type: custom
title: WasserWP
icon: generic
capacity: 11
soc:
source: mqtt
topic: Haus/Temp_out2
timeout: 60m
- name: Waschen
type: custom
title: Waschmaschine
icon: generic
capacity: 5
soc:
source: const
value: 0.1
- name: Trocknen
type: custom
title: Trockner
icon: generic
capacity: 5
soc:
source: const
value: 0.1
########################################################################
loadpoints:
- title: Carport
charger: wallbox
mode: off
phases: 3
mincurrent: 6
maxcurrent: 32
priority: 0
soc:
estimate: true
poll:
mode: always
interval: 300m
# enable:
# threshold: 0
# delay: 1m
# disable:
# threshold: 0
# delay: 3m
# guardduration: 5m
- title: Garage
charger: E-Bikes
vehicle: bike
phases: 1
mincurrent: 0.75
maxcurrent: 0.75
priority: 5
soc:
estimate: true
enable:
delay: 30s
disable:
delay: 5m
guardduration: 5m
- title: WP SG+
charger: WP_SG
vehicle: WasserSG
phases: 1
mincurrent: 2
maxcurrent: 3
priority: 10
soc:
estimate: false
enable:
threshold: 0
delay: 2m
disable:
threshold: 0
delay: 10m
guardduration: 30m
- title: WP -Anzeige-
charger: WP_autark
vehicle: WasserWP
phases: 1
soc:
estimate: false
- title: Waschen -Anzeige-
charger: Waschen
vehicle: Waschen
phases: 1
soc:
estimate: true
- title: Trocknen -Anzeige-
charger: Trocknen
vehicle: Trocknen
phases: 1
soc:
estimate: true
########################################################################
site:
- title: Haus
meters:
grid: grid
pv: pv
battery: battery
aux: aux
residualpower: 100
########################################################################
tariffs:
currency: EUR
grid:
type: custom #fixed #custom
price: #0.354
source: mqtt
topic: Haus/Preis_Bezug
timeout: 25h
feedin:
type: fixed
price: 0.1095
co2:
type: grünstromindex
zip: ***
########################################################################
messaging:
services:
- type: ntfy
uri: https://ntfy.sh/***
events:
start:
title: Start {{.title}}
msg: |
{{ if eq .title "Carport" }} Start um {{printf `(%02d:%02d)` now.Hour now.Minute}} {{- end }}
{{ if eq .title "Garage" }} Start um {{printf `(%02d:%02d)` now.Hour now.Minute}} {{- end }}
{{ if eq .title "WP -Anzeige-" }} Start um {{printf `(%02d:%02d)` now.Hour now.Minute}} {{- end }}
stop:
title: Stop {{.title}}
msg: |
{{ if eq .title "Carport" }} Stop um {{printf `(%02d:%02d)` now.Hour now.Minute}} {{- end }}
{{ if eq .title "Garage" }} Stop um {{printf `(%02d:%02d)` now.Hour now.Minute}} {{- end }}
{{ if eq .title "WP -Anzeige-" }} Stop um {{printf `(%02d:%02d)` now.Hour now.Minute}} {{- end }}
########################################################################
influx:
url: http://localhost:8086
database: evcc
mqtt:
broker: localhost:1883
topic: evcc
modbusproxy:
- port: 5200
uri: 192.168.***.***:502
########################################################################