2016-08-26

OpenBlocks IoT シリーズのAzure Event Hubへの接続について


前回、Azure IoT Hubへの接続の手順、および、Stream Analytics jobを経由したPower BIへのデータの受け渡し手順について、解説しました。
今回は、IoT Hubではなく、Event Hubへ接続する方法について簡単に説明します。
なお、全体の流れは前回の作業に沿って行ったものですので、WebUIでのデバイスの登録や、Stream Analytics、PowerBIの設定についての詳細な説明は行いません。




OBDN技術ブログによる動作検証は、該当するデバイスやソフトウェアの動作について、保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。

<検証環境>
ゲートウェイ
 OpenBlocks IoT BX1 Debian wheezy 7.8 / kernel 3.10.17-poky-edison
 IIJmio 高速モバイル/D SIM
センサー
 FWM8BLZ02A-109047 温度/3軸加速度センサービーコン (BLE)
クラウド
 Microsoft Azure

2.Microsoft Azure Event Hubのデプロイと設定


Azureアカウントにサインインし、新規メニューより、Event Hubを検索します。



Event Hubを選択し、作成を押しすと、旧ポータルへ飛ばされますので、今回はそのまま旧ポータルで作業を行います。
IoTハブ名など、この先でリソース名として受け渡す可能性のあるものには"-"をつけないことをお勧めします。
例えば、Stream Analytics jobのクエリの記述パネルでは"-"は使用できません。

今回の設定例は以下の通り。

イベントハブ名
  obsevhub
リージョン
  東日本

名前空間は自動で入力されます。 obsevhubというハブ名の場合は、obsevhub-nsとなります。

 

作成が終わって以下の画面から、作成したEvent Hub名をクリックします。

 

共有アクセスポリシーを作成します。
今回はtestという名前とし、権限を設定し、画面下部の「保存」を押します。




共有アクセスキー生成コンポーネントにある、ポリシー名、プライマリーキーを、次の項目で説明する、WebUIのSASキーの項目へ入力します。



Event Hubでの定作業は以上で終了です。

3.OpenBlocks IoT 基本ソフトウェアのWebUI設定


設定の全体の流れは前回の記事を参照してください。
作業として異なるのは、Azure IoT Hubへの送信が、Azure Event Hubへの送信となることです。 

・Azure Event Hubへの送信設定


以下のドキュメントに従って設定を進めていきます。

OpenBlocks IoT Family向け データ収集ガイド


先に、送信先設定を行います。
MS Azure IoT Hubを「使用する」にチェックし、各項目を設定してください。

インターバル
 収集したデータを送信する間隔です。
 この例ではデータの送信確認のために5秒としています。
 (実際には5分~1時間以上に設定されることが多いと思います)
有効時間
 データ送信できない場合において、保持する時間を設定します。
 0を指定した場合、データ送信が完了するまで保持し続けます。
ドメイン名
 送信するIoT Hubのホスト名を設定します。
 デフォルトでは、servicebus.windows.net が入力されています。
名前空間
 上記の管理ポータルで作成された名前空間を使用してください。
ポート番号
 送信先のポート番号を設定します。5670となっていますが、5671としてください。

デバイス一括設定
 ビーコン及びデバイスの送信対象設定が”送信する”となっている各対象の
 送信先設定を一括で有効/無効を選択できます。




デバイス情報送信設定を行います。
送信対象を、「送信する」にチェックし、各項目を設定してください。

センサー信号強度[dbm]
 センサーに信号強度を設定できる機種の場合、設定したい信号強度を入力します。
 設定した信号強度が無い場合、近似値またはデフォルト値が設定されます。
取得時間間隔[ms]
 センサーからデータを取得する時間間隔を数字で設定します。単位はmsecです。送信先設定
 送信先をチェックします。同時に2か所までの送信が可能です。
 Event Hubにチェックします。
Event Hub名
 Event Hub名を設定します。今回はobsevhubとなっています。
SASポリシー
 管理ポータルで作成した共有アクセスポリシーの名前を入力します。
SASキー
 管理ポータルで作成された共有アクセス生成キーコンポーネントよりプライマリーキーを
 コピーし、入力します。




保存を押し、収集ログタブにて、Event Hubへデータが送信されていることを確認してください。



4.Stream Analytics jobの設定について


前回との変更点として、入力がIoT HubからEvent Hubになり、リソース名も変わります。
また、サービス名を変更した場合は、クエリのFROMの記述も変更します。

5.Power BIでのデータの確認と表示


Power BIにサインインすると、データセットに設定したデータセット名が表示されています。
以下の画面では、Stream Analyticsでデータセット名を変えていますので、前回と違うデータセットが表示されています。





上記の画面が確認できれば、今回のチュートリアルは終了です。

6.さいごに


今回は、Event Hubへ変更した部分だけを説明しました。
WebUIでのポート番号だけは5671であることをご確認ください。



2016-08-05

OpenBlocks IoT シリーズをMicrosoft Azure IoT Hubへ接続し、Stream Analyticsを経由してPowerBIへデータを受け渡す手順について

OpenBlocks IoT シリーズの基本ソフトウェア 1.0.10より、Azure IoT HubおよびAzure Event HubへのWebUIでの接続設定に対応しました。
本記事では、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
場所
  東日本

ダッシュボードにピン留めする場合は、チェックボックスにチェックを入れます。

 

 デプロイが開始されます。



デプロイ完了を確認します。



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名を入力します。

デバイス一括設定
 ビーコン及びデバイスの送信対象設定が”送信する”となっている各対象の
 送信先設定を一括で有効/無効を選択できます。



デバイス情報送信設定を行います。
送信対象を、「送信する」にチェックし、各項目を設定してください。

センサー信号強度[dbm]
 センサーに信号強度を設定できる機種の場合、設定したい信号強度を入力します。
 設定した信号強度が無い場合、近似値またはデフォルト値が設定されます。
取得時間間隔[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
場所
  東日本



デプロイを待ちます。



作成済と表示されたのち、ジョブトポロジを設定します。



入力のパネルをクリックし、、「+追加」を押して設定を行います。



入力のエイリアスを入力し、ソースをIoT Hubにすると、各項目は自動的に設定されますので、問題がなければ作成を押してください。(今回は入力のエイリアスはobxbx1と設定しています)



出力のパネルをクリックし、、「+追加」を押して設定を行います。



出力エイリアスを設定して、シンクのメニューよりPower BIを選択します。
今回は、出力エイリアスはpowerbibx1と設定しています。



接続の承認ボタンを押すと、サインイン画面が出ますので、サインインを行うと承認が終了しますので、データセット名とテーブル名を入力して作成を行います。
今回は、データセット名をfclsensor、テーブル名をsensorとしています。



クエリをクリックして、編集し、保存します。



変換などを行わいない場合は、以下のように入出力のエイリアスを設定するだけです。


SELECT
    *
INTO
    powerbibx1
FROM
    obxbx1



全て設定が終了したら、開始ボタンを押すとストリーミングジョブを開始します。







ストリーミングジョブが正常に開始されました、というメッセージを確認してください。



7.Power BIでのデータの確認と表示


Power BIにサインインすると、データセットに設定したデータセット名が表示されています。




表示されたデータセット名を押すと視覚化のメニューが出ます。



温度と時間を選択し、折れ線グラフを表示させてみます。



上記の画面が確認できれば、今回のチュートリアルは終了です。

8.さいごに


サンプル画面数が非常に多い記事となりましたが、Azureでの作業はデプロイ時間が短いこともあり、作業自体は非常に短時間で終わると思います。

とりあえず、tipsとしては"-"を使わない。これにつきます。