PD Repeater

デフォルトパス

PD Repeater に関連するファイルのデフォルトパスは次の通りです。

PD Repeater に関連するファイルのデフォルトパス

パス名説明
/usr/sbin/pd_repeater常駐実行オブジェクト(デーモン)
/usr/sbin/pd_repeater_p実行オブジェクト(ユーティリティー)
/lib/systemd/system/pd_repeater.serviceSystemd Service ファイル
/etc/init.d/pd_repeaterRC ファイル
/var/webui/config/pd_repeater.conf設定ファイル
/var/run/pd_repeater.pidPID ファイル
/var/webui/pd-data/pd_repeater.dbキャッシュファイル
@/pd_repeater/<デバイス番号>.sock入力 UNIX ドメインソケット
@/pd_handler/<デバイス番号>.sock出力 UNIX ドメインソケット

設定ファイルの書式

構文

{
"db_file": "<キャッシュファイル パス名>",
"max_db_size": <キャッシュサイズ>,
"servers": {
"クラウドインデックスキー": {
<サーバ設定用 JSON オブジェクト(servers オブジェクト)>
},
"クラウドインデックスキー": {
<サーバの設定用 JSON オブジェクト(servers オブジェクト)>
}
},
"devices": [
{
"localname": "<デバイスのローカル名>",
"bind": "<受信ソケット名>",
"push_to": "<送信先ソケット名>",
"buffer_size": <バッファサイズ>,
"truncate": <入力データを受け付けない時間>,
"receive": <bool値>,
"<クラウドインデックスキー>": {
<クラウド固有のデバイス設定用 JSON オブジェクト>
},
"<クラウドインデックスキー>": {
<クラウド固有のデバイス設定用 JSON オブジェクト>
},
},
{
<デバイス設定用 JSON オブジェクト(device オブジェクト)>
}
]
}

ルートオブジェクト

キーデータ型説明
db_file文字列キャシュファイルのパス名. デフォルト値は '/var/webui/pd-data/pd_repeater.db'. (MAXPATHLEN)
max_db_size整数値キャシュファイルの最大サイズ(Mbyte). デフォルト値は16.
serversJSON objservers オブジェクト
devicesJSON 配列 devices オブジェクト

servers オブジェクト

キーデータ型説明
pd_exJSON objPD Exchenge へデータを送るための設定オブジェクト
mqttJSON obj汎用のMQTT ブローカーへデータを送るための設定オブジェクト
w4dJSON objIBM Watson IoT for device へデータを送るための設定オブジェクト
kinesisJSON objAmazon Kinesis へデータを送るための設定オブジェクト
pgsqlJSON objPostgreSQL データベースへデータを送るための設定オブジェクト
mysqlJSON objMySQL データベースへデータを送るための設定オブジェクト
webJSON obj汎用のWeb サーバへデータを送るための設定オブジェクト
awsiotJSON objAmazon AWS IoT へデータを送るための設定オブジェクト
eventhubJSON objMicrosoft Azure Event Hubs へデータを送るための設定オブジェクト
w4gJSON objIBM Watson IoT for gateway へデータを送るための設定オブジェクト
iothubJSON objMicrosoft Azure IoT Hub へデータを送るための設定オブジェクト
lsocketJSON objUnixドメインソケットへデータを送るための設定オブジェクト
kddi_stdJSON objKDDI IoT クラウドStandard へデータを送るための設定オブジェクト
nf_dvhubJSON objNIFTY IoT Device Hub へデータを送るための設定オブジェクト
pd_webJSON objPlat'Home 独自仕様の Web サーバへデータを送るための設定オブジェクト
iotcoreJSON objGoogle Cloud IoT Core へデータを送るための設定オブジェクト
ltcpJSON objTCP ソケットへデータを送るための設定オブジェクト
awsiot_wsJSON objAmazon AWS IoT へ MQTT over WEbsocket でデータを送るための設定オブジェクト
iothub_wsJSON objMicrosoft Azure IoT Hub へ MQTTover Websocket でデータを送るための設定オブジェクト
dummyJSON objログ出力のみ行うダミー出力ための設定オブジェクト
sbiotJSON objSoftBank IoTへデータを送るための設定オブジェクト
ftpJSON objFTP サーバへデータを送るための設定オブジェクト

クラウドインデックスキーとして同文字列に '_0' 又は '_1', '_2', '_3' を付加した文字列 (例えば 'pd_ex' について、'pd_ex_0', 'pd_ex_1', 'pd_ex_2', 'pd_ex_3') を用いることで、 同一のクラウドの異る 4 つのサーバーもしくはエンドポイントを設定することも可能です。

PD Excheng(pd_ex)

PD Exchange (pd ex) の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値はfalse.
interval整数値サーバへの送信間隔(sec). デフォルト値は 30.
expier整数値キャッシュのデータ保持時間(sec). デフォルト値 0 の場合はデータが送信さるまで無制限.
restart整数値送信プロセスの再起動間隔(sec). デフォルト値は604800、0 の場合は再起動しない.
url文字列接続先URL. デフォルト値は http://pd.plathome.com (MAXPATHLEN)
ssl_verify論理値サーバー証明書の検証を行うか否か. デフォルト値は false.
poll_interval整数値PD Exchange からコマンド(下流方向へのメッセージ)を読み出す間隔(sec). デフォルト値は 30.
deid_prefix文字列PD Exchange のデバイスID プリフィック. (10byte)
secretkey文字列接続に用いるsecretkey. (16byte)

Proxy を使用する場合は、環境変数 http_proxy 又は https_proxy に設定します。

汎用 MQTT ブローカー(mqtt)

汎用MQTTブローカー(mqtt)の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値はfalse.
interval整数値サーバへの送信間隔(sec). デフォルト値は 30.
expier整数値キャッシュのデータ保持時間(sec). デフォルト値 0 の場合はデータが送信さるまで無制限.
restart整数値送信プロセスの再起動間隔(sec). デフォルト値は 604800、0 の場合は再起動しない.
res_memory整数値常駐メモリの増加分の上限値(Mbyte). 上限値を超えると送信プロセスを再起動する. デフォルト値は 32.
host文字列接続先ホストをIP アドレス又は FQDN で指定. (MAXHOSTNAMELEN)
protocol文字列接続プロトコル 'tcp' 又は 'ssl' を指定. デフォルト値は 'tcp'.
port整数値接続先ポート番号. デフォルト値は 1883(TCP 接続時) 又は 8883(SSL 接続時).
keepaliveinterval整数値MQTT の Keepalive 間隔(sec). デフォルト値は 10.
cleansession論理値MQTT の Clean session. デフォルト値は true.
reliable論理値MQTT の Reliable. デフォルト値は true.
qos整数値MQTT の送信用 QoS, 0~2 を指定. デフォルト値は 0.
retained論理値MQTT の Retained. デフォルト値は false.
rcv_qos整数値MQTT の受信用 QoS, 0~2 を指定. デフォルト値は 1.
forward_match論理値受信トピックの前方一致のリファレンスを送られて来たトピックから設定された受信トピックに切り替える. デフォルト値は false.
lwt論理値Last Will and Testament (LWT) を使用するか否か. デフォルト値は false.
lwt_qos整数値LWT の QoS, 0~2 を指定. デフォルト値は 0.
lwt_retained論理値LWT の Retained. デフォルト値は false.
client_id文字列MQTT 接続に用いる Client ID. (96byte)
topic_prefix文字列MQTT の送信トピックの先頭に付加する文字列. 送信トピックは、本文字列とデバイス設定オブジェクトの 'unique id' に指定される文字列の組み合わせで、<topic_prefix>/<unique_id> となる. (MAXPATHLEN)
rcv_topic_prefix文字列MQTT の受信トピックの先頭に付加する文字列. 受信トピックは、 <rcv_topic_prefix>/# で待ち受け、デバイス設定オブジェクトの 'unique_id' に指定される文字列の組み合わせからなる <rcv_topic_prefix>/<unique_id>と完全一致するデバイスへ受信メッセージを転送する. 完全一致しない場合は、前方一致により一致する複数のデバイスへ受信メッセージを転送する. (MAXPATHLEN)
lwt_topic_prefix文字列LWT の送信トピックの先頭に付加する文字列. 送信トピックは、本文字列とデバイス設定オブジェクトの 'unique_id' に指定される文字列の組み合わせで、<lwt_topic_prefix>/<unique_id>となる. (MAXPATHLEN)
lwt_message文字列LWT の送信メッセージ. (128byte)
username文字列接続に用いるユーザー名. (96byte)
password文字列パスワード認証に用いるパスワード. (128byte)
truststore文字列SSL 接続に用いる Root CA 証明書ファイルのパス名. (MAXPATHLEN)
keystore文字列SSL 接続に用いる証明書ファイルのパス名. (MAXPATHLEN)
privatekey文字列SSL 接続に用いる秘密鍵ファイルのパス名. (MAXPATHLEN)

