This guide will help you to get familiar with MQTT Connector configuration for ThingsBoard IoT Gateway. Use general configuration to enable this Connector. The purpose of this connector is to communicate between Charge Point and Central System using OCPP protocol.
We will describe connector configuration file below.
Connector configuration: ocpp.json
Connector configuration is a JSON file that contains information about how to connect to Charge Points, how to process the data and other service features. Let’s review the format of the configuration file using example below.
Example of OCPP Connector config file. Press to expand.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
{
"centralSystem": {
"name": "Central System",
"host": "127.0.0.1",
"port": 9000,
"connection": {
"type": "insecure"
},
"security": [
{
"type": "token",
"tokens": [
"Bearer ACCESS_TOKEN"
]
},
{
"type": "basic",
"credentials": [
{
"username": "admin",
"password": "admin"
}
]
}
]
},
"chargePoints": [
{
"idRegexpPattern": "bidon/hello/CP_1",
"deviceNameExpression": "${Vendor} ${Model}",
"deviceTypeExpression": "default",
"attributes": [
{
"messageTypeFilter": "MeterValues,",
"key": "temp1",
"value": "${meter_value[:].sampled_value[:].value}"
},
{
"messageTypeFilter": "MeterValues,",
"key": "vendorId",
"value": "${connector_id}"
}
],
"timeseries": [
{
"messageTypeFilter": "DataTransfer,",
"key": "temp",
"value": "${data.temp}"
}
],
"attributeUpdates": [
{
"attributeOnThingsBoard": "shared",
"valueExpression": "{\"${attributeKey}\":\"${attributeValue}\"}"
}
],
"serverSideRpc": [
{
"methodRPC": "rpc1",
"withResponse": true,
"valueExpression": "${params}"
}
]
}
]
}
Section “centralSystem”
This configuration section using for configure Gateway as a Central System.
参数 | Default value | 描述 |
---|---|---|
name | Central System | Central System name. |
host | 127.0.0.1 | Central System hostname or ip address. |
port | 9000 | Central System port. |
Connection subsection
This configuration subsection using for configure connection type between Central System and Charge Point. You can choose the next connection type:
Insecure connection type is the simplest option. It is useful for testing purpose but not recommended in production solution.
Connection subsection in configuration file will look like this:
|
In table below described parameters to configure TLS connection.
Connection subsection in configuration file will look like this:
|
Security subsection
Security subsection provides configuration for Charge Point authorization at Central System. You can choose the next security type:
Anonymous connection type is the simplest option. It is useful for testing purpose but not recommended in production solution. Security subsection in configuration file will look like this:
|
One type of security configuration is basic. For authorization will be used combination of username/password, provided in this section in config.
Security subsection in configuration file will look like this:
|
One type of security configuration is token. For authorization will be used token, , provided in this section in config.
Security subsection in configuration file will look like this:
|
Note You can combine basic and token security types. Security subsection in configuration file will look like this:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
"security": [
{
"type": "token",
"tokens": [
"Bearer ACCESS_TOKEN"
]
},
{
"type": "basic",
"credentials": [
{
"username": "admin",
"password": "admin"
}
]
}
]
Section “chargePoints”
This subsection contains general settings for the Charge Points and subsections for processing data.
参数 | Default value | 描述 |
---|---|---|
idRegexpPattern | charge_points/CP_1 | Regular expression, uses for looking the Charge Point for a current device. |
deviceNameExpression | ${Vendor} ${Model} | Simple JSON expression, uses for looking device name in the incoming message (parameter “Vendor + Model” will be used as device name). |
deviceTypeExpression | ${Model} | Simple JSON expression, uses for looking device type in the incoming message (parameter “Model” will be used as device type). |
attributes | Array of objects for processing device attributes. | |
timeseries | Array of objects for processing device telemetry. | |
attributeUpdates | Array of objects for processing attributeUpdate requests from ThingsBoard. | |
serverSideRpc | Array of objects for processing RPC requests from ThingsBoard. |
This part of configuration will look like:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
"chargePoints": [
{
"idRegexpPattern": "charge_points/CP_1",
"deviceNameExpression": "${Vendor} ${Model}",
"deviceTypeExpression": "${Model}",
"attributes": [
...
],
"timeseries": [
...
],
"attributeUpdates": [
...
],
"serverSideRpc": [
...
]
}
]
Subsection attributes
This subsection contains general settings for the processing data interpreted as attributes.
参数 | Default value | 描述 |
---|---|---|
attributes | This subsection contains parameters of the incoming message, to be interpreted as attributes for the device. | |
… messageTypeFilter | MeterValues, | List of allowed message types divided by comma. |
… key | temp | Attribute name, to be sent to ThingsBoard instance. |
… value | ${meter_value[:].sampled_value[:].value} | Simple JSON expression, uses for looking value in the incoming message, to be sent to ThingsBoard instance as value of key parameter. |
This subsection in configuration file looks like:
1
2
3
4
5
6
7
8
9
10
11
12
"attributes": [
{
"messageTypeFilter": "MeterValues,",
"key": "temp",
"value": "${meter_value[:].sampled_value[:].value}"
},
{
"messageTypeFilter": "MeterValues,",
"key": "vendorId",
"value": "${connector_id}"
}
]
Subsection timeseries
This subsection contains general settings for the processing data interpreted as timeseries.
参数 | Default value | 描述 |
---|---|---|
timeseries | This subsection contains parameters of the incoming message, to be interpreted as telemetry for the device. | |
… messageTypeFilter | MeterValues, | List of allowed message types divided by comma. |
… key | temp | Telemetry name, to be sent to ThingsBoard instance. |
… value | ${meter_value[:].sampled_value[:].value} | Simple JSON expression, uses for looking value in the incoming message, to be sent to ThingsBoard instance as value of key parameter. |
This subsection in configuration file looks like:
1
2
3
4
5
6
7
"timeseries": [
{
"messageTypeFilter": "DataTransfer,",
"key": "temp",
"value": "${data.temp}"
}
]
Attribute updates subsection
This configuration section is optional. ThingsBoard allows provisioning device attributes and fetch some of them from the device application. You can treat this as a remote configuration for devices. Your devices are able to request shared attributes from ThingsBoard. See user guide for more details.
The “attributeUpdates” configuration allows configuring the format of the corresponding attribute data that will be sending to the Charge Point.
参数 | Default value | 描述 |
---|---|---|
attributeOnThingsBoard | sharedName | Shared attribute name. |
valueExpression | {"${attributeKey}":"${attributeValue}"} | JSON-path expression uses for creating the message data that will send to Charge Point. |
This section in configuration file looks like:
1
2
3
4
5
6
"attributeUpdates": [
{
"attributeOnThingsBoard": "shared",
"valueExpression": "{\"${attributeKey}\":\"${attributeValue}\"}"
}
]
Server side RPC subsection
ThingsBoard allows sending RPC commands to the device that is connected to ThingsBoard directly or via Gateway.
Configuration, provided in this section uses for sending RPC requests from ThingsBoard to Charge Point.
参数 | Default value | 描述 |
---|---|---|
methodRPC | rpcMethod1 | RPC method name. |
withResponse | true | Boolean value that means as send or not response back to ThingsBoard. |
valueExpression | ${params} | JSON-path expression uses for creating the message data that will send to Charge Point. |
This subsection in configuration file looks like:
1
2
3
4
5
6
7
"serverSideRpc": [
{
"methodRPC": "rpc1",
"withResponse": true,
"valueExpression": "${params}"
}
]
Next steps
Explore guides related to main ThingsBoard features:
- Data Visualization - how to visualize collected data.
- Device attributes - how to use device attributes.
- Telemetry data collection - how to collect telemetry data.
- Using RPC capabilities - how to send commands to/from devices.
- Rule Engine - how to use rule engine to analyze data from devices.