IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> IOT Gateway MQTT 连接器配置 -> 正文阅读

[嵌入式]IOT Gateway MQTT 连接器配置

? ? ? ? 本文将帮助你熟悉有关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\/)(.*?)(?=\/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}"
    }
  ]
}

配置中broker模块

参数默认值描述
nameDefault Broker日志和保存到设备的代理名称
hostlocalhostmqtt broker的主机名或者ip地址?
port1883mqtt broker端口

配置中的security模块

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

三种配置:Basic,Anonymous,Certificates

Basic

参数默认值描述
typebasic认证类型
usernameusername认证中的用户名
passwordpassword认证中的密码

配置如下所示:

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

Anonymous

参数默认值描述
typeanonymous认证类型

配置如下所示:

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

Certificates

参数默认值描述
caCert/etc/thingsboard-gateway/ca.pemca文件路径
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

参数默认值描述
typejson向连接器提供默认转换器用于处理设备上报的数据
deviceNameJsonExpression${serialNumber}简单的json表达式,用于获取消息体中的设备名称
deviceTypeJsonExpression${sensorType}简单的json表达式,用于获取消息中的设备类型
timeout60000触发“设备断开”的超时时间
attributes包含上报消息的参数,这些参数将被解释为设备的属性
...typestring当前属性传入的数据类型
...keymodel属性名,这个将发送到ThingsBoard平台
...value${sensorModel}简单的json表达式,用于获取消息中的值
timeseries包含上报数据的参数,这些参数将被解释为设备的遥测参数
...typedouble当前遥测参数类型
...keytemperature遥测参数名称
...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

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

参数默认值描述
typecustom向连接器提供信息,自定义转换器用于处理上报的数据
extensionCustomMqttUplinkConverter自定义转换器类的名称
extension-config
temperatureBytes2遥测数据:温度
humidityBytes2遥测数据:湿度
batteryLevelBytes1遥测数据:电池

配置代码如下:

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

配置中的“connectRequests”模块

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

1. 设备名称在消息体中

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

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

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

配置代码如下所示:

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

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-26 10:20:39  更:2021-09-26 10:22:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/30 2:36:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码