IBM Watson IoT for device (w4d)

IBM Watson IoT for device (w4d) の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値はfalse.
interval整数値サーバへの送信間隔(sec). デフォルト値は 30.
expier整数値キャッシュのデータ保持時間(sec). デフォルト値 0 の場合はデータが送信さるまで無制限.
restart整数値送信プロセスの再起動間隔(sec). デフォルト値は 604800、0 の場合は再起動しない.
res_memory整数値常駐メモリの増加分の上限値(Mbyte). 上限値を超えると送信プロセスを再起動する. デフォルト値は 32.
domain文字列接続先ドメイン名. デフォルト値は 'messag-ing.internetofthings.ibmcloud.com'. (MAXHOSTNAMELEN)
protocol文字列接続プロトコル'tcp' 又は'ssl' を指定. デフォルト値は 'tcp'.
port整数値接続先ポート番号. デフォルト値は 1883(TCP 接続時)又は 8883(SSL 接続時).
keepaliveinterval整数値MQTT の Keepalive 間隔(sec). デフォルト値は 10.
cleansession論理値MQTT の Clean session. デフォルト値は true.
reliable論理値MQTT の Reliable. デフォルト値は true.
qos整数値MQTT の送信用 QoS, 0~2 を指定. デフォルト値は 0.
retained論理値MQTT の Retained. デフォルト値は false.
rcv_qos整数値MQTT の受信用 QoS, 0~2 を指定. デフォルト値は 1.
lwt論理値Last Will and Testament (LWT) を使用するか否か. デフォルト値は false.
lwt_qos整数値LWT の QoS, 0~2 を指定. デフォルト値は 0.
lwt_retained論理値LWT の Retained. デフォルト値はfalse.
org_id文字列組織 ID. デフォルト値は 'quickstart'. (16byte)
event_id文字列イベントID. デフォルト値は 'sample'. (128byte)
lwt_event_id文字列LWT のイベント ID. デフォルト値は 'lwt'.
format_string文字列データーフォーマット. デフォルト値は 'json'. (16byte)
lwt_message文字列LWT の送信メッセージ. (128byte)
truststore文字列SSL 接続に用いる Root CA 証明書ファイルのパス名. (MAXPATHLEN)

Amazon Kinesis (kinesis)

Amazon Kinesis (kinesis) の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値はfalse.
interval整数値サーバへの送信間隔(sec). デフォルト値は 30.
expier整数値キャッシュのデータ保持時間(sec). デフォルト値 0 の場合はデータが送信さるまで無制限.
restart整数値送信プロセスの再起動間隔(sec). デフォルト値は 604800、0 の場合は再起動しない.
domain文字列接続先ドメイン名. デフォルト値は'amazonaws.com'. (MAXHOSTNAMELEN)
ssl_verify論理値サーバー証明書の検証を行うか否か. デフォルト値は false.
region文字列接続先リージョン名. デフォルト値は 'ap-northeast-1'. (64byte)
accessid文字列アクセスID. (128byte)
accesskey文字列アクセスキー. (128byte)
streamname文字列ストリーム名. (128byte)

Proxy を使用する場合は、環境変数 http_proxy 又は https_proxy に設定します。

PostgreSQL (pgsql)

PostgreSQL (pgsql) の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値はfalse.
interval整数値サーバへの送信間隔(sec). デフォルト値は 30.
expier整数値キャッシュのデータ保持時間(sec). デフォルト値 0 の場合はデータが送信さるまで無制限.
restart整数値送信プロセスの再起動間隔(sec). デフォルト値は 604800、0 の場合は再起動しない.
hostaddr文字列接続先IP アドレス. (MAXHOSTNAMELEN)
protocol文字列接続プロトコル 'tcp' 又は 'ssl' を指定.デフォルト値は 'tcp'.
port整数値接続先ポート番号. デフォルト値は 5432.
sslmode文字列PostgreSQL のSSL モード. デフォルト値は 'verify-full'. (12byte)
pg_type整数値postgresql/server/catalog/pg_type.h に定義されるOID. デフォルト値は114(JSONOID).
dbname文字列データベース名. デフォルト値は 'pd_repeater'. (32byte)
username文字列接続に用いるユーザー名. (32byte)
password文字列接続に持ちるパスワード. (32byte)
truststore文字列SSL 接続に用いる Root CA 証明書ファイルのパス名. (MAXPATHLEN)
keystore文字列SSL 接続に用いる証明書ファイルのパス名. (MAXPATHLEN)
privatekey文字列SSL 接続に用いる秘密鍵ファイルのパス名. (MAXPATHLEN)

MySQL (mysql)

MySQL (mysql) の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値はfalse.
interval整数値サーバへの送信間隔(sec). デフォルト値は 30.
expier整数値キャッシュのデータ保持時間(sec). デフォルト値 0 の場合はデータが送信さるまで無制限.
restart整数値送信プロセスの再起動間隔(sec). デフォルト値は 604800、0 の場合は再起動しない.
hostaddr文字列接続先IP アドレス. (MAXHOSTNAMELEN)
protocol文字列接続プロトコル 'tcp' 又は 'ssl' を指定. デフォルト値は' tcp'.
port整数値接続先ポート番号. デフォルト値は 3306.
dbname文字列データベース名. デフォルト値は 'pd repeater'. (32byte)
username文字列接続に用いるユーザー名. (32byte)
password文字列接続に持ちるパスワード. (32byte)
truststore文字列SSL 接続に用いる Root CA 証明書ファイルのパス名. (MAXPATHLEN)
keystore文字列SSL 接続に用いる証明書ファイルのパス名. (MAXPATHLEN)
privatekey文字列SSL 接続に用いる秘密鍵ファイルのパス名. (MAXPATHLEN)

汎用の Web サーバ(web)

汎用の Web サーバ(web) の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値はfalse.
interval整数値サーバへの送信間隔(sec). デフォルト値は 30.
expier整数値キャッシュのデータ保持時間(sec). デフォルト値 0 の場合はデータが送信さるまで無制限.
restart整数値送信プロセスの再起動間隔(sec). デフォルト値は 604800、0 の場合は再起動しない.
url文字列接続先URL. (MAXPATHLEN)
ssl_verify論理値サーバー証明書の検証を行うか否か. デフォルト値は false.
username文字列BASIC 認証用ユーザー名. 空の場合、認証は行わない. (32byte)
password文字列BASIC 認証用パスワード. 空の場合、認証は行わない. (32byte)
max_post_msize整数値最大ポストサイズ(Mbyte). デフォルト値は 1.
content_type文字列'Content-Type' を指定する. 'text/plain' もしくは'application/json' が指定された場合はペイロードの URL セーフエンコードを行わない. デフォルト値は無指定. (64byte)

Proxy を使用する場合は、環境変数 http_proxy 又は https_proxy に設定します。

Amazon AWS IoT (awsiot)

Amazon AWS IoT (awsiot) の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値はfalse.
interval整数値サーバへの送信間隔(sec). デフォルト値は 30.
expier整数値キャッシュのデータ保持時間(sec). デフォルト値 0 の場合はデータが送信さるまで無制限.
restart整数値送信プロセスの再起動間隔(sec). デフォルト値は 604800、0 の場合は再起動しない.
res_memory整数値常駐メモリの増加分の上限値(Mbyte). 上限値を超えると送信プロセスを再起動する. デフォルト値は 32.
host文字列接続先ホスト名. (MAXHOSTNAMELEN)
protocol文字列接続プロトコル 'tcp' 又は 'ssl' を指定. デフォルト値は 'tcp'.
port整数値接続先ポート番号. デフォルト値は 8883.
keepaliveinterval整数値MQTT の Keepalive 間隔(sec). デフォルト値は 10.
reliable論理値MQTT の Reliable. デフォルト値は true.
qos整数値MQTT の送信用 QoS, 0~2 を指定. デフォルト値は 0.
retained論理値MQTT の Retained. デフォルト値は false.
rcv_qos整数値MQTT の受信用 QoS, 0~2 を指定. デフォルト値は 1.
lwt論理値Last Will and Testament (LWT) を使用するか否か. デフォルト値は false.
lwt_qos整数値LWT の QoS, 0~2 を指定. デフォルト値は 0.
lwt_retained論理値LWT の Retained. デフォルト値は false.
rootCA文字列SSL 接続に用いる Root CA 証明書ファイルのパス名. (MAXPATHLEN)

