| { |
| "broker": { |
| "name":"Default Local Broker", |
| "host":"127.0.0.1", |
| "port":1883, |
| "clientId": "ThingsBoard_gateway", |
| "security": { |
| "type": "basic", |
| "username": "user", |
| "password": "password" |
| } |
| }, |
| "mapping": [ |
| { |
| "topicFilter": "/sensor/data", |
| "converter": { |
| "type": "json", |
| "deviceNameJsonExpression": "${serialNumber}", |
| "deviceTypeJsonExpression": "${sensorType}", |
| "timeout": 60000, |
| "attributes": [ |
| { |
| "type": "string", |
| "key": "model", |
| "value": "${sensorModel}" |
| }, |
| { |
| "type": "string", |
| "key": "${sensorModel}", |
| "value": "on" |
| } |
| ], |
| "timeseries": [ |
| { |
| "type": "double", |
| "key": "temperature", |
| "value": "${temp}" |
| }, |
| { |
| "type": "double", |
| "key": "humidity", |
| "value": "${hum}" |
| } |
| ] |
| } |
| }, |
| { |
| "topicFilter": "/sensor/+/data", |
| "converter": { |
| "type": "json", |
| "deviceNameTopicExpression": "(?<=sensor\/)(.*?)(?=\/data)", |
| "deviceTypeTopicExpression": "Thermometer", |
| "timeout": 60000, |
| "attributes": [ |
| { |
| "type": "string", |
| "key": "model", |
| "value": "${sensorModel}" |
| } |
| ], |
| "timeseries": [ |
| { |
| "type": "double", |
| "key": "temperature", |
| "value": "${temp}" |
| }, |
| { |
| "type": "double", |
| "key": "humidity", |
| "value": "${hum}" |
| } |
| ] |
| } |
| }, |
| { |
| "topicFilter": "/custom/sensors/+", |
| "converter": { |
| "type": "custom", |
| "extension": "CustomMqttUplinkConverter", |
| "extension-config": { |
| "temperatureBytes" : 2, |
| "humidityBytes" : 2, |
| "batteryLevelBytes" : 1 |
| } |
| } |
| } |
| ], |
| "connectRequests": [ |
| { |
| "topicFilter": "sensor/connect", |
| "deviceNameJsonExpression": "${SerialNumber}" |
| }, |
| { |
| "topicFilter": "sensor/+/connect", |
| "deviceNameTopicExpression": "(?<=sensor\/)(.*?)(?=\/connect)" |
| } |
| ], |
| "disconnectRequests": [ |
| { |
| "topicFilter": "sensor/disconnect", |
| "deviceNameJsonExpression": "${SerialNumber}" |
| }, |
| { |
| "topicFilter": "sensor/+/disconnect", |
| "deviceNameTopicExpression": "(?<=sensor\/)(.*?)(?=\/disconnect)" |
| } |
| ], |
| "attributeUpdates": [ |
| { |
| "deviceNameFilter": "SmartMeter.*", |
| "attributeFilter": "uploadFrequency", |
| "topicExpression": "sensor/${deviceName}/${attributeKey}", |
| "valueExpression": "{\"${attributeKey}\":\"${attributeValue}\"}" |
| } |
| ], |
| "serverSideRpc": [ |
| { |
| "deviceNameFilter": ".*", |
| "methodFilter": "echo", |
| "requestTopicExpression": "sensor/${deviceName}/request/${methodName}/${requestId}", |
| "responseTopicExpression": "sensor/${deviceName}/response/${methodName}/${requestId}", |
| "responseTimeout": 10000, |
| "valueExpression": "${params}" |
| }, |
| { |
| "deviceNameFilter": ".*", |
| "methodFilter": "no-reply", |
| "requestTopicExpression": "sensor/${deviceName}/request/${methodName}/${requestId}", |
| "valueExpression": "${params}" |
| } |
| ] |
| } |