AzureでIoT hubを立てるところまでできたのだが、デバイスの登録で止まっている。
ツールをインストールしたり、アプリを作ったりすれば登録できるようなのだが、もっと手軽にやりたい。
そもそも、Azureの設定画面にログインしてるのだから、そこからできるようにしてないのは需要がないからだろうか?
わからない。。。
敗北感が強いが、DeviceExplorerを使おう。
Releases · Azure/azure-iot-sdks
DeviceExplorerというツールは、今はここにあるようだ。
ツールの使い方は、こちらが詳しい。
Azure IoT Hubを使ってみた - Qiita
リンク先がいろいろ変わったようだが、元の情報はこれかな?
azure-iot-sdk-csharp/tools/DeviceExplorer at master · Azure/azure-iot-sdk-csharp
今のツールは、この画面からSASトークンも作ることができるようだ。
試しに、mqtt1というデバイスIDを登録し、SASトークンを作ってみた。
これ、Generateを押すたびに作ってくれるのだけど、一番最後のsigとseだけが変わっているようだ。
これで、ここに書かれている情報は揃ったことになる。
MQTT プロトコルの直接使用
が、パスワードがわからん。
SASトークンを使うらしい。
SharedAccessSignature sig={signature-string}&se={expiry}&sr={URL-encoded-resourceURI}
日本語だと表示が変な気がしたので、英語版を見てみた。
Using the MQTT protocol directly
ちょっと内容が違う・・・。
- ClientId = deviceId
- Username =
{iothubhostname}/{device_id}/api-version=2016-11-14
Password : SAS token
それに、SharedAccessSignatureがsig, se, srの順で書いてあるけど、下に書いてある説明ではsr, sig, seの順だ。
SAS Tokenで生成したものもその順になっているから、そっちが正しいのだろう。
ESP8266, Arduino & Azure IoT Hub
こちらは、ESP8266でつないだときのことが書かれていた。
ポートは8883でTLS接続、ClientIdはデバイスIDで、UserNameはapi-versionが無く、Passwordは"SharedAccessSignature"で始まる文字列になっている。
お、WindowsのMQTTクライアントで接続できた!
api-versionは付けている。
スマホのMQTTクライアントは接続できないな。。。何が違うのか。。。
pythonのpaho.mqttでやってみると、TLS接続のハンドシェイクで失敗しているようだ。
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)
ここにあった、一番下のCERTをファイルにしてみたが、ダメだった。
https://docs.microsoft.com/ja-jp/azure/app-service-web/java-create-azure-website-using-java-sdk#create-a-certificate
keytoolでcertファイルを作って試したが、やっぱりダメ。
作ったcertファイルをAzureに登録するような操作がいるのだろうか?
動いているMQTTクライアント(MQTTBoxというストアアプリ)は、ストアアプリだからAzureと相性が良さそうだしなぁ、などと勘ぐってしまう。
TLSはv1でもv1.2でも接続できるから、あとはCertificate Typeくらいか。
アプリの設定は「CA signed server certificate」というやつにしたのだが(これ以外だとファイルの指定がいるから)、これが何をしているのか分かればなぁ。
うーん、今回はここまで。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。