0

Azure は IoTHub に MQTT プロトコルを実装しているため、mosquitto を使用して PC からメッセージを送信しようとしています。デバイス エクスプローラーを使用して 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 トークンを使用し、2 つ目は Visual Studio を使用して生成されます。

mosquitto_pub -h {IotHub ホスト名} -p 8883 -t devices/{deviceId}/messages/events -v -V mqttv311 -i {deviceId} -d -u {ハブ名}.azure-devices.net/{deviceId} - P "HostName={ハブ名}.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 {ハブ名}.azure-devices.net/{deviceId} - P "HostName={ハブ名}.azure-devices.net;DeviceId={deviceId};SharedAccessSignature=SharedAccessSignature sr={ハブ名}.azure-devices.net%2fdevices%2f{deviceId}&sig=BYvo8GE%2fcOdnD8G3wsP7VElU4SwsVTSaACnif%2ffBj1k %3d&se=1456911258"

4

1 に答える 1

0

Azure IoT Hub は SSL でのみ動作します。SSL は、おそらくユーザー名とパスワードの情報を確認したセクションで宣伝していません。ただし、こちらのエンドポイントの章で簡単に説明されています。コマンドで SSL を使用しません。

また、パスワードが間違っているようです。前述の章を見ると、DeviceId=* と HostName=* の部分をスクラッチできます。さらに、SharedAccessKey の一部がエスケープされているようです。これは単に SO にコピーしたからかもしれませんが、mosquitto を使用するときはそうではないことを確認してください。パスワードは次のようになります。

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

なお、現時点(2016年3月)でmosquittoとAzureの通信に問題があるようです。 詳細については、この質問を参照してください

于 2016-03-10T09:49:16.717 に答える