Running evcc on Synology with Huawei, go-e and VW

Today we’ll continue with the topic of solar charging, or in other words how we optimized our photovoltaic (PV) system and electric car charging station (wallbox) to make best use of our solar power.  A previous post already outlines why we choose the open-source software evcc for this optimization, now I’d like to describe the steps there were needed to get it up and running.

Evcc reads data from our Huawei SUN2000 inverter (SUN2000-10KTL-M1) on power consumption and usage of the LUNA2000 battery (LUNA2000-10-S0), and if solar surplus is available charges our Volkswagen ID.4 and ID.Buzz vehicles via the go-e Gemini wallbox.

Let’s start with a few links: in the evcc documentation you can find a helpful introduction and look into the inner workings of the software. If you run into problems, the discussion forum is a good place to get help.

Evcc needs a local host system to run on and in most cases it connects to your other devices via your local data network. Only in some instances a connection to cloud services is required, in our case for example to the VW Connect for ID service to integrate our cars. Since we already have a NAS from Synology it was an obvious choice to run evcc there in a Docker container.

Note that for controlling the go-e wallbox you need to sponsor evcc, with 2$ monthly or a one-time contribution of 100$. For testing purposes you can also obtain a trial sponsor token under the link above, which is valid for a week.

The following diagram shows an overview how evcc integrates and operates in our system:

The remainder of this article looks at the steps that were required to get evcc up and running:

  • Setup network
  • Configure go-e wallbox
  • Configure Huawei SUN2000
  • Create initial evcc configuration
  • Install evcc on Synology
  • Further evcc configuration
  • Enable remote access
  • Updating evcc

And now, let’s dive right into the first one.

Setup network

Since evcc will access our Huawei inverter and the go-e wallbox via their IP addresses on our our LAN, it is a good idea to assign static IP addresses to them. Otherwise with dynamic IP addresses they may change over time and evcc will loose its connection to the devices.

Typically IP addresses are assigned via DHCP by your home router, and ideally you’ll assign the static IP addresses in your home router’s configuration. That way the devices can still obtain other configuration parameters automatically via DHCP. Each device has a globally unique MAC address, and you can assign static IPs by registering that address in your router’s configuration.

You’ll need to refer to your home router’s documentation to find out how to setup static IP addresses with it. For illustration purposes, here a screenshot of our router’s configuration page with assignment of MAC addresses to local IP addresses:

Configure go-e wallbox

To integrate the go-e Gemini wallbox with evcc it is necessary to activate the local API, which allows evcc to directly communicate with the wallbox without detouring over a cloud service. Also evcc recommends to enable the option to simulate unplugging in interruptions during charging.

The API is activated in the go-e app by navigating to Internet, Advanced settings. The option to simulate unplugging can be found at Settings, Car.

Also, to avoid interference with evcc, you should disable any automatically controlled charging in the go-e app, for example eco mode with PV surplus charging if you previously had a go-e Controller as we did.

In the mode setting both eco mode and next trip mode should be disabled. The current setting will be automatically adapted by evcc, you can leave it as it is.

Configure Huawei SUN2000

With your Huawei SUN2000 you’ll need an Huawei SDongle to connect it to your local network via Ethernet cable or WLAN. The dongle enables the inverter to communicate with the FusionSolar cloud service for reporting and configuration. Also it provides a Modbus TCP interface, which is used by evcc to read state-of-charge and power input/output of the LUNA2000 battery connected to the inverter.

Modbus TCP is disabled by default and you need to login to your FusionSolar account to activate it. If setup correctly by your installer, you’ll find your dongle there under your site and can open the Configuration dialogue to set the Modbus TCP setting to Enable. You can choose to set it to unrestricted or restricted and in the latter case define a number of IP addresses that should be allowed to access the Modbus interface.

Create initial evcc configuration

In their installation guide for Docker, evcc recommends creating an initial configuration in a non-docker environment. This also allows you to use the text-based configuration wizard to create that initial configuration. For that, I downloaded and extracted the latest version for Windows according to these instructions.  No installation is required, you can just open the folder in a command line and start using evcc.

