IoTセットアップ手順

IoT機能のセットアップ手順

本項ではOpenBlocksでセンサーデータを受信してIoTクラウドへ送信するまでのステップの概要を解説します。
IoT機能のセットアップは、大きく次の7つのステップがあります。

  1. OpenBlocksの基本設定
  2. IoTデータ制御サービス追加
  3. 受信するセンサーの登録
  4. アプリ起動制御の設定
  5. 送信先IoTクラウドの選択
  6. デバイスの送信設定
  7. センサー送信データの確認

STEP1 OpenBlocksの基本設定

本章スタートアップガイドの最初を読んでOpenBlocksの基本的な設定を終わらせます。

STEP2 IoTデータ制御サービス追加

本章サービスの追加を読んでIoT全般のサービスパッケージIoTデータ制御をOpenBlocksに追加します。

STEP3 受信するセンサーの登録

BLE/EnOceanセンサーデバイスの登録は、サービス⇒Dev登録タブ内で、BLEやEnOceanなどのデバイス毎に設定を行います。
またModbusおよびユーザーデバイスの場合は、ユーザーメモを入力してデバイス番号の確保のみ行います。
その他のデバイスはここでの登録作業がありません。

STEP4 アプリ起動制御の設定

受信したセンサー毎にPD Handlerというアプリがデバイス毎に存在します。
IoTデータ設定の項目を最初から読んでいただければ 各モジュールの機能解説してあるので細かく理解できると思いますが、ここでは最低限の設定を説明します。

先ず、サービスタブのサービス一覧ペインにてIoTデータリンクをクリックしIoTデータ⇒モジュール設定タブを表示します。

基本的なIoT処理で最低限必要なアプリは、PD Repeater(クラウド送信機能)とデバイス毎に用意されているPD Handlerです。
PD Repeaterは一つしかないので、モジュール起動制御ペインで先ずこれを使用するに設定します。
次にPD Handlerですが、BLEやEnOceanなどなどデバイスによってPD Handlerが違うので、そのどれかを選びます。

なお、設定に先んじてデフォルトモジュール起動制御を設定して下さい。
モジュール起動制御ペイン上部のデフォルトモジュール起動制御チェックボックスにチェックを入れると、下段にデフォルトモジュール起動制御ペインが表示されます。
デフォルトモジュール起動制御の設定によってOpenBlocks起動時にアプリのロードが行われ、そのロードしたアプリを上段の使用する設定でアクティブになるという作りになっています。

下記に説明するデバイス毎の設定を終えたら保存ボタンを押して下さい。

BLE

BLEの場合はPD Handler BLE使用するに設定します。

EnOcean

EnOceanの場合はPD Handler UART使用するに設定し、プルダウンメニューからEnOceanを選びます。
EnOceanのサポートにはOpenBlocksに受信機の増設を必要とします。

Wi-SUN(Bルート)

Wi-SUNの低圧電力計のBルートをサポートする場合に使います。
使用する場合はPD Handler UART使用するに設定し、プルダウンメニューからWi-SUNを選びます。
Wi-SUNのサポートにはOpenBlocksに受信機の増設を必要とします。

なお、電力会社によってはECHONET Liteの認証を必要とする場合がありますので、あくまでも実験用途でご利用下さい。

Modbus

Modbusは主にPLC(Programmable Logic Controller)などの計装機器とのデータ送受信に使われています。
その他にはパトライトの点灯制御、テナント用電力計、ビル内照明制御機器などがあります。

OpenBlocksのModbusソフトウェアにはModbusクライアントとModbusサーバーがあります。
ModbusクライアントはModbus装置に対して、Modbusプロトコルによって読み書きする機能です。
ModbusサーバーはOpenBlocksをModbus装置に見せかけて、他のModbus装置よりModbusプロトコルで読み書きさせる機能です。
また、OpenBlocksのModbusソフトウェアには、Modbus機器のレジスタアドレスを直接読み書きするModbus版と、Modbus装置毎にプロファイルを記述したモデリングファイルを用いるModbus2版があります。
これらの組み合わせにより次の4つのPD Handler MODBUS ソフトウェアが用意されています。

  • PD Handler MODBUS2 Clientモデリングファイルを用いるModbus2クライアントです。

  • PD Handler MODBUS2 Serverモデリングファイルを用いるModbus2サーバーです。

  • PD Handler MODBUS Client:Modbus装置のレジスタアドレス指定してダイレクトに読み書きするModbusクライアントです。

  • PD Handler MODBUS Server:Modbus装置のレジスタアドレス構成をシュミレートしたModbusサーバーです。

    標準搭載されているModbus2のモデリングファイルの対応機器についてはこちらを参照して下さい。

