MQTT设备接入及上报数据的命令行模拟器(Java)

举报
IOBO 发表于 2018/12/19 20:29:03 2018/12/19
【摘要】 本文提供了两款MQTT模拟器,指导使用模拟器来模拟MQTT设备接入IoT平台及上报数据。附件bmqtt-client.rar为UI版,附件bmqtt-client-shell.rar为命令行版。其中内置了调用南向接口获取连接信息的过程,涵盖了南向接入mqtt设备的全流程。

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并记录起来以供后续使用。

7e41725a6a8a7e34e6a5_649x494.png@900-0-90-f.png

3.2、运行模拟器

UI版

下载附件bmqtt-client.rar,解压后直接双击可执行jar运行模拟器。

UI版模拟器拆分为两个,其中deviceBindLogin用于设备南向绑定和登录(一个设备只需一次),bmqtt-client用于设备连接IoT平台。

Shell版

下载附件bmqtt-client-shell.rar,使用命令行方式运行其中的可执行jar。

bmqtt-client-shell良好的支持Tab键自动补全和历史命令切换等功能。执行help命令,可以看到所有命令的概况,包含内置命令和自定义命令。执行help [某个命令],可以看到单个命令的详情。

7552525a6aa0a6e1ce31_719x547.png@900-0-90-f.png

当出现异常时,可使用stacktrace命令查看最近一次的异常信息。

f40c925a6ae2a9fb3d4e_894x476.png@900-0-90-f.png

问题:

模拟器在Windows环境的cmd下存在一个问题:使用右键“标记”进行复制粘贴时,可能会出现“控制台窗口主机 已停止工作”,然后关闭程序了。


3.3、bind

UI版

使用deviceBindLogin模拟器,UI版设备绑定和登录集成在一起,使用UI版可跳过3.4章节。

记录下返回的Device ID、Device Secret和Mqtt ClientId以供后续使用。

binlogin.PNG

Shell版

设备绑定命令三个参数都是必需的,从参数说明可以看到数据来源。

-i南向接口的ip或域名。在IoT平台管理控制台查看,与8883端口同域名。

image.png

-v:3.1章节中填写的Secret,又叫preSecret。

-n:3.1章节中填写的Node ID。

记录下bind接口返回的deviceId、appId、secret以供后续使用。

ea52625a6ac4b6fde7eb_1320x450.png@900-0-90-f.png

3.4、login

UI版

参见3.3章节。

Shell版

记录下login接口返回的accessToken、mqttClientId以供后续使用。

9818025a6ad007894b5f_1453x621.png@900-0-90-f.png

3.5、conn

UI版

使用3.3章节返回的Device ID、Device Secret和Mqtt ClientId分别对应bmqtt-client模拟器的Username、Password、ClientId。

connect.PNG

Shell版

conn有4个必需参数,mqttClientId来自3.4章节,deviceId和secret来自3.3章节。

e71ef25a6b34fe338791_1050x676.png@900-0-90-f.png

disconn无需参数。

836b825a6ae8377e45a7_372x247.png@900-0-90-f.png

3.6、sub

到目前为止,在平台的设备列表我们的设备还是未激活状态。我们订阅一个topic后设备就会显示在线了。

topic:/gws/#deviceId#/signaltrans/v2/categories/data

UI版

使用3.3章节中的Device ID替换topic中的#deviceId#。

sub.PNG

Shell版

使用3.3章节中的deviceId替换topic中的#deviceId#。

e650d25a6b038ae9b2d7_701x335.png@900-0-90-f.png

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版

bmqttclient - 副本.PNG

Shell版

注意:message中的引号需要转义,否则会被当成多个参数。


68f7b25a6b222aac162d_1898x433.png@900-0-90-f.png

pub成功后,可在平台设备影子查看上报数据。

5e43f25a6b24b2736012_1053x389.png@900-0-90-f.png

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。