Mosquitto向Azure发送消息IoTHub

时间:2016-03-02 17:45:47

标签: c# azure mqtt mosquitto azure-iot-hub

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 / {deviceId} / messages / events -v -V mqttv311 -i {deviceId} -d -u {Hub Name} .azure-devices.net / { deviceId} -P" HostName = {Hub name} .azure-devices.net; DeviceId = {deviceId}; SharedAccessSignature sr = https%3a%2f%2f {Event hub compatible name} .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 name} .azure-devices.net; DeviceId = {deviceId}; SharedAccessSignature = SharedAccessSignature sr = {Hub name} .azure-devices.net%2fdevices%2f {deviceId}& ; SIG = BYvo8GE%2fcOdnD8G3wsP7VElU4SwsVTSaACnif%2ffBj1k%3D&安培; SE = 1456911258"

1 个答案:

答案 0 :(得分:0)

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

此外,您的密码似乎错了。 如果查看前面提到的章节,可以抓取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