IoTセットアップ手順

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

本項ではOpenBlocksでセンサーデータを受信してIoTクラウドへ送信するまでのステップの概要を説明しています。

STEP1 OpenBlocksの基本設定

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

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

サービスの追加からIoT全般のサービスモジュールIoTデータ制御をOpenBlocksに追加します。

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

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

STEP4 アプリ起動制御を設定する

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

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

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

下記のそれぞれのデバイス毎に設定したら保存ボタンを押してください。

BLE

BLEの場合はPD Handler BLEを使用するに設定し、プルダウンメニューからpd-handler-ble-c(C言語版)かpd-handler-ble-js(Node-JS版)のどちらかを選びます。
今後はアドバタイズのビーコンモードデータ受信にはpd-handler-ble-cに統合してLua言語で新デバイスを追加して行きますので、ビーコンタイプはなるべくこちらを利用してください。

EnOcean

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

Wi-SUN(Bルート)

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

ただし電力会社によってはECHONET Liteの認証を必要とする場合があるのであくまで実験用での用途でご利用ください。
Wi-SUNのサポートにはOpenBlocksに受信機の増設を必要とします。

Modbus

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

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

Modbus2(C):装置別モデリングファイルを使ったModbus2クライアントです。(サポートリスト参照)
Modbus2(S):装置別モデリングファイルを使ったModbus2サーバーです。(サポートリスト参照)
Modbus(C):Modbus装置のレジスタアドレス指定してダイレクトに読み書きするクライアントです。
Modbus(S):Modbus装置のレジスタアドレス構成をシュミレートしたサーバーです。

このうち利用するPD Handler Modbus機能のどれかを使用するに設定します。

SW4x

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

HVSMC (高圧電力計)

HVSMCはECHONET Lite認証を受けた高圧電力計のBルート(Ethernet)をサポートするモジュールです。
OpenBlocks IoT EX1 または VX2 でサポートします。
高圧電力計からデータを取得する場合にはPD Handler HVSMCを使用するに設定します。

RS-SERIASL

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

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

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

MS-Azure IoT Hub / AWS IoT Core

IoTサーバー側でのアカウント取得については MS Azure の IoT Hub、および、AWS の IoT Core はそれぞれのチュートリアルを用意しています。

MS Azure の IoT Hub のチュートリアル
設定詳細はこちらを参照ください。

AWS の IoT Core のチュートリアル
設定詳細はこちらを参照ください。

MQTT

MQTTに関しては、OpenBlocks内にNode-REDをインストールし、そのノードの一つとしてMQTTブローカーを立ち上げています。
その設定方法についてはMQTTサーバーのチュートリアルを参照してください。
設定詳細はこちらを参照ください。

info

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

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

本体内(lo)

これはOpenBlocks内のローカルディスクに受信データを書き込みますが、対応センサーがBLE温湿度センサービーコンのみになります。
(もともとテスト用です。)
設定詳細はこちらを参照ください。

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から接続を行ってください。ストリーミングなど特別な接続を伴う場合使用します。)
設定詳細はこちらを参照ください。

Toami for DOCOMO

Toami for DOCOMOについてはポータルサイト参照ください。
設定詳細はこちらを参照ください。

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データを送信する時に使います。
OpenBlocks IoT では Node-REDのTCP受信ノード向けの機能となります。
設定詳細はこちらを参照ください。

ドメインソケット

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

PD Exchange

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

STEP6 デバイスの送信設定をする

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

BLEビーコン

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

BLEセンサ(ビーコンモード)

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

EnOcean

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

Wi-SUN

低圧電力計のBルートをサポートするWi-SUNアクセスを行いますがECHONET Liteには対応していないので、電力会社によっては利用できない場合があります。
詳細設定はこちらを参照ください。

Modbus(C)

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

Modbus(S)

Modbus装置のレジスタアドレス構成をシュミレートしたサーバーです。
詳細設定はこちらを参照ください。

Modbus2(C)

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

Modbus2(S)

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

SW4x

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

HVSMC (高圧電力計)

HVSMCはECHONET Lite認証を受けた高圧電力計のBルート(Ethernet)をサポートするモジュールです。
詳細設定はこちらを参照ください。

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

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

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