有奖捉虫:行业应用 & 管理与支持文档专题 HOT

操作场景

MQTT 自定义透传接入平台主要用于设备通过 DTU 或边缘网关接入物联网平台的情况。当设备无法直接使用物联网开发平台的物模型业务格式时,可以选择使用 MQTT 透传报文的模式。在这种应用场景下,可以利用平台支持的 MQTT 自定义透传报文能力将设备数据上传到云端。通过本文档可以快速了解如何使用平台将自定义透传协议类的设备上云,以及如何通过云 API 远程控制使用自定义透传协议的设备。

前提条件

为了快速了解该业务场景,需要提前做好以下准备工作:
申请物联网开发平台服务。直接 注册腾讯云账号 即可立即开通物联网开发平台。
拥有一台物理或虚拟的 Linux 环境,可以编译、运行 C SDK 中的 raw_data_mqtt_sample 程序。
raw_data_mqtt_sample 在 Linux 环境下测试和验证,主要基于 Ubuntu 16.04 版本,gcc-5.4(建议至少 gcc-4.7+)。

操作步骤

创建项目

1. 登录 物联网开发平台控制台,单击“公共实例”框进入项目列表页面。
2. 单击新建项目,在新建项目页面,填写项目基本信息。
?
?
项目名称:输入“自定义透传设备上云”或其他名称。
项目描述:按照实际需求填写项目描述。
3. 项目基本信息填写完成后,单击保存,即可完成新建项目。
4. 项目新建成功后,即可新建产品。

新建产品

1. 点击创建成功的项目“自定义透传设备上云”,单击产品开发,进入该项目的产品列表页面,单击新建产品
2. 在新建产品页面,填写产品基本信息。
?
?
产品名称:输入“raw_data”或其他产品名称。
产品品类:选择标准品类,并选择“智慧生活->电工照明->灯”。
设备类型:选择“设备”。
认证方式:选择“密钥认证”。
通信方式:默认 Wi-Fi。
数据协议:选择“自定义透传”
描述:根据需要进行填写。
3. 产品信息填写完成后,单击保存,即可完成新建产品。
4. 产品新建成功后,您可在产品列表页查看到“raw_data”。

设备开发

单击设备开发 > Topic 列表 > 透传 Topic,当产品的数据协议为“自定义透传”类型时,设备开发界面如下图所示。
?
?
?
说明:
平台默认创建了 Topic,其中上图红色线框为使用自定义透传协议的系统约定的上行、下行 Topic。
平台支持用户使用自定义 Topic 自由定义,以 $thing 开头的 Topic 支持云端脚本解析能力,若需要通过平台云端 JS 脚本解析自定义透传数据为物模型格式,则必须使用 $thing/up/raw 开头的 Topic。

创建设备

1. 单击设备调试 > 新建设备, 输入设备名称为“dev001”,单击保存
?
?
2. 单击设备名称“dev001”,进入设备详情页,查看产品 ID、设备名称和设备密钥等信息。此部分信息将会在编译 raw_data_mqtt_sample 时需要使用。
?
?
?

下载 Demo 程序

下载 raw_data_mqtt_sample 例程

进入 Linux 主机(建议使用腾讯云 CVM),下载 SDK 的方式有以下两种:
GitHub 下载 SDK 直接上传至云主机。
执行以下 git 命令获取。若 git clone 执行失败则需要设置云主机安全组的入站、出站规则是否正确。
git clone https://github.com/tencentyun/qcloud-iot-explorer-sdk-embedded-c.git

编译

1. 在 qcloud-iot-sdk-embedded-c 目录下执行以下命令进行编译。
./cmake_build.sh
2. 编译成功后,可在 output/release/bin 目录下生成 raw_data_mqtt_sample 执行文件及 device_info.json 文件。若编译失败,需要检查 gcc 版本是否是8.5以上。

修改配置文件

1. 进入 output/release/bin 目录。
2. 输入以下命令,修改该目录下的 device_info.json 文件。
vi device_info.json
3. 将红色线框中的数据分别替换为控制台创建的设备“dev001”对应的产品 ID、设备名称、设备密钥信息。
enter image description here
?
?
产品 ID: 设备“dev001”的产品 ID,复制到上图 productId。
设备名称: 设备“dev001”的设备名称,复制到上图 deviceName。
设备密钥:设备“dev001”的设备密钥,复制到上图 deviceSecret。
4. 保存 device_info.json 文件即可。

运行 Demo 程序

1. 进入 output/release/bin 目录。
2. 输入 ./raw_data_mqtt_sample 并执行。
3. 运行成功后,输出示例如下图红框所示。
?
?
4. Demo 程序会上报数据到平台,上报数据为下方16进制数据。
AA 55 01 00 00 00 00 00 01 01 1E 00

查看设备上报数据

1. 进入 物联网开发平台控制台 > 产品开发 > 设备调试,单击设备名称 "dev001" 进入设备详情页。
2. 单击设备云端日志,系统会显示“透传日志”,即可在控制台查看该设备上报的数据。
?
?
?
3. 上图 Topic 列为设备向云端发布消息时的 Topic,数据列红色线框中的数据为平台 base64 编码后的数据。

使用自定义透传模式远程控制设备

1. 当需要从云端控制使用自定义透传协议上云的设备时,可参考 设备透传指令控制 云 API 直接使用 在线调试 工具进行调试。
2. API Explorer 调试工具如下图所示。
?
?
?
3. 在发送透传报文指令至设备端前,需运行 ./raw_data_mqtt_sample -l 10 命令连接到平台保持连接以便接收平台下发的指令报文。
4. 当看到 demo 程序接收到云端下发的指令报文时,如下图红色线框中的报文为16进制。
?
?
?
5. 控制台的设备云端日志会显示如下“下行”报文。
?
?
?
?


http://www.vxiaotou.com