Describe the bug
Ich muss es auf deutsch machen, da ich ein wenig ausholen muss.
Bei Zaptec läuft die Steuerung offenbar über zwei Ebenen:
Es gibt Installationen, z. B. ein Haushalt. Für die Installation kann man pro Phase eine Stromstärke definieren, mit der geladen werden kann. Hierüber steuert evcc, ob einphasig geladen werden soll oder dreiphasig. Im Zaptec Portal sieht das dann so aus:
Einphasig:

Dreiphasig:

Dann kann es pro Installation 1-n Wallboxen geben. Pro Wallbox legt man fest, was die Mindest- und Maximal-Stromstärke ist. Hierüber steuert evcc, wie schnell geladen wird:

Bei Zaptec ist es nun so, dass sie - zumindest bei den Go-Modellen - weder Modbus noch OCPP local unterstützen (letzteres kann man sich auf Wunsch immerhin aktivieren lassen). Normalerweise läuft die Steuerung über das API. Die Box weiß aber erstmal nicht, dass es eine externe Steuerung gibt. Das führt dazu, dass die Box beim Anschließen eines Fahrzeugs und ggf. erfolgter Authentifizierung direkt laden will, und zwar mit soviel Phasen, wie es lt. Installation möglich ist und auch mit der Stromstärke, die für sie eingestellt sind. Im obigen Beispiel will sie mit 11kW loslegen. Dies darf aber nicht sein, denn evcc möchte z. B. gar nicht laden, da kein Überschuss da ist. Wenn die Box dann trotzdem lädt, merkt evcc das und es kommt zu Problemen:
[lp-1 ] WARN 2026/04/23 16:58:39 charger logic error: disabled but charging
Wenn man nicht möchte, dass die Wallbox von selbst loslegt, kann man in der App für die Installation "Kein Laden" einstellen:

Das führt dazu, dass für alle 3 Phasen 0A eingetragen wird:


Zum Testen habe evcc heruntergefahren, das Auto angesteckt -> nichts passiert. Soweit so gut.
Das Problem beginnt nun, sobald ich evcc wieder starte. Obwohl evcc keinen Befehl zum Laden gibt (Default State: off), schaltet die Wallbox die Phasen durch (klacken) und fängt an zu laden (in dem Fall war ein PHEV dran, daher mit weniger Lesitung), obwohl evcc auf Off steht:

Schaue ich dann in der Zaptec-App, was bei der Installation eingestellt ist, dann stehen da plötzlich 16A drin:


