tencent cloud

物联网通信

动态与公告
产品动态
产品简介
产品概述
产品功能
产品优势
应用场景
产品限制
基本概念
快速入门
快速开始
场景一:设备互通
场景二:设备状态上报与状态设置
MQTT.fx接入指南
控制台使用手册
产品管理
规则引擎
子账号访问IoT
固件升级
资源管理
证书管理
开发者手册
功能组件
签名方法
设备身份认证
设备接入协议
网关子设备
消息通信
设备影子
设备固件升级
设备远程配置
资源管理
设备日志上报
NTP服务
设备端接入手册
设备接入概述
基于C SDK接入
基于 Android SDK 接入
基于 Java SDK 接入
基于 Python SDK 接入
API 文档
History
Introduction
API Category
Making API Requests
Device Shadow APIs
Device APIs
CA Certificate APIs
Product APIs
Data Types
Error Codes
常见问题
一般性问题
设备接入和上报问题
规则引擎问题
控制台相关问题
IoT Hub 政策
隐私协议
数据处理和安全协议
词汇表

MQTT 快速入门

PDF
聚焦模式
字号
最后更新时间: 2024-12-27 16:55:24
本文档主要介绍如何在腾讯云物联网通信 IoT Hub 控制台创建设备和权限,并结合 C-SDK 的 mqtt_sample 快速体验设备端通过 MQTT 协议连接到腾讯云 IoT Hub,进行消息发送和接收。

控制台操作

创建产品和设备

1. 登录 物联网通信控制台,单击左侧菜单产品列表
2. 进入产品列表页面,单击创建新产品
3. 在弹出的添加新产品页面中,选择节点类型和产品类型,输入产品名称,选择认证方式和数据格式,并输入产品描述,
4. 然后单击确定。(对于普通直连设备,可按下图选择)



5. 产品创建完成后,在生成的产品页面下,单击设备列表
6. 在设备列表页面,单击添加新设备
如果产品认证方式为证书认证,输入设备名称成功后,切记单击弹窗中的下载按钮,下载所得包中的设备密钥文件和设备证书用于设备连接物联网通信的鉴权。



如果产品认证方式为密钥认证,输入设备名称成功后,会在弹窗中显示新添加设备的密钥。




创建 Topic

1. 在生成的产品页面下,单击权限列表
2. 进入权限列表页面,单击添加 Topic 权限
3. 在弹出的 Topic 权限页面中,输入 data,并设置操作权限为订阅和发布,单击确定



4. 随后将会创建出productID/\\${deviceName}/data的 Topic,在产品页面的权限列表中即可查看该产品的所有权限。

编译运行示例程序

下面讲述在 Linux 环境编译运行 mqtt_sample 示例(以密钥认证设备为例)

1. 编译 SDK

1.1. 修改 CMakeLists.txt 确保以下选项存在:
set(BUILD_TYPE "release")
set(COMPILE_TOOLS "gcc")
set(PLATFORM "linux")
set(FEATURE_MQTT_COMM_ENABLED ON)
set(FEATURE_AUTH_MODE "KEY")
set(FEATURE_AUTH_WITH_NOTLS OFF)
set(FEATURE_DEBUG_DEV_INFO_USED OFF)
1.2. 执行脚本编译。
./cmake_build.sh
1.3. 示例输出位于output/release/bin文件夹中。

2. 填写设备信息

将上面在腾讯云物联网 IoT Hub 创建的设备的设备信息,填写到 device_info.json 中。
"auth_mode":"KEY",
"productId":"S3EUVBRJLB",
"deviceName":"test_device",
"key_deviceinfo":{
"deviceSecret":"vX6PQqazsGsMyf5SMfs6OA6y"
}

3. 执行 mqtt_sample 示例程序