Microsoft Azure Event Hubs (eventhub)

Microsoft Azure Event Hubs (eventhub) の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値はfalse.
interval整数値サーバへの送信間隔(sec). デフォルト値は 30.
expier整数値キャッシュのデータ保持時間(sec). デフォルト値 0 の場合はデータが送信さるまで無制限.
restart整数値送信プロセスの再起動間隔(sec). デフォルト値は 604800、0 の場合は再起動しない.
domain文字列接続先ドメイン名. デフォルト値は'servicebus.windows.net'. (MAX-HOSTNAMELEN)
namespace文字列接続先名前空間. (64byte)
port整数値接続先ポート番号. デフォルト値は 5671.

IBM Watson IoT for gateway (w4g)

IBM Watson IoT for gateway (w4g) の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値はfalse.
interval整数値サーバへの送信間隔(sec). デフォルト値は 30.
expier整数値キャッシュのデータ保持時間(sec). デフォルト値 0 の場合はデータが送信さるまで無制限.
restart整数値送信プロセスの再起動間隔(sec). デフォルト値は 604800、0 の場合は再起動しない.
res_memory整数値常駐メモリの増加分の上限値(Mbyte). 上限値を超えると送信プロセスを再起動する. デフォルト値は 32.
domain文字列接続先ドメイン名. デフォルト値は 'messag-ing.internetofthings.ibmcloud.com'. (MAXHOSTNAMELEN)
protocol文字列接続プロトコル'tcp' 又は'ssl' を指定. デフォルト値は 'tcp'.
port整数値接続先ポート番号. デフォルト値は 1883(TCP 接続時)又は 8883(SSL 接続時).
keepaliveinterval整数値MQTT の Keepalive 間隔(sec). デフォルト値は 10.
cleansession論理値MQTT の Clean session. デフォルト値は true.
reliable論理値MQTT の Reliable. デフォルト値は true.
qos整数値MQTT の送信用 QoS, 0~2 を指定. デフォルト値は 0.
retained論理値MQTT の Retained. デフォルト値は false.
rcv_qos整数値MQTT の受信用 QoS, 0~2 を指定. デフォルト値は 1.
lwt論理値Last Will and Testament (LWT) を使用するか否か. デフォルト値は false.
lwt_qos整数値LWT の QoS, 0~2 を指定. デフォルト値は 0.
lwt_retained論理値LWT の Retained. デフォルト値はfalse.
org_id文字列組織 ID. デフォルト値は 'quickstart'. (16byte)
gateway type文字列ゲートウェイタイプデフォルト値は 'sample'. (20byte)
gateway id文字列ゲートウェイID. (20byte)
event_id文字列イベントID. デフォルト値は 'sample'. (128byte)
lwt_event_id文字列LWT のイベント ID. デフォルト値は 'lwt'.
format_string文字列データーフォーマット. デフォルト値は 'json'. (16byte)
lwt_message文字列LWT の送信メッセージ. (128byte)
truststore文字列SSL 接続に用いる Root CA 証明書ファイルのパス名. (MAXPATHLEN)
keystore文字列SSL 接続に用いる証明書ファイルのパス名. (MAXPATHLEN)
privatekey文字列SSL 接続に用いる秘密鍵ファイルのパス名. (MAXPATHLEN)

Microsoft Azure IoT Hub(iothub)

Microsoft Azure IoT Hub(iothub) の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値はfalse.
interval整数値サーバへの送信間隔(sec). デフォルト値は 30.
expier整数値キャッシュのデータ保持時間(sec). デフォルト値 0 の場合はデータが送信さるまで無制限.
restart整数値送信プロセスの再起動間隔(sec). デフォルト値は 604800、0 の場合は再起動しない.
res_memory整数値常駐メモリの増加分の上限値(Mbyte). 上限値を超えると送信プロセスを再起動する. デフォルト値は 32.
domain文字列接続先ドメイン名. デフォルト値は 'azure-devices.net'. (MAXHOSTNAMELEN)
hub_name文字列接続先ハブ名. (64byte)
gw_host文字列ゲートウェイホスト名.( MAXHOSTNAMELEN)
tail_slash論理値MQTTトピックの末尾に'/'を付けるか否か. デフォルト値は true.
keepaliveinterval整数値MQTT の Keepalive 間隔(sec). デフォルト値は 10.
cleansession論理値MQTT の Clean session. デフォルト値はtrue.
reliable論理値MQTT の Reliable. デフォルト値は true.
qos整数値MQTT の送信用 QoS, 0~2 を指定. デフォルト値は 0.
retained論理値MQTT の Retained. デフォルト値は false.
rcv_qos整数値MQTT の受信用 QoS, 0~2 を指定. デフォルト値は 1.
lwt論理値Last Will and Testament (LWT) を使用するか否か. デフォルト値は false.
lwt_qos整数値LWT の QoS, 0~2 を指定. デフォルト値は 0.
lwt_retained論理値LWT の Retained. デフォルト値は false.
lwt_property_bag文字列LWT Property Bag. (256byte)
lwt_message文字列LWT の送信メッセージ. (128byte)
rootCA文字列X.509 認証に用いる Root CA 証明書ファイルのパス名. (MAXHOSTNAMELEN)

UNIXドメインソケット (lsocket)

UNIXドメインソケット (lsocket) の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値はfalse.
interval整数値サーバへの送信間隔(sec). デフォルト値は 30.
expier整数値キャッシュのデータ保持時間(sec). デフォルト値 0 の場合はデータが送信さるまで無制限.
restart整数値送信プロセスの再起動間隔(sec). デフォルト値は 604800、0 の場合は再起動しない.
root_path文字列送り先Unix ドメインソケットのルートパス名. 文字列の先頭が '@' の場合は abstract namespace と解釈する. デフォルト値は '/tmp'. (MAXPATHLEN)

KDDI IoT クラウド Standard(kddi_std)

KDDI IoTクラウドStandard(kddi_std) の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値はfalse.
interval整数値サーバへの送信間隔(sec). デフォルト値は 30.
expier整数値キャッシュのデータ保持時間(sec). デフォルト値 0 の場合はデータが送信さるまで無制限.
restart整数値送信プロセスの再起動間隔(sec). デフォルト値は 604800、0 の場合は再起動しない.
domain文字列接続先ドメイン名. デフォルト値は 'datalink.m2m-cloud-std.kddi.ne.jp'. (MAXHOSTNAMELEN)
ssl_verify論理値サーバー証明書の検証を行うか否か. デフォルト値は false.
port整数値接続先ポート番号. デフォルト値は 443.
termid文字列端末ID. (16byte)
username文字列BASIC 認証用ユーザー名. 空の場合、認証は行わない. (32byte)
password文字列BASIC 認証用パスワード. 空の場合、認証は行わない. (32byte)

Proxy を使用する場合は、環境変数 http_proxy 又は https_proxy に設定します。

NIFTY IoT Device Hub (nf_dvhub)

NIFTY IoT Device Hub (nf_dvhub) の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値はfalse.
interval整数値サーバへの送信間隔(sec). デフォルト値は 30.
expier整数値キャッシュのデータ保持時間(sec). デフォルト値 0 の場合はデータが送信さるまで無制限.
restart整数値送信プロセスの再起動間隔(sec). デフォルト値は 604800、0 の場合は再起動しない.
res_memory整数値常駐メモリの増加分の上限値(Mbyte). 上限値を超えると送信プロセスを再起動する. デフォルト値は 32.
host文字列接続先ホスト名. デフォルト値は 'iot-device.jp-east-1.mqtt.cloud.nifty.com' (MAXHOSTNAMELEN)
protocol文字列接続プロトコル 'tcp' 又は 'ssl' を指定. デフォルト値は 'tcp'.
keepaliveinterval整数値MQTT の Keepalive 間隔(sec). デフォルト値は 10.
reliable論理値MQTT の Reliable. デフォルト値は true.
qos整数値MQTT の送信用 QoS, 0~2 を指定. デフォルト値は 0.
rootCA文字列SSL 接続に用いる Root CA 証明書ファイルのパス名.

