はじめに
Azure IoT Hub の SDK が公式から提供されています。
しかも、ESP32 に対応したサンプルも含まれています。
サンプルを動かすまでにいくつかステップを踏む必要があったので、解説します。
用意するもの
- ESP32 が乗った開発ボード(筆者はM5ATOM Liteを使用)
- Arduino IDE (1.8.13)
- python3 (3.9.2)
インストール
以下のライブラリのインストールが必要ですので、Arduino IDE からインストールしておきましょう。
AzureIoTHub
AzureIoTSocket_WiFi
AzureIoTHubMQTTClient
AzureIoTProtocol_MQTT
準備
スケッチ例を開く
スケッチ例からiothub_ll_telemetry_sample.ino
を開きます。
https://github.com/Azure/azure-iot-arduino#esp32 の通りに設定を進めます。
いくつかピックアップして説明します。
iot_config.hの設定
DEVICE_CONNECTION_STRING
には、IoTHub ポータルの IoT デバイスから取得できるプライマリ接続文字列
を記入します。
platform.txtの設定
platform.txt
なるテキストファイルを編集する必要があります。
Python で書かれた設定ツールが提供されていますので、遠慮なくそちらを利用しましょう。
https://github.com/Azure/azure-iot-pal-arduino を clone します。
azure-iot-pal-arduino/build_all/base-libraries/AzureIoTHub/src/scripts
にautomate_board_config.py
があるので、実行します。
python3 automate_board_config.py
いくつか選択肢を選びますが、基本Y
を入力すれば OK です。
自動でバックアップも取ってくれるので安心。
ESP32に書き込む
iothub_ll_telemetry_sample.ino
を ESP32 に書き込んでみましょう。
無事書き込めました!
(ログに Error がいくつか表示されるのが気になりますが...それはまた別記事にします)。
おわりに
AzureIoTSocket_WiFi
がインストールされていないのに気付かず地味にハマりましたが、これで ESP32 で IoTHub を利用する準備が整いました。
(03/01追記)ハマったところ
fatal error: internal/blob.h: No such file or directory
GitHub に Issue がありました。blob.h is missing #9
platform.txt
の設定がうまくできてないのが原因のようですので、 platform.txtの設定を再度実施しましょう。
(なにかのタイミングでリセットされたらしく、筆者は二度実行しました)