見出し画像

46. Blob on IoT Edge にファイルをアップロードする IoT Edge Module を作って試す

前回の記事                        次回の記事


はじめに

前回前々回を通じて準備が終わったので、前々回に作成した rtsp-image-server から RTSP Stream の画像を切り出して取得し、前回試した Blob on IoT Edge にアップロードを行う IoT Edge Module を作成します。最後に Blob on IoT Edge にアップロードしたファイルが、Azure 側の Blob Container に自動アップロードされているかを確認します。

image-uploader

作成する IoT Edge Module の名前は、image-updater として話を進めます。

image-uploader の仕様

先ず、今回開発する IoT Edge Module の仕様を明確化しておきます。
この IoT Edge Module の基本機能は、

  • 一定間隔毎に指定された REST API をコールして画像を取得してファイル化し Blob on IoT Edge が提供する Blob Service にアップロードする

  • Blob Service へのアプロード時、Azure IoT Hub に対して送信したファイル名を D2C メッセージで通知する

です。これまでの記事で書いてきた機能を若干一般化しています。2行目は、まぁ IoT Edge デバイスとしての務めだと思ってください。
この基本機能に関するテキストから可変にしておいた方が便利な項目を抜き出します。

  • REST API の URL ‐ rest_service_url

  • Blob Service にアクセスする接続文字列 - blob_connection_string

  • REST API にアクセスする間隔。単位は秒 - duration_in_second

これらは、開発する IoT Edge Module の Module Twins の Desired Properties とし、サービス側から Azure IoT Hub を介して指定可能とします。
また、画像を取得する rtsp-image-server、ファイルのアップロード先の Blob on IoT Edge は、IoT Edge の性格上、基本的にどちらもベストエフォートで動作するので、いつも正常に動いているとは限りません。なので、image-uploader の

動作状況 ‐ status 

を、Module Twins の Reported Properties でサービス側に通知するものとします。status の値は、

  • "running"

  • "rest-service-unavailable"

  • "blob-service-unavailable"

  • "rest-or-blob-service-unavailable"

とします。”running” 以外の値の時は、一定間隔での画像取り出しは停止するものとします。

Module Twins の3つの Desired Properties の内、duration_in_second は、更新通知を image-uploader が受信した時点でその間隔に切り替わるものとし、残りの2つは、rtsp-image-server(このモジュール自体の動作不良だけでなく RTSP Stream の不良も含む)、Blob on IoT Edge の実行状況にも依存するので、

  • restart

という Direct Method を用意し、この Direct Method の invocation リクエストを受けた時点で、その時点の Desired Properties の設定を元に画像の取り出しとアップロードのループを再開することにします。

REST API で取り出すデータは Base64 エンコードされた画像データとします。画像フォーマットと画像の取得の可否は、それぞれ、REST API の応答 Header の

ここから先は

21,908字 / 8画像

2022年3月にマイクロソフトの中の人から外の人になった Embedded D. George が、現時点で持っている知識に加えて、頻繁に…

この記事が気に入ったらサポートをしてみませんか?