Daher fängt die Wallbox unabhängig von evcc (von dem sie nichts weiß) an, zu laden. Irgendwo macht evcc etwas, wodurch für die Installation die 16A weggeschrieben werden, ich vermute in diesem Schritt hier:
[lp-1 ] DEBUG 2026/04/23 16:58:02 set phases: 3
oder hier:
[lp-1 ] DEBUG 2026/04/23 16:58:08 switched phases: 3p
Dies darf nicht passieren, zumindest nicht bei Zaptec. Das mag an deren seltsamer Aufteilung in Installation und Wallbox liegen, keine Ahnung. Natürlich ist es aus evcc-Sicht korrekt, festzulegen, dass mit 3 Phasen geladen werden soll. Das führt bei Zaptec aber evtl. dazu, dass er automatisch für jede Phase die 16A reinschreibt (Spekulation). Aber die 16A für die Phasen dürfen erst dann in der Installation stehen, nachdem der charger status C gesetzt wird, sprich das Laden aus Sicht von evcc auch wirklich beginnen soll.
Und, noch wichtiger: beim Beenden des Ladevorgangs (bzw. immer dann, wenn evcc sagt: jetzt aktuell bitte nicht laden) muss wieder eine 0A in die Phasen der Installation geschrieben werden, sonst hat man beim nächsten Mal wieder das Problem, dass die Zaptec beim Anstecken eines Autos direkt anfängt.
Ich hoffe ich konnte das Problem einigermaßen verständlich erklären.
Könntet ihr das bitte, bitte, bitte irgendwie umsetzen? Sprich nach dem Setzen der Phasen oder dem Beenden des Ladevorgangs noch ein zusätzliches Nullen der Phasen? Andernfalls ist ein Laden an Zaptec Wallboxen per evcc und API leider unmöglich.
Steps to reproduce
- evcc herunterfahren (Zaptec-only mode)
- In der App "Kein Laden" einstellen oder alternativ im Portal bei der Installation bei allen Phasen 0A eintragen
- Auto anstecken
- Nichts passiert -> ok, wie eingestellt
- evcc starten (default state charge point: off / default state car: off)
- Wallbox fängt von sich aus an zu laden
- Check in der App und im Portal -> für die Phasen sind 16A eingestellt
Configuration details
[main ] INFO 2026/04/23 19:00:34 using config file: /home/pi/evcc.yaml
[main ] INFO 2026/04/23 19:00:34 using sqlite database: /var/lib/evcc/evcc.db?_pragma=busy_timeout(5000)
charger
---
db:25 {Type:template Title: Icon: Product:Zaptec Go 2} map[id:638b1350-16e1-4cd3-a485-acedc4ac3ed0 password:***** template:zaptec user:*****]
meter
---
db:15 {Type:template Title:Kostal PIKO IQ Icon: Product:Kostal Plenticore Hybrid} map[baudrate:9600 comset:8N1 endianness:little host:192.168.178.148 id:71 maxacpower:0 modbus:tcpip port:1502 template:kostal-plenticore usage:pv watchdog:60s]
db:16 {Type:template Title: Icon: Product:Kostal Smart Energy Meter} map[baudrate:9600 comset:8N1 host:192.168.178.188 id:71 modbus:tcpip port:502 template:kostal-ksem usage:grid]
db:27 {Type:template Title:BYD HVS Icon: Product:Kostal Plenticore Hybrid, incl. grid charging of the house battery} map[baudrate:9600 capacity:12.8 comset:8N1 endianness:little host:192.168.178.187 id:71 maxacpower:0 maxsoc:100 minsoc:5 modbus:tcpip port:1502 template:kostal-plenticore-gen2 usage:battery watchdog:60s]
db:28 {Type:template Title:Kostal PLENTICORE plus G1 Icon: Product:Kostal Plenticore Hybrid, incl. grid charging of the house battery} map[baudrate:9600 comset:8N1 endianness:little host:192.168.178.187 id:71 maxacpower:5500 modbus:tcpip port:1502 template:kostal-plenticore-gen2 usage:pv watchdog:60s]
vehicle
---
db:23 {Type:template Title: Icon: Product:Skoda} map[cache:15m capacity:77 icon:car maxCurrent:16 maxPower:11000 minCurrent:6 mode:pv password:***** phases: priority:0 template:skoda title:Enyaq Coupe RS user:*****]
db:24 {Type:template Title: Icon: Product:Renault} map[cache:15m capacity:60 icon:car maxCurrent:16 maxPower:22000 minCurrent:6 mode:pv password:***** phases: priority:0 template:renault title:Megane E-TECH Electric user:***** vin:***** wakeupmode:MY24]
tariff
---
db:17 {Type:template Title: Icon: Product:Fixed Price} map[price:0.2758 template:fixed]
db:18 {Type:template Title:Solar Forecast (S) Icon: Product:Forecast.Solar} map[az:45 dec:15 interval:1h kwp:4.95 lat:***** lon:***** template:forecast-solar]
db:19 {Type:template Title: Icon: Product:Energy-Charts Market Price} map[average:true bzn:DE-LU charges:0 template:energy-charts-api]
db:20 {Type:template Title: Icon: Product:Green Grid Compass} map[clientid:esp_StefanNahaEvccsr0PS1_002 clientsecret:***** template:green-grid-compass zone:DE_LU]
db:21 {Type:template Title:Solar Forecast (N) Icon: Product:Forecast.Solar} map[az:-150 dec:15 interval:1h kwp:3.9 lat:***** lon:***** template:forecast-solar]
db:22 {Type:template Title:Solar Forecast (W) Icon: Product:Forecast.Solar} map[az:145 dec:15 interval:1h kwp:3.9 lat:***** lon:***** template:forecast-solar]
loadpoint
---
db:26 {Type: Title: Icon: Product:} map[charger:db:25 circuit: defaultMode:off limitSoc:0 meter: mode:off phasesConfigured:3 planStrategy:map[continuous:false precondition:0] soc:map[estimate:true poll:map[interval:3.6e+12 mode:charging]] thresholds:map[disable:map[delay:1.8e+11 threshold:0] enable:map[delay:6e+10 threshold:0]] title:Garage vehicle:]
Log details
[lp-1 ] DEBUG 2026/04/23 16:58:02 set title: Garage
[lp-1 ] DEBUG 2026/04/23 16:58:02 set priority: 0
[lp-1 ] DEBUG 2026/04/23 16:58:02 set smart cost limit: <nil>
[lp-1 ] DEBUG 2026/04/23 16:58:02 set smart feed-in limit: <nil>
[lp-1 ] DEBUG 2026/04/23 16:58:02 set thresholds: {Enable:{Delay:1m0s Threshold:0} Disable:{Delay:3m0s Threshold:0}}
[lp-1 ] DEBUG 2026/04/23 16:58:02 set plan energy: 0kWh @ 0001-01-01 00:53:28 +0053 LMT
[lp-1 ] DEBUG 2026/04/23 16:58:02 set plan strategy: continuous=false, precondition=0s
[lp-1 ] DEBUG 2026/04/23 16:58:02 set battery boost limit: 100
[lp-1 ] DEBUG 2026/04/23 16:58:02 set session energy limit: 0
[lp-1 ] DEBUG 2026/04/23 16:58:02 set session soc limit: 0
[lp-1 ] DEBUG 2026/04/23 16:58:02 set soc config: {Poll:{Mode:charging Interval:1h0m0s} Estimate:0x7f494623fc}
[lp-1 ] DEBUG 2026/04/23 16:58:02 set default mode: off
[lp-1 ] DEBUG 2026/04/23 16:58:02 set phases: 3
[lp-1 ] INFO 2026/04/23 16:58:03 loadpoint 1:
[lp-1 ] INFO 2026/04/23 16:58:03 mode: off
[lp-1 ] INFO 2026/04/23 16:58:03 charger: power ✓ energy ✗ currents ✓ phases ✓ wakeup ✗
[lp-1 ] INFO 2026/04/23 16:58:03 meters: charge ✓
[lp-1 ] INFO 2026/04/23 16:58:03 charge: power ✓ energy ✗ currents ✓
[lp-1 ] DEBUG 2026/04/23 16:58:03 phase timer inactive
[lp-1 ] DEBUG 2026/04/23 16:58:03 pv timer inactive
[lp-1 ] DEBUG 2026/04/23 16:58:04 charge power: 0W
[lp-1 ] DEBUG 2026/04/23 16:58:04 charge currents: [0.023 0.022 0.022]A
[lp-1 ] DEBUG 2026/04/23 16:58:04 charger status: B
[lp-1 ] INFO 2026/04/23 16:58:04 car connected
[lp-1 ] DEBUG 2026/04/23 16:58:04 vehicle api cache reset
[lp-1 ] DEBUG 2026/04/23 16:58:04 pv timer elapse
[lp-1 ] DEBUG 2026/04/23 16:58:04 pv timer inactive
[lp-1 ] DEBUG 2026/04/23 16:58:07 !! plan: plan time zero
[lp-1 ] DEBUG 2026/04/23 16:58:08 switched phases: 3p
[lp-1 ] DEBUG 2026/04/23 16:58:08 wake-up timer: start
[lp-1 ] DEBUG 2026/04/23 16:58:38 charge power: 2361W
[lp-1 ] DEBUG 2026/04/23 16:58:38 charge currents: [9.8 0.03 0.041]A
[lp-1 ] DEBUG 2026/04/23 16:58:39 charger status: C
[lp-1 ] INFO 2026/04/23 16:58:39 start charging ->
[lp-1 ] DEBUG 2026/04/23 16:58:39 wake-up timer: stop
[lp-1 ] WARN 2026/04/23 16:58:39 charger logic error: disabled but charging
[lp-1 ] DEBUG 2026/04/23 16:58:39 !! plan: plan time zero
What type of operating system or environment does evcc run on?
Linux
External automation
Nightly build
Version
0.305.0
Describe the bug
Ich muss es auf deutsch machen, da ich ein wenig ausholen muss.
Bei Zaptec läuft die Steuerung offenbar über zwei Ebenen:
Es gibt Installationen, z. B. ein Haushalt. Für die Installation kann man pro Phase eine Stromstärke definieren, mit der geladen werden kann. Hierüber steuert evcc, ob einphasig geladen werden soll oder dreiphasig. Im Zaptec Portal sieht das dann so aus:
Einphasig:

