Azure_IoT_Central_ESP32をSeeed Studio XIAO ESP32C3で動かしてみた(個別SAS)

関連記事。

これの続き。

matsujirushi.hatenablog.jp

Azure IoT CentralのグループSASを試しました。

個別SASの個別って何?

Azure_IoT_Central_ESP32をSeeed Studio XIAO ESP32C3で動かしてみた(グループSAS)では、Azure IoT CentralのDevices > Connect > Device connection groupsで、Authentication type = SASとしたときに表示されているSAS Keyを使いました。このSAS KeyはGroup enrollmentのSAS KeyとDevice IDから生成されています。わたしは"グループSASから生成されたデバイスSAS"、略してグループSASと呼んでいます。

Group enrollmentのSAS Keyは、Permissions > Device connection groups > SAS-IoT-Devicesで確認できます。

一方、Azure IoT CentralのDevices > Connect > Device connection groupsで、Authentication type = Individual enrollment, Authentication method = SASにもSAS Keyがあります。このSAS Keyは生成、表示されていません。デバイス毎に、自分でSAS Keyを作ってAzure IoT Centralのデバイスに設定することで使えるようになります。これを個別SASと呼んでいます。

箇条書きにするとこんな感じ。

  • グループSAS ... SAS Keyは計算で生成。それを使う。
  • 個別SAS ... SAS Keyは自分で作って設定。

個別SASSAS Keyを作る

Keyは、ランダムなデータをbase64エンコードすればOKです。opensslコマンドを使うと一発で作成できます。

WSLのUbuntu:

echo `openssl rand -base64 64 | tr -d '\n'`

Azure IoT Centralのデバイスに個別SASを設定

作成したSAS KeyをAzure IoT Centralのデバイスに設定します。

  • Authentication Type = Individual enrollment
  • Authentication method = Shared access signature (SAS)
  • Primary key = 作成したSAS Key
  • Secondary key = 作成したSAS Key

Secondaryが未設定だとSaveをクリックできないので、Primaryと同じものを設定しました。

iot_configs.hへの設定に必要なID scopeDevice IDPrimary keyをコピっておきます

さあ、動かそう

Wi-FiとAzure IoT Centralの接続情報をiot_configs.hにハードコードします。

iot_configs.h:

#define DPS_ID_SCOPE                      "0ne0014D070"
#define IOT_CONFIG_DEVICE_ID              "device1"
  #define IOT_CONFIG_DEVICE_KEY             "HlYYGLpVQx7XgDRDxvkhl8MF2dG8gAnwJp8o1cY2o84b3VLDVtxjeQ/HB9qhwr8d5HVuEr0vfSfHjsXtFTZVug=="

Uploadすると、、、すんなり動いた。

わかったこと、気づいたこと

  • SAS Keyはopensslコマンドで楽々作成
  • Azure IoT CentralのグループSAS/個別SASの画面や用語がややこしい
  • 64バイトのSAS KeyだとAzure_IoT_Central_ESP32動かない←解決済み

参考リンク