首页 文章

Mosquitto向Azure IoTHub发送消息

提问于
浏览
0

Azure已在其IoTHub中实现了MQTT协议,因此我尝试使用mosquitto从我的电脑发送消息 . 我正在使用Device Explorer创建azure设备 . 一开始我从那里生成了SAS令牌,但它没有“&skn =”部分,所以我尝试使用visual studio中的兼容事件中心生成一个新的SAS . 之后,我尝试使用mosquitto代理使用CONNECT数据包中的参数向我的IoTHub发送MQTT消息,如下所述:

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 / / messages / events -v -V mqttv311 -i -d -u .azure-devices.net / - P“HostName = .azure-devices.net; 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 / / messages / events -v -V mqttv311 -i -d -u .azure-devices.net / - P“HostName = .azure-devices.net; DeviceId = ; SharedAccessSignature = SharedAccessSignature sr = .azure-devices.net%2fdevices%2f &sig = BYvo8GE%2fcOdnD8G3wsP7VElU4SwsVTSaACnif%2ffBj1k %3D&SE = 1456911258"

1 回答

  • 0

    Azure IoT Hub仅使用SSL,他们不会在您可能查看用户名/密码信息的部分做广告 . 然而,在endpoints chapter here简要提到了它 . 您不在命令中使用SSL .

    你的密码似乎也错了 . 如果你看一下前面提到的章节,你可以 grab DeviceId = *和HostName = *部分 . 此外,您的SharedAccessKey的一部分似乎被转义 . 也许这只是因为你把它复制到SO中,但是确保它在使用mosquitto时不是那样的 . 您的密码应如下所示:

    -P "SharedAccessSignature sr=yourtarget.azure-devices.net&sig=a_string_here&se=a_number&skn=policyname"
    

    此外,在mosquitto和Azure通信之间(2016年3月)似乎存在问题 . See this question for further details .

相关问题