2017年10月24日火曜日

OpenBlocks IoTシリーズ 基本ソフトウェアにより提供されるPLCクライアント(Modbus)機能について

PLCクライアント(Modbus)機能は、OpenBlocks IoT 基本ソフトウェア2.12より大幅に機能追加されました。

主として以下の項目があげられます。

・データタイプとして、符号のありなし、データサイズ(16bit/32bit)、ビッグ/リトルエンディアンの設定を追加
・データ取得の基準時刻の設定
・CSVファイルを用いた取得PLC対象の拡張

本機能の実装により、1入出力インタフェーズに対し、複数のデバイス、レジスタが割り付けられる場合に、基準時刻を指定してまとめてデータを取得することが可能となり,例えば、RS-485インタフェースに接続される複数のデバイスや、無線メッシュであるOKI SmartHopのRS-232C経由のmodbusペイロードなどでも、1つのデバイスインタフェースから複数個所のデータ(温度や電力データなど)を一定時間にまとめて取得出来るようになります。



本機能はOpenBlocks IoTシリーズすべてのモデルで使用が可能です。ご利用の際は、2.12あるいは今後実施されるそれ以降のアップデートバージョンであることを確認してください。
また、PLCとの接続には、対応したハードウェアインタフェースが必要となります。
各モデル別に、標準もしくは標準オプションとして用意される接続は以下の通りです。
  • OpenBlocks EX1/VX1
    イーサネット、Wifiによる有線/無線ネットワーク、RS-232C/RS-485によるシリアルインタフェースを標準搭載
  • OpenBlocks BX1/BX3(L)/BX5
    Wifiでのネットワーク接続を標準搭載。有線ネットワーク接続にはオプションのUSB二股ケーブルにUSBネットワークアダプタ、RS232C/RS485接続には、オプションのRS232C二股ケーブル、RS-485二股ケーブルを使用
  • BX0
    標準搭載のWifiとPoEケーブルによる、無線/優先のネットワーク接続

    (*) RS-485接続は2線式のみを標準もしくはオプション品にてサポート

今回は、本機能の設定方法について紹介します。
内容に関しては、OpenBlocks IoTシリーズデータ収集ガイドからの抜粋となりますので、詳細に関しては以下のドキュメントをご参照ください。




・PLCクライアント(マスター)の設定方法


本機能は、OpenBlocks IoT Family から Modbus プロトコルを用いて PLC 機器のレジスタ、コイルもしくはステータスを用いて定期的に読み込む(ポーリングを行う)場合に用います。


WEB UI の「サービス」→「基本」タブにおいて、「PD Handler PLC Client」 が「使用する」に設定されている場合、同タブの「取得
PLC 対象数」に応じた入力フォームが表示されます。

※「取得 PLC 対象」(PLC デバイス)とは、PLC 機器そのものではなく、対象となる PLC機器への接続方法の他、データを取得するため
の「読込方法」や「読込開始アドレス」、「読込レジスタ数」等の設定の組み合わせを意図します。
PLC デバイス毎に送信対象項目にて”送信する”を選択すると、PLC デバイスの送信設定の詳細を設定できます。

※「使用プロトコル」としてModbus TCP(ネットワーク)を選択した場合の表示


※「使用プロトコル」としてModbus RTUを選択した場合の表示



”送信する”を選択した場合には、左のように各項目が表示されます。

デバイス番号:
OpenBlocks IoT Family の WEB UI 内で管理している番号です。変更はできません。

ユーザーメモ:
PLC デバイスにデータに付加する任意の文字列を設定します。データを処理する際の識別子等に利用して下さい。

読込方法:
「レジスタ」(レジスタ出力)、「入力レジスタ」(レジスタ入力)、「コイル」(ディジタル出力)、「入力ステータス」(ディジタル入力)から選択します。
「コイル」または「入力ステータス」を選んだ場合は、”0”または”1”の並びが出力されます。

