User-defined counters

Note: The cFos Charging Manager can read out most solar inverters using SunSpec (device type "SunSpec Solar Inverter / Meter"). In this case, you do not need to create your own meter definition.

The cFos Charging Manager allows you to create your own meter definitions to support meters that are not in the standard repertoire. There are currently two types: Modbus meters and HTTP/JSON meters. The definition files for these meters are very similar. Modbus meters read their data via Modbus from specific registers, while HTTP/JSON meters fetch their data via HTTP request and parse JSON as response. The cFos Charging Manager uses a small "query language" for parsing.

Here is an example definition for Modbus and one for HTTP/JSON:
Download sample definition for Modbus meter
Download sample definition for HTTP/JSON meter

The Charging Manager already comes with a few such files, but you can upload your own files under "System configuration" and also delete them again.
Here you will find most of the meter definitions we provide:
Download supplied counter definitions

If you have created your own counter file and it could be relevant for other users, we would be very grateful if you could make it available to us. Then we will deliver it with future versions of the Charging Manager.

Download meter definitions for additional meters

The cFos Charging Manager requires voltage information in volts, currents in milliamperes, power in watts or VA, and energy in Wh or VAh.

For bidirectional meters, it will help the Charging Manager if you provide definitions for "power_w_l1", "power_w_l2" and "power_w_l3" (i.e. signed values for the power on the individual phases). It is only important that the sign is correctly recognised. As an alternative, you can also take phase-wise values for apparent power here.

Values that are not supported by the meter can be omitted. For "type_designation", "version", "firmware_version" and "serial" you should set them to fixed values using "fixed".

For Modbus, enter a number in decimal or in hex with prefix 0x as "address".

With HTTP/JSON, the address is a string that begins with "/". The HTTP request URL is formed from the actual IP address of the device and the "address" specified here. Optionally, you can also prefix it with GET or POST.
In addition, for HTTP/JSON you must specify where in the JSON response the desired value can be found. You specify this using "query". The Charging Manager assumes that all responses are contained in a JSON object that begins with "{" and ends with "}".
Currently, in the "query" search expressions, member names and the operators "." and "[]" can be used, examples:

testElement named "test"
name1.name2Element named "name2" in child object "name1"
name[idx]Element "idx" of the object element "name". "idx" can be a number, e.g. for arrays or a string
name["u2"]Element "u2" of the object element "name", corresponds to "name.u2"
name[{"el1": "v1", "el2": 3}].valueSelect the array element that fulfils the condition of the object notation and evaluate the element named 'value'. Here, for example, in the array 'name', the element is selected that has as object elements 'el1' with value 'v1' and 'el2' with value 3 and then the value of the element 'value' is returned from this object.

Note: Some counters which are read via HTTP require username/password as authorization. You can include this in the address for HTTP access, for example with http://username:password@ If your username or password contains a "@", you must replace it with "%40".