To start the configuration wizard, use the command “evcc configure”. For a better understanding of what the wizard asks for it can be helpful to first read about how the evcc configuration is structured. To be able to have the configuration wizard connect to the go-e wallbox you need a trial sponsor token, which you can obtain here. Of course if you are already a sponsor, you can just use your exiting token.

The following screenshots show how I setup the Huawei system and the go-e wallbox with the configuration wizard:

First, the wizard requests some configuration on the inverter and battery connection …

… and then on your site, the load points (e.g. garage or carport) and wallbox. Note that I omitted the vehicles here and added them manually to the configuration later.

Once done, the configuration wizard saves the evcc.yaml configuration file. You then can run evcc without any parameters to start it on Windows and connect to its local user interface at https://127.0.0.1:7070 to see if everything works out. 

Install evcc on Synology

If the configuration works, you can proceed with installing evcc on your Synology as Docker container. First, to run Docker containers on your Synology you need to install their Container Manager on a compatible model. There is an installation guide for the evcc Docker container available, but it is in German and some of the information is outdated, therefore here a few screenshots to explain the process.

To start, open the Container Manager and select Create.

In the Image input, choose Add Image, then search for evcc and select the evcc/evcc image.

Next assign a unique container name. All the other settings in this screen can stay on their defaults.

The next screen starts with the Port Settings, which again you can leave on their defaults. Only if you run multiple instances of evcc in host mode (see below), then you have to assign different local ports for each instance.

Now we need to take a detour, open file manager and create a location for the evcc configuration file and database. In my case I already have a share called docker and created a subdirectory for evcc there. Copy the evcc.yaml you created in the initial configuration step there and also create a subfolder for the database.

Going back to the Container Manager, scroll down the screen and link the file and directory to your container.

For Network we choose host. Basically the application in the container network-wise runs as if it would be running on the host system, the Synology.  If you want to run several evcc instances in this host mode, you therefore need  to assign different ports further above.

Everything else can be left in the default settings. When you click Next, you’ll get a summary of your configuration , which you can check again …

… and then choose Done to setup the container.

Now you can open up the evcc user interface in your browser, via http://your-nas:7070.

Now we have evcc running with a basic configuration, but some fine-tuning is still required.

Further evcc configuration

The evcc has a great reference page, explaining the configuration in detail. Based on the configuration file created by the configuration wizard, I made the following adjustments to get the solution to work properly.

To edit the configuration, just mount the Synology share where you placed the configuration file and edit it with a text editor like UltraEdit. After you have saved your changes you need to open your Synology UI and restart the container via the Container Manager.

Below I’ll go through the changes I made to the initial configuration. You can download my completed configuration file here. Data that you need to replace with your own is set to the placeholder “[replace]”.

Vehicles

To integrate your Volkswagen vehicles, you need to register an account at MyVolkswagen and link your vehicles with it:

After that, add your vehicle or vehicles to the configuration file, where you also need to specify their unique FIN number and username and password for the MyVolkswagen access. I additionally also added the capacity of their battery, which is optional.

Tariffs

Adding information about your energy prices allows evcc to show you the costs for vehicle charging and how much you are saving by solar charging. See here for details on the tariff configuration in evcc. You can specify both prices for drawing power from the grid and what you get if you’d feed power back into the grid. There is a section in the documentation explaining how savings are calculated.

Phases

The wizard leaves the phases of the loadpoint fixed to 3, however often our PV system will not produce enough surplus to support 3-phase charging. The go-e wallbox supports automatic phase switching and therefore I set the configuration value to  0, which instructs evcc to automatically choose 1 or 3 phases depending on the surplus available.

Note that the car will perceive switches between 1-phase and 3-phase charging as interruptions and the VW app will send you notifications that charging has stopped and started again. 

residualPower

For PV systems with a battery like ours, evcc recommends to set the residualPower to a value between 100 and 300. This setting defines a target amount of surplus that evcc should leave to the grid or to the battery. According to evcc, this setting is required to ensure stable cooperation between the battery control circuit and the evcc control circuit. I set this to 200.

Note: I was a bit curious in what situations this is actually required and started a discussion in the evcc forums on it, have a look if you are interested in details.

Battery Settings

While you can still define the priority of battery charging versus vehicle charging in the configuration file, this setting is recommended to be done in the UI, by clicking on the state-of-charge of the battery.

