Azure 在其 IoTHub 中实现了 MQTT 协议,所以我尝试使用 mosquitto 从我的电脑发送消息。我正在使用设备资源管理器创建天蓝色设备。一开始我从那里生成了 SAS 令牌,但它没有 "&skn=" 部分,所以我尝试使用来自 Visual Studio 的兼容事件中心生成一个新的 SAS。之后,我尝试使用 mosquitto 代理使用 CONNECT 数据包中的参数将 MQTT 消息发送到我的 IoTHub,如下所述:
https://azure.microsoft.com/en-us/documentation/articles/iot-hub-devguide/#endpoints
但是连接不起作用,我真的不知道我在哪里做错了。使用 mosquitto_pub 调试我得到这个输出:“客户端 Mosquitto 发送 CONNECT 错误:连接丢失”你能帮我解决这个问题吗?提前致谢。
这些是我的 mosquitto 命令,第一个是使用设备资源管理器生成的 SAS 令牌,第二个是使用 Visual Studio:
mosquitto_pub -h {IotHub 主机名} -p 8883 -t devices/{deviceId}/messages/events -v -V mqttv311 -i {deviceId} -d -u {Hub Name}.azure-devices.net/{deviceId} - P "HostName={Hub 名称}.azure-devices.net;DeviceId={deviceId};SharedAccessSignature sr=https%3a%2f%2f{事件中心兼容名称}.servicebus.windows.net%2fdevices&sig=k030AmvBkmlNwy%2fLd47N8jQuj808jJg9EXnAGmEUan4% 3d&se=2913829726&skn=iothubowner"
mosquitto_pub -h {IotHub 主机名} -p 8883 -t devices/{deviceId}/messages/events -v -V mqttv311 -i {deviceId} -d -u {Hub Name}.azure-devices.net/{deviceId} - P "HostName={Hub 名称}.azure-devices.net;DeviceId={deviceId};SharedAccessSignature=SharedAccessSignature sr={Hub 名称}.azure-devices.net%2fdevices%2f{deviceId}&sig=BYvo8GE%2fcOdnD8G3wsP7VElU4SwsVTSaACnif%2ffBj1k %3d&se=1456911258"