通过MQTT连接及收发消息

物联网核心套件 IoTCore

  • 旧版文档
  • 产品定价
  • 功能发布记录
  • 产品描述
    • 产品概述
    • 产品优势
    • 核心概念
    • 系统限制
  • 快速入门
    • 使用规则引擎将设备消息流转到业务服务器
    • 创建设备
    • 操作演示
    • 获取连接信息
    • 快速入门流程
    • 创建 IoT Core 实例
    • 使用 MQTT 模拟器连接及收发消息
  • 典型实践
    • 数据转发到函数计算服务CFC
    • 数据转发到用户 Kafka
    • 设备状态数据存储到时序数据库TSDB
    • 数据转发到百度消息服务BMS
  • 服务等级协议SLA
    • 服务等级协议SLA(V2.0)
  • API参考
    • 设备管理
    • 概述
  • 常见问题
    • MQTT客户端及设备SDK相关问题
    • 使用选择
  • 开发者指南
    • 设备侧
      • 通过 IoT Core 官方 SDK 接入
      • 通过开源MQTT Client SDK接入
    • 服务侧
      • IoT Core 日志 SDK (Java)
      • 概述
  • 操作指南
    • 设备接入与管理
      • 应用权限
      • 创建设备
      • 设备影子
      • 管理模板
      • 共享订阅
      • 设备预配
      • 管理设备
      • 通过开放协议接入
        • 使用证书鉴权建立MQTT连接
        • 通过CoAP发布消息
        • 通过MQTT连接及收发消息
        • 通过HTTP发布消息
    • 实例管理
      • 修改实例
      • 创建实例
      • 停止及启动实例
      • 删除实例
    • 运维管理
      • 日志服务
    • 规则引擎
      • 常用查询语句示例
      • 数据目的地管理
      • 数据查询语法和函数
      • 操作步骤
      • 数据目的地
      • 数据筛选
      • 概述
所有文档
menu
没有找到结果,请重新输入

物联网核心套件 IoTCore

  • 旧版文档
  • 产品定价
  • 功能发布记录
  • 产品描述
    • 产品概述
    • 产品优势
    • 核心概念
    • 系统限制
  • 快速入门
    • 使用规则引擎将设备消息流转到业务服务器
    • 创建设备
    • 操作演示
    • 获取连接信息
    • 快速入门流程
    • 创建 IoT Core 实例
    • 使用 MQTT 模拟器连接及收发消息
  • 典型实践
    • 数据转发到函数计算服务CFC
    • 数据转发到用户 Kafka
    • 设备状态数据存储到时序数据库TSDB
    • 数据转发到百度消息服务BMS
  • 服务等级协议SLA
    • 服务等级协议SLA(V2.0)
  • API参考
    • 设备管理
    • 概述
  • 常见问题
    • MQTT客户端及设备SDK相关问题
    • 使用选择
  • 开发者指南
    • 设备侧
      • 通过 IoT Core 官方 SDK 接入
      • 通过开源MQTT Client SDK接入
    • 服务侧
      • IoT Core 日志 SDK (Java)
      • 概述
  • 操作指南
    • 设备接入与管理
      • 应用权限
      • 创建设备
      • 设备影子
      • 管理模板
      • 共享订阅
      • 设备预配
      • 管理设备
      • 通过开放协议接入
        • 使用证书鉴权建立MQTT连接
        • 通过CoAP发布消息
        • 通过MQTT连接及收发消息
        • 通过HTTP发布消息
    • 实例管理
      • 修改实例
      • 创建实例
      • 停止及启动实例
      • 删除实例
    • 运维管理
      • 日志服务
    • 规则引擎
      • 常用查询语句示例
      • 数据目的地管理
      • 数据查询语法和函数
      • 操作步骤
      • 数据目的地
      • 数据筛选
      • 概述
  • 文档中心
  • arrow
  • 物联网核心套件IoTCore
  • arrow
  • 操作指南
  • arrow
  • 设备接入与管理
  • arrow
  • 通过开放协议接入
  • arrow
  • 通过MQTT连接及收发消息
本页目录
  • 获取 MQTT 连接信息
  • 生成 MQTT 用户名及密码(设备密钥认证)
  • 初始化 MQTT 证书(设备证书认证)
  • 获取 MQTT Broker 地址
  • 获取 MQTT Broker 端口号
  • MQTT 模拟器
  • MQTT 开源 SDK