Dreiphasig:

Dann kann es pro Installation 1-n Wallboxen geben. Pro Wallbox legt man fest, was die Mindest- und Maximal-Stromstärke ist. Hierüber steuert evcc, wie schnell geladen wird:

Bei Zaptec ist es nun so, dass sie - zumindest bei den Go-Modellen - weder Modbus noch OCPP local unterstützen (letzteres kann man sich auf Wunsch immerhin aktivieren lassen). Normalerweise läuft die Steuerung über das API. Die Box weiß aber erstmal nicht, dass es eine externe Steuerung gibt. Das führt dazu, dass die Box beim Anschließen eines Fahrzeugs und ggf. erfolgter Authentifizierung direkt laden will, und zwar mit soviel Phasen, wie es lt. Installation möglich ist und auch mit der Stromstärke, die für sie eingestellt sind. Im obigen Beispiel will sie mit 11kW loslegen. Dies darf aber nicht sein, denn evcc möchte z. B. gar nicht laden, da kein Überschuss da ist. Wenn die Box dann trotzdem lädt, merkt evcc das und es kommt zu Problemen:
[lp-1 ] WARN 2026/04/23 16:58:39 charger logic error: disabled but chargingWenn man nicht möchte, dass die Wallbox von selbst loslegt, kann man in der App für die Installation "Kein Laden" einstellen:

Das führt dazu, dass für alle 3 Phasen 0A eingetragen wird:


Zum Testen habe evcc heruntergefahren, das Auto angesteckt -> nichts passiert. Soweit so gut.
Das Problem beginnt nun, sobald ich evcc wieder starte. Obwohl evcc keinen Befehl zum Laden gibt (Default State: off), schaltet die Wallbox die Phasen durch (klacken) und fängt an zu laden (in dem Fall war ein PHEV dran, daher mit weniger Lesitung), obwohl evcc auf Off steht:

Schaue ich dann in der Zaptec-App, was bei der Installation eingestellt ist, dann stehen da plötzlich 16A drin:


Daher fängt die Wallbox unabhängig von evcc (von dem sie nichts weiß) an, zu laden. Irgendwo macht evcc etwas, wodurch für die Installation die 16A weggeschrieben werden, ich vermute in diesem Schritt hier:
[lp-1 ] DEBUG 2026/04/23 16:58:02 set phases: 3oder hier:
[lp-1 ] DEBUG 2026/04/23 16:58:08 switched phases: 3pDies darf nicht passieren, zumindest nicht bei Zaptec. Das mag an deren seltsamer Aufteilung in Installation und Wallbox liegen, keine Ahnung. Natürlich ist es aus evcc-Sicht korrekt, festzulegen, dass mit 3 Phasen geladen werden soll. Das führt bei Zaptec aber evtl. dazu, dass er automatisch für jede Phase die 16A reinschreibt (Spekulation). Aber die 16A für die Phasen dürfen erst dann in der Installation stehen, nachdem der charger status C gesetzt wird, sprich das Laden aus Sicht von evcc auch wirklich beginnen soll.
Und, noch wichtiger: beim Beenden des Ladevorgangs (bzw. immer dann, wenn evcc sagt: jetzt aktuell bitte nicht laden) muss wieder eine 0A in die Phasen der Installation geschrieben werden, sonst hat man beim nächsten Mal wieder das Problem, dass die Zaptec beim Anstecken eines Autos direkt anfängt.
Ich hoffe ich konnte das Problem einigermaßen verständlich erklären.
Könntet ihr das bitte, bitte, bitte irgendwie umsetzen? Sprich nach dem Setzen der Phasen oder dem Beenden des Ladevorgangs noch ein zusätzliches Nullen der Phasen? Andernfalls ist ein Laden an Zaptec Wallboxen per evcc und API leider unmöglich.
Steps to reproduce
Configuration details
Log details
What type of operating system or environment does evcc run on?
Linux
External automation
Nightly build
Version
0.305.0