データタイプ:
読込方法を「レジスタ」、「入力レジスタ」を選択した際に、出力のデータタイプを以下から選択します。

・符号なし 16 ビット整数
・符号付き 16 ビット整数
・符号なし 32 ビット整数/リトルエンディアン
・符号付き 32 ビット整数/リトルエンディアン
・符号なし 32 ビット整数/ビッグエンディアン
・符号付き 32 ビット整数/ビッグエンディアン

読込開始アドレス:
読み込みたいデータが格納されている PLC 機器上の開始アドレスを設定します。

読込レジスタ数:
「読込方法」として「コイル」または「入力ステータス」は、読み込まれるビット数と解釈されます。
「開始アドレス」に設定されるアドレスから読み込むレジスタ数もしくビット数を設定します。


取得時間間隔[sec]:
PLC デバイスからデータを取得する時間間隔を数字で設定します。単位は秒です
後述の基準時刻制御を使用する場合、時間間隔は以下の値へと内部的に変更されます。

・86400[sec]使整数倍
・43200[sec]
・28800[sec]
・21600[sec]
・14400[sec]
・10800[sec]
・7200[sec]
・3600[sec]
・1800[sec]
・900[sec]
・60[sec]

基準時刻制御:
毎日定時にデータを取得する場合、本機能を有効とし基準時刻を設定しください。

基準時刻:
定時にデータを取得する際の基準時刻を設定します。HH:MM 形式となります。

タイムアウト[msec]:
PLC デバイスからデータを取得する際のタイムアウトを設定します。単位はミリ秒です。

使用プロトコル:
「Modbus TCP」、「Modbus RTU」のいずれかを選択します。
「Modbus TCP」はネットワーク、「ModbusRTU」はシリアルです。

ユニット ID:
PLC 機器の Modbus ユニット ID を設定します。ユニット ID は、1~247 または 255 の数値です。


PLC 接続アドレス(Modbus TCP)
接続する PLC 機器の IP アドレスを設定します。

PLC 接続ポート(Modbus TCP)
接続する PLC 機器の TCP ポート番号を設定します。 デフォルト値は、502 です。

読込デバイスファイル(ModbusRTU)
PLC 機器を接続するシリアルポートのデバイスファイル名を設定します。

ボー・レート(Modbus シリアル):
PLC 機器を接続するシリアルポートのボー・レートを選択します。

パリティビット(Modbus シリアル):
PLC 機器を接続するシリアルポートのパリティビットを選択します。

データビット(Modbus シリアル):
PLC 機器を接続するシリアルポートのデータビット数を選択します。

ストップビット(Modbus シリアル):
PLC 機器を接続するシリアルポートのストップビット数を選択します。

送信先設定:
“使用する”を選択した送信先に対してチェックボックスが選択できるようになります。
チェックを付けたクラウド等に対して、送信を行います。


デバイス ID サフィックス(PD):
PD Exchange に送信する際のデバイス ID のサフィックスを設定します。

クライアント ID (AWSIoT):
AWSIoTに送信する際のクライアント ID を設定します。Thing Shadows を使用する場合、クライアント ID が Thing Name となります。

Thing Shadows(AWSIoT):
AWSIoT に送信する際の Thing Shadows を使用するかの設定を選択します。

トピック名(AWSIoT):
AWSIoT に送信する際のトピックを設定します。Thing Shadows を使用する場合、トピックはクライアントIDをThing Nameとして自動生成されます。

証明書(AWSIoT):
AWSIoT に送信する際に使用するデバイスの証明書を設定します。

プライベートキー(AWSIoT):
AWSIoT に送信する際に使用するデバイスのプライベートキーを設定します。

デバイスタイプ(Watson IoT/Device):
Watson IoT(Device)に送信する際のデバイスタイプを設定します。

デバイス ID(Watson IoT/Device):
Watson IoT(Device)に送信する際のデバイスID を設定します。

