MQTT设备接入及上报数据的命令行模拟器(Java)
1、前言
本文提供了两款MQTT模拟器,指导使用模拟器来模拟MQTT设备接入IoT平台及上报数据。附件bmqtt-client.rar为UI版,附件bmqtt-client-shell.rar为命令行版。其中内置了调用南向接口获取连接信息的过程,涵盖了南向接入mqtt设备的全流程。
2、接入流程介绍
接入一个MQTT设备大致有6步:
1)使用平台或者北向接口注册设备(一个设备只需一次)
2)调用南向设备绑定接口(一个设备只需一次)
3)调用南向设备登录接口(一个设备只需一次)
4)与mqtt服务器建连
5)订阅topic
6)发布topic
3、开始接入
如果设备已经在IoT平台注册,并且调用过南向绑定、登录接口,跳过3.1、3.3和3.4章节。
3.1、注册设备
在平台创建应用、产品后,注册设备开始南向接入。输入Node ID和Secret并记录起来以供后续使用。
3.2、运行模拟器
UI版
下载附件bmqtt-client.rar,解压后直接双击可执行jar运行模拟器。
UI版模拟器拆分为两个,其中deviceBindLogin用于设备南向绑定和登录(一个设备只需一次),bmqtt-client用于设备连接IoT平台。
Shell版
下载附件bmqtt-client-shell.rar,使用命令行方式运行其中的可执行jar。
bmqtt-client-shell良好的支持Tab键自动补全和历史命令切换等功能。执行help命令,可以看到所有命令的概况,包含内置命令和自定义命令。执行help [某个命令],可以看到单个命令的详情。
当出现异常时,可使用stacktrace命令查看最近一次的异常信息。
问题:
模拟器在Windows环境的cmd下存在一个问题:使用右键“标记”进行复制粘贴时,可能会出现“控制台窗口主机 已停止工作”,然后关闭程序了。
3.3、bind
UI版
使用deviceBindLogin模拟器,UI版设备绑定和登录集成在一起,使用UI版可跳过3.4章节。
记录下返回的Device ID、Device Secret和Mqtt ClientId以供后续使用。
Shell版
设备绑定命令三个参数都是必需的,从参数说明可以看到数据来源。
-i:南向接口的ip或域名。在IoT平台管理控制台查看,与8883端口同域名。
-v:3.1章节中填写的Secret,又叫preSecret。
-n:3.1章节中填写的Node ID。
记录下bind接口返回的deviceId、appId、secret以供后续使用。
3.4、login
UI版
参见3.3章节。
Shell版
记录下login接口返回的accessToken、mqttClientId以供后续使用。
3.5、conn
UI版
使用3.3章节返回的Device ID、Device Secret和Mqtt ClientId分别对应bmqtt-client模拟器的Username、Password、ClientId。
Shell版
conn有4个必需参数,mqttClientId来自3.4章节,deviceId和secret来自3.3章节。
disconn无需参数。
3.6、sub
到目前为止,在平台的设备列表我们的设备还是未激活状态。我们订阅一个topic后设备就会显示在线了。
topic:/gws/#deviceId#/signaltrans/v2/categories/data
UI版
使用3.3章节中的Device ID替换topic中的#deviceId#。
Shell版
使用3.3章节中的deviceId替换topic中的#deviceId#。
3.7、pub
topic:/cloud/signaltrans/v2/categories/data
message:
{
"header": {
"access_token": "xxx",
"method": "PUT",
"requestId": "",
"eventTime": "20180920T110202Z",
"from": "/device/#deviceId#/services/#serviceId#",
"to": "/data/v1.1.0/devices/#deviceId#/services/#serviceId#",
"timestamp": "20180920T110202Z"
},
"body": {
"#serviceAttribute#": "#reportData#"
}
}
使用3.3章节中的deviceId替换message中的#deviceId#。header中#serviceId#为上报数据相应服务,body体内的#serviceAttribute#和#reportData#为上报的数据,可以有多组。
UI版
Shell版
注意:message中的引号需要转义,否则会被当成多个参数。
pub成功后,可在平台设备影子查看上报数据。
- 点赞
- 收藏
- 关注作者
评论(0)