このうち利用するPD Handler MODBUS ソフトウェアのいずれかを使用するに設定します。

標準搭載されているModbus2のモデリングファイルの対応機器についてはこちらを参照して下さい。

SW4x

SW4xはセイコーインスツル社のミスター省エネシリーズのセンサーメッシュネットワークに接続するモジュールです。
SW4x利用する時はPD Handler SW4x使用するに設定します。
SW4xのサポートにはOpenBlocksに受信機の増設を必要とします。

HVSMC (高圧電力計)

HVSMCはECHONET Lite認証を受けた高圧電力計のBルート(Ethernet)をサポートするモジュールです。
OpenBlocks IoT EX1 または VX2 ではECHONET Lite及びAIF認証取得済です。それ以外のモデルについては取得しておりませんので実験用としてご利用下さい。
高圧電力計からデータを取得する場合にはPD Handler HVSMC使用するに設定します。

RS-SERIASL

OpenBlocksに接続するRS-232CやRS-485などのシリアルインターフェースに対応するプログラミングインターフェースです。
基本的にはLUA言語による自作センサーハンドラを作って利用するために用意されています。
このプログラミングインターフェースを使用する場合にはPD Handler RS-SERIAL使用するに設定します。

STEP5 送信先IoTクラウドの選択

設定の前にIoTクラウドのアカウントおよび接続情報を得て下さい。
それぞれ専用のポータルサイトが用意されているのもあれば、IoTサーバー業者によって個別に接続情報を配布される場合もあります。
対象となるIoTサーバーの情報を得た後、送受信設定画面で任意のIoTサーバーを使用するに設定し、情報を書き込んで下さい。

MS-Azure IoT Hub

MS-Azure IoT Hub のアカウント取得についてはチュートリアルを用意しています。
設定詳細はこちらを、Websocketを介して接続する場合はこちらを参照して下さい。

AWS IoT Core

AWS IoT Coreのアカウント取得についてはチュートリアル を用意しています。
設定詳細はこちらを、Websocketを介して接続する場合はこちら参照して下さい。

MQTT

データの送受信先としてEclipse MosquittoなどのMQTTブローカーを用いる場合に使用します。
設定詳細はこちらを参照して下さい。

OpenBlocksにNode-REDをインストールし、そのノードの一つとしてMQTTブローカーを立ち上げて利用することも可能です。 設定方法についてはMQTTサーバーのチュートリアルを参照して下さい。

info

実際この方法を用いれば、IoTデータのグラフ化などのビジュアライズにIoTクラウドサーバーを必要としません。
OpenBlocksのみでIoTシステムを完結することができます。

その他のMQTTブローカーは、それぞれシステムアップされた設定情報に従ったセットアップを行います。
OpenBlocksのMQTTサーバーの設定登録は基本的なものをサポートしていますが、拡張されたMQTTに関しては別途開発が必要になります。

DEXPF

ぷらっとホームが運営するエクスチェンジ型IoTサーバーで異業種間でのデータ交換を目的としたIoTプラットフォームです。
DEXPFはいくつかのアライアンスによって実験的に運営されていますので、詳しくは当社へお問い合わせ下さい。
設定詳細はこちらを参照して下さい。

Google IoT Core

Google IoT Coreについてはポータルサイトを参照して下さい。
設定詳細はこちらを参照して下さい。

Watson IoT Platform

Watson IoT Platformについてはポータルサイト参照して下さい。
ゲートウェイ接続の設定詳細はこちらを、デバイス接続の設定詳細はこちらを参照して下さい。

Azure Event Hubs

Azure Event Hubについてはポータルサイト参照して下さい。
(基本的にはIoT Hubから接続を行って下さい。特別な接続を伴う場合使用します。)
設定詳細はこちらを参照して下さい。

Amazon Kinesis

Amazon Kinesisについてはポータルサイト参照して下さい。
(基本的にはIoT Coreから接続を行って下さい。ストリーミングなど特別な接続を伴う場合使用します。)
設定詳細はこちらを参照して下さい。

SoftBankスマ可視

SoftBankスマ可視についてはポータルサイト参照して下さい。
設定詳細はこちらを参照して下さい。

KDDI IoTクラウドStandard