./output/release/bin/mqtt_sample
INF|2019-09-12 21:28:20|device.c|iot_device_info_set(67): SDK_Ver: 3.1.0, Product_ID: S3EUVBRJLB, Device_Name: test_device
DBG|2019-09-12 21:28:20|HAL_TLS_mbedtls.c|HAL_TLS_Connect(204): Setting up the SSL/TLS structure...
DBG|2019-09-12 21:28:20|HAL_TLS_mbedtls.c|HAL_TLS_Connect(246): Performing the SSL/TLS handshake...
DBG|2019-09-12 21:28:20|HAL_TLS_mbedtls.c|HAL_TLS_Connect(247): Connecting to /S3EUVBRJLB.iotcloud.tencentdevices.com/8883...
INF|2019-09-12 21:28:20|HAL_TLS_mbedtls.c|HAL_TLS_Connect(269): connected with /S3EUVBRJLB.iotcloud.tencentdevices.com/8883...
INF|2019-09-12 21:28:20|mqtt_client.c|IOT_MQTT_Construct(125): mqtt connect with id: p8t0W success
INF|2019-09-12 21:28:20|mqtt_sample.c|main(303): Cloud Device Construct Success
DBG|2019-09-12 21:28:20|mqtt_client_subscribe.c|qcloud_iot_mqtt_subscribe(138): topicName=$sys/operation/result/S3EUVBRJLB/test_device|packet_id=1932
INF|2019-09-12 21:28:20|mqtt_sample.c|_mqtt_event_handler(71): subscribe success, packet-id=1932
DBG|2019-09-12 21:28:20|system_mqtt.c|_system_mqtt_sub_event_handler(80): mqtt sys topic subscribe success
DBG|2019-09-12 21:28:20|mqtt_client_publish.c|qcloud_iot_mqtt_publish(337): publish packetID=0|topicName=$sys/operation/S3EUVBRJLB/test_device|payload={"type": "get", "resource": ["time"]}
DBG|2019-09-12 21:28:20|system_mqtt.c|_system_mqtt_message_callback(63): Recv Msg Topic:$sys/operation/result/S3EUVBRJLB/test_device, payload:{"type":"get","time":1568294900}
INF|2019-09-12 21:28:21|mqtt_sample.c|main(316): system time is 1568294900
DBG|2019-09-12 21:28:21|mqtt_client_subscribe.c|qcloud_iot_mqtt_subscribe(138): topicName=S3EUVBRJLB/test_device/data|packet_id=1933
INF|2019-09-12 21:28:21|mqtt_sample.c|_mqtt_event_handler(71): subscribe success, packet-id=1933
DBG|2019-09-12 21:28:21|mqtt_client_publish.c|qcloud_iot_mqtt_publish(329): publish topic seq=1934|topicName=S3EUVBRJLB/test_device/data|payload={"action": "publish_test", "count": "0"}
INF|2019-09-12 21:28:21|mqtt_sample.c|_mqtt_event_handler(98): publish success, packet-id=1934
INF|2019-09-12 21:28:21|mqtt_sample.c|on_message_callback(195): Receive Message With topicName:S3EUVBRJLB/test_device/data, payload:{"action": "publish_test", "count": "0"}
INF|2019-09-12 21:28:22|mqtt_client_connect.c|qcloud_iot_mqtt_disconnect(437): mqtt disconnect!
INF|2019-09-12 21:28:22|system_mqtt.c|_system_mqtt_sub_event_handler(98): mqtt client has been destroyed
INF|2019-09-12 21:28:22|mqtt_client.c|IOT_MQTT_Destroy(186): mqtt release!

4. 观察消息发送

如下日志信息显示示例程序通过 MQTT 的 Publish 类型消息,上报数据到 /{productID}/{deviceName}/data, 服务器已经收到并成功完成了该消息的处理。
INF|2019-09-12 21:28:21|mqtt_sample.c|_mqtt_event_handler(98): publish success, packet-id=1934

5. 观察消息接收

如下日志信息显示该消息因为是到达已被订阅的 Topic,所以又被服务器原样推送到示例程序,并进入相应的回调函数。
INF|2019-09-12 21:28:21|mqtt_sample.c|on_message_callback(195): Receive Message With topicName:S3EUVBRJLB/test_device/data, payload:{"action": "publish_test", "count": "0"}

6. 观察控制台日志

登录 物联网通信控制台,单击该产品名称,单击上方菜单云日志,即可查看刚上报的消息。




帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