2017/01/15

AzureでMQTT brokerを立てようとする (4) - 最終回

最初に書いておこう。
Azure IoT HubはMQTTをサポートしているが、MosquittoのようなMQTT brokerではなさそうだ。
あくまで、Azure IoT Hubへの通知や、IoT Hubからの通知としてMQTTをサポートしているだけであって、topic名をsubscribeしたからといって、そこにpublishしても配信されないようだ。

IoT Hub の MQTT サポート | Microsoft Docs
ここの下の方に書いてあるが、トピック名は

  • デバイス→クラウド(publish):devices/{device_id}/messages/events/
  • クラウド→デバイス(subscribe):devices/{device_id}/messages/devicebound/#

となっている。
publishするときは、お尻の「/」もいるようだ。

 

だから、タイトルのように「AzureでMQTT brokerを立てる」ということをしたかったら、VMを作って、そこにMosquittoなどをインストールすることになると思う。


これで終わりにしてもよかったのだが、pythonからpublishするくらいまではやっておきたい。

昨日、TLS接続はできてon_connect()がコールバックされるのは確認できたのだが、どうも接続拒否されているようだった。
result codeが5で返ってきているのだ。
だから、on_connect()が何度も呼ばれているのだろう。

Client(client_id, protocol=MQTTv311), username_pw_set()。
TLS以外はこんなものだと思うのだけど、他に設定がいるのだろうか?

動いているMQTTBoxの設定と見比べても、特におかしなところはない。
usernameの"/api-version=2016-11-14"は、あってもなくても接続できるようだ。
では、なぜ・・・・・・・

 

ああ、MQTTBoxと同じデバイスIDを使っているからか。
DeviceExplorerで新しくデバイスIDを作り、SAS tokenなんかもそっちの設定にしたら接続できた。
subscribeもできている。topic名が長いな。。。

 

というわけで、これで終わりにする。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。