PD Repeater 送受信設定
PD Repeaterは、OpenBlocksのPDHMSモジュールの一つです。
ユニックスドメインソケットのメッセージパスを利用して、他のモジュールとセンサーデータのやり取りを行っています。
PD Repeaterは、PD Handlerなどからのメッセージを受け取り、IoTクラウドやIoTサーバーなどの上流のIoTデータ収集サーバーへデーターを送信可能です。
そして、下流制御機能を持つIoTデータ収集サーバーからは制御メッセージを受け取り、下流ネットワークにあるModbus対応のPLCなどに制御データーを送る機能があります。
また、Modbus以外の下流制御機器にはPD Agentを使って制御スクリプトなどを実行し制御します。
PD RepeaterはIoTデータ設定⇒モジュール設定タブで起動します。
送受信設定
それぞれのセンサーから受け取ったメッセージ(センサーデータ)は、それぞれ送信先のIoTデータ収集サーバーを選ぶことができます。
OpenBlocksは送り先となるIoTデータ収集サーバーを4つまで登録することができ、それぞれのセンサーはこの4つから複数選択が可能です。
送信先の選択 |
---|
送信先のIoTクラウドやIoTサーバーなどの上流のIoTデータ収集サーバーは以下の一覧表のリンク先を参照下さい。
設定項目 | 説明 |
---|---|
DEXPF(dexpf) | 送受信先としてDEXPFを選択します。 |
DEXPF[Websocket](dexpf_ws) | 送受信先としてDEXPFを選択します。接続プロトコルとしてWebsocket over MQTTを用います。 |
MS Azure IoT Hub(iothub) | 送受信先としてMicrosoft Azure IoT Hubを選択します。 なお、Azure IoT Edgeに対して送信する場合には、本項目を選択します。 |
MS Azure IoT Hub[Websocket](iothub_ws) | 送受信先としてMicrosoft Azure IoT Hubを選択します。 接続プロトコルとしてWebsocket over MQTTを用います。 |
AWS IoT(awsiot) | 送受信先としてAmazon AWS IoTを選択します。 |
AWS IoT[Websocket](awsiot_ws) | 送受信先としてAmazon AWS IoTを選択します。 接続プロトコルとしてWebsocket over MQTTを用います。 |
Google IoT Core(iotcore) | 送受信先としてGoogle IoT Coreを選択します。 |
Watson IoT for Gateway(w4g) | 送受信先としてIBM Watson IoT for Gatewayを選択します。 |
MS Azure Event hubs(eventhub) | 送信先としてMicrosoft Azure Event hubsを選択します。 |
Amazon Kinesis(kinesis) | 送信先としてAmazon Kinesisを選択します。 |
Watson IoT for Device(w4d) | 送受信先としてIBM Watson IoT for Deviceを選択します。 |
SoftBankスマ可視専用クラウド(sbiot) | 送信先としてSoftBankスマ可視専用クラウドを選択します。 |
KDDI IoTクラウドStandard(kddi_std) | 送信先としてKDDI IoT クラウド Standardを選択します。 |
PH社独自仕様WEBサーバー(pd_web) | 送受先として弊社独自仕様のWEBサーバーを選択します。 |
WEBサーバー(web) | 送信先として汎用のWEBサーバーを選択します。 |
MQTTサーバー(mqtt) | 送受信先として汎用のMQTTサーバーを選択します。 |
TCP(ltcp) | 送受信先として汎用のTCPサーバーを選択します。 |
PD Exchange(pd_ex) | 送受信先としてPD Exchangeを選択します。 |
ドメインソケット(lsocket) | 送信先としてUNIXドメインソケットを選択します。 Node-REDパッケージがインストールされている場合のみ表示されます。 |
補足事項
データ送信量と回線速度
ビーコンやデバイスからの情報取得量に対して、データ送信が遅い場合には、OpenBlocksシリーズ内のバッファーに情報が溜まっていきます。
この場合、データ送信部の改善を行わない場合には溜まり続けてしまう為、バッファーデータを確認しインターバルや取得時間間隔等を調整して下さい。
info
サービス⇒状態タブにてバッファーファイルのサイズを確認できます。
書き込みデータフォーマット
PD RepeaterはJSON形式のデータを扱うことを前提としていますが、接続先によっては、JSON形式でない文字列を扱うことができます。
クラウド | 非JSON形式対応 |
---|---|
DEXPF | 〇 |
DEXPF[Websocket] | 〇 |
MS Azure IoT Hub | 〇 |
MS Azure IoT Hub[Websocket] | 〇 |
AWS IoT | 〇 |
AWS IoT[Websocket] | 〇 |
Google IoT Core | 〇 |
Watson IoT for Gateway | |
MS Azure Event hubs | 〇 |
Amazon Kinesis | 〇 |
Watson IoT for Device | |
SoftBankスマ可視専用クラウド | 〇 |
KDDI IoT クラウドStandard | |
PH社独自仕様WEBサーバー | |
WEBサーバー | |
MQTTサーバー | 〇 |
TCP | 〇 |
PD Exchange | 〇 |
ドメインソケット | 〇 |
各クラウドの通信プロトコル
各送受信先クラウドのプロトコルは以下の表に示す通りとなります。
クラウド | 使用プロトコル |
---|---|
DEXPF | MQTT |
DEXPF[WebSocket] | MQTT over WebSocket |
MS Azure IoT Hub | MQTT |
MS Azure IoT Hub[WebSocket] | MQTT over WebSocket |
AWS IoT Core | MQTT |
AWS IoT Core[WebSocket] | MQTT over WebSocket |
Google IoT Core | MQTT |
Watson IoT for Gateway | MQTT |
MS Azure Event hubs | AMQP |
Amazon Kinesis | RESTful |
Watson IoT for Device | MQTT |
SoftBankスマ可視専用クラウド | MQTT |
KDDI IoTクラウドStandard | RESTful |
PH社独自仕様WEBサーバー | RESTful |
WEBサーバー | RESTful |
MQTTサーバー | MQTT |
TCP | TCP |
PD Exchange | RESTful |
ドメインソケット | Unix Domain Socket |
なお、RESTful 及び WebSocketを使うプロトコルについてはHTTPプロキシに対応しています。
HTTPプロキシ環境にて使用する場合は、WEB-UIのネットワーク⇒HTTPプロキシにて設定して下さい。
PD Repeater 特有の設定パラメタ
送受信設定メニューの設定パラメタ
送受信設定メニューの設定パラメタには下図に示す PD Repeater 特有の4つの設定パラメタがあります。
これらのパラメタの設定指針を示します。
インターバル[sec]
インターバルは、送信完了後~送信開始までの時間間隔を秒単位で設定するものです。 送信処理においては、送るべきデータの有無に関わらずその都度データバッファー(データベース)へのアクセスが生じるため、それ相当のプロセスコストが生じます。 即時性を重視するデータを扱う場合は0とすべきでしょうが、可能であれば1秒でも長くして頂くことを推奨します。
有効時間[sec]
有効時間は、PD Reperterがデータ送信できない場合において、保持する時間を設定するものです。 0を指定した場合、データ送信が完了するまで保持し続けます。
このパラメータの決定には、扱うデータの性質とデータを送る回線の性能と品質、データバッファーの特性を考慮する必要があります。
扱うデータの性質とは、例えば人や物の現在地を取得するシステムであれば過去のデータよりも最新のデータが重要になります。
データを送る回線の性能と品質とは、性能が低ければ回線が復旧した際にはデータバッファーに格納されているデータを一気に送信するためそれに応じた容量が無ければいつまで経ってもデータを送り切ることが出来なくなります。また、ここで言うところの回線の性能にはクラウドの性能も含まれている点に注意して下さい。逆に品質の高い(障害の起きない)回線では、有効時間など配慮するはありません。
データバッファーの特性とは、データバッファが先入れ先出しのFIFO(First in first out)であることです。折角回線が復旧しても最新のデータが送られてくるのは一番最後になるため、
最新のデータを重視する場合、有効時間は短い方が良いことになります。
サブプロセス再起動間隔[sec]
サブプロセス再起動間隔は、サブプロセスを再起動する間隔を設定するものです。通常デフォルト値(86400秒)から変更する必要はありません。0を指定した場合、再起動は行いません。
連続稼働するプロセスの中でメモリの確保と解放を繰り返すとプロセスが確保した常駐メモリの空間に断片が生じ、そのサイズは時間の経過と共に増加して行きます。
PD Repeater では様々な手法を使い常駐メモリの増加を極力抑制していますが、数年オーダーでの連続稼働を考慮しますと完全とは言えないため、こうした機能が実装されています。
メモリ増加量閾値[MB]
常駐メモリの増加分の上限値を設定します。 通常デフォルト値(32Mbyte)から変更する必要はありません。上限値を超えるとサブプロセスを再起動します。
この機能は、上記の時限による再起動と置き換えることを目途に実装されていますが、適正値を得ることが難しいことから、現状、時限による再起動との併用となっています。
各デバイス設定メニューの設定パラメタ
各デバイス設定メニューの設定パラメタには下図に示す PD Repeater 特有の3つの設定パラメタがあります。
これらのパラメタの設定指針を示します。
データ間引間隔[ms]
データを間引くための入力データを受け取らない時間をmsec単位で設定します。0の場合、間引きは行われません。
通常はデバイス(ハンドラー)側でデータの取得間隔を制御しますが、制御できない、あるいは制御し切れない場合は設定して下さい。
バッファーサイズ
データの最大サイズを設定します。単位はバイトです。
大きくすればするほどメモリを消費しパフォーマンスも低下するため、データのサイズに応じ可能な限り小さくしておくことを推奨します。
また、クラウドによって規定されている最大値も異なるため、使用するクラウドの仕様をご確認の上、設定して下さい。
受信設定
PD Repeaterを介してクラウドからの制御メッセージを受ける下流方向制御を行うか否かを選択します。
デバイス(ハンドラー)側に下流方向メッセージを受け取る機能が備えられている場合でも、これを使用しない場合は使用しないとすることを推奨します。
データベースサイズ
PD Repeaterを介してクラウドへ送られるデータは、複数クラウドへの送信とネットワークの通信障害に対応するため、一旦データバッファ(データベース)に格納されます。
各調整を行っていない場合、データベースのサイズ上限のデフォルトは16Mbyteです。
このサイズを超えた場合、新しいデータは廃棄され、データベースのサイズが8Mbyte以下(データベースの最大サイズの半分)になるまでデータの受信は行われません。
なお、データベースのサイズの調整は IoTデータ⇒調整タブから行うことができます。詳細は、PDHMSの調整をご覧下さい。
クラウド送信エラー時のリトライ
ネットワークの通信状況によって、PD Repeaterからクラウドに対しての送信が失敗することがあります。
この時、連続4回失敗した場合や想定外のエラー状態が発生した場合には、1分後に再送信処理を開始します。
WEBサーバーへのデータ送信
PD Repeater(OpenBlocks IoTのファームウェア)側からは、指定したURLのEndpointに対してHTTP POSTメソッドで送信します。
そのため、HTTPサーバ側ではHTTP 200番台のステータスコードを返す必要があります。
HTTP 200番台のステータスコードを返却する際、HTTPヘッダやペイロードで必要なものはありません。
なお、HTTP 200番台以外のステータスが返された場合、PD Repeater(OpenBlocks IoTのファームウェア)側ではエラーとして扱います。
IoT Hub/IoT Edgeへのデータ送信
OpenBlocksからIoT Hub/IoT Edgeへのダイレクト送信
PD RepeaterからAzure IoT Hubに送信する場合、ホストマシン(OpenBlocks)からインターネット経由にて送信を行います。
そのため、クラウドサイドにて使用するデータのみへとフィルタを行う場合、送信するデータはホストマシン(OpenBlocks内)にて絞り込みを行うか、Azure内の別のサービスと連携して処理を行う必要があります。
Docker MobyのコンテナでIoT Hub/IoT Edgeへの送信
PD RepeaterからAzure IoT Edgeに送信する場合、ホストマシン(OpenBlocks)からホスト内のコンテナまたはAzure IoT Edgeが稼働している別のエッジマシンに対してデータ送信を行います。
Azure IoT Edgeでは、データの前処理をコンテナを行うことでデータ量やサーバー負荷を削減します。
また、通常稼働ではオフライン環境での動作をサポートしています。
※コンテナのダウンロード及び構成変更等についてはオンライン必須です。