使用MQTT.fx调测
本文档以MQTT.fx为例,介绍以MQTT原生协议接入物联网平台。MQTT.fx是目前主流的MQTT客户端,可以快速验证是否可以与物联网平台服务交互发布或订阅消息。
前提条件
获取设备接入信息
- 访问设备接入服务,单击“管理控制台”进入设备接入控制台。选择您的实例,单击实例卡片进入。
- 单击左侧导航栏的“总览”,单击“当前实例 -> 接入信息”查看设备接入信息,记录域名和端口。
图1 总览-获取接入信息
针对不支持用域名接入的设备,通过在cmd命令框中执行“ping 域名”获取IP地址,用IP地址接入平台。由于IP地址不固定,您需要将IP地址做成可配置项。
创建产品
- 创建MQTT协议产品。如果已有MQTT协议产品,可跳过此步骤。
- 登录管理控制台,单击左侧导航栏“产品”,单击页面左侧的“创建产品”。
- 根据页面提示填写参数,然后单击“创建”。
表1 创建产品信息参数 基本信息
所属资源空间
平台自动将新创建的产品归属在默认资源空间下。如需归属在其他资源空间下,下拉选择所属的资源空间。如无对应的资源空间,请先创建资源空间。
产品名称
自定义。支持字母、数字、下划线(_)、连字符(-)的字符组合。
协议类型
选择MQTT。
数据格式
选择JSON。
所属行业
请根据实际情况选择。
设备类型
请根据实际情况选择。
高级配置
产品ID
定制ProductID,用于唯一标识一个产品。如果携带此参数,平台将产品ID设置为该参数值;如果不携带此参数,产品ID在物联网平台创建产品后由平台分配获得。
图2 创建MQTT产品-标准类型
连接鉴权
参考连接鉴权接口文档,使用MQTT.fx工具接入物联网平台。
- 下载MQTT.fx(默认是64位操作系统,如果是32位操作系统,单击此处下载MQTT.fx),安装MQTT.fx工具。
- 安装最新版MQTT.fx工具,可单击此处下载。
- MQTT.fx 1.7.0及旧版本对带有$的主题(Topic)处理存在问题,请使用最新版本进行测试。
- 访问这里,填写注册设备后生成的设备ID(DeviceId)和密钥(DeviceSecret),生成连接信息(ClientId、Username、Password)。
设备通过MQTT协议的connect消息进行鉴权,对于构造clientId的各个部分信息都必须包括进去,平台收到connect消息时,会判断设备的鉴权类型和密码摘要算法。
使用生成工具生成的clientId格式,默认不校验时间戳:设备ID_0_0_时间戳。
- 当采用“HMACSHA256”校验时间戳方式时,会先校验消息时间戳与平台时间是否一致,再判断密码是否正确。
- 当采用“HMACSHA256”不校验时间戳方式时,clientId也需要携带“YYYYMMDDHH”格式时间戳,用于加解密密码。
connect消息鉴权失败时,平台会返回错误,并自动断开MQTT链路。
- 打开MQTT.fx软件,单击设置图标。
- 参考下表配置鉴权参数,然后单击“Apply”。
参数名称
说明
Broker Address
Broker Port
默认为1883。
Cliend ID
设备cliendID,请参考2中获取。
User Name
即设备ID,请参考2中获取。
Password
加密后的设备密钥,请参考2中获取。
注:如果您选择安全方式接入,Broker Port设置为8883,下载并获取证书,加载Java语言pem格式的证书。
- 单击“Connect”,设备鉴权成功后,在物联网平台“所有设备”界面可以看到设备处于在线状态。
图3 设备列表-设备在线
上报数据
参考设备属性上报接口文档,使用MQTT.fx工具向物联网平台上报数据。
设备若通过MQTT通道上报数据,需要发给指定的Topic,上报消息的Topic格式为:“$oc/devices/{device_id}/sys/properties/report”,其中“deviceId”的值,对一机一密设备,使用deviceId接入时填写为设备注册成功后返回的“deviceId”值,QoS推荐选择0或者1。
- 填写接口地址,此处以“$oc/devices/{device_id}/sys/properties/report”为例,如“$oc/devices/5e4e2e92ac-164aefa8fouquan1/sys/properties/report”。
- 填写上报的数据。
请求参数
字段名
必选/可选
类型
参数描述
services
必选
List<ServiceProperty>
设备服务数据列表(具体结构参考下表ServiceProperty定义表)
ServiceProperty定义表:
字段名
必选/可选
类型
参数描述
service_id
必选
String
设备服务的ID。
properties
必选
Object
设备服务的属性列表,具体字段在设备关联的产品模型中定义。
event_time
可选
String
设备采集数据UTC时间(格式:yyyyMMddTHHmmssZ),如:20161219T114920Z。
设备上报数据不带该参数或参数格式错误时,则数据上报时间以平台时间为准。
请求示例
{ "services": [{ "service_id": "Connectivity", "properties": { "dailyActivityTime": 57 }, "event_time": "20151212T121212Z" }, { "service_id": "Battery", "properties": { "batteryLevel": 80 }, "event_time": "20151212T121212Z" } ] }
- 单击“Publish”,可以在物联网平台设备详情界面上查看设备是否成功上报数据。
图4 查看上报数据-batteryLevel
图5 查看上报数据-dailyActivityTime
进阶体验
按照本页面的指导,使用MQTT.fx模拟MQTT设备接入物联网平台后,您应该已经基本了解MQTT设备如何通过MQTTS协议调用物联网平台开放的接口与平台交互。
若您想要进一步体验设备接入服务,可参考开发指南开发真实应用和真实设备,并接入物联网平台,体验更多功能。