通过MQTT连接及收发消息

更新时间:2025-08-21

IoT Core 支持通过 MQTT 协议( v3.1.1)使用。当前支持QoS0和1的消息。

获取 MQTT 连接信息

在设备详情页,连接信息栏目,找到「DeviceSecret」字段,点击右侧小眼睛图标,查看连接信息,包含IoTCoreId、DeviceKey 和 DeviceSecret 或证书。

生成 MQTT 用户名及密码(设备密钥认证)

若创建设备时选的密钥认证,则需通过拼接获得 MQTT 连接用户名,并通过加密算法生成 MQTT 连接所需密码。

打开 连接信息生成器 ,使用拿到的 IoTCoreId、DeviceKey 和 DeviceSecret,生成 MQTT 连接所需的用户名及密码。

具体拼接及计算方式如下。

用户名拼接:

用户名拼接方式为 {adp_type}@{IoTCoreId}|{DeviceKey}|{timestamp}|{algorithm_type},其中:

字段 说明
adp_type 认证方式类型,当前仅支持取值“thingidp”
IoTCoreId 对应 IoT Core 的 ID
device_key 设备标识,一般为设备名称
timestamp 生成签名时的时间戳,以秒为单位,长整数。可以不用传入。
algorithm_type 字符串签名算法类型,取值 MD5 或 SHA256,不传入则默认为 MD5

计算密码:

1、组合加密字符串:{device_key}&{timestamp}&{algorithm_type}{device_secret},其中:

字段 说明
device_key 设备标识,一般为设备名称
timestamp 生成签名时的时间戳,以秒为单位,长整数。时间戳会与服务器时间判比,最大误差允许10min;若无法保证时间准确性,计算时需传入0进行占位
algorithm_type 字符串签名算法类型,取值 MD5 或 SHA256
device_secret 平台提供的密钥

2、进行加密

使用MD5或者SHA256,对加密字符串进行加密。具体过程如下:

获取加密字符串的UTF-8字符集比特数组,按选定的加密方式,对1中得到比特数组使用MD5或者SHA256进行加密,并将结果转换为小写形式。

示例

一个设备的连接信息为

Plain Text
1IoTCoreId: abcd123
2DeviceKey: mydevice
3DeviceSecret: ImSeCrEt0I1M2jkl
4时间戳: 1583826857

则当其选择 MD5 加密情况下

用户名 待加密字符串 密码 时间戳
thingidp@abcd123|mydevice|1583826857|MD5 mydevice&1583826857&MD5ImSeCrEt0I1M2jkl 7f0e63d2c6e122100edde19e34e7df5b 使用
thingidp@abcd123|mydevice 或
thingidp@abcd123|mydevice|0|MD5
mydevice&0&MD5ImSeCrEt0I1M2jkl 22bc75231495220c7a2202fe15f7d286 不使用

初始化 MQTT 证书(设备证书认证)

设备创建后,证书仅可下载一次,下载后需妥善保管。若丢失可进行重置,但无法恢复或者获取此前证书。

下载后可使用文本编辑器打开,根据特定 MQTT client 的使用方式,粘贴至代码中或分别存储成证书文件调用。

特别注意:证书及云端根证书均有有效期,实际使用请保证设备具备更新证书的能力。

获取 MQTT Broker 地址

在 IoT Core 详情页可以查看。也可通过 IoTCoreId+ .iot.+Region+.baidubce.com 拼接出来,其中 Region 即地域,在创建 IoT Core 时当前可选广州gz 。

获取 MQTT Broker 端口号

MQTT 连接可以使用 TCP 、TLS/SSL、WSS 三种方式,对应端口如下:

协议 端口 描述
TCP 1883 非加密 MQTT 连接
TLS/SSL 1884 基于 TLS 加密的 MQTT 连接
WSS 443 基于 WebSocket 及 TLS 的 MQTT 连接

使用时可根据实际场景进行选择。

MQTT 模拟器

可通过 MQTT 模拟器进行连接,如 MQTT.fx 、MQTTBox 等。其中 MQTT.fx 的示例可查看「快速入门」中的内容。

MQTT 开源 SDK

可通过开源的 MQTT Client SDK,如 Paho、MQTT.js 及各模组厂商自带 MQTT Client 进行连接。连接信息同上。

上一篇
通过CoAP发布消息
下一篇
通过HTTP发布消息