文档首页 > > 快速入门> MQTT.fx模拟设备接入

MQTT.fx模拟设备接入

分享
更新时间: 2019/09/26 GMT+08:00

本文档以MQTT.fx为例,介绍以MQTT原生协议接入物联网平台。MQTT.fx 是目前主流的 MQTT 客户端,可以快速验证是否可以与 物联网平台服务交互发布或订阅消息。

前提条件

  • 已经注册华为云官方帐号,可点击注册页面完成注册。
  • 已经在华为云上完成实名制认证,可点击实名认证完成认证。
  • 已开通设备管理服务,可访问设备管理服务,点击“立即使用”后开通服务。
  • 访问MQTT.fx下载页面,下载并安装MQTT.fx。

获取设备接入信息

在设备接入服务控制台获取应用接入所需的信息。

  1. 登录华为云官方网站,访问设备接入服务
  2. 进入管理控制台后,查看设备接入信息,记录域名和端口。

    注:设备管理服务基于设备接入服务,因此设备管理服务的接入地址与设备接入服务相同。

新增产品模型和注册设备

  1. 点击控制台左侧导航的“设备管理”切换到设备管理页面,再点击界面右上角的“进入设备管理服务”。
  2. 在设备管理控制台单击页面左下角的切换左侧菜单,打开“产品模型”页面,点击页面右上角的新增产品模型 > 手动创建。如果已有MQTT设备产品模型,可跳过此步骤。
  3. 填写产品基本信息,点击“确定”。创建一个MQTT协议的产品。

  4. 选择设备 > 设备注册。单击右上角“创建”,按照如下表格填写参数后,单击“确定”

    参数名称

    配置原则

    选择产品

    选择要注册的产品名称,产品选择MQTT产品模型。

    设备标识码

    设备唯一物理标识,如IMEI、MAC地址等,用于设备在接入物联网平台时携带该标识信息完成接入鉴权。

    预置密钥

    用于设备接入物联网平台的密钥校验。

    确认密钥

    再次填写预置密钥。

    :也可以记录下产品模型的产品ID,通过调用平台开放的应用侧接口注册设备。

  5. 保存设备ID和密钥,后续将用于设备接入。

连接鉴权

参考连接鉴权接口文档,使用MQTT.fx工具接入物联网平台。

  1. 下载连接信息生成工具,运行“MqttClientIdGenerator.jar”,填写设备ID和密钥,生成连接信息。

    参数

    必选/可选

    类型

    参数描述

    clientId

    必选

    String(256)

    一机一密的设备clientId由4个部分组成:deviceId、鉴权类型、密码签名类型、时间戳。通过下划线“_”分隔,其中“deviceId”的值,使用deviceId接入时填写为设备注册成功后返回的“deviceId”值;使用nodeId接入时填写为设备注册成功时的“nodeId”值。

    • 鉴权类型:长度1字节,当前支持1个类型:“0”,表示一机一密。
    • 密码签名类型:长度1字节,当前支持2种类型:
      • “0”代表HMACSHA256不校验时间戳。
      • “1”代表HMACSHA256校验时间戳。
    • 时间戳:为设备连接平台时的UTC时间,格式为YYYYMMDDHH,如UTC 时间2018/7/24 17:56:20 则应表示为2018072417。

    Username

    必选

    String(256)

    • 一机一密的设备“Username”,使用deviceId接入时填写为设备注册成功后返回的“deviceId”值。

    Password

    必选

    String(256)

    Password的值为使用“HMACSHA256”算法以时间戳为秘钥,对secret进行加密后的值。

    secret为注册设备时平台返回的secret。

    设备通过MQTT协议的connect消息进行鉴权,对于构造clientId的各个部分信息都必须包括进去,平台收到connect消息时,会判断设备的鉴权类型和密码摘要算法。

    • 当采用“HMACSHA256”校验时间戳方式时,会先校验消息时间戳与平台时间是否一致,再判断密码是否正确。
    • 当采用“HMACSHA256”不校验时间戳方式时,鉴权消息也必须带时间戳,但不检验时间是否准确,仅判断密码是否正确。

    connect消息鉴权失败时,平台会返回错误,并自动断开MQTT链路。

  2. 打开MQTT.fx软件,单击设置图标。

  3. 填写物联网平台MQTT设备接入地址,并配置鉴权参数。

    参数名称

    说明

    Broker Address

    填写从设备接入服务管理控制台获取的设备对接地址。

    Broker Port

    设置为8883。

  4. 下载并配置证书(解压后在“certificate -> Agent Lite -> Java”目录下)。

  5. 点击“Connect”,设备鉴权成功后,在物联网平台可以看到设备处于在线状态。

上报数据

参考设备上报数据接口文档,使用MQTT.fx工具向物联网平台上报数据。

设备如果要通过MQTT通道上报数据,需要发给指定的topic。

上报消息的topic格式为:“/huawei/v1/devices/{deviceId}/data/{codecMode}”

  • “codecMode”为上报的编解码类型,当用户使用自身开发的编解码插件时“codecMode”取值为“binary”,没有开发编解码插件的“codecMode”取值为“json”
  • “deviceId”的值,对一机一密设备,使用deviceId接入时填写为设备注册成功后返回的“deviceId”值。
  1. 填写接口地址,此处以“/huawei/v1/devices/{deviceId}/data/json”为例。

  2. 填写上报的数据。

    请求参数

    字段名

    必选/可选

    类型

    参数描述

    msgType

    必选

    String

    表示设备上报数据,固定值“deviceReq”

    data

    必选

    ServiceData[]

    一组服务的数据(具体结构参考下表ServiceData定义表),当需要上传批量数据时,可在该字段中添加数据。

    ServiceData定义表:

    字段名

    必选/可选

    类型

    参数描述

    serviceId

    必选

    String

    设备服务的ID。

    serviceData

    必选

    ObjectNode

    一个服务的数据,具体字段在profile里定义。

    eventTime

    可选

    String

    设备采集数据UTC时间(格式:yyyyMMddTHHmmssZ),如:20161219T114920Z。

    请求示例

    {
    	"msgType": "deviceReq",
    	"data": [{
    		"serviceId": "Battery",
    		"serviceData": {
    			"batteryLevel": 85
    		}
    	}]
    }

  3. 点击“Publish”,可以在物联网平台上查看设备是否成功上报数据。

进阶体验

按照本页面的指导,使用MQTT.fx模拟MQTT设备接入物联网平台后,您应该已经基本了解MQTT设备如何通过MQTTS协议调用物联网平台开放的接口与平台交互。

若您想要进一步体验设备管理服务,可参考开发指南开发真实应用和真实设备,并接入物联网平台,体验更多功能。

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区