NIFTY IoT Device Hub は、2018年11月30日をもってサービスを終了しています。
また、NIFTY IoT Device Hub と DEVICEHUBは、異なるサービスであり、本設定オブジェクを用いてDEVICEHUBにデータを送ることはできません。

Plat'Home 独自仕様 Web サーバ(pd web)

Plat'Home 独自仕様 Web サーバ(pd web) の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値はfalse.
interval整数値サーバへの送信間隔(sec). デフォルト値は 30.
expier整数値キャッシュのデータ保持時間(sec). デフォルト値 0 の場合はデータが送信さるまで無制限.
restart整数値送信プロセスの再起動間隔(sec). デフォルト値は 604800、0 の場合は再起動しない.
url文字列接続先URL. (MAXPATHLEN)
ssl_verify論理値サーバー証明書の検証を行うか否か. デフォルト値は false.
poll_interval整数値PD Web ではメッセージの送信と同時に下流方向へのメッセージを取得するが、poll interval には送信すべきメッセージが存在しない場合を想定し、空の接続を起こす間隔(sec)を指定する. デフォルト値は 30.
username文字列BASIC 認証用ユーザー名. 空の場合、認証は行わない. (32byte)
password文字列BASIC 認証用パスワード. 空の場合、認証は行わない. (32byte)
max_post_msize整数値最大ポストサイズ(Mbyte). デフォルト値は 1.

Proxy を使用する場合は、環境変数 http_proxy 又は https_proxy に設定します。

Google Cloud IoT Core (iotcore)

Google Cloud IoT Core (iotcore) の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値はfalse.
interval整数値サーバへの送信間隔(sec). デフォルト値は 30.
expier整数値キャッシュのデータ保持時間(sec). デフォルト値 0 の場合はデータが送信さるまで無制限.
restart整数値送信プロセスの再起動間隔(sec). デフォルト値は 604800、0 の場合は再起動しない.
res_memory整数値常駐メモリの増加分の上限値(Mbyte). 上限値を超えると送信プロセスを再起動する. デフォルト値は 32.
host文字列接続先ホスト名(MAXHOSTNAMELEN)
port整数値接続先ポート番号. デフォルト値は 8883.
project_id文字列プロジェクトID. (32bytes)
cloud_region文字列Cloud リージョン. (16bytes)
keepaliveinterval整数値MQTT の Keepalive 間隔(sec). デフォルト値は 10.
cleansession論理値MQTT の Clean session. デフォルト値は true.
reliable論理値MQTT の Reliable. デフォルト値は true.
qos整数値MQTT の送信用 QoS, 0~2 を指定. デフォルト値は 0.
retained論理値MQTT の Retained. デフォルト値は false.
rcv_qos整数値MQTT の受信用 QoS, 0~2 を指定. デフォルト値は 1.
lwt論理値Last Will and Testament (LWT) を使用するか否か. デフォルト値は false.
lwt_qos整数値LWT の QoS, 0~2 を指定. デフォルト値は 0.
lwt_retained論理値LWT の Retained. デフォルト値は false.
lwt_message文字列LWT の送信メッセージ. (128byte)
rootCA文字列SSL 接続に用いるRoot CA 証明書ファイルのパス名. (MAXPATHLEN)

Google Cloud IoT Core については Google社より2023年8月16日をもってのサービス終了がアナウンスされています。

TCPソケット (ltcp)

TCPソケット (ltcp) の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値はfalse.
interval整数値サーバへの送信間隔(sec). デフォルト値は 30.
expier整数値キャッシュのデータ保持時間(sec). デフォルト値 0 の場合はデータが送信さるまで無制限.
restart整数値送信プロセスの再起動間隔(sec). デフォルト値は 604800、0 の場合は再起動しない.
ip_addr文字列接続先IP アドレス. デフォルト値は '127.0.0.1'. (16byte)
delimiter文字列メッセージのセパレータコード. デフォルト値は'0x00'. 例えば CRLF コードをセパレータとする場合は '0x0d0a'. (7byte)

Amazon AWS IoT [Websocket](awsiot_ws)

Amazon AWS IoT [Websocket](awsiot_ws) の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値はfalse.
interval整数値サーバへの送信間隔(sec). デフォルト値は 30.
expier整数値キャッシュのデータ保持時間(sec). デフォルト値 0 の場合はデータが送信さるまで無制限.
restart整数値送信プロセスの再起動間隔(sec). デフォルト値は 604800、0 の場合は再起動しない.
res_memory整数値常駐メモリの増加分の上限値(Mbyte). 上限値を超えると送信プロセスを再起動する. デフォルト値は 32.
host文字列接続先ホスト名. (MAXHOSTNAMELEN)
port整数値接続先ポート番号. デフォルト値は 443.
keepaliveinterval整数値MQTT の Keepalive 間隔(sec). デフォルト値は 10.
reliable論理値MQTT の Reliable. デフォルト値は true.
qos整数値MQTT の送信用 QoS, 0~2 を指定. デフォルト値は 0.
retained論理値MQTT の Retained. デフォルト値は false.
rcv_qos整数値MQTT の受信用 QoS, 0~2 を指定. デフォルト値は 1.
lwt論理値Last Will and Testament (LWT) を使用するか否か. デフォルト値は false.
lwt_qos整数値LWT の QoS, 0~2 を指定. デフォルト値は 0.
lwt_retained論理値LWT の Retained. デフォルト値は false.
accessid文字列アクセスID. (128byte)
accesskey文字列アクセスキー. (128byte)

Proxy を使用する場合は、環境変数 http_proxy 又は https_proxy に設定します。

Microsoft Azure IoT Hub[Websocket] (iothub_ws)

Microsoft Azure IoT Hub[Websocket] (iothub_ws) の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値はfalse.
interval整数値サーバへの送信間隔(sec). デフォルト値は 30.
expier整数値キャッシュのデータ保持時間(sec). デフォルト値 0 の場合はデータが送信さるまで無制限.
restart整数値送信プロセスの再起動間隔(sec). デフォルト値は 604800、0 の場合は再起動しない.
res_memory整数値常駐メモリの増加分の上限値(Mbyte). 上限値を超えると送信プロセスを再起動する. デフォルト値は 32.
domain文字列接続先ドメイン名. デフォルト値は 'azure-devices.net'. (MAXHOSTNAMELEN)
hub_name文字列接続先ハブ名. (64byte)
keepaliveinterval整数値MQTT の Keepalive 間隔(sec). デフォルト値は 10.
cleansession論理値MQTT の Clean session. デフォルト値はtrue.
reliable論理値MQTT の Reliable. デフォルト値は true.
qos整数値MQTT の送信用 QoS, 0~2 を指定. デフォルト値は 0.
retained論理値MQTT の Retained. デフォルト値は false.
rcv_qos整数値MQTT の受信用 QoS, 0~2 を指定. デフォルト値は 1.
lwt論理値Last Will and Testament (LWT) を使用するか否か. デフォルト値は false.
lwt_qos整数値LWT の QoS, 0~2 を指定. デフォルト値は 0.
lwt_retained論理値LWT の Retained. デフォルト値は false.
lwt_property_bag文字列LWT Property Bag. (256byte)
lwt_message文字列LWT の送信メッセージ. (128byte)

Proxy を使用する場合は、環境変数 http_proxy 又は https_proxy に設定します。

ダミー出力 (dummy)

ダミー出力 (dummy) の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値はfalse.
interval整数値サーバへの送信間隔(sec). デフォルト値は 30.
expier整数値キャッシュのデータ保持時間(sec). デフォルト値 0 の場合はデータが送信さるまで無制限.
restart整数値送信プロセスの再起動間隔(sec). デフォルト値は 604800、0 の場合は再起動しない.
log論理値ペイロードとそのサイズのログ出力を行う. デフォルト値は false.

SoftBank IoT (sbiot)

