1{
2  "broker": {
3    "name":"Default Local Broker",
4    "host":"127.0.0.1",
5    "port":1883,
6    "clientId": "ThingsBoard_gateway",
7    "security": {
8      "type": "basic",
9      "username": "user",
10      "password": "password"
11    }
12  },
13  "mapping": [
14    {
15      "topicFilter": "/sensor/data",
16      "converter": {
17        "type": "json",
18        "deviceNameJsonExpression": "${serialNumber}",
19        "deviceTypeJsonExpression": "${sensorType}",
20        "timeout": 60000,
21        "attributes": [
22          {
23            "type": "string",
24            "key": "model",
25            "value": "${sensorModel}"
26          },
27          {
28            "type": "string",
29            "key": "${sensorModel}",
30            "value": "on"
31          }
32        ],
33        "timeseries": [
34          {
35            "type": "double",
36            "key": "temperature",
37            "value": "${temp}"
38          },
39          {
40            "type": "double",
41            "key": "humidity",
42            "value": "${hum}"
43          }
44        ]
45      }
46    },
47    {
48      "topicFilter": "/sensor/+/data",
49      "converter": {
50        "type": "json",
51        "deviceNameTopicExpression": "(?<=sensor\/)(.*?)(?=\/data)",
52        "deviceTypeTopicExpression": "Thermometer",
53        "timeout": 60000,
54        "attributes": [
55          {
56            "type": "string",
57            "key": "model",
58            "value": "${sensorModel}"
59          }
60        ],
61        "timeseries": [
62          {
63            "type": "double",
64            "key": "temperature",
65            "value": "${temp}"
66          },
67          {
68            "type": "double",
69            "key": "humidity",
70            "value": "${hum}"
71          }
72        ]
73      }
74    },
75    {
76      "topicFilter": "/custom/sensors/+",
77      "converter": {
78        "type": "custom",
79        "extension": "CustomMqttUplinkConverter",
80        "extension-config": {
81            "temperatureBytes" : 2,
82            "humidityBytes" :  2,
83            "batteryLevelBytes" : 1
84        }
85      }
86    }
87  ],
88  "connectRequests": [
89    {
90      "topicFilter": "sensor/connect",
91      "deviceNameJsonExpression": "${SerialNumber}"
92    },
93    {
94      "topicFilter": "sensor/+/connect",
95      "deviceNameTopicExpression": "(?<=sensor\/)(.*?)(?=\/connect)"
96    }
97  ],
98  "disconnectRequests": [
99    {
100      "topicFilter": "sensor/disconnect",
101      "deviceNameJsonExpression": "${SerialNumber}"
102    },
103    {
104      "topicFilter": "sensor/+/disconnect",
105      "deviceNameTopicExpression": "(?<=sensor\/)(.*?)(?=\/disconnect)"
106    }
107  ],
108  "attributeUpdates": [
109    {
110      "deviceNameFilter": "SmartMeter.*",
111      "attributeFilter": "uploadFrequency",
112      "topicExpression": "sensor/${deviceName}/${attributeKey}",
113      "valueExpression": "{\"${attributeKey}\":\"${attributeValue}\"}"
114    }
115  ],
116  "serverSideRpc": [
117    {
118      "deviceNameFilter": ".*",
119      "methodFilter": "echo",
120      "requestTopicExpression": "sensor/${deviceName}/request/${methodName}/${requestId}",
121      "responseTopicExpression": "sensor/${deviceName}/response/${methodName}/${requestId}",
122      "responseTimeout": 10000,
123      "valueExpression": "${params}"
124    },
125    {
126      "deviceNameFilter": ".*",
127      "methodFilter": "no-reply",
128      "requestTopicExpression": "sensor/${deviceName}/request/${methodName}/${requestId}",
129      "valueExpression": "${params}"
130    }
131  ]
132}