Documentation

Active power control by the distribution system operator (DSO) in accordance with Section 14a EnWG

Since 2024, the grid operator may no longer refuse larger consumers such as wallboxes or heat pumps, but may demand active power control. They must then grant you a discount on the grid charges. The cFos Charging Manager supports various forms of active power control by the grid operator (grid-serving control).

Ripple control receiver: The grid operator installs a ripple control receiver in your installation whose switching contacts it can control in order to reduce the maximum power that the cFos Charging Manager may draw. The cFos Charging Manager can be connected to the ripple control receiver by means of switching inputs. You can use the S0 inputs of the cFos Power Brain Controller, the cFos Wallbox Booster or the cFos Charging Manager ESP Kit, but also those of other devices, such as certain meter models. Here are instructions on how to configure the Charging Manager with switching contact. You can also query 2 contacts and thus define 4 different active power limits.

Control via Modbus: The grid operator installs a Modbus master in your installation, which sets registers in the cFos Charging Manager that control the maximum power. To do this, you can activate the SunSpec server under "Configuration" in the Charging Manager. The Modbus TCP port is 502, under Raspberry PI 1502, as ports under 1024 require admin rights. The Modbus master can then access register 40098 (float) to query the active power and adjust it in per cent using register 40968 (float).

OCPP via OpenADR: The grid operator uses OpenADR to coordinate its loads and services. From his point of view, your system is an OCPP wallbox. You can add an "OCPP via OpenADR" wallbox in the cFos Charging Manager. In the OCPP gateway settings of this wallbox, enter the grid operator's data for the backend. Set "Grid reference" as the meter role. This allows the grid operator to analyse the current grid usage and control the cFos Charging Manager via OCPP Charging Profile.

HTTP API for energy suppliers: The grid operator uses our specially designed HTTP API. This is accessible via secure TLS connections. Certificates can also be imported at the request of the grid operator. Alternatively, the connection can also run via a smart meter gateway. With our HTTP API, the grid operator or energy supplier can intervene very precisely in the control of the Charging Manager. Below you will find the documentation for this API.

The HTTP API for network operators and energy suppliers can set and query Charging Manager variables by means of 2 calls. These variables can be taken into account when configuring the house connection power and the maximum EVSE power. Network operators and energy suppliers are free to define their own (manufacturer-independent) standards for how these variables are assigned.

Example: House connection power = 55000 * AVAIL / 100
The grid operator sets the variable AVAIL to values between 0-100 and can thus regulate the power of the customer system down in percentage steps.

Example: TARIF
The energy supplier sets the variable TARIF to 0 or 1 and informs the system by means of 0 that the "normal" tariff now applies and by means of 1 that a reduced tariff now applies. The users of the system can then create charging rules that allow them to charge the car only at certain tariffs or charge at a lower charging power at certain tariffs.

HTTP API

Note: When setting a variable, the Charging Manager checks whether the value has changed. Only then does it save the variable in the config.json file. On Raspberry PI and cFos Power Brain, this causes the flash memory to be used up. If you want to prevent this saving, you can specify an additional query parameter "tmp=1", e.g. /cnf?cmd=set_cm_vars&tmp=1 ...

Set a variable

GET /cnf?cmd=set_cm_vars&name=n&val=v&clear=c
n is the name of the variable, v is its value.
clear is optional, with c=1 all existing variables are deleted before resetting.

curl -i -X GET --user admin:1234abcd 'http://localhost/cnf?cmd=set_cm_vars&name=var3&val=123' Linux
curl -i -X GET --user admin:1234abcd "http://localhost/cnf?cmd=set_cm_vars&name=var3&val=123" Windows

Set all variables

POST /cnf?cmd=set_cm_vars&clear=1
The POST body contains a JSON object with the names and values of the variables, e.g.

{"vars": [{ "name": "var1", "expr": 1.5 }], { "name": "var2", "expr": 2 }] }
Delete all variables and set var1 to 1.5, var2 to 2 .

curl -i -X POST -d '{ "vars": [{ "name": "tarif", "expr": 1 }, { "name": "PWR", "expr": 70 }] }' --user admin:1234abcd 'http://localhost/cnf?cmd=set_cm_vars' Linux
curl -i -X POST -d "{ \"vars\": [{ \"name\": \"tarif\", \"expr\": 1 }, { \"name\": \"PWR\", \"expr\": 70 }] }" --user admin:1234abcd "http://localhost/cnf?cmd=set_cm_vars" Windows

Read all variables

GET /cnf?cmd=get_cm_vars
Returns a JSON object matching set_cm_vars with all variables, their formulas (or constants) and their currently calculated values.

curl -i -X GET --user admin:1234abcd 'http://localhost/cnf?cmd=get_cm_vars Linux
curl -i -X GET --user admin:1234abcd "http://localhost/cnf?cmd=get_cm_vars Windows

This API can be accessed via the Smart Meter Gateway without further authentication, as the Smart Meter Gateway already takes care of this by defining the connections and authentication by means of certificates. This API can be used from the home network by means of an administrator password.