Which wallbox from German KfW list?

I went with go-eCharger 11kW because of all the mentioned reasons, but predominantly because of the “PV Überschussladung” - dynamic charging leveraging solar power. The eCharger is one of the few devices that supports 3-phase to 1-phase switching, which enables a minimum charging power of not 4.2kW but 1.4kW. On days like today this makes a significant difference, as your car can slowly charge with solar power, instead of demanding 4.2kW in minimum.

@povlhp I didn’t see this being an argument for you. Care to elaborate?

@Jpsy how did you get to all the entities you’ve shown in your screenshot?

I went with the myenergi Zappi + hub

Maybe these screenshots are interesting to someone:

Dashboard view:

Integration view:

integration via GitHub - CJNE/ha-myenergi: Home Assistant integration for MyEnergi devices

Very simple: I installed the HA custom integration for go-eCharger by Carsten Thiele (@cathiele):

This integration only leverages API v1 because AFAIK Carsten’s box is a revision that does not support v2.
To get additional data from API v2 I am using Node RED. If you are interested, I will publish the corresponding flow here.

Please post the Node Red flow.

Here is my flow for API v2.
It polls the API every 30 seconds and extracts some properties that I need.
Some of these props are also translated into additional friendly text props.
All Details of API v2 can be found in the API docs.

