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"