パスワード(Watson IoT/Device):
Watson IoT(Device)に送信する際のパスワードを設定します。

デバイスタイプ(Watson IoT/Gateway):
Watson IoT(Gateway)に送信する際のデバイスタイプを設定します。


デバイス ID(Watson IoT/Gateway):
Watson IoT(Gateway)に送信する際のデバイス ID を設定します。

Event hubs 名:
Event hubs に送信する際の Event hubs 名を設定します。

SAS ポリシー:
Event hubs に送信する際の SAS ポリシーを設定します。

SAS キー:
Event hubs に送信する際の SAS キーを設定します。

デバイス ID(IoT Hub):
IoT Hubに送信する際のデバイス ID を設定します。

デバイスキー(IoT Hub):
IoT Hub に送信する際のデバイスキーを設定します。

Gatway Name(T4D):
Toami for docomo に送信する際に用いるGateway Name を設定します。

App key(T4D):
Toami for docomo に送信する際に用いる AppKey を設定します。

イベントタイプ(IoT デバイスハブ):
IoT デバイスハブ(Nifty)に送信する際に用いるイベントタイプを設定します。

デバイス ID(IoT デバイスハブ):
IoT デバイスハブ(Nifty)に送信する際に用いるデバイス ID を設定します。

API キー(IoT デバイスハブ):
IoT デバイスハブ(Nifty)に送信する際に用いる API キーを設定します。

ユニーク ID (MQTT):
MQTT サーバに送信する際のユニーク ID を設定します。ユニーク ID は、トピックのサフ
ィックスとして扱われます。トピックのプレフィックスは、MQTT サーバに設定されるトピ
ックプレフィックスです。プレフィックスとサフィックスの間は '/' で区切られ送信されます。

※一部を除くクラウドに紐付く設定情報は編集ボタンにより編集可能になります。既存の
デバイス不良等の差し替え時に以前のものと同様に扱う為に設定を同一にすることを推奨
します。(不良となったデバイスは送信対象設定を“送信しない”へ変更してください。)
※証明書及びプライベートキーはシステム→ファイル管理タブからアップロードしてくだ
さい。

・CSV ファイルを用いた「取得 PLC 対象」の拡張


/var/webui/upload_dir ディレクトリに pd-handler-plc-client.csv というファイル名の CSVファイルを置くことで、WEB UI 管理にて割り当てされた 1 デバイス番号に対して複数の「取得 PLC 対象」を割り当てることが可能です。
尚、pd-handler-plc-client.csv ファイルは WEB UI の「システム」→「ファイル管理」タブのアップロード機能により置くことが可能です。
また、CSV ファイルの書式は、次の通りです。

デバイス番号,ユニット ID,読込方式,データタイプ,読込開始アドレス,読込レジスタ数

※行の先頭が#または/の場合、コメント行として扱います。
※CSV 内の”等での動作は保証いたしません。

パラメタデータの形式説明
デバイス番号半角英数字WEB UIによりれたデバイス番号記載します
WEB UIに設定されていないデバイス番号無視されます
ユニット番号半角英数字PLC機器のModbusユニットIDを設定します。
ユニットIDは、1~247 または 255 を記載します。
方式半角英数字読込方式として、以下のいずれかを記載します
設定内容Web UI表記
bitsコイル
input_bits入力ステータス
registerレジスタ
input_register入力レジスタ
データタイプ半角英数字データタイプとして以下設定してください
なお、読込方式を"bits"または"input_bits"を設定した場合カラムは無視されます
設定内容WEB UI表記
u_int16符号なし16ビット整数
int16符号き16ビット整数
u_int32lsb符号なし32ビット整数
リトルエイディアン
int32lsb符号き32ビット整数
リトルエイディアン
u_int32msb符号なし32ビット整数
ビッグエイディアン
int32msb符号き32ビット整数
ビッグエイディアン
読込開始アドレス半角英数字みたいデータが格納されているPLC機器開始アドレスを設定します。先頭が"0x"の場合は16進数解釈されます
読込レジスタ半角数字みたいレジスタ記載します。