[{"id":"b5dcf55992d67363","type":"http request","z":"c6ce30da03615610","name":"API v2 von goe charger abfragen","method":"GET","ret":"obj","paytoqs":"ignore","url":"http://192.168.178.120/api/status","tls":"","persist":false,"proxy":"","authType":"","senderr":false,"x":340,"y":100,"wires":[["d59f200ddafef46f","2023891f9d946972"]]},{"id":"575d458f90f90fdf","type":"inject","z":"c6ce30da03615610","name":"30 s","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"30","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":110,"y":100,"wires":[["b5dcf55992d67363"]]},{"id":"bb98e02d448c9d2c","type":"comment","z":"c6ce30da03615610","name":"goe-charger, API v2","info":"","x":130,"y":40,"wires":[]},{"id":"2023891f9d946972","type":"function","z":"c6ce30da03615610","name":"Daten erhalten?","func":"if(\n    typeof msg.payload === \"object\" && \n    typeof msg.payload.modelStatus === \"number\"\n){\n    return msg;\n}\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":280,"y":160,"wires":[["1362e30c48baac0f","d34dcbebcf234f0a","57d1174dd7e5d47b"]]},{"id":"d59f200ddafef46f","type":"debug","z":"c6ce30da03615610","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":590,"y":100,"wires":[]},{"id":"1362e30c48baac0f","type":"function","z":"c6ce30da03615610","name":"modelStatus übersetzen -> msg.modelStatusText","func":"\n// Source: https://github.com/goecharger/go-eCharger-API-v2/blob/1183542a2d0b04895957400c57872309233285ba/apikeys-de.md\n\n// Reason why we allow charging or not right now:,\nconst texts = {\n     0 : \"NotChargingBecauseNoChargeCtrlData\",\n     1 : \"NotChargingBecauseOvertemperature\",\n     2 : \"NotChargingBecauseAccessControlWait\",\n     3 : \"ChargingBecauseForceStateOn\",\n     4 : \"NotChargingBecauseForceStateOff\",\n     5 : \"NotChargingBecauseScheduler\",\n     6 : \"NotChargingBecauseEnergyLimit\",\n     7 : \"ChargingBecauseAwattarPriceLow\",\n     8 : \"ChargingBecauseAutomaticStopTestLadung\",\n     9 : \"ChargingBecauseAutomaticStopNotEnoughTime\",\n    10 : \"ChargingBecauseAutomaticStop\",\n    11 : \"ChargingBecauseAutomaticStopNoClock\",\n    12 : \"ChargingBecausePvSurplus\",\n    13 : \"ChargingBecauseFallbackGoEDefault\",\n    14 : \"ChargingBecauseFallbackGoEScheduler\",\n    15 : \"ChargingBecauseFallbackDefault\",\n    16 : \"NotChargingBecauseFallbackGoEAwattar\",\n    17 : \"NotChargingBecauseFallbackAwattar\",\n    18 : \"NotChargingBecauseFallbackAutomaticStop\",\n    19 : \"ChargingBecauseCarCompatibilityKeepAlive\",\n    20 : \"ChargingBecauseChargePauseNotAllowed\",\n    22 : \"NotChargingBecauseSimulateUnplugging\",\n    23 : \"NotChargingBecausePhaseSwitch\",\n    24 : \"NotChargingBecauseMinPauseDuration\"\n};\n\nmsg.modelStatusText = texts[ msg.payload.modelStatus ];\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":610,"y":220,"wires":[["7814e435a7f45fd0","a8326917165ac690"]]},{"id":"a8326917165ac690","type":"ha-entity","z":"c6ce30da03615610","name":"goecharger_v2_modelstatus","server":"cb38d2a3.10198","version":2,"debugenabled":false,"outputs":1,"entityType":"sensor","config":[{"property":"name","value":"goecharger_v2_modelstatus"},{"property":"device_class","value":""},{"property":"icon","value":""},{"property":"unit_of_measurement","value":""},{"property":"state_class","value":""},{"property":"last_reset","value":""}],"state":"payload.modelStatus","stateType":"msg","attributes":[],"resend":true,"outputLocation":"","outputLocationType":"none","inputOverride":"allow","outputOnStateChange":false,"outputPayload":"","outputPayloadType":"str","x":940,"y":160,"wires":[[]]},{"id":"7814e435a7f45fd0","type":"ha-entity","z":"c6ce30da03615610","name":"goecharger_v2_modelstatus_text","server":"cb38d2a3.10198","version":2,"debugenabled":false,"outputs":1,"entityType":"sensor","config":[{"property":"name","value":"goecharger_v2_modelstatus_text"},{"property":"device_class","value":""},{"property":"icon","value":""},{"property":"unit_of_measurement","value":""},{"property":"state_class","value":""},{"property":"last_reset","value":""}],"state":"modelStatusText","stateType":"msg","attributes":[],"resend":true,"outputLocation":"","outputLocationType":"none","inputOverride":"allow","outputOnStateChange":false,"outputPayload":"","outputPayloadType":"str","x":960,"y":220,"wires":[[]]},{"id":"d34dcbebcf234f0a","type":"function","z":"c6ce30da03615610","name":"car übersetzen -> msg.carText","func":"\n// Source: https://github.com/goecharger/go-eCharger-API-v2/blob/1183542a2d0b04895957400c57872309233285ba/apikeys-de.md\n\n// carState, null if internal error \nconst texts = {\n    0 : \"Unknown/Error\",\n    1 : \"Idle\",\n    2 : \"Charging\",\n    3 : \"WaitCar\",\n    4 : \"Complete\",\n    5 : \"Error\"\n};\n\nmsg.carText = texts[ msg.payload.car ];\n\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":550,"y":340,"wires":[["7d73beb658591dd8","0a890d7f0f370f7a"]]},{"id":"7d73beb658591dd8","type":"ha-entity","z":"c6ce30da03615610","name":"goecharger_v2_carstate_text","server":"cb38d2a3.10198","version":2,"debugenabled":false,"outputs":1,"entityType":"sensor","config":[{"property":"name","value":"goecharger_v2_carstate_text"},{"property":"device_class","value":""},{"property":"icon","value":""},{"property":"unit_of_measurement","value":""},{"property":"state_class","value":""},{"property":"last_reset","value":""}],"state":"carText","stateType":"msg","attributes":[],"resend":true,"outputLocation":"","outputLocationType":"none","inputOverride":"allow","outputOnStateChange":false,"outputPayload":"","outputPayloadType":"str","x":940,"y":340,"wires":[[]]},{"id":"0a890d7f0f370f7a","type":"ha-entity","z":"c6ce30da03615610","name":"goecharger_v2_carstate","server":"cb38d2a3.10198","version":2,"debugenabled":false,"outputs":1,"entityType":"sensor","config":[{"property":"name","value":"goecharger_v2_carstate"},{"property":"device_class","value":""},{"property":"icon","value":""},{"property":"unit_of_measurement","value":""},{"property":"state_class","value":""},{"property":"last_reset","value":""}],"state":"payload.car","stateType":"msg","attributes":[],"resend":true,"outputLocation":"","outputLocationType":"none","inputOverride":"allow","outputOnStateChange":false,"outputPayload":"","outputPayloadType":"str","x":930,"y":280,"wires":[[]]},{"id":"57d1174dd7e5d47b","type":"function","z":"c6ce30da03615610","name":"err übersetzen -> msg.errText","func":"\n// Source: https://github.com/goecharger/go-eCharger-API-v2/blob/1183542a2d0b04895957400c57872309233285ba/apikeys-de.md\n\n// error, null if internal error \nconst texts = {\n    0 : \"Unknown/Error\",\n    1 : \"Idle\",\n    2 : \"Charging\",\n    3 : \"WaitCar\",\n    4 : \"Complete\",\n    5 : \"Error\"\n};\n\nmsg.errText = texts[ msg.payload.err ];\n\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":550,"y":460,"wires":[["7430852d58f70fa9","90aac3371ef71dce"]]},{"id":"7430852d58f70fa9","type":"ha-entity","z":"c6ce30da03615610","name":"goecharger_v2_error_text","server":"cb38d2a3.10198","version":2,"debugenabled":false,"outputs":1,"entityType":"sensor","config":[{"property":"name","value":"goecharger_v2_error_text"},{"property":"device_class","value":""},{"property":"icon","value":""},{"property":"unit_of_measurement","value":""},{"property":"state_class","value":""},{"property":"last_reset","value":""}],"state":"errText","stateType":"msg","attributes":[],"resend":true,"outputLocation":"","outputLocationType":"none","inputOverride":"allow","outputOnStateChange":false,"outputPayload":"","outputPayloadType":"str","x":930,"y":460,"wires":[[]]},{"id":"90aac3371ef71dce","type":"ha-entity","z":"c6ce30da03615610","name":"goecharger_v2_error","server":"cb38d2a3.10198","version":2,"debugenabled":false,"outputs":1,"entityType":"sensor","config":[{"property":"name","value":"goecharger_v2_error"},{"property":"device_class","value":""},{"property":"icon","value":""},{"property":"unit_of_measurement","value":""},{"property":"state_class","value":""},{"property":"last_reset","value":""}],"state":"payload.err","stateType":"msg","attributes":[],"resend":true,"outputLocation":"","outputLocationType":"none","inputOverride":"allow","outputOnStateChange":false,"outputPayload":"","outputPayloadType":"str","x":920,"y":400,"wires":[[]]},{"id":"cb38d2a3.10198","type":"server","name":"Home Assistant","version":2,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":"30"}]

Just so you guys don’t make the same mistake as i did.

Don’t buy a siemens wall box (versicharge 3 in my case). It seems completely cloud managed. I had to open a ticket to their horrible service desk just to configure OCPP, still with no success.
All data is stored in their cloud and the box is always connected to their cloud no possibility to disconnect. Pretty much a total waste of money :frowning:

Hi all,
just wanted to post some updates since I’ve asked here for which wall box I should go… :smiley:

We’ve decided to go with the OpenWB - and after a view months of waiting, it finally arrived and has been installed now.
In combination with my SolarEdge Inverter, I’ve had some ‘smaller’ issues, because my Inverter stopped talking to my SolarEdge_Modbus integration (it can only handle one connection and the wallbox had to talk with the inverter) - but finally, I’ve also managed to solve that issue by running a seperate addon (ha-modbusproxy)…

Now, my wallbox - and the inverter are again integrated into HomeAssistant - and finally, only the car is still missing, but should be here within the next few days :smiley:

WELCOME FUTURE… :smiley:

2 Likes

I finally managed to get modbus working after 6 months of working with their support and 3 firmware versions…

In case someone needs the connection data, here you go:

maedball/Homeassistant_Siemens_versicharge (github.com)

1 Like

@maedball How are you using this?

It appears the Ford Charge Station Pro is actually built by Siemens and if I go to the direct IP of the device, it shows Versicharge and the word login, but no buttons or actions. I’m wondering if there might be some way to re-use what you shared here to get the data from this EVSE into Home Assistant.

That looks similar to what my “login” looks like.

Please check out my github link. What you see in there is what is in my homeassistant config. The ip address in the hub obviously needs to be changed to the ip address your wallbox has :wink:

Thank you. Yes, I tried adding Modbus to my config and even copied the format of yours, but the connection is denied and I’m thinking it’s because I can’t access the menus on the device itself to enable the modbus connection. This is why I was asking you how you are using this because I’m assuming you must have access to some setting on the device to enable modbus connections on port 502, is that right?

I think you have to ask the support from siemens to open Modbus for the Wallbox. I always had to go back and forth with them to enable and disable stuff. OCPP for example which never worked… It seems like they flash different Firmwares depending on what you request. This really is by far the worst Wallbox i have seen by now… Especially given that it is very expensive.

1 Like