锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

IOT Gateway MQTT 连接器配置

时间:2022-12-14 02:30:00 连接器snlot连接器

本文将帮助您熟悉相关信息iot网关中MQTT连接器的配置。该连接器用于通用配置。该连接器可连接到外部MQTT Broker并订阅以获取从设备中报告的数据。同时,连接器也可以从设备中推送ThingsBoard数据到MQTT Broker。

连接器配置:mqtt.json

连接器配置是一个json包括文件MQTT Broker连接信息,订阅哪些主题,如何处理数据等。

mqtt.json样例

{   "broker": {     "name":"Default Local Broker",     "host":"192.168.1.100",     "port":1883,     "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}"           }         ],         "timeseries": [           {             "type": "double",             "key": "temperature",             "value": "${temp}"           },           {             "type": "double",             "key": "humidity",             "value": "${hum}"           }         ]       }     },     {       "topicFilter": "/sensor/ /data",       "converter": {         "type": "json",         "deviceNameTopicExpression": "(?<=sensor\/)(.*?<=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\/)(.*?<=sensor\/)(.*?)(?=\/connect)"     }   ],   "disconnectRequests": [     {       "topicFilter": "sensor/disconnect",       "deviceNameJsonExpression": "${SerialNumber}"     },     {       "topicFilter": "sensor/ /disconnect",       "deviceNameTopicExpression": "(?<=sensor\/)(.*?<=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}"     }   ] }

配置中broker模块

参数 默认值 描述
name Default Broker 保存到设备的日志和代理名称
host localhost mqtt broker主机名或ip地址
port 1883 mqtt broker端口

配置中的security模块

提供了模块配置mqtt broker客户端授权的访问信息

三种配置:Basic,Anonymous,Certificates

Basic

参数 默认值 描述
type basic 认证类型
username username 用户名在认证中
password password 认证中的密码

配置如下:

    "security": {       "type": "basic",       "username": "username",       "password": "password"     }

Anonymous

默认值
参数描述
type anonymous 认证类型

配置如下所示:

    "security": {
      "type": "anonymous"
    }

Certificates

参数 默认值 描述
caCert /etc/thingsboard-gateway/ca.pem ca文件路径
privateKey /etc/thingsboard-gateway/privateKey.pem 私钥文件路径
cert /etc/thingsboard-gateway/certificate.pem 证书文件路径

配置代码如下:

  "security":{
    "caCert": "/etc/thingsboard-gateway/ca.pem",
    "privateKey": "/etc/thingsboard-gateway/privateKey.pem",
    "cert": "/etc/thingsboard-gateway/certificate.pem"
  }

配置文件中的mapping模块

该配置包含一组主题数组,网关将会订阅这些主题并处理设备上报的数据

参数 默认值 描述
topicFilter /sensor/data 订阅的主题地址

topicFilter支持特殊字符,其中包括:‘#’ 和 ‘+’,这样就可以实现订阅多个主题

样例名称 主题 主题过滤 报文内容 备注
Example 1 /sensor/data /sensor/data {“serialNumber”: “SN-001”, “sensorType”: “Thermometer”, “sensorModel”: “T1000”, “temp”: 42, “hum”: 58} 设备名称是报文的一部分
Example 2 /sensor/SN-001/data /sensor/+/data { “sensorType”: “Thermometer”, “sensorModel”: “T1000”, “temp”: 42, “hum”: 58} 设备名称是主题的一部分

配置中的转换器模块

mqtt转换器类型: json和custom

json

参数 默认值 描述
type json 向连接器提供默认转换器用于处理设备上报的数据
deviceNameJsonExpression ${serialNumber} 简单的json表达式,用于获取消息体中的设备名称
deviceTypeJsonExpression ${sensorType} 简单的json表达式,用于获取消息中的设备类型
timeout 60000 触发“设备断开”的超时时间
attributes 包含上报消息的参数,这些参数将被解释为设备的属性
...type string 当前属性传入的数据类型
...key model 属性名,这个将发送到ThingsBoard平台
...value ${sensorModel} 简单的json表达式,用于获取消息中的值
timeseries 包含上报数据的参数,这些参数将被解释为设备的遥测参数
...type double 当前遥测参数类型
...key temperature 遥测参数名称
...value ${temp} 简单的json表达式,用于获取消息中的值

备注:实际attributes和telemetry中的参数可能与上述参数不同,但具有相同的结构

Example 1 对应的代码如下:

    {
      "topicFilter": "/sensor/data",
      "converter": {
        "type": "json",
        "deviceNameJsonExpression": "${serialNumber}",
        "deviceTypeJsonExpression": "${sensorType}",
        "timeout": 60000,
        "attributes": [
          {
            "type": "string",
            "key": "model",
            "value": "${sensorModel}"
          }
        ],
        "timeseries": [
          {
            "type": "double",
            "key": "temperature",
            "value": "${temp}"
          },
          {
            "type": "double",
            "key": "humidity",
            "value": "${hum}"
          }
        ]
      }
    }

Example 2 对应的代码:

    {
      "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}"
          }
        ]
      }
    }

custom

自定义转换器是为某些设备编写的转换器,如下所示:

参数 默认值 描述
type custom 向连接器提供信息,自定义转换器用于处理上报的数据
extension CustomMqttUplinkConverter 自定义转换器类的名称
extension-config
temperatureBytes 2 遥测数据:温度
humidityBytes 2 遥测数据:湿度
batteryLevelBytes 1 遥测数据:电池

配置代码如下:

      "converter": {
        "type": "custom",
        "extension": "CustomMqttUplinkConverter",
        "extension-config": {
            "temperatureBytes" : 2,
            "humidityBytes" :  2,
            "batteryLevelBytes" : 1
        }
      }

配置中的“connectRequests”模块

ThingsBoard允许向设备发送RPC命令和有关设备属性更新的通知。但是为了发生这些指令,平台需要知道目标设备是否已连接和它使用的什么网关或者会话连接设备。如果您的设备不断地发送遥测数据,ThingsBoard已经知道怎么推送通知了。如果您的设备刚刚连接到MQTT broker冰鞋等待指令或者更新,您需要向网关发送消息并通知设备已连接到mqtt broker。

1. 设备名称在消息体中

参数 默认值 描述
topicFilter sensors/connect broker发送关于新连接设备的信息
deviceNameJsonExpression ${SerialNumber} json表达式,获取设备名称

2. 设备名称在主题地址中

参数 默认值 描述
topicFilter sensors/+/connect brocker中topic 地址
deviceNameJsonExpression (?<=sensor\/)(.*?)(?=\/connect) 正则表达式,获取设备名称

配置代码如下所示:

  "connectRequests": [
    {
      "topicFilter": "sensors/connect",
      "deviceNameJsonExpression": "${$.SerialNumber}"
    },
    {
      "topicFilter": "sensor/+/connect",
      "deviceNameTopicExpression": "(?<=sensor\/)(.*?)(?=\/connect)"
    }
  ]

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章