KDDI IoTクラウドStandardについてはポータルサイト参照して下さい。
設定詳細はこちらを参照して下さい。

WEBサーバー

ApacheとPHPなどで構成する一般的なWEBサーバーを使ったIoTサーバーです。
大半の自作IoTサーバーはこの方式から拡張されたものが多く、個別開発する場合でも容易なシステムです。
設定詳細はこちらを参照して下さい。

WEBサーバー側のPHPサンプルコード

<?php
if (!function_exists('getallheaders')) {
function getallheaders() {
$retary = array();
foreach ($_SERVER as $key => $val) {
if (substr($key, 0, 5) == 'HTTP_') {
$retary[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($key, 5)))))] = $val;
}
}
return $retary;
}
}
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$header = getallheaders() ;
$jdata = "{}";
// 1. WEBサーバーへのPOSTデータの取得
if ( $header['Content-Type'] == "text/plain" || $header['Content-Type'] == "application/json" ) {
$postdata = file_get_contents('php://input');
$jdata = $postdata ;
}
else if ( $header['Content-Type'] == "application/x-www-form-urlencoded" ) {
$postdata = $_POST;
if ( isset($postdata['Records']) )
$jdata = $postdata['Records'];
}
else {
exit(0);
}
try {
$reqJson = json_decode($jdata, TRUE);
switch (json_last_error()) {
case JSON_ERROR_NONE:
break;
default :
throw new Exception('json decode error.');
break;
}
} catch (Exception $e) {
exit(0);
}
// 2. POSTデータをファイルに保存サンプル
$fp = fopen("/tmp/dump.txt", "a+" );
fputs($fp, json_encode($reqJson) . "\n" );
fclose( $fp );
// 3. POST されたJSON配列のデコード例(ここでは特定キーのみファイルに保存しています)
if ( count($reqJson) != 0 ) {
$fp = fopen("/tmp/dump.txt", "a+" );
for($i=0; $i<count($reqJson); $i++) {
if ( isset($reqJson[$i]['deviceId']) && isset($reqJson[$i]['appendixInfo']) ) {
fprintf($fp,"%s,%s\n",$reqJson[$i]['deviceId'],$reqJson[$i]['appendixInfo']);
}
}
fclose( $fp );
}
}
?>

このサンプルコードを任意のWEBアドレスに配置して、そのアドレスにOpenBlocksからPOSTされるとJSON形式のデータがファイル(/tmp/dump.txt)に保存されます。
これは簡単なサンプルコードで実際には受けったデータをデコードしたあとにデータベースなどに保存して下さい。
なお、このページへのアクセスはベーシック認証を設定して下さい。
$_POST の添字 'Records' は、pd_repeater のWEBフォーム形式で付加される固定値です。
'deviceId', 'appendixInfo' は、JSON 配列に含まれる値で、これは使用するセンサーによって異ります。

※WEBサーバー型のIoTサーバーは大規模で高トラフィック向きではありません。
高トラフィックのIoTサーバーはMQTTをお奨めいたします。

PH社独自仕様WEBサーバー

ぷらっとホームが独自に提供しているHTTP型の仕様です。
IoTデータ送信に対して毎回更新されたトークンを使った方式です。
HTTPベースのサーバーに独自のPHP開発が必要です。
設定詳細はこちらを参照して下さい。

TCP

TCP socket通信でIoTデータを送信する時に使います。
設定詳細はこちらを参照して下さい。

ドメインソケット

ユニックスドメインソケットでの同一ホスト内の別のプロセス(Node-RED等)へIoTデータを送信する時に使います。
OpenBlocksでは主にNode-REDのipc-inノード向けの機能となります。
設定詳細はこちらを参照して下さい。

PD Exchange

ぷらっとホーム独自のIoTサーバーで現在は旧システムとの互換性維持のため搭載しています。
設定詳細はこちらを参照して下さい。

STEP6 デバイスの送信設定

STEP3で登録されたIoTデバイスの設定ペイン送受信設定画面の下段に表示されます。
設定内容は設定ペインの説明ページの通り設定して下さい。
ここでは補足のみの追記とします。

BLEビーコン

