本文介绍设备通过 MQTTV3.1.1 协议与腾讯云物联网开发平台进行身份认证的常见问题及解决方法。
如何获取设备三元组信息?
三元组是指设备的产品 ID、DeviceName、DeviceSecret, 在设备开发阶段或量产阶段,产品 ID、DeviceName、DeviceSecret 必须存储烧录在设备侧。
可以通过进入控制台的设备管理,查看某个设备的详细信息获取三元组信息。
设备如何使用密钥认证方式连接平台?
如何通过 MQTT 客户端工具快速将一个设备连接到平台?
如何计算腾讯云物联网 MQTT 连接参数,例如 ClientId、UserName、Password?
1. 下载 MQTT 连接参数小工具 生成小工具 并解压缩后,在目录中可查看到以下3个文件。

2. 打开 Chrome 浏览器,并打开 sign.html 文件,显示如下图。将上一步中“产品 ID”、“设备名称”、“设备密钥”信息分别复制到对应的 ProductID、DeviceName、DeviceSecret 文本框中,Hmac签名算法默认选择 HMAC-SHA256,单击 Generate,网页工具自动生成 UserName 与 Password。该工具生成的 UserName、Password 默认 expiry 时间是最近5分钟。

设备刚测试的时候可顺利连接腾讯云物联网平台,过了一段时间后无法连接是什么原因?
腾讯云物联网平台的 MQTT 接入域名与端口号是什么?
广州区域设备 MQTT 接入域名:PRODUCT_ID.iotcloud.tencentdevices.com,这里 PRODUCT_ID 为变量参数,用户需填入创建产品时自动生成的产品 ID,例如
T****DS8G.iotcloud.tencentdevices.com。密钥认证方式的端口号是1883,证书认证的端口号是8883。
设备连接平台诊断日志显示“FAIL, HMAC sign error”,该如何解决?
诊断日志显示示例:

分析原因:
使用公共实例快速入门中的网页工具计算的 UserName 或 Password 输入错误,连接后会出现该错误。

解决方案:
注意:
expiry :表示签名的有效期,Unix 时间戳格式例如:1704363215。expiry 应该设置为一个远超设备真实生命周期的时间,或由设备侧每次获取当前系统时间时加上一个较大的整数即可。若 expiry 的值小于当前系统时间,MQTT 身份认证将失败。
如果是通过蜂窝通讯方式连接的设备,并使用了运营商物联网卡,访问平台相关服务(例如 OTA、消息通信 )时,需要加白腾讯云物联网服务的域名
因物联网卡通常存在访问限制(仅允许访问特定域名 / 服务 ),若设备需连接腾讯云物联网平台(例如访问 OTA 后台、消息通信域名 ),需运营商侧配置域名白名单,平台相关域名如下:
*.iotvideo.qcloud.com*.iotvideo.tencentcs.com*.iotcloud.tencentiotcloservicewechat.com*.iotcloud.tencentdevices.com*.myqcloud.com*.tencentcos.cn如何查看设备是否完成身份认证成功连接平台?
当一个设备成功经过腾讯云物联网平台的身份认证后,该设备将立刻处于“在线”状态,并且可在该设备的上下线日志中查看到该设备成功连接平台的详细日志。
如何检查设备侧网络与腾讯云物联网平台的连通性
若设备所在本地环境无法连接腾讯云物联网 MQTT 服务器,请使用以下常用命令检查:
ping PRODUCT_ID.iotcloud.tencentdevices.com:使用 ping 命令检测是否可连接物联网平台服务器。
telnet PRODUCT_ID.iotcloud.tencentdevices.com 1883:使用 telnet 检测1883端口是否可连接。
可通过 traceroute、tcpdump 分析网络具体原因,是否由于本地网络访问策略限制。
为什么使用 ap-guangzhou.gateway.tencentdevices.com 注册设备是正常的,用 ap-bangkok.gateway.tencentdevices.com 注册就返回 signature error?
国内和海外产品是隔离的,需要用 Bangkok 创建的产品密钥。注册不成功说明不是海外 License。如果您需要创建海外设备,需采购海外 License 并开白名单即可创建。