はじめに
横河電機のエッジコントローラe-RT3 Plus F3RP70-2L1をAzure IoT認定デバイス2に登録する担当者として、Azure IoT Edgeについて勉強しました。
その内容を数回に分けてご紹介します。
こちらで第7回目の記事となります。
3回目までの記事で、エッジデバイスへのAzure IoT EdgeランタイムのインストールからサンプルのPythonモジュールをデプロイして動作確認する流れを説明しています。
- 第1回目: Ubuntu 18.04にAzure IoT Edgeランタイムをインストールする
- 第2回目: Azure IoT EdgeランタイムをインストールしたUbuntu 18.04搭載のエッジデバイスをIoT Hubへ接続する
- 第3回目: Azure IoT EdgeランタイムをインストールしたUbuntu 18.04搭載のエッジデバイスでPythonのサンプルモジュールを作成する
また、4、5回目の記事でエッジデバイスのデータを収集しIoT Hubへ送信するPythonモジュール、データを書き込むPythonモジュールを作成、デプロイする手順を説明しています。
- 第4回目: Azure IoT EdgeのPythonモジュールでデータ収集してIoT Hubへ送信する
- 第5回目: エッジデバイスにデータを書き込むAzure IoT EdgeのPythonモジュールを作成する
6回目の記事ではIoT Hubに送信したデータをApp Serviceを使用して構築したWebアプリで可視化しました。
今回はPower BIを使用し、データを可視化してみます。
AWS IoT Greengrassのインストール手順の紹介はこちらからどうぞ!
環境
動作確認したデバイス(OS)
- PC(Windows 10)
- e-RT3 Plus F3RP70-2L(Ubuntu 18.04 32bit)+アナログ入出力モジュール
モジュール構成、配線は前回までと同様に以下の通りです。- e-RT3 Plus F3RP70-2L(CPUモジュール)
- F3AD08-6R(アナログ入力モジュール)
- F3DA04-6R(アナログ出力モジュール)
- F3BU05-0D(ベースモジュール)
- F3PU20-0S(電源モジュール)
こちらのデバイスでは armhf
アーキテクチャのパッケージが動作します。
IoT EdgeとDockerのバージョン
$ iotedge --version
iotedge 1.1.1
$ docker --version
Docker version 20.10.5+azure, build 55c4c88966a912ddb365e2d73a4969e700fc458f
ゴール
最終的なゴールは以下の図のような、Azure IoT EdgeランタイムをインストールしたUbuntu 18.04搭載のエッジデバイスでPythonのデータ収集モジュールとデータ書き込みモジュールを作成し、収集モジュールのデータをIoT Hubへ送信し、Power BIとAzure App Serviceで作成したWebで可視化することです。
App ServiceとPower BIでデータを可視化する手順や構成はMicrosoftの公式ドキュメント34を参考にし、図中のアイコンはこちらを使用しています。
今回はAzure上でStream Analyticsを作成し、IoT Hubへ送信されたデータをPower BIで可視化することをゴールとします。
これで完成になります。
具体的な流れは以下の通りです。
- Azure上にStream Analyticsのリソースを作成し、PCにPower BIをインストールする
- IoT Edgeデータ収集モジュールがアナログ入力モジュールの全チャネルのデータを2秒周期で収集し、IoT Hubへ送信する
- Iot Hubへ送信されたデータをStream Analyticsを通してPower BIへ流し可視化する
準備
今回説明する内容は、IoT Hubへ可視化したいデータが送信できていることを前提に説明しています。
開発環境
- PC
前回までに準備した環境をそのまま使用します。
また、開発の手順は基本的にはMicrosoft公式のドキュメント4に従っていますが、こちらではAzure PortalとVS Codeを使用します。
Power BI Desktopのインストール
Power BIはMicrosoft社のBIツールであり、データの可視化が可能です。
デスクトップアプリのPower BI DesktopやWebサービスのPower BIサービスが使用できます。
今回は個人アカウントでもサインアップできるPower BI Desktopを例にして、可視化の手順を説明します。
※Power BIサービスは企業アカウントを持っている場合はサインアップ可能で、このあと説明する手順で同じように可視化できます。
-
Power BI DesktopのWebサイトにアクセスし、画面中央の「無料でダウンロードする」のボタンをクリックします。
「Microsoft Store を開きますか?」というポップアップが出た場合は許可して開いてください。
Microsoft Storeが開いたら「入手」をクリックし、インストールしてください。 -
インストールしたPower BI Desktopを開き、右上にある「サインイン」の表示をクリックします。
表示される手順に従ってサインインします。
IoT Hubのコンシューマーグループの作成
Azure Portalからコンシューマーグループを作成します。
前回の記事で紹介した手順で作成します。
作成したコンシューマーグループ名はあとで使用するため、メモしておくと便利です。
今回は「ert3-visualization-powerbi」を作成して使用します。
Stream Analyticsの作成
IoT Hubへ送信されたデータをPower BIに流すためにStream Analyticsを使用します。
-
Azure Portalにアクセスし、「リソースの作成」をクリックします。
表示される検索欄にStream Analyticsと入力し、「Stream Analytics job」を探してクリックします。
青い「作成」ボタンをクリックします。 -
必要事項を入力、選択します。
ジョブ名には任意の分かりやすい名前を入れ、サブスクリプション、リソースグループ、場所も任意の項目を選択します。
ホスティング環境はクラウドにしてください。
ストリーミングユニットは今回は特に変更せず3とします。
入力内容を確認し、青い「作成」ボタンをクリックします。※Stream Analyticsは起動した時間とストリーミングユニットの数に応じて課金されます。
今回はデータを流すのみで特別な処理を行っていないため、ストリーミングユニットは3未満でも動作します。
詳しくはAzure Stream Analytics の価格をご覧ください。 -
「デプロイが完了しました」と通知されたらOKです。
Stream Analyticsの設定
-
Azure Portalから作成したStream Analyticsジョブを開きます。
概要が表示されたら「入力」をクリックします。 -
「ストリーム入力の追加」をクリックし、表示されるドロップダウンリストからIoT Hubを選択します。
設定画面が表示されるので、以下のように入力して保存します。項目 設定内容 入力のエイリアス 任意の入力エイリアス サブスクリプション 可視化したいメッセージを受信するIoT Hubがあるサブスクリプション IoT Hub 可視化したいメッセージを受信するIoT Hub コンシューマーグループ 作成したコンシューマーグループ その他の項目 デフォルトのままでOK -
保存した後、入力の一覧に設定した項目が追加されており、接続テストが成功した通知が来たら入力の設定は完了です。
-
Stream Analyticsの概要から、入力のすぐ下にある「出力」をクリックします。
「追加」をクリックして表示されるドロップダウンリストから「Power BI」を選択します。
表示される設定画面から青い「承認」ボタンをクリックし、Power BIにログインしたアカウントで承認します。 -
承認されると出力の設定画面に切り替わります。
以下のように設定を入力・選択して保存します。
保存した後、入力設定時と同様に一覧に設定した項目が追加されており、接続テストが成功したと通知されたら完了です。項目 設定内容 出力エイリアス 任意の出力エイリアス グループワークスペース 任意のワークスペース 認証モード デフォルトのままでOK データセット名 任意のデータセット名 テーブル名 任意のテーブル名 -
左側のメニューから「クエリ」を探してクリックし、入力欄に以下のように入力して保存します。
設定が保存された通知が表示されたらOKです。クエリSELECT messageID, deviceID, CAST([datetime] AS datetime) AS datetime, ch1, ch2, ch3, ch4, ch5, ch6, ch7, ch8 INTO [<設定した出力エイリアス>] FROM [<設定した入力エイリアス>]
-
Stream Analyticsジョブの概要に戻り、「開始」ボタンをクリックしてください。
少し時間がかかりますが、問題なく開始されると通知が表示されます。
Power BIの設定
-
Power BI Desktopの新規作成画面を起動し、画面上部の「Power BIデータセット」を選択します。
レポートを作成するデータセットの選択画面が表示されるので、Stream Analyticsの設定時に入力したデータセットを選択します。 -
画面の右側に「フィルター」、「視覚化」、「フィールド」の設定が表示されます。
まず、フィールドの設定でチャートに含めたいチャネルにチェックを入れます。
次に、視覚化の設定で折れ線グラフを選択します。
中央に表示されるチャート画面は自由に大きさを変えられます。
この時点では横軸を決めていないので、値の和が表示されます。 -
フィールドの設定の「datetime」を視覚化の「軸」の枠にドラックアンドドロップします。
すると、横軸を日時で取るようになり、波形が描画されます。
必要に応じてフィルター設定の「datetime」を展開し、任意の表示範囲を設定してフィルターを適用してください。
画像では最近の5分間のデータを表示するように設定しています。
また、最新の情報に更新したい場合は画面上部の「更新」ボタンをクリックしてください。 -
確認ができたらAzure PortalからStream Analyticsジョブの概要を開き、「停止」ボタンをクリックしてデータの送信を停止してください。
※Stream Analyticsは動作時間とストリーミングユニットに応じて課金されます。
まとめ
IoT Hubへ送信されたデータをPower BI Desktopを使用して可視化できました。
また、今回を含めた全7回の記事でエッジデバイスにIoT EdgeランタイムをインストールするところからIoT Hubへの接続とデータの送信、データを可視化するまでの流れを紹介しました。
どなたかの助けになるような情報があれば嬉しいです。