In the screen that opens up you can then define a lower limit and upper limit of the battery charge. Below the lower limit (prioritySoc), the battery has priority over the vehicle. If the battery state-of-charge reaches the lower limit, the vehicle takes over and will have priority. However the vehicle will not be allowed to draw power from the battery. This will be allowed only if the battery state-of-charge exceeds the upper limit (bufferSoc). On the left side under “battery supported charging” you can define the condition under which the vehicle may draw from the battery (bufferStartSoc).

In my case, I started with a simple setup and set the lower limit to 0 % and the upper limit to 100 %. Therefore in our system, the vehicle always has priority over the battery, but is not allowed to drain the battery:

The battery is much more flexible and can use lesser amounts of surplus in smaller increments. Compared to that, the vehicle needs at least 1.4kW and can only adjust the charging in 200W increments. My thinking of prioritizing the vehicle over the battery is that if there is enough power, the vehicle should be charged, and still there will be enough left-over surplus to also get some power into the battery.

The previously discussed value of residualPower also comes into play here. Since it is set to 200W, evcc will always leave that amount to the battery or grid. This increases the left-over going into the battery. Also due to the residualPower it makes sense to at least not fully charge the battery before the vehicle, because otherwise that power will go the the grid.

Other topics

For now this basic setup seems to be working fine for us. In the future I might tinker a bit with the priorities between battery and vehicle. Also an increase of the minimum current (minCurrent) needed for vehicle charging may be interesting to try, since due to charging losses, quicker charging with higher amounts of powers is always preferable. Another setting to look at is the amounts of power that enable or disable the charging process (enable/disable). If you don’t have a house battery or your battery fills up quickly you can use those settings to start the car charging process if only smaller amounts of surplus are available, and you want to charge them into the vehicle, supplemented by power from the grid.

Enable remote access

The evcc user interface does not provide any authentication or security mechanisms and therefore cannot be exposed to the Internet. To be able to access it remotely some kind of Virtual Private Network (VPN) solution is required, with Tailscale often being recommended. Tailscale needs to be installed on all devices participating in the VPN and enables secure communication with very little configuration effort. It is available for a great number of platforms, including for Synology.

To use Tailscale first head to the Tailscale website and register your tailnet. You can choose your identity provider, and I went with Apple, since my mobile devices are all iOS and login into services with your Apple ID on those devices is very smooth.

As next step, you’ll install Tailscale on your evcc host system, in our case Synology. Look here for instructions. Also on your devices that shall be able to access evcc you’ll need to install Tailscale. Instructions for iOS can be found here. Tailscale for iOS also provides an VPN on-demand feature, which automatically enables the VPN when needed.

Once you have set everything up, your Synology host name works for accessing evcc both locally without VPN and remotely with VPN connected.

Use your Synology host name, net-nas-1 in our case, to access evcc locally and remotely via Tailscale (left image). You can  even create a link on the home screen (center image) and then access the user interface like an app (right image).

While Tailscale was really easy to setup, not everything is great - I did experience some connectivity issues with Apple Maps and Spotify when on the road with enabled VPN. When disabling the VPN, the issues always immediately went away. I am still trying to figure out what causes those connectivity issues and will update this post once I find a solution.

Updating evcc

Though this is not really part of the initial setup, I also wanted to mention that running evcc in a Docker container provides an easy way to update to newer version. The evcc user interface will show you once new versions are available and you can then update the image in the Synology Container Manager. It may take a little while between the user interface announcing a new version and that version being available as Docker container, but usually that is only a few hours. Before you update check the release notes to ensure that there are no breaking changes in the new evcc version that prevent it from working with the existing configuration file and database.

The evcc user interface will show you in the lower left corner when an update is available.

Then open your Synology Container Manager, go to Images and click on the Update available link.

Once you confirm the upcoming screen, the Container Manager will download the new image and restart the Container.

Final words

With that, the basic setup of evcc is complete. It has been running in our house now for about two weeks and so far works great. Almost all of our surplus is used for our own consumption and our vehicles are now mostly powered by our own solar energy. I am very happy with how easy evcc is to set up and the benefits it brings for our solar charging.

If you have any questions about this article, as always, feel free to contact me.