これはビーコン送信設定使用するになっていればBLEのあらゆるアドバタイズを受信します。
アドバタイズとはスマホやヘッドセットなどBLE機器の存在を他の装置に通知する機能で、色々な機器が発信しています。
この機能を利用して、社員証にBLEタグなどを内蔵させて、そのアドバタイズ信号をビーコンとして利用すると、社員の出退勤管理や入館管理などに応用できます。
市区町村などでも児童にビーコンを持たせて位置情報を管理など、幅広く利用されています。
このビーコンの場合、STEP3での登録を行わず全てビーコンを受信する状態がデフォルトです。
このため、受信したいビーコンの信号データにあるメーカーコードを使って、処理対象のビーコンをフィルターすることができます。
このフィルターを利用するにはデータフィルタ機能を有効にして前方一致のフィルター条件(メーカーコードなど)を設定します。

info
  • FW5ではビーコンモードでのセンサー毎の自動パース処理は行いません。
    そのため、BLEセンサーは登録を行い運用して下さい。
    また、大量に同種類のBLEビーコンセンサーを扱う場合には、Luaファイルのカスタムによって対応を行って下さい。
BLEセンサ

BLEビーコンですが、単に位置情報通知のためのビーコンだけではなく、温度や湿度などをビーコンデータ上に乗せるセンサービーコンなどにも応用されています。
BLEにはビーコンモード以外にコネクトした双方向通信モードのコネクションモードがありますが、長時間のコネクションモードを維持した運用では、不安定なケースが多く、ぷらっとホームではなるべくビーコンモードの利用を進めています。
これは一般ビーコンと違う扱いをしているのでSTEP3でのデバイス登録を必要とします。
STEP3で登録されたデバイス番号毎に表示されているので、それぞれ設定を行います。
詳細設定はこちらを参照して下さい。

EnOcean

EnOceanはBLEセンサーと同様にSTEP3でのデバイス登録が必要です。
機能的にはBLEビーコンセンサーと同様に、EnOcean版のビーコンとして受信のみサポートしています。
EnOceanは920MHz帯であるため一般のBLE4.xよりは電波が遠くに飛ぶのと、信号の中継装置があるので、こう言った面でBLEよりも有利です。
STEP3で登録されたデバイス番号毎に表示されているので、それぞれ設定を行います。
詳細設定はこちらを参照して下さい。

Wi-SUN

Wi-SUNの低圧電力計のBルートをサポートする場合に使います。
電力会社によってはECHONET Liteの認証を必要とする場合がありますので、あくまでも実験用途でご利用下さい。 詳細設定はこちらを参照して下さい。

Modbusクライアント

Modbus装置のレジスタアドレス指定してダイレクトに読み書きするクライアント(PD Handler MODBUS Client)です。
詳細設定はこちらを参照して下さい。

Modbusサーバー

Modbus装置のレジスタアドレス構成をシュミレートしたサーバー(PD Handler MODBUS Server)です。
詳細設定はこちらを参照して下さい。

Modbus2クライアント

PLCなど特定のレジスタなどのセットアップ情報を記述したモデリングファイルを元にアクセスできるクライアント(PD Handler MODBUS2 Client)です。
詳細設定はこちらを参照して下さい。

Modbus2サーバー

PLCなど特定のレジスタなどのセットアップ情報を記述したモデリングファイルを模したModbus装置として機能するサーバー(PD Handler MODBUS2 Server)です。
詳細設定はこちらを参照して下さい。

SW4x

セイコーインスツル社のミスター省エネシリーズのセンサーメッシュネットワークに接続するモジュールです。
詳細設定はこちらを参照して下さい。

HVSMC (高圧電力計)

HVSMCはECHONET Lite認証を受けた高圧電力計のBルート(Ethernet)をサポートするモジュールです。
OpenBlocks IoT EX1 または VX2 ではECHONET Lite及びAIF認証取得済です。それ以外のモデルについては取得しておりませんので実験用としてご利用下さい。
詳細設定はこちらを参照して下さい。

STEP7 センサー送信データの確認

センサーデータが正しく送られるようになったかは、ここまで設定した内容がきちんと保存されているかSTEP1の設定項目から全体を見直して下さい。
設定が正しいようなら念のためOpenBlocksを再起動してみて下さい。
再起動後、設定が正しければデータ送信が始まります。

OpenBlocks上のログを確認することでセンサーデータを確認することができます。 ログの表示画面で"pd-handler-"で始まるデバイス毎のログがプルダウンメニューで選択できます。
ここにセンサーデータのログが任意のセンサーデバイスの値を持って表示されていればデバイスが正しく認識されていることになります。
最後に、IoTサーバー側の受信状態に関しては、その管理者に受信状態を確認してもらって下さい。
また、センサーデーターの送信jsonフォーマットについては以下を参照して下さい。