SoftBank IoT (sbiot) の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値はfalse.
interval整数値サーバへの送信間隔(sec). デフォルト値は 30.
expier整数値キャッシュのデータ保持時間(sec). デフォルト値 0 の場合はデータが送信さるまで無制限.
restart整数値送信プロセスの再起動間隔(sec). デフォルト値は 604800、0 の場合は再起動しない.
res_memory整数値常駐メモリの増加分の上限値(Mbyte). 上限値を超えると送信プロセスを再起動する. デフォルト値は 32.
host文字列接続先ホストをIP アドレス又は FQDN で指定. (MAXHOSTNAMELEN)
protocol文字列接続プロトコル 'tcp' 又は 'ssl' を指定. デフォルト値は 'ssl'.
port整数値接続先ポート番号. デフォルト値は 8883.
keepaliveinterval整数値MQTT の Keepalive 間隔(sec). デフォルト値は 10.
cleansession論理値MQTT の Clean session. デフォルト値は true.
reliable論理値MQTT の Reliable. デフォルト値は true.
qos整数値MQTT の送信用 QoS, 0~2 を指定. デフォルト値は 0.
retained論理値MQTT の Retained. デフォルト値は false.
rcv_qos整数値MQTT の受信用 QoS, 0~2 を指定. デフォルト値は 1.
resp論理値応答出力を受け取るか否か. デフォルト値は false.
cloud_id文字列MQTT の送信トピックに与えられる送信先クラウド名. デフォルト値は 'CSE1000'. (64byte)
client_id文字列MQTT 接続に用いる Client ID. (96byte)
ae_id文字列接続に用いる SoftBank IoT の AE-ID. (64byte)
password文字列パスワード認証に用いるパスワード. (128byte)
asset文字列接続に用いる SoftBank IoT のアセット名. (64byte)
truststore文字列SSL 接続に用いる Root CA 証明書ファイルのパス名. (MAXPATHLEN)
keystore文字列SSL 接続に用いる証明書ファイルのパス名. (MAXPATHLEN)
privatekey文字列SSL 接続に用いる秘密鍵ファイルのパス名. (MAXPATHLEN)

SoftBank IoT に関わる実装は、SoftBank IoT プラットフォームネットワーク接続仕様(Rev.1.1.1)に準拠し「SoftBankスマ可視化専用クラウド」の仕様に合わせて実装されています。

FTP サーバ(ftp)

FTP サーバ (ftp)の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値はfalse.
interval整数値サーバへの送信間隔(sec). デフォルト値は 30.
expier整数値キャッシュのデータ保持時間(sec). デフォルト値 0 の場合はデータが送信さるまで無制限.
restart整数値送信プロセスの再起動間隔(sec). デフォルト値は 604800、0 の場合は再起動しない.
url文字列'ftp://' から始まる接続先 URL. (MAXPATHLEN)
username文字列接続に用いるユーザー名. (32byte)
password文字列パスワード認証に用いるパスワード. (32byte)
per_device論理値デバイス毎にファイル名を変えて送信する. デフォルト値は false.
fn_prefix文字列ファイル名のプリフィック. 'per_device' キーが false の時のみ有効. (64byte).
fn_suffix文字列ファイル名のサフィック. 'per_device' キーが false の時のみ有効. (64byte).
fn_time文字列ファイル名のプリフィックとサフィックの間に挿入される PD Repeater がデータを受け取った時刻文字列のの仕様. 'none'(挿入無し), 'oldest'(最古), 'latest'(最新), 'both'(両方) のいずれか. 'oldest' 又は 'latest' 場合は 'CCyymmddHHMMSS'、'both' の場合は、 'CCyymmddHHMMSS-CCyymmddHHMMSS'.

FTPサーバに関わる実装は、2020年6月現在試験的なもので、設定オブェクトについては予告なく変更される場合があります。

devices オブジェクト

キーデータ型説明
localname文字列デバイスのローカル名(デバイス番号). (32byte)
bind文字列データを受け取るソケット名. 文字列の先頭が '@' の場合は abstract namespace と解釈します. 空の場合は、デフォルト値 '@/pd_repeater/<localname>.sock' が設定されます.
push_to文字列制御メッセージの送り先ソケット名. 文字列の先頭が '@' の場合は abstract namespace と解釈します. 空の場合は、デフォルト値 '@/pd_handler/<localname>'.sock が設定されます.
buffer_size整数値データのバッファサイズ(byte). デフォルト値は 4096
truncate実数値データを間引くための入力データを受け付けない時間(msec). デフォルト値 0 の場合は間引かない.
receive論理値クラウドからメッセージを受け取る(下流方向制御) か否か. デフォルト値は false.
pd_exJSON objPD Exchenge 固有の設定オブジェクト
mqttJSON obj汎用のMQTT ブローカー固有の設定オブジェクト
w4dJSON objIBM Watson IoT for device 固有の設定オブジェクト
kinesisJSON objAmazon Kinesis 固有の設定オブジェクト
pgsqlJSON objPostgreSQL データベース固有の設定オブジェクト
mysqlJSON objMySQL データベース固有の設定オブジェクト
webJSON obj汎用のWeb サーバ固有の設定オブジェクト
awsiotJSON objAmazon AWS IoT 固有の設定オブジェクト
eventhubJSON objMicrosoft Azure Event Hubs 固有の設定オブジェクト
w4gJSON objIBM Watson IoT for gateway 固有の設定オブジェクト
iothubJSON objMicrosoft Azure IoT Hub 固有の設定オブジェクト
lsocketJSON objUnix ドメインソケットへデータを送るための固有の設定オブジェクト
kddi_stdJSON objKDDI IoT クラウド Standard 固有の設定オブジェクト
nf_dvhubJSON objNIFTY IoT Device Hub 固有の設定オブジェクト
pd_webJSON objPlat'Home 独自仕様の Web サーバ固有の設定オブジェクト
iotcoreJSON objGoogle Cloud IoT Core 固有の設定オブジェクト
ltcpJSON objTCP ソケット固有の設定オブジェクト
awsiot_wsJSON objAmazon AWS IoT へ MQTT over Websocket でデータを送るための固有の設定オブジェクト
iothub_wsJSON objMicrosoft Azure IoT Hub へ MQTT over Websocket でデータを送るための固有の設定オブジェクト
dummyJSON objダミー出力 固有の設定オブジェクト
sbiotJSON objSoftBank IoT へデータを送るための固有の設定オブジェクト
ftpJSON objFTP サーバへデータを送るための固有の設定オブジェクト