・記載例

#localname,unit_id,read_function,data_type,read_addr,read_registers
device_plc_client_0000001,15,bits,u_int16,0x130,37
device_plc_client_0000001,15,input_bits,u_int16,0x1c4,22
device_plc_client_0000001,15,registers,u_int16,0x160,3
device_plc_client_0000001,16,input_registers,u_int32lsb,0x108,1
device_plc_client_0000002,17,bits,u_int16,0x130,37
device_plc_client_0000002,18,input_bits,u_int16,0x1c4,22
device_plc_client_0000002,19,registers,int16,0x160,3
device_plc_client_0000002,20,input_registers,int32lsb,0x108,1
device_plc_client_0000003,30,bits,u_int16,0x130,37
device_plc_client_0000003,30,input_bits,u_int16,0x1c4,22
device_plc_client_0000003,31,registers,u_int16,0x160,3
device_plc_client_0000003,31,input_registers,u_int32msb,0x108,1
device_plc_client_0000004,32,bits,u_int16,0x130,37
46/80
device_plc_client_0000004,32,input_bits,u_int16,0x1c4,22
device_plc_client_0000004,33,registers,int16,0x160,3
device_plc_client_0000004,33,input_registers,int32msb,0x108,1

CSV ファイルに定義したデバイス番号の「取得 PLC 対象」は、WEB UI の設定内容(CSVの定義内容)は破棄され、CSV ファイルの内容が使用されます。そのため、CSV ファイルに定義したデバイス番号の設定ついては、1 デバイス番号として取得対象とする全ての「取得PLC 対象」を記載してください。


最後に


今回の機能強化は、ビルや、工場などでの環境測定や、機器データの取得に際し、必要と思われるものをほぼ実装した形となります。
当社IDMアプライアンスなどと合わせてご利用いただき、環境測定やモニタリングシステムの構築に役立てていただければと思います。

2017年6月23日金曜日

[.tested][IoT] Omron ヒューマンビジョンコンポ (HVC-P2) 評価用カスタムハンドラ

Omron HVC-P2は、人の状態を認識できる画像センサモジュールです。


HVC-P2|HVC(Human Vision Components )シリーズ|製品ラインナップ|オムロン人画像センシングサイト:+SENSING

SwapImage





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

<検証環境>
OpenBlocks IoT BX1/EX1/VX1 基本ソフトウェア Ver2.11 / kernel 3.10.17-poky-edison

githubに評価用ソースコードをcommitしましたので、ご利用ください。
本コードは、IoT基本ソフトウェア向けのカスタムハンドラとして動作します。
ユーザハンドラを定義して、WebUIにて送信先などの設定を行ってください。
すでに別のカスタムハンドラをご利用の場合は、ソースコードのunix domain socket名を変更する必要があります。

https://github.com/goto2048/hvcp2_for_openblocksiot


・注意点

OpenBlocks IoT BX1で使用する場合、内蔵のモデムが/dev/ttyACM0から始まるモデムデバイスとなります。
HVC P2も同様にttyACMxxというデバイスとして認識されるため、udev等で/dev/ttyACM7に固定しないと、本デバイスが先に認識されてしまう関係上、3G通信が出来なくなる可能性があります。
それぞれdmesgでデバイス名の確認をし、ソースコード上のSERIAL_PORTの定義を変更してください。


顔認識の最大数は35ですが、35人分のJSONデータは基本ソフトウェアの機能で送信出来るペイロードのサイズ(4KB)を超えますので、適宜、最大数を設定する/定義したkey名を短くするなどのパッチをソースコードに当ててください。

評価用として、gotoがquick hackしたものですので、未サポートとなります。


2016年8月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年8月5日金曜日

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としては"-"を使わない。これにつきます。