寻求适用于Azure的第三方MQTT测试客户端(SAS令牌连接)
用MQTTX通过SAS令牌连接Azure IoT Hub的实操步骤
一、准备必要参数
你需要从Azure门户或CLI获取以下信息:
- IoT Hub主机名:格式为
{你的IoT Hub名称}.azure-devices.net - 已注册的设备ID
- SAS令牌:可通过Azure CLI生成,命令如下:
生成的令牌格式为az iot hub generate-sas-token --hub-name {你的IoT Hub名称} --device-id {设备ID} --duration 3600SharedAccessSignature sr={主机名}%2Fdevices%2F{设备ID}&sig={签名串}&se={过期时间戳}
二、MQTTX连接配置
- 打开MQTTX,点击「新建连接」
- 按以下要求填写字段:
- 连接名称:自定义(比如Azure IoT Test)
- 客户端ID:必须填写你的设备ID(Azure IoT Hub要求客户端ID与设备ID一致)
- 主机:填入IoT Hub主机名
- 端口:选8883(TLS加密,推荐)或1883(非加密,仅测试用)
- 认证方式:选择「用户名/密码」
- 用户名:
{主机名}/{设备ID}/?api-version=2021-04-12 - 密码:填入完整的SAS令牌
- 点击「连接」,参数无误即可成功建立连接
三、验证连接有效性
- 订阅云到设备消息主题:
devices/{设备ID}/messages/devicebound/#,然后从Azure门户发送测试消息,查看MQTTX是否能接收 - 发布设备到云消息:主题填
devices/{设备ID}/messages/events/,发送任意内容,然后在Azure门户的设备孪生或消息路由中查看是否收到
备选客户端:Eclipse Mosquitto(命令行工具)
如果MQTTX仍有问题,可尝试用Mosquitto的命令行客户端,示例发布命令:
mosquitto_pub -h {主机名} -p 8883 -d -q 1 -t "devices/{设备ID}/messages/events/" -m "test payload" -i {设备ID} -u "{主机名}/{设备ID}/?api-version=2021-04-12" -P "{SAS令牌}" --cafile ./DigiCertGlobalRootCA.crt.pem
注:使用8883端口需下载DigiCert根证书,1883端口可暂时跳过证书(不建议生产环境使用)
内容的提问来源于stack exchange,提问作者yo3hcv
相关产品推荐
相关产品推荐