クラウドインデックスキーについては servers オブジェクトと同様に同文字列に '_0' 又は'_1', '_2', '_3' を付加した文字列(例えば 'pd_ex' について、'pd_ex_0', 'pd_ex_1', 'pd_ex_2', 'pd_ex_3) を用いることが可能です。

PD Exchenge(pd_ex)

PD Exchenge(pd_ex) 固有の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値は false.
deid_suffix文字列PD Exchange のデバイスID サフックス. (9byte)

汎用のMQTT ブローカー(mqtt)

汎用のMQTT ブローカー(mqtt) 固有の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値は false.
unique_id文字列ユニークID. (20byte)

IBM Watson IoT for device (w4d)

IBM Watson IoT for device (w4d) 固有の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値は false.
device_id文字列デバイスID. (20byte)
device_type文字列デバイスタイプ. (20byte)
password文字列パスワード. (128byte)
keystore文字列SSL 接続に用いる証明書ファイルのパス名. (MAXPATHLEN)
privatekey文字列SSL 接続に用いる秘密鍵ファイルのパス名. (MAXPATHLEN)

Amazon Kinesis (kinesis)

Amazon Kinesis (kinesis) 固有の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値は false.

PostgreSQL (pgsql)

PostgreSQL (pgsql) 固有の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値は false.
table文字列データを書き込むテーブル名. デフォルト値は 'buf'.
colum文字列データを書き込むカラム名. デフォルト値は 'jsonObj'.

MySQL (mysql)

MySQL (mysql) 固有の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値は false.
table文字列データを書き込むテーブル名. デフォルト値は 'buf'.
colum文字列データを書き込むカラム名. デフォルト値は 'jsonObj'.

汎用のWeb サーバ(web)

汎用のWeb サーバ(web) 固有の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値は false.

Amazon AWS IoT (awsiot)

Amazon AWS IoT (awsiot) 固有の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値は false.
client_id文字列クライアントID. (20byte)
thing_name文字列Device Shadowsに用いるthingName. (128byte)
shadow_name文字列Device Shadowsに用いるshadowName. (128byte)
device_shadow論理値Device Shadowsを使用するかの設定。デフォルト値は true.
classic_shadow論理値Device Shadowsをクラシックとして運用するかの設定。デフォルト値は true.
active_shadow論理値Device ShadowsのshadowNameを不定で受信するかのするかの設定。デフォルト値は false.
topic文字列MQTT の送信トピック. (MAXPATHLEN)
rcv_topic文字列MQTT の受信トピック. (MAXPATHLEN)
lwt_topic文字列LWT の送信トピック. (MAXPATHLEN)
lwt_message文字列LWT の送信メッセージ. (128byte)
cert文字列SSL 接続に用いる証明書ファイルのパス名. (MAXPATHLEN)
privatekey文字列SSL 接続に用いる秘密鍵ファイルのパス名. (MAXPATHLEN)

Microsoft Azure Event Hubs (eventhub)

Microsoft Azure Event Hubs (eventhub) 固有の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値は false.
hub_name文字列Event Hubs 名. (64byte)
sas_policy文字列SAS ポリシー. (64byte)
sas_key文字列SAS キー. (64byte)
propertiesJSON objAMQP のプロパティを JSONオブジェクト文字列で指定する. 配列型とオブジェクト型を含むことはできない.

IBM Watson IoT for gateway (w4g)

IBM Watson IoT for gateway (w4g) 固有の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値は false.
device_id文字列デバイスID. (20byte)
device_type文字列デバイスタイプ. (20byte)

Microsoft Azure IoT Hub(iothub)

Microsoft Azure IoT Hub(iothub) 固有の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値は false.
device_id文字列デバイスID. (128byte)
device_key文字列デバイスキー. (65byte)
transparent論理値IoT Edge を透過モードで動作させるか否か. デフォルト値は false
module_id文字列モジュールID. (64byte). 透過モード時は無視.
cert文字列X.509 認証に用いる証明書ファイルのパス名. (MAXPATHLEN)
privatekey文字列X.509 認証に用いる秘密鍵ファイルのパス名. (MAXPATHLEN)

UNIX ドメインソケット (lsocket)

UNIXドメインソケット (lsocket) 固有の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値は false.

KDDI IoT クラウド Standard (kddi_std)

KDDI IoT クラウドStandard (kddi std) 固有の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値は false.

NIFTY IoT Device Hub (nf_dvhub)

NIFTY IoT Device Hub (nf_dvhub) 固有の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値は false.
event_type文字列イベントタイプ. (20byte)
device_id文字列デバイスID. (20byte)
device_api_key文字列デバイスAPI キー. (169byte)

NIFTY IoT Device Hub は、2018年11月30日をもってサービスを終了しています。
また、NIFTY IoT Device Hub と DEVICEHUBは、異なるサービスであり、本設定オブジェクを用いてDEVICEHUBにデータを送ることはできません。

Plat'Home 独自仕様 Web サーバ(pd web)

Plat'Home 独自仕様 Web サーバ(pd web) 固有の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値は false.
id文字列クライアントID. (128byte)
key文字列トークン認証に用いる文字列(アクセスキー). (128byte)

Google Cloud IoT Core (iotcore)

Google Cloud IoT Core (iotcore) 固有の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値は false.
registry_id文字列レジストリID. (32byte)
device_id文字列デバイスID. (32byte)
jwt_algorithm文字列JWT アルゴリズム. 'RS256', 'ES256' のいずれか. (6byte)
cert文字列SSL 接続に用いる証明書ファイルのパス名. (MAXPATHLEN)
privatekey文字列SSL 接続に用いる秘密鍵ファイルのパス名. (MAXPATHLEN)

Google Cloud IoT Core については Google社より2023年8月16日をもってのサービス終了がアナウンスされています。

TCPソケット (ltcp)

TCPソケット (ltcp) 固有の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値は false.
port整数値接続先ポート番号. デフォルト値は 49152(TCP 接続時).

Amazon AWS IoT[Websocket](awsiot_ws)

Amazon AWS IoT[Websocket](awsiot_ws) 固有の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値は false.
client_id文字列クライアントID. (20byte)
thing_name文字列Device Shadowsに用いるthingName. (128byte)
shadow_name文字列Device Shadowsに用いるshadowName. (128byte)
device_shadow論理値Device Shadowsを使用するかの設定。デフォルト値は true.
classic_shadow論理値Device Shadowsをクラシックとして運用するかの設定。デフォルト値は true.
active_shadow論理値Device ShadowsのshadowNameを不定で受信するかのするかの設定。デフォルト値は false.
topic文字列MQTT の送信トピック. (MAXPATHLEN)
rcv_topic文字列MQTT の受信トピック. (MAXPATHLEN)
lwt_topic文字列LWT の送信トピック. (MAXPATHLEN)
lwt_message文字列LWT の送信メッセージ. (128byte)

Microsoft Azure IoT Hub[Websocket](iothub_ws)

Microsoft Azure IoT Hub[Websocket](iothub_ws) 固有の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値は false.
device_id文字列デバイスID. (128byte)
device_key文字列デバイスキー. (65byte)

ダミー出力(dummy)

ダミー出力(dummy) 固有の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値は false.

SoftBank IoT(sbiot)

SoftBank IoT(sbiot) 固有の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値は false.
container文字列SoftBank IoT への接続に用いるコンテナ名. (64byte)

SoftBank IoT に関わる実装は、SoftBank IoTプラットフォームネットワーク接続仕様(Rev.1.1.1)に準拠し「SoftBankスマ可視専用クラウド」の仕様に合わせて実装されています。

FTP サーバ(ftp)

FTPサーバ (ftp) 固有の設定オブジェクト
キーデータ型説明
enable論理値デフォルト値は false.
fn_prefix文字列ファイル名のプリフィック. 'per_device' キーが true の時のみ有効. (64byte)
fn_suffix文字列ファイル名のサフィック. 'per_device' キーが true の時のみ有効. (64byte)
fn_time文字列ファイル名のプリフィックとサフィックの間に挿入される PD Repeater がデータを受け取った時刻文字列のの仕様. 'none'(挿入無し), 'oldest'(最古), 'latest'(最新), 'both'(両方) のいずれか. 'oldest' 又は 'latest' 場合は 'CCyymmddHHMMSS'、'both' の場合は、'CCyymmddHHMMSS-CCyymmddHHMMSS'.

FTPサーバに関わる実装は、2020年6月現在試験的なもので、設定オブェクトについては予告なく変更される場合があります。

下流方向メッセージ

メッセージフォーマット

PD Repeater が下流のモジュールに転送するメッセージのフォーマットを示します。

メッセージフォーマット
Cloud ID
(1Byte)
Sub ID
(1Byte)
Header
Size
(2Byte)
MD5
(16Byte)
                Header                                Payload                

メッセージフォーマットの説明

フィールド名説明
Cloud ID (1Byte)PD Repeater上の便宜上割り当てている送受信先プロトコルの番号
Sub ID (1Byte)PD Repeater上の便宜上割り当てている送受信先のサブ番号(0x00~0x03)
Header Size (2Byte)PD Reperaterで付加されたHeaderのサイズ. バイトオーダーはリトルエンディアン.
MD5 (16Byte)制御メッセージのハッシュ値
HeaderPD Reperaterで付加されたMQTTのトピックやHTTPの応答ヘッダ
Payloadクラウドから送られて来た制御メッセージ

Cloud ID とヘッダー

Cloud IDとヘッダーの内容を示します。

Cloud ID とヘッダーの内容

クラウドCloud ID下流方向制御ヘッダーの内容
PD Exchange0x00対応Command ID, ApplicationID
MQTTサーバ0x01対応MQTT受信トピック
Watson IoT for Device0x02対応MQTT受信トピック *1
Amazon Kinesis0x03
PostgreSQLサーバ0x04
MySQLサーバ0x05
WEBサーバ0x06
AWS IoT0x07対応MQTT受信トピック
MS Azure Event hubs0x08
Watson IoT for Gateway0x09対応MQTT受信トピック *1
MS Azure IoT Hub0x0a対応MQTT受信トピック
予約0x0b
ドメインソケット0x0c
KDDI IoT クラウドStandard0x0d
IoT デバイスハブ0x0e対応MQTT受信トピック*2
PH社独自仕様WEBサーバ0x0f対応HTTP応答ヘッダー
Google IoT Core0x10対応MQTT受信トピック
TCP0x11対応接続先IPアドレスとポート番号 *3
AWS IoT[Websocket]0x12対応MQTT受信トピック
MS Azure IoT Hub[Websocket]0x13対応MQTT受信トピック
ダミー出力0x14
SoftBankスマ可視専用クラウド0x15対応MQTT受信トピックと oneM2M のJSON制御用オブジェクト*4
予約0x16
FTPサーバ0x17
予約0x18
予約0x19
予約0x1a
予約0x1b
  1. Watson IoT については、ペイロードを 'd' キーの JSON オブジェクトとしているため、ハッシュ値(MD5)を得た後、デコードし 'd' キーの JSON オブジェクトのみを制御メッセージとして出力しています。
  2. IoT デバイスハブについては、ペイロードを 'parameters' キーのJSONオブジェクトとしているため、ハッシュ値(MD5)を得た後、デコードし 'parameters' キーの JSON オブジェクトのみを制御メッセージとして出力しています。
  3. TCPの接続先IPアドレスとポート番号は、次のJSON文字列で付加されます。
    { "ip_addr": "<IP address>", "port": <port> }
  4. SoftBank IoT については、oneM2M 仕様のペイロードから 'con' キーの JSON オブジェクトのみを出力し、これを除く JSON オブジェクトをMQTT 受信トピック文字列に連結しヘッダーとしています。

デバイス制御方式に依存した送信メッセージ構文

IoT HubのDevice TwinsやAWS IoTのDevice Shadow の制御においては、MQTTプロトコルのトピックを用います。
このためPD Repeaterでは、IoT HubとAWS IoTについて送信メッセージ(PDReperterへの入力)の構文にルールを設けMQTTプロトコルのトピックを制御します。
なお、各送信メッセージをPD Repeaterが待ち受けしているUnix Domainソケットに対して書き込むことで対応の処理が行われます。

MS Azure IoT Hubの送信メッセージ構文

IoT HubのDevice TwinsとDirect Methodをサポートするため、次の構文が用意されています。

Device Twinsのプロパティを取得する :
@GET <Request ID>
Device Twinsのプロパティの更新を通知する :
@PATCH <Request ID>;{<Reported>}
Direct Methodに対する応答 :
@RES <Request ID>,<Status Code>;{<Any Payload>}

ここで、

<Request ID> は、
Device Twinsもしくは、Direct Method のリクエストID
<Reported>は、
Device Twins のreportedプロパティ(JSONオブジェクト)
<Status Code> は、
Direct Methodの実行ステータスコード、正常時は 200.
<Any Payload> は、
Direct Methodに対する応答ペイロード(JSONオブジェクト)
です。

これらの機能を利用するためには、 IoT Hub からの下流方向メッセージ(Device Twins, Direct Method)を処理するアプリケーションの開発が必要となります。

AWS IoTの送信メッセージ構文

AWS IoT の Device Shadowをサポートするため、次の構文が用意されています。

Device Shadowの取得 :
@GET {}
Device Shadowの取得(shadowName指定) :
@GET <shadowName>;{}
Device Shadowの更新 :
@UPDATE {"state":{"reported": <Reported>} }
Device Shadowの更新(shadowName指定) :
@UPDATE <shadowName>;{"state":{"reported": <Reported>} }
Device Shadowの削除 :
@DELETE {}
Device Shadowの削除(shadowName指定) :
@DELETE <shadowName>;{}

ここで、

<Reported> は、
Device Shadow のreportedプロパティ(JSONオブジェクト)
です。

モノの名前thingNameと(shadowNameを指定しない書式を用いた場合の)shadowNameは、AWS IoT(awsiot)又は AWS IoT[Websocket](awsiot_ws)に設定された値が用いられます。
shadowNameを指定する書式を用いる場合は、AWS IoT(awsiot)又は AWS IoT[Websocket](awsiot_ws)の 'active_shadow' を有効に設定して下さい。

また、AWS IoTサービスからdesiredプロパティを受け取るためには、 AWS IoT からの下流方向メッセージを処理するアプリケーションの開発が必要となります。

MQTTサーバーの送信メッセージ構文

MQTTサーバーにおいては、メッセージ毎にトピックを柔軟に変更することができます。

MQTTトピックの変更 :
@TOPIC <topic>;{<Any Payload>}
MQTTトピック ユニークIDの変更 :
@UNIQUE_ID <unique id>;{<Any Payload>}
MQTTトピック プレフィックスの変更 :
@TOPIC_PREFIX <topic prefix>;{<Any Payload>}

Plat'Home 独自仕様 WEBサーバ

HTTPヘッダー

PD Webで規定されているHTTPヘッダー

HTTPヘッダー内容
X-Pd-Web-VersionPD Web の仕様のバージョン番号
X-Pd-Web-IdクライアントのID
X-Pd-Web-TimeRFC3339準拠のタイムスタンプ
X-Pd-Web-Md5ハッシュ値
X-Pd-Web-Signatureヘッダ情報と鍵(Key)から作成されたハッシュ値
Content-Typeapplication/json;charset=UTF-8

トークン

PD Repeaterで作成されるリクエストヘッダのトークン(X-Pd-Web-Signature)は、Webサーバーにおいて次のPHPスクリプトにより再生できます。

$hash_hmac_data =
$_SERVER['HTTP_X_PD_WEB_VERSION'] .
$_SERVER['HTTP_X_PD_WEB_ID'] .
$_SERVER['HTTP_X_PD_WEB_TIME'] .
$_SERVER['HTTP_X_PD_WEB_MD5'];
$signature = hash_hmac ('sha256', $hash_hmac_data, $key, false);

ここで $keyは、は $_SERVER['HTTP_X_PD_WEB_ID'] と対をなす予めWebサーバーに保存された鍵(Key)となります。 再生した $signature と $_SERVER['HTTP_X_PD_WEB_SIGNATURE'] を比較することで認証します。

応答ヘッダーのトークン(X-Pd-Web-Signature)は、Webサーバーにおいて次のPHPスクリプトにより作成します。

$tm = localtime();
$timestamp = sprintf("%04d-%02d-%02dT%02d:%02d:%02d.000+09:00",
$tm[5]+1900,$tm[4]+1,$tm[3],$tm[2],$tm[1],$tm[0]);
$hash_hmac_data = '1.0' . $_SERVER['HTTP_X_PD_WEB_ID'] . $timestamp .
md5($payload) . $_SERVER['HTTP_X_PD_WEB_SIGNATURE'];
$signature = hash_hmac ('sha256', $hash_hmac_data, $key, false);

ここで、$payload は、ペイロードの文字列、送信すべき文字列(下流方向の制御メッセージ)が無い場合は、$payload=""; とします。 リクエストヘッダのトークンとは異なり、被署名文字列に PD Repeater から送られて来たリクエストヘッダのトークン($_SERVER['HTTP_X_PD_WEB_SIGNATURE'])が、含まれる点に注意して下さい。

Webサーバーの実装例(PHPスクリプト)

<?php
/*
* 本 PHP スクリプトは PD Repeater の PD Web を利用するための、
* サーバ側 PHP スクリプトのサンプルです.
*
* 本スクリプトを動作させるためには、次の SQL構文で作成された SQLite3 データベース
* (スクリプト中の $db_file)が必要となります.
*
* CREATE TABLE client (id TEXT, key TEXT, flags INTEGER, payload BLOB, md5 TEXT);
* CREATE INDEX index_client ON client (id);
*
* ここで、id は、各センサーデバイス毎に設定する PD Web の ID, key はトークンを
* 作成するための鍵、contens は PD Repeater を介して各センサーデバイスへ送信する
* JSON 文字列(ペイロード)、
* md5 は JSON文字列のMD5ハッシュ値、flags はペイロードの送信状態を示すコードで
* 0:送信済、1:処理中、2:未送信 を意味します.
*
* 以下に初期値の設定例を示します.
*
* INSERT INTO client(id, key, flags, payload, md5)
* VALUES('id00', 'key00', 0, '{"any_key":"any_value"}',
* 'd29e8a13452e5bc5218d9df7e6ea991f');"
* INSERT INTO client(id, key, flags, payload, md5)
* VALUES('id01', 'key10', 0, '{"any_key":"any_value"}',
* 'd29e8a13452e5bc5218d9df7e6ea991f');"
*
* ここで、d29e8a13452e5bc5218d9df7e6ea991 は、'{"any_key":"any_value"}' の MD5値です.
* Linux OS では、次のコマンドで取得することができます.
*
* echo -n '{"any_key":"any_value"}' | md5sum
*
* ペイロードを送信するには SQLの UPDATEを用いて flags を 2:未送信 に変更します.
*
* UPDATE client SET flags = 2 WHERE id = 'id00';
*
* 勿論ペイロードとMD5値を合わせてセットすることも可能です.
*
* UPDATE client
* SET flags = 2,
* payload = '{"any_key":"new_value"}',
* md5 = '94f030ebd7bed4a5ee08fc6fa75ae64e'
* WHERE id = 'id00';
*
* 送信を終えるを PHP スクリプトは flag を 1 に更新し、'reply_to' キーを含む
* 応答ペイロードを待ちます.
*
* 応答ペイロードの例
*
* {"reply_to":"94f030ebd7bed4a5ee08fc6fa75ae64e","result":"done"}
*
* 応答ペイロードは PD Repeater を介してペイロードを受け取る各センサーデバイス
* (のハンドラ)がPD Repeater 介して返すものです.
* PD Agent や PD Handler Modbus は 'reply_to' キーで payload の MD5値をハンドリング
* しますが、独自のハンドラを用いる場合は、独自の応答ペイロードとすることも可能です.
*
* 応答ペイロード受け取ると PHP スクリプトは、データベース上の md5 と reply_to の値を比較し、
* flag を 0 に更新します.
* 受信ペイロードに応答ペイロードが含まれていない場合、PHP スクリプトは flag を 2 に戻し、
* 再送します.
*
*/
$dump_file = '/tmp/dump.txt';
$db_file = '/tmp/pd_web.db';
/* HTTP ヘッダーの確認 */
if (!(isset($_SERVER['HTTP_X_PD_WEB_VERSION']) &&
isset($_SERVER['HTTP_X_PD_WEB_ID']) &&
isset($_SERVER['HTTP_X_PD_WEB_TIME']) &&
isset($_SERVER['HTTP_X_PD_WEB_MD5']) &&
isset($_SERVER['HTTP_X_PD_WEB_SIGNATURE']))) {
/* HTTPヘッダーが不正な場合 Bad Request 400 を返す. */
http_response_code (400);
exit;
}
/* SQLite3 データーベースの読み込み */
/* 本コードはサンプルであるため、SQL インジェクション対策を省略しています.
実運用に利用するためには $_SERVER['HTTP_X_PD_WEB_ID'] のバリデーション
を十分行って下さい. */
$db = new SQLite3($db_file);
$query = sprintf("SELECT key, flags, payload, md5 FROM client WHERE id = '%s';",
$_SERVER['HTTP_X_PD_WEB_ID']);
$results = $db->query($query);
if(! $results) {
/* HTTP_X_PD_WEB_ID が存在しない場合は Unauthorized 401 を返す. */
http_response_code (401);
$db->close();
exit;
}
else {
$row = $results->fetchArray();
$key = $row['key'];
$flags = $row['flags'];
$payload_tx = $row['payload'];
$md5_tx = $row['md5'];
}
/* HTTP リクエストヘッダ内の所定の文字列とデータベース上の key を用い
signature を作成する */
$hash_hmac_data =
$_SERVER['HTTP_X_PD_WEB_VERSION'] .
$_SERVER['HTTP_X_PD_WEB_ID'] .
$_SERVER['HTTP_X_PD_WEB_TIME'] .
$_SERVER['HTTP_X_PD_WEB_MD5'];
$signature = hash_hmac ('sha256', $hash_hmac_data, $key, false);
/* HTTP 応答ヘッダ共通部の設定 */
date_default_timezone_set('Asia/Tokyo');
$tm = localtime();
$timestamp = sprintf("%04d-%02d-%02dT%02d:%02d:%02d.000+09:00",
$tm[5]+1900,$tm[4]+1,$tm[3],$tm[2],$tm[1],$tm[0]);
header('Pd_Web_Version: 1.0');
header('Pd_Web_Id: ' . $_SERVER['HTTP_X_PD_WEB_ID']);
header('Pd_Web_Time: ' . $timestamp);
header('Content-Type: application/json;charset=UTF-8');
/* リクエストヘッダの被署名文字列が VERSION.ID.TIME.MD5 で構成されているのに対し、
応答ヘッダの被署名文字列は、VERSION.ID.TIME.MD5.SIGNATURE
(SIGNATUREは、リクエストヘッダに含まれる文字列) で構成されている点に注意 */
if ($signature != $_SERVER['HTTP_X_PD_WEB_SIGNATURE']) {
/* HTTP_X_PD_WEB_SIGNATURE と signature が一致しない場合は、
401 Unauthorized を返す. */
header('Pd_Web_Md5: ' . md5(''));
$hash_hmac_data = '1.0' . $_SERVER['HTTP_X_PD_WEB_ID'] . $timestamp .
md5('') . $_SERVER['HTTP_X_PD_WEB_SIGNATURE'];
$signature = hash_hmac ('sha256', $hash_hmac_data, $key, false);
header('Pd_Web_Signature: ' . $signature);
http_response_code (401);
$db->close();
exit;
}
$payload = file_get_contents("php://input");
if(md5($payload) != $_SERVER['HTTP_X_PD_WEB_MD5']) {
/* payload の MD5値 と HTTP_X_PD_WEB_MD5 が一致しない場合は、
406 Not Acceptable を返す. */
header('Pd_Web_Md5: ' . md5(''));
$hash_hmac_data = '1.0' . $_SERVER['HTTP_X_PD_WEB_ID'] . $timestamp .
md5('') . $_SERVER['HTTP_X_PD_WEB_SIGNATURE'];
$signature = hash_hmac ('sha256', $hash_hmac_data, $key, false);
header('Pd_Web_Signature: ' . $signature);
http_response_code (406);
$db->close();
exit;
}
/* 受信ペイロードを HTTP リクエストヘッダと共に dump_file に格納する */
$fp = fopen($dump_file, 'a+');
fputs($fp, $_SERVER['HTTP_X_PD_WEB_VERSION']);
fputs($fp, "\n");
fputs($fp, $_SERVER['HTTP_X_PD_WEB_ID']);
fputs($fp, "\n");
fputs($fp, $_SERVER['HTTP_X_PD_WEB_TIME']);
fputs($fp, "\n");
fputs($fp, $_SERVER['HTTP_X_PD_WEB_MD5']);
fputs($fp, "\n");
fputs($fp, $_SERVER['HTTP_X_PD_WEB_SIGNATURE']);
fputs($fp, "\n");
fputs($fp, $_SERVER['CONTENT_LENGTH']);
fputs($fp, "\n");
fputs($fp, $payload);
fputs($fp, "\n");
fputs($fp, "\n");
fclose( $fp );
/* flags が 1 (処理中ペイロードあり) の場合、受信ペイロードから、
'reply_to' キーの値を取得 */
if($flags === 1) {
$json = mb_convert_encoding(
$payload, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN');
$array = json_decode($json,true);
if ($array !== NULL) {
/* 受信ペイロードは、JSONオブジェクトの配列です. */
$payload_count = count($array);
for($i=0;$i<$payload_count;$i++) {
if (isset($array[$i]['reply_to'])) {
/* 'reply_to' キーの値と md5_tx を比較 */
if($array[$i]['reply_to'] === $md5_tx) {
/* 一致している場合は flags を 0 にする */
$flags = 0;
}
else {
/* 一致していない場合は flags を 2 にする */
$flags = 2;
}
}
break;
}
if($i == $payload_count) {
/* 'reply_to' キーが存在しない場合は flags を 2 にする */
$flags = 2;
}
}
else {
/* JSON文字列で無い場合、flags を 2 にする */
$flags = 2;
}
/* データベースの flags を更新する. */
$query = sprintf("UPDATE client SET flags = %d WHERE id = '%s';" ,
$flags, $_SERVER['HTTP_X_PD_WEB_ID']);
$results = $db->query($query);
}
if($flags == 2) {
/* flags が 2 (送信ペイロードあり) の場合は、payload_tx を送り、200 OK を返す. */
header('Pd_Web_Md5: ' . md5($payload_tx));
$hash_hmac_data = '1.0' . $_SERVER['HTTP_X_PD_WEB_ID'] . $timestamp .
md5($payload_tx) . $_SERVER['HTTP_X_PD_WEB_SIGNATURE'];
$signature = hash_hmac ('sha256', $hash_hmac_data, $key, false);
header('Pd_Web_Signature: ' . $signature);
echo $payload_tx;
http_response_code (200);
/* flags を 1 (処理中ペイロードあり) に変更し、データベースの flags を更新する. */
$flags = 1;
$query = sprintf("UPDATE client SET flags = %d WHERE id = '%s';" ,
$flags, $_SERVER['HTTP_X_PD_WEB_ID']);
$results = $db->query($query);
}
else {
/* 200 OK を返す. */
header('Pd_Web_Md5: ' . md5(''));
$hash_hmac_data = '1.0' . $_SERVER['HTTP_X_PD_WEB_ID'] . $timestamp .
md5('') . $_SERVER['HTTP_X_PD_WEB_SIGNATURE'];
$signature = hash_hmac ('sha256', $hash_hmac_data, $key, false);
header('Pd_Web_Signature: ' . $signature);
http_response_code (200);
}
$db->close();
exit;
?>