MQTT客户端
功能配置
点击Mqtt Client 完成MQTT参数配置。

进阶连接属性
基本配置(Gerenal)
- Keep Alive(s):心跳,客户端在Connect的时候设置 Keep Alive 时长。如果服务端在 1.5 * KeepAlive 时间内没有收到客户端的报文,它必须断开客户端的网络连接,默认为60秒。
- Timeout(s):定义客户端发送信息到云端响应的最大时间间隔,客户端超过时间没有得到相应后会主动中断连接,默认为30秒。
- Clean Session:

登录凭证(User Credentials)
用户名、密码:根据broker的配置,确定mqtt连接时是否需要用户名、密码的验证。SSL/TLS证书
客户在使用Mqtt需要用到SSL/TLS证书认证时,可以打开SSL/TLS页面加载证书。
SSL有两种连接方式,默认不启用SSL安全连接:- 单向验证——需要上传CA文件到网关,当网关与broker连接时,网关作为客户端提供证书供broker验证。CA文件由云服务商提供。
- 双向验证——需要上传CA文件、Cert文件、KEY文件到网关,当网关与broker连接时,网关与broker均向对方提供证书。CA文件、Cert文件、KEY文件均由云服务商提供。

证书内容保存在【\GWConfigureV2.4.25\mqtt\ssl\cafile】路径下,如果客户需要可以在指定路径下添加证书。重新加载Mqtt页面即可。


工程编辑完成后,使用模板下载将证书下载到网关中。
遗嘱配置(Last Will and Testament)
遗嘱是当网络连接断开时,客户端根据主题发布消息。启用遗嘱时需要设置遗嘱主题和遗嘱消息。 默认不启用遗嘱。
添加实时数据发布主题并配置。

- 主题类型:MQTT发布主题的类型。包含(实时数据主题、离线数据、连接、子设备状态推送、事件推送)
- 主题:用户自定义数据推送主题的名称。
- QoS:传输消息等级,默认为qos0
- qos0:最多一次的传输。也就是发出去就删掉。(速度快)
- qos1:至少一次的传输。发出去之后必须等待ack,没有ack,就要找时机重发
- qos2: 只有一次的传输。消息id将拥有一个简单的生命周期。(可靠性高)
- retained:默认为No
- Yes:表示发送的消息需要一直持久保存(不受服务器重启影响),不但要发送给当前的订阅者,并且以后新来的订阅了此Topic name的订阅者会马上得到推送。 备注:当订阅该Topic的客户端上线后,只会接收到最新的一条消息。
- No:仅仅为当前订阅者推送此消息。
- 上传模式:mqtt发布消息的模式。包含(周期上传、整点上传、采集即上传)
- 数据过滤:以Tag点的值改变、是否采集成功(质量戳)和时间戳改变作为上传条件。
- 模板:数据上传的格式,用户可以通过下拉框选择已有的模板。可根据用户需求定制模板。
添加Mqtt推送点
选中一个主题后,添加推送点

高级参数
如果需要在mqtt上传的数据点添加额外的属性字段,可以添加“高级参数”(JSON对象格式)。 在Mqtt Client页面点击“添加”按钮,选择需要上传的Tag点,双击Tag点,在“高级参数”字段中添加所需要的json对象,如{"unit":"摄氏度"}。 该操作需要配合模板使用。
模板说明
Mqtt Client页面的主题中,实时数据、查询、控制、控制返回、重启的主题具有模板功能。实时数据
目前支持8种模板。- default.js:因为生成的json格式中不包含质量戳,所以需要在“数据过滤”中勾选“采集成功”,生成的json格式如下:
{
"Device1":{
"tag0001":2,
"tag0002":3,
"tag0003":1.23,
"tag0004":0,
"tag0005":0,
"tag0006":0,
"tag0007":0,
"tag0008":0,
"tag0009":0
},
"clientid":"gw1",
"system":{
"TIME_DAY":19,
"TIME_HOUR":17,
"TIME_MINUTE":38,
"TIME_MONTH":6,
"TIME_SECOND":55,
"TIME_WDAY":3,
"TIME_YEAR":2019
},
"time":"1560937137"
}
- Alink.js:因为生成的json格式中不包含质量戳,所以需要在“数据过滤”中勾选“采集成功”,生成的json格式如下:
{
"id":"1",
"method":"thing.event.property.post",
"params":{
"Device1_tag0001":2,
"Device1_tag0002":3,
"Device1_tag0003":1.23,
"Device1_tag0004":0,
"Device1_tag0005":0,
"Device1_tag0006":0,
"Device1_tag0007":0,
"Device1_tag0008":0,
"Device1_tag0009":0,
"system_TIME_DAY":19,
"system_TIME_HOUR":17,
"system_TIME_MINUTE":43,
"system_TIME_MONTH":6,
"system_TIME_SECOND":43,
"system_TIME_WDAY":3,
"system_TIME_YEAR":2019
},
"version":"1.0"
}
查询
- default.js:只解析向查询主题发送如下json格式的数据,可以进行仪表下所有数据点的查询和指定数据点的查询。
{"operate":"read","devices":[
{"deviceCode":"Device1","tags":null},
{"deviceCode":"Device2",
"tags":[
{"tagCode":"tag0008"}
]
}
]
}
控制
- Alink.js:只解析向控制主题发送如下json格式的数据,可以同时下发多个数据点的控制。
{
"method":"thing.service.property.set",
"id":"763382906",
"params":{
"Device1_tag0001":0
},
"version":"1.0.0"
}
- default.js:只解析向控制主题发送如下json格式的数据,可以同时下发多个数据点的控制。
[
{
"operate":"write",
"deviceCode":"Device1",
"tagCode":"tag0001",
"val":"10"
},
{
"operate":"write",
"deviceCode":"Device2",
"tagCode":"tag0002",
"val":"20"
}
]
控制返回
- default.js:和上述控制主题中default.js配合使用,每操作结束一个数据点,通过控制响应发布的主题发布如下如下json格式数据。
{
"deviceCode":"Device1",
"message":"写操作返回信息",
"status":true/false,
"tagCode":"tag0001",
"value":"10"
}
- defaultEx.js:和上述控制主题中defaultEx.js配合使用,每操作结束一个数据点,通过控制响应发布的主题发布如下如下json格式数据。
{
"deviceCode":"Device1",
"message":"写操作返回信息",
"seq":1,
"status":true/false,
"tagCode":"tag0001",
"value":"10"
}
- LM IoT.js:和上述控制主题中LM IoT.js配合使用,每操作结束一个数据点,通过控制响应发布的主题发布如下如下json格式数据。
{
"type":"write",
"time":"1557136546",
"seq":"230",
"clientid":"gw1",
"devices":{
"deviceid":"Device1",
"tagcode":"tag0001",
"value":"63",
"status":"true/false"
}
}
重启
- default.js:向重启主题发布如下json格式是网关重启(GC运行工程时订阅到消息不会重启电脑)。
{
"operate":"reboot"
}
- LM IoT.js:向重启主题发布如下json格式,网关对clientid进行验证判断是否重启网关(GC运行工程时订阅到消息不会重启电脑)。
{
"type":"reboot",
"time":"1557136546",
"seq":"230",
"clientid":"gw1"
}