本記事では、Azure IoT Hubへの接続の手順、および、Stream Analytics jobを経由したPower BIへのデータの受け渡し手順について、解説しています。
OBDN技術ブログによる動作検証は、該当するデバイスやソフトウェアの動作について、保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。
<検証環境>
ゲートウェイ
OpenBlocks IoT BX1 Debian wheezy 7.8 / kernel 3.10.17-poky-edison
IIJmio 高速モバイル/D SIM
センサー
FWM8BLZ02A-109047 温度/3軸加速度センサービーコン (BLE)
クラウド
Microsoft Azure
1. 事前準備
・アカウント
Microsft Azureのアカウントが必要です。
Microsoft Azureのサービスポリシーに従って適切に設定してください。
注意点としてはAzure IoT Hubや、Stream Analyticsなどは個人アカウントでも開始できますが、Power BIを使用する場合は、試用であっても学校または職場のアカウントが必要となり、gmailでの個人登録アカウントなどではサインアップできません。
また、職場のアカウントで無料サインアップ出来ない場合は、職場のMS Azure管理権限のある担当に相談してください。
2.Microsoft Azure IoT Hubのデプロイと設定
Azureアカウントにサインインします。
新規メニューより、IoT Hubを検索します。
IoT Hubを選択し、作成を押し、IoTハブのパネルで名前、サブスクリプション、リソースグループ、場所を入力して、作成を押します。
IoTハブ名など、この先でリソース名として受け渡す可能性のあるものには"-"をつけないことをお勧めします。
例えば、Stream Analytics jobのクエリの記述パネルでは"-"は使用できません。
今回の設定例は以下の通り。
名前:
obxbx1
価格とスケールティア
S1 - Standard 400kメッセージ/ユニット/日 ( F1 Freeの場合は8kメッセージ/ユニット/日 )
IoT Hub ユニット
1
Device-to-cloud パーティション
4パーティション
サブスクリプション
Microsoft Azure エンタープライズ
リソースグループ
plathome-goto
場所
東日本
obxbx1
価格とスケールティア
S1 - Standard 400kメッセージ/ユニット/日 ( F1 Freeの場合は8kメッセージ/ユニット/日 )
IoT Hub ユニット
1
Device-to-cloud パーティション
4パーティション
サブスクリプション
Microsoft Azure エンタープライズ
リソースグループ
plathome-goto
場所
東日本
ダッシュボードにピン留めする場合は、チェックボックスにチェックを入れます。
デプロイが開始されます。
デプロイ完了を確認します。
3.Device Explorerの導入と設定
以下のドキュメントを参考に、導入と設定を進めていきます。
How to use Device Explorer for IoT Hub device
Getting Device Explorerの項目より、以下のDevice Explorerのダウンロードページを開きますhttps://github.com/Azure/azure-iot-sdks/releases
ページの最下部にある、Downloadsより、
SetupDeviceExplorer.msi
をダウンロードし、インストールして下さい。
実行すると、以下のパネルが表示されます。
上記で作成した、Azure IoT Hubより、「すべての設定」から、「共有アクセスポリシー」のパネルを呼び出します。
iothubownerを選択します。
接続文字列ープライマリーキーをコピーします。
コピーした文字列を、Device ExplorerのIoT Hub Connection Stringの入力パネルに貼り付け、Updateを押します。
4.OpenBlocks IoT 基本ソフトウェアのWebUI設定
・WebUIの初期設定、ネットワーク設定、BLEセンサービーコンの登録
OpenBlocks IoT Family向けWEB UIセットアップガイド
に従って設定してください。
今回は富士通コンポーネントの温度/3軸加速度センサー付きのBLEユニットを使用しています。
出力される項目が変わりますが、標準で対応しているセンサー付きのBLE製品としては、FCL製品以外では、CC2650STK/CC2451 Sensor Tagがあります。
また今後他社製品(ALPS/OMRON/他)にも対応予定ですが、ALPS IoT Smart module開発キット(BLE)は8月中旬以降リリース予定の1.0.11で、それ以外のデバイスは1.0.11より先のリリースで対応を予定しています。
アドバタイズデータにセンサーデータを載せるタイプの製品は、データであれば、ビーコン送信機能で送信可能ですが、送信するJSON上のデータが一連のデータ列のままdataとして名前付けされますので、クラウド側で変換する必要があります。
また、基本ソフトウェアのPD Handlerで標準対応している、EnOceanセンサ、Wi-SUNによるBルートでの電力計測データも利用出来ます。EnOceanセンサは変換モードを有効にすることで多くのアーミンセンサでプロファイルに応じてデータを変換可能ですが、対応していないものは変換前のデータのままrawモードでの送信となりますので、クラウド側で変換が必要となります。
カスタムハンドラを作成される場合は、最終的に扱いたいデータの構造でJSON形式の送信データを構成するといいでしょう。
・Azure IoT Hubへの送信設定
以下のドキュメントに従って設定を進めていきます。
OpenBlocks IoT Family向け データ収集ガイド
先に、送信先設定を行います。
MS Azure IoT Hubを「使用する」にチェックし、各項目を設定してください。
インターバル
収集したデータを送信する間隔です。
この例ではデータの送信確認のために5秒としています。
(実際には5分~1時間以上に設定されることが多いと思います)
有効時間
データ送信できない場合において、保持する時間を設定します。
0を指定した場合、データ送信が完了するまで保持し続けます。
ドメイン名
送信するIoT Hubのホスト名を設定します。
デフォルトでは、azure-devices.net が入力されています。
ポート番号
送信先のポート番号を設定します。通常は5671から変更する必要はありません。
IoT Hub名
上記で設定したIoT Hub名を入力します。
デバイス一括設定
ビーコン及びデバイスの送信対象設定が”送信する”となっている各対象の
送信先設定を一括で有効/無効を選択できます。
収集したデータを送信する間隔です。
この例ではデータの送信確認のために5秒としています。
(実際には5分~1時間以上に設定されることが多いと思います)
有効時間
データ送信できない場合において、保持する時間を設定します。
0を指定した場合、データ送信が完了するまで保持し続けます。
ドメイン名
送信するIoT Hubのホスト名を設定します。
デフォルトでは、azure-devices.net が入力されています。
ポート番号
送信先のポート番号を設定します。通常は5671から変更する必要はありません。
IoT Hub名
上記で設定したIoT Hub名を入力します。
デバイス一括設定
ビーコン及びデバイスの送信対象設定が”送信する”となっている各対象の
送信先設定を一括で有効/無効を選択できます。
デバイス情報送信設定を行います。
送信対象を、「送信する」にチェックし、各項目を設定してください。
センサー信号強度[dbm]
センサーに信号強度を設定できる機種の場合、設定したい信号強度を入力します。
設定した信号強度が無い場合、近似値またはデフォルト値が設定されます。
取得時間間隔[ms]
センサーからデータを取得する時間間隔を数字で設定します。単位はmsecです。送信先設定
送信先をチェックします。同時に2か所までの送信が可能です。
IoT Hubにチェックします。
デバイスID(IoT Hub)
デバイスIDを設定します。今回はBLEデバイスのMACアドレスを使用しています。
上記で設定したIoT Hub名を入力します。
デバイスキー
IoT Hubに送信する際のデバイスキーを設定します。
今回デバイスキーは下記の手順によりDevice Explorerで取得しています。
センサーに信号強度を設定できる機種の場合、設定したい信号強度を入力します。
設定した信号強度が無い場合、近似値またはデフォルト値が設定されます。
取得時間間隔[ms]
センサーからデータを取得する時間間隔を数字で設定します。単位はmsecです。送信先設定
送信先をチェックします。同時に2か所までの送信が可能です。
IoT Hubにチェックします。
デバイスID(IoT Hub)
デバイスIDを設定します。今回はBLEデバイスのMACアドレスを使用しています。
上記で設定したIoT Hub名を入力します。
デバイスキー
IoT Hubに送信する際のデバイスキーを設定します。
今回デバイスキーは下記の手順によりDevice Explorerで取得しています。
・デバイスキーの取得方法
Device Explorerの「Management」タブを開き、「Create」ボタンより入力パネルを出し、上記のWebUIにて使用するデバイスIDを入力して「Create」を押します。
「Device Created」と表示されたパネルの文字列をCtrl-A/Ctrl-Cとしてコピーします。
この文字列に含まれる、PrimaryKeyをデバイスキーとしてWebUIの画面で入力し、設定を保存してください。
5.Device Explorerによる通信確認
先に、WebUIの収集ログにより、pd-handler-stdout.logおよびpd-emitter-lite.logを確認して、センサービーコンとの通信確認、およびAzure IoT Hubとの通信確認を行います。
pd-handler-stdout.logの確認
pd-emitter-lite.logの確認
次に、Device Explorerの「Data」タブより「Monitor」ボタンを押して確認してください。
6.Power BIの準備
Power BIにサインイン出来るように、準備をします。
すでに、お使いの方はこの作業は必要ありません。
以下のページより、サインアップを進めてください。
冒頭に書いた通り、職場または学校のアカウントであれば無料でサインアップできます。
無料の使用範囲は、データ容量1GB/ユーザー、ストリーミングデータが10k行/時間となり、グループでのチームコラボレーションは出来ません。
職場のアカウントでサインアップ出来ない場合は、職場の担当者に相談して下さい。
6.Stream Analytics jobのデプロイと設定
Azureのダッシュボードより、Stream Analytics jobを追加します。
作成を押します。
ジョブ名、サブスクリプション、リソースグループ、場所を設定し、作成を押します。
今回の設定例は以下の通りです。
名前:
streamtobi
サブスクリプション
Microsoft Azure エンタープライズ
リソースグループ
plathome-goto
場所
東日本
streamtobi
サブスクリプション
Microsoft Azure エンタープライズ
リソースグループ
plathome-goto
場所
東日本
デプロイを待ちます。
作成済と表示されたのち、ジョブトポロジを設定します。
入力のパネルをクリックし、、「+追加」を押して設定を行います。
入力のエイリアスを入力し、ソースをIoT Hubにすると、各項目は自動的に設定されますので、問題がなければ作成を押してください。(今回は入力のエイリアスはobxbx1と設定しています)
出力のパネルをクリックし、、「+追加」を押して設定を行います。
出力エイリアスを設定して、シンクのメニューよりPower BIを選択します。
今回は、出力エイリアスはpowerbibx1と設定しています。
接続の承認ボタンを押すと、サインイン画面が出ますので、サインインを行うと承認が終了しますので、データセット名とテーブル名を入力して作成を行います。
今回は、データセット名をfclsensor、テーブル名をsensorとしています。
クエリをクリックして、編集し、保存します。
変換などを行わいない場合は、以下のように入出力のエイリアスを設定するだけです。
SELECT
*
INTO
powerbibx1
FROM
obxbx1
全て設定が終了したら、開始ボタンを押すとストリーミングジョブを開始します。
ストリーミングジョブが正常に開始されました、というメッセージを確認してください。
7.Power BIでのデータの確認と表示
Power BIにサインインすると、データセットに設定したデータセット名が表示されています。
表示されたデータセット名を押すと視覚化のメニューが出ます。
温度と時間を選択し、折れ線グラフを表示させてみます。
上記の画面が確認できれば、今回のチュートリアルは終了です。
8.さいごに
サンプル画面数が非常に多い記事となりましたが、Azureでの作業はデプロイ時間が短いこともあり、作業自体は非常に短時間で終わると思います。
とりあえず、tipsとしては"-"を使わない。これにつきます。
0 件のコメント:
コメントを投稿