3. 設定を変更する

Agentは、デバイスコネクターから受け取ったデータをintdashサーバーに送信します。その際、データをフィルタリングしたり、ネットワークの状態に応じてデータを再送したりできます。

基本の設定は、マネージャーの設定ファイル(例: manager.conf )で行います。

デバイスコネクターを使用するには、1つのデバイスコネクターにつき1つのデバイスコネクター用設定ファイルが必要です。 使用するデバイスコネクターの設定ファイルは、マネージャーの設定ファイル内で指定します。

../_images/conf-files.ja.png

図 1 マネージャーの設定ファイルとデバイスコネクターの設定ファイルの例

設定ファイルで指定できる項目の一覧については、 Agentの全設定 を参照してください。 ここでは、代表的な設定例を紹介します。

注釈

設定ファイル内の「logger」はデバイスコネクターを指します。

3.1. エッジ情報の設定

このAgentがintdashに接続する際に使用するエッジアカウントを設定します。設定は、intdashサーバーとの通信を担うクライアントごとに行います。以下の例のように、各クライアントの設定で、使用するエッジアカウントをUUIDで指定し、そのトークンを指定してください。

注釈

基本的に、1つのAgentのクライアントには同じエッジアカウントを使用してください。以下の例では、RealtimeクライアントとResendクライアントに同じエッジアカウントを設定しています。

エッジ情報の設定例

{
  "clients": [
    {
      "my_id": "f90f2b42-66a5-4a57-8e99-468c36ebb6f2",                # (1)
      "my_secret": "sEh9ZHPoKX8QYU-v0Noe0ZPzxGBF..........................iBn5fn_eFM", # (2)
      "type": "realtime",
      ...
    },
    {
      "my_id": "f90f2b42-66a5-4a57-8e99-468c36ebb6f2",                # (1)
      "my_secret": "sEh9ZHPoKX8QYU-v0Noe0ZPzxGBF..........................iBn5fn_eFM", # (2)
      "type": "resend",
      ...
    }
  ],
  ...
}

番号

フィールド

説明

(1)

my_id

このクライアントに割り当てるエッジUUID。

(2)

my_secret

認証用のクライアントシークレット。

注意

以前のバージョンのEdge Agentからアップデートした場合の注意

1.19.0よりも前のバージョンからアップデートした場合

Edge Agentバージョン1.19.0以降では、認証情報としてエッジUUIDとクライアントシークレットを使用することを基本としています。 クライアントシークレットを使うには、 manager.confclientsmy_secretauth_path の設定が必要です。

Edge Agent 1.19.0よりも前のバージョンで使っていた設定ファイル manager.conf を継続して使用する場合は、設定ファイルのひな型 /opt/vm2m/etc/manager.conf を参考にして、 my_secretauth_path を追加してください。 auth_path は、設定ファイルのひな型 /opt/vm2m/etc/manager.conf に含まれる設定をコピーして使用してください。

なお、エッジトークンを使用した認証も引き続き使用可能です。 エッジトークンを使用する場合、 my_secret の代わりに、旧来通り my_token としてエッジトークンを設定してください(Edge Agent 1.19.0よりも前のバージョンで使っていた設定ファイル manager.conf はそのまま使用できます)。

1.24.0よりも前のバージョンからアップデートした場合

Edge Agentバージョン1.24.0以降では、使用するプロジェクトを指定することができます。 プロジェクトを指定するには、 manager.confclientsproject_uuid を設定してください。

Edge Agent 1.24.0よりも前のバージョンで使っていた設定ファイル manager.conf を継続して使用する場合は、設定ファイルのひな型 /opt/vm2m/etc/manager.conf を参考にして、 project_uuid を追加してください。

なお、プロジェクトUUIDを設定していない場合にはGlobal Projectが使用されます。 Global Projectは、そのintdashドメイン内のすべてのユーザーおよびエッジがアクセスできる特別なプロジェクトです。

3.2. プリインストールされたデバイスコネクターを使用するための設定

プリインストールされたデバイスコネクター intdash-edge-logger を使用するには設定が必要です。

デバイスコネクターの設定は、マネージャーの設定ファイル(manager.conf)と、デバイスコネクターの設定ファイルの両方で行います。

起動するデバイスコネクターごとに設定ファイルを用意し、マネージャーの設定ファイルでも複数のデバイスコネクターを設定することで、 intdash-edge-logger を複数のプロセスとしてそれぞれ起動し、複数のデバイスからデータを収集することができます。

注釈

カメラから動画データを取得する方法について

プリインストールされたデバイスコネクターを使って動画データを取得する場合、以下の3つの方法があります。

  • Motion JPEGを出力できるカメラから、mjpegタイプのデバイスコネクターを使って取得する

  • H.264を出力できるカメラから、v4lh264タイプのデバイスコネクターを使って取得する

  • GStreamerからのH.264出力を、gstreamer_h264タイプのデバイスコネクターを使って取得する (カメラからのRAWデータ出力をGStreamerでH.264に変換し、それを取得する場合など)

カメラが出力するデータのフォーマットに従って、適切な方法を選択してください。

カメラが出力できるデータのフォーマットは、 v4l2-ctl コマンドをインストールすることにより確認することができます。

以下は、カメラデバイス /dev/video0 が出力できるフォーマットを確認するコマンドです。

$ v4l2-ctl -d /dev/video0 --list-formats

また、以下のコマンドにより、カメラが出力できる解像度とフレームレートも確認できます。

$ v4l2-ctl -d /dev/video0 --list-formats-ext

3.2.1. マネージャーの設定ファイル例(manager.conf)

マネージャーの設定ファイルでは、 loggers に、使用するデバイスコネクターの設定を書き込みます。

{
  "loggers": [
    {                                                   # (1)
      "path": "/opt/vm2m/sbin/intdash-edge-logger",     # (2)
      "conf": "/etc/opt/intdash/logger.conf.mjpeg",     # (3)
      "connections": [{
        "channel": 1,                                   # (4)
        "fifo_tx": "/var/run/intdash/logger_001.tx",    # (5)
        "fifo_rx": "/var/run/intdash/logger_001.rx"     # (6)
      }]
    },
    {                                                   # (7)
      "path": "/opt/vm2m/sbin/intdash-edge-logger",
      "conf": "/etc/opt/intdash/logger.conf.nmea",
      "connections": [{
        "channel": 2,
        "fifo_tx": "/var/run/intdash/logger_002.tx",
        "fifo_rx": "/var/run/intdash/logger_002.rx"
      }]
    },
    ...
  ],
  ...
}

番号

フィールド

説明

(1)

-

1つのデバイスコネクターとの接続を、1つのJSONオブジェクトで表現します。

(2)

path

プリインストールされたデバイスコネクターのフルパス。

(3)

conf

起動するデバイスコネクターの設定ファイル。ここでは例としてMotion JPEG用の設定 logger.conf.mjpeg を指定しています。

(4)

channel

このデバイスコネクターに設定するチャンネル(0-255)。デバイスコネクターから取得されたデータには、チャンネル番号が付加されます。チャンネル番号は他のデバイスコネクターと重複しないようにしてください。

(5)

fifo_tx

このデバイスコネクターが送信に使用するFIFOのパス。パスは他のデバイスコネクターと重複しないようにしてください。

(6)

fifo_rx

このデバイスコネクターが受信に使用するFIFOのパス。パスは他のデバイスコネクターと重複しないようにしてください。

(7)

-

2つ以上のデバイスコネクターを使用する場合は、ここから2つ目のデバイスコネクターの設定を行います。以下同様に設定します。

3.2.2. デバイスコネクターの設定ファイル例

3.2.2.1. mjpegタイプのデバイスコネクター設定例

mjpegタイプのデバイスコネクターは、Video4Linuxに対応したUVC(USB Video Class)カメラからMotion JPEGデータを取得します。 そのため、カメラがMotion JPEGを出力できる必要があります。

設定ファイル /etc/opt/intdash/logger.conf.mjpeg

{
  "type": "mjpeg",                                 # (1)
  "data_handler": {
    "path": "/dev/video0",                         # (2)
    "baudrate": 15,                                # (3)
    "camera_width": 320,                           # (4)
    "camera_height": 240,                          # (5)
    "camera_hwencodedelay_msec": 100               # (6)
  },
  "manager_client": {
    "tx_path": "/var/run/intdash/logger_XXX.tx",   # (7)
    "rx_path": "/var/run/intdash/logger_XXX.rx"    # (8)
  },
  "basetime": "/var/run/intdash/basetime",         # (9)
  "status": "/var/run/intdash/logger_XXX.stat"     # (10)
}

番号

フィールド

説明

(1)

type

デバイスコネクターのタイプ。mjpegタイプの場合は"mjpeg" とします。

(2)

path

デバイスパス

(3)

baudrate

フレームレート[fps]。フレームレート、画面幅、画面高さは、カメラが対応している組み合わせを設定してください。

(4)

camera_width

画面幅

(5)

camera_height

画面高さ

(6)

camera_hwencodedelay_msec

データ打刻のオフセット(カメラ処理時間) [msec]。例えば、 100 と設定すると、カメラ内での処理に100ミリ秒かかったもの想定して、100ミリ秒前のタイムスタンプを付与します。

(7)

tx_path

デバイスコネクターが送信に使用するFIFOのパス。manager.confでこのデバイスコネクター用に設定したfifo_txと同じパスを設定してください。

(8)

rx_path

デバイスコネクターが受信に使用するFIFOのパス。manager.confでこのデバイスコネクター用に設定したfifo_rxと同じパスを設定してください。

(9)

basetime

デバイスコネクターが時刻管理に使用するファイルのパス。manager.confで設定したmanager.basetimeと同じ値を設定してください。

(10)

status

デバイスコネクターが状態を書き出すファイルのパス。

3.2.2.2. v4lh264タイプのデバイスコネクター設定例

v4lh264タイプのデバイスコネクターは、Video4Linuxに対応したUVC(USB Video Class)カメラからH.264データを取得します。 そのため、カメラがH.264を出力できる必要があります。

設定ファイル /etc/opt/intdash/logger.conf.v4lh264

{
 "type": "v4lh264",                               # (1)
 "data_handler": {
   "path": "/dev/video0",                         # (2)
   "baudrate": 15,                                # (3)
   "camera_width": 1920,                          # (4)
   "camera_height": 1080,                         # (5)
   "camera_hwencodedelay_msec": 100               # (6)
 },
 "manager_client": {
   "tx_path": "/var/run/intdash/logger_XXX.tx",   # (7)
   "rx_path": "/var/run/intdash/logger_XXX.rx"    # (8)
 },
 "basetime": "/var/run/intdash/basetime",         # (9)
 "status": "/var/run/intdash/logger_XXX.stat"     # (10)
}

番号

フィールド

説明

(1)

type

デバイスコネクターのタイプ。v4lh264タイプの場合は"v4lh264" とします。

(2)

path

デバイスパス

(3)

baudrate

フレームレート[fps]。フレームレート、画面幅、画面高さは、カメラが対応している組み合わせを設定してください。

(4)

camera_width

画面幅

(5)

camera_height

画面高さ

(6)

camera_hwencodedelay_msec

データ打刻のオフセット(カメラ処理時間) [msec]。例えば、 100 と設定すると、カメラ内での処理に100ミリ秒かかったもの想定して、100ミリ秒前のタイムスタンプを付与します。

(7)

tx_path

デバイスコネクターが送信に使用するFIFOのパス。manager.confでこのデバイスコネクター用に設定したfifo_txと同じパスを設定してください。

(8)

rx_path

デバイスコネクターが受信に使用するFIFOのパス。manager.confでこのデバイスコネクター用に設定したfifo_rxと同じパスを設定してください。

(9)

basetime

デバイスコネクターが時刻管理に使用するファイルのパス。manager.confで設定したmanager.basetimeと同じ値を設定してください。

(10)

status

プリインストールされたデバイスコネクターが状態を書き出すファイルのパス。

3.2.2.3. gstreamer_h264タイプのデバイスコネクター設定例

gstreamer_h264タイプのデバイスコネクターは、GStreamerからH.264動画を取得します。 そのため、GStreamerがH.264を出力する必要があります。

設定ファイル /etc/opt/intdash/logger.conf.gstreamer_h264

この例はVA-API(Video Acceleration API)を使っていますので、VA-API対応のハードウェアでしか使用できません。

{
 "type": "gstreamer_h264",                        # (1)
 "data_handler": {
   "path": "/dev/video0",                         # (2)
   "baudrate": 15,                                # (3)
   "camera_width": 1920,                          # (4)
   "camera_height": 1080,                         # (5)
   "camera_keyperiod": 150,                       # (6)
   "camera_hwencodedelay_msec": 100,              # (7)
   "command": "gst-launch-1.0 -q v4l2src device=$_PATH ! image/jpeg,width=$_WIDTH,height=$_HEIGHT,framerate=$_FPS/1 ! queue ! vaapijpegdec ! queue ! vaapipostproc ! queue ! vaapih264enc rate-control=1 bitrate=3072 max-bframes=0 keyframe-period=$_KEYPERIOD ! fdsink fd=1" # (8)
 },
 "manager_client": {
   "tx_path": "/var/run/intdash/logger_XXX.tx",   # (9)
   "rx_path": "/var/run/intdash/logger_XXX.rx"    # (10)
 },
 "basetime": "/var/run/intdash/basetime",         # (11)
 "status": "/var/run/intdash/logger_XXX.stat"     # (12)
}

番号

フィールド

説明

(1)

type

デバイスコネクターのタイプ。gstreamer_h264タイプの場合は、"gstreamer_h264"とします。

(2)

path

デバイスパス

(3)

baudrate

フレームレート[fps]。ここで設定した値は、GStreamerのコマンド command で使用する変数 $_FPS としてのみ使用されます。

(4)

camera_width

画面幅。ここで設定した値は、GStreamerのコマンド command で使用する変数 $_WIDTH としてのみ使用されます。

(5)

camera_height

画面高さ。ここで設定した値は、GStreamerのコマンド command で使用する変数 $_HEIGHT としてのみ使用されます。

(6)

camera_keyperiod

キーフレーム間隔(フレームレート×10を設定する)

(7)

camera_hwencodedelay_msec

データ打刻のオフセット(カメラ処理時間) [msec]。例えば、 100 と設定すると、カメラ内での処理に100ミリ秒かかったもの想定して、100ミリ秒前のタイムスタンプを付与します。

(8)

command

GStreamerのコマンド。使用するカメラおよび実行環境に適したパイプラインを設定し、標準出力からH.264のデータが出力されるようにしてください。

(9)

tx_path

デバイスコネクターが送信に使用するFIFOのパス。manager.confでこのデバイスコネクター用に設定したfifo_txと同じパスを設定してください。

(10)

rx_path

デバイスコネクターが受信に使用するFIFOのパス。manager.confでこのデバイスコネクター用に設定したfifo_rxと同じパスを設定してください。

(11)

basetime

デバイスコネクターが時刻管理に使用するファイルのパス。manager.confで設定したmanager.basetimeと同じ値を設定してください。

(12)

status

プリインストールされたデバイスコネクターが状態を書き出すファイルのパス。

command の設定値では、以下の変数を使用することにより他の設定値を参照することができます。

$_PATH

path に設定した値

$_FPS

baudrate に設定した値

$_WIDTH

camera_width に設定した値

$_HEIGHT

camera_height に設定した値

$_KEYPERIOD

camera_keyperiod に設定した値

3.2.2.4. nmeaタイプのデバイスコネクター設定例

nmeaタイプのデバイスコネクターは、GPSデバイスからNMEAデータを取得します

設定ファイル /etc/opt/intdash/logger.conf.nmea

{
 "type": "nmea",                                  # (1)
 "data_handler": {
   "path": "/dev/ttyXX",                          # (2)
   "baudrate": 57600                              # (3)
 },
 "manager_client": {
   "tx_path": "/var/run/intdash/logger_XXX.tx",   # (4)
   "rx_path": "/var/run/intdash/logger_XXX.rx"    # (5)
 },
 "basetime": "/var/run/intdash/basetime",         # (6)
 "status": "/var/run/intdash/logger_XXX.stat"     # (7)
}

番号

フィールド

説明

(1)

type

デバイスコネクターのタイプ。nmeaタイプの場合は"nmea"とします。

(2)

path

デバイスパス

(3)

baudrate

GPSモジュールとの通信ボーレート[bps]

(4)

tx_path

デバイスコネクターが送信に使用するFIFOのパス。manager.confでこのデバイスコネクター用に設定したfifo_txと同じパスを設定してください。

(5)

rx_path

デバイスコネクターが受信に使用するFIFOのパス。manager.confでこのデバイスコネクター用に設定したfifo_rxと同じパスを設定してください。

(6)

basetime

デバイスコネクターが時刻管理に使用するファイルのパス。manager.confで設定したmanager.basetimeと同じ値を設定してください。

(7)

status

プリインストールされたデバイスコネクターが状態を書き出すファイルのパス。

3.2.2.5. socketcanタイプのデバイスコネクターの設定例

socketcanタイプのデバイスコネクターは、オープンソースのSocketCANドライバーからCANデータを取得します。

設定ファイル /etc/opt/intdash/logger.conf.socketcan

{
  "type": "socketcan",                             # (1)
  "data_handler": {
    "path": "can0",                                # (2)
    "baudrate": 500,                               # (3)
    "listenonly": 0                                # (4)
  },
  "manager_client": {
    "tx_path": "/var/run/intdash/logger_XXX.tx",   # (5)
    "rx_path": "/var/run/intdash/logger_XXX.rx"    # (6)
  },
  "basetime": "/var/run/intdash/basetime",         # (7)
  "status": "/var/run/intdash/logger_XXX.stat"     # (8)
}

番号

フィールド

説明

(1)

type

デバイスコネクターのタイプ。socketcanタイプの場合は"socketcan"とします。

(2)

path

インターフェイス名

(3)

baudrate

CANバスのボーレート(125、250、500、1000)[Kbps]

(4)

listenonly

(int) 0:ACKを返す、0以外:ACKを返さない

(5)

tx_path

デバイスコネクターが送信に使用するFIFOのパス。manager.confでこのデバイスコネクター用に設定したfifo_txと同じパスを設定してください。

(6)

rx_path

デバイスコネクターが受信に使用するFIFOのパス。manager.confでこのデバイスコネクター用に設定したfifo_rxと同じパスを設定してください。

(7)

basetime

デバイスコネクターが時刻管理に使用するファイルのパス。manager.confで設定したmanager.basetimeと同じ値を設定してください。

(8)

status

プリインストールされたデバイスコネクターが状態を書き出すファイルのパス。

3.2.2.6. canopenタイプのデバイスコネクター設定例

canopenタイプのデバイスコネクターは、オープンソースのSocketCANドライバーからCANOpenデータを取得します。

設定ファイル /etc/opt/intdash/logger.conf.canopen

{
  "type": "canopen",                               # (1)
  "data_handler": {
    "path": "can0",                                # (2)
    "baudrate": 500,                               # (3)
    "listenonly": 0                                # (4)
  },
  "manager_client": {
    "tx_path": "/var/run/intdash/logger_XXX.tx",   # (5)
    "rx_path": "/var/run/intdash/logger_XXX.rx"    # (6)
  },
  "basetime": "/var/run/intdash/basetime",         # (7)
  "status": "/var/run/intdash/logger_XXX.stat"     # (8)
}

番号

フィールド

説明

(1)

type

デバイスコネクターのタイプ。canopenタイプの場合は"canopen"とします。

(2)

path

インターフェイス名

(3)

baudrate

CANバスのボーレート(125、250、500、1000)[Kbps]

(4)

listenonly

(int) 0:ACKを返す、0以外:ACKを返さない

(5)

tx_path

デバイスコネクターが送信に使用するFIFOのパス。manager.confでこのデバイスコネクター用に設定したfifo_txと同じパスを設定してください。

(6)

rx_path

デバイスコネクターが受信に使用するFIFOのパス。manager.confでこのデバイスコネクター用に設定したfifo_rxと同じパスを設定してください。

(7)

basetime

デバイスコネクターが時刻管理に使用するファイルのパス。manager.confで設定したmanager.basetimeと同じ値を設定してください。

(8)

status

プリインストールされたデバイスコネクターが状態を書き出すファイルのパス。

3.3. データ送受信に関する設定

Agentは、intdashサーバーから受信したデータをデバイスコネクターに送ることもできます。

以下に、2つのAgentを使用してデータを送受信する設定の例を挙げます。

3.3.1. CANデータを送受信するための設定例(宛先指定なし)

以下の例は、送信側のAgentがintdashサーバーを介して受信側のAgentにCANデータを送信するための設定です。

この設定例では、送信側のAgentがチャンネル10で送信したCANデータを受信側のAgentが受信します。

../_images/sender-receiver-edges.ja.png

3.3.1.1. CANデータ送信側エッジの設定例(宛先指定なし)

{
  "clients": [{
    ...
    "my_id": "f90f2b42-66a5-4a57-8e99-468c36ebb6f2",                # (1)
    "my_secret": "sEh9ZHPoKX8QYU-v0Noe0ZPzxGBF..........................iBn5fn_eFM", # (2)
    "type": "realtime",                                             # (3)
    ...
  }],
  "loggers": [{                                                     # (4)
    "connections": [{
        "channel": 10,                                              # (5)
        ...
    }],
    ...
  }],
  ...
}

番号

フィールド

説明

(1)

my_id

送信側エッジ(このエッジ)のUUID

(2)

my_secret

送信側エッジ(このエッジ)の認証用クライアントシークレット。参考: エッジ情報の設定

(3)

type

リアルタイム送信を行うためRealtimeクライアント realtime が指定されています。

(4)

loggers

CANデータを取得するデバイスコネクターを設定します。

(5)

channel

送信するデータのチャンネル。

3.3.1.2. CANデータ受信側エッジの設定例

{
  "clients": [{
    ...
    "protocol": "mod_websocket.v2",                                 # (1)
    "my_id": "c35618bf-aa2c-4abc-8a4e-5b157b90c9ef",                # (2)
    "my_secret": "hsNxJhvDNHR2QcXbXl..........................Z0RWKvfPs_neAkjTNSO5", # (3)
    "down_dst_id": "00000000-0000-0000-0000-000000000000",          # (4)
    "ctlr_id": "f90f2b42-66a5-4a57-8e99-468c36ebb6f2",              # (5)
    "ctlr_flts":[                                                   # (6)
      {
        "channel": 10,                                              # (7)
        "dtype": 1,                                                 # (8)
        "ids": [1, 16]                                              # (9)
      }
    ],
    "type": "control",                                              # (10)
    "connection": {
      "path": "/api/v1/ws/measurements",                            # (11)
      ...
    },
    ...
  }],
  "loggers": [{
    "connections": [{
        "channel": 10,                                              # (12)
        ...
    }],
    ...
  }],
  ...
}

番号

フィールド

説明

(1)

protocol

Controlクライアントを使用する場合は、 mod_websocket.v2 とします。

(2)

my_id

受信側エッジ(このエッジ)のUUID

(3)

my_secret

受信側エッジ(このエッジ)の認証用クライアントシークレット。参考: エッジ情報の設定

(4)

down_dst_id

ここで指定したUUID宛てのデータを受信します。 0000... を指定した場合、すべての宛先のデータを受信します。

(5)

ctlr_id

受信するデータの、送信元エッジのUUID(指定したエッジから送信されたデータのみを受信します。)

(6)

ctlr_flts

受信するデータを指定するフィルター。チャンネル、iSCPデータタイプ、IDの組み合わせで指定を行います。複数のフィルターを設定可能(許可リスト)。(intdashサーバーから受信するデータをフィルタリングすることができます。受信データのフィルタリングについては、iSCPv1に関する資料を参照してください。)

(7)

channel

受信するデータのチャンネル(この例ではチャンネル10のデータのみを受信します。)

(8)

dtype

受信するデータのタイプ。iSCPのデータタイプコードを十進表記で指定します(1はCANを表します。CANデータのみを受信します。)

(9)

ids

受信するデータのCAN ID(CAN IDが 0x00000001 または 0x00000010 のデータのみを受信することを表します。(なお、CANデータの場合に限り、設定値を空の配列 [] にすると全データIDが受信対象となります。)

(10)

type

受信を行うためControlクライアント control とします。

(11)

path

Controlクライアントを使用する場合は /api/v1/ws/measurements とします。

(12)

channel

デバイスコネクターが受信するデータのチャンネル。この例ではチャンネル10とします。

注釈

2つのエッジからのデータを受信する場合は、 ctlr_id ではなく、 ctlr_ids で指定します。 3つ以上のエッジからのデータを受信することはできません。

重要

dtype では、iSCPのデータタイプコードを十進表記で指定します。 iSCPのデータタイプコードは以下のとおりです。

データタイプコード(十進数)

データタイプ名

0x01 (1)

CAN

0x02 (2)

NMEA

0x03 (3)

General Sensor(汎用センサー)

0x04 (4)

Controlpad(汎用コントロールパッド)

0x05 (5)

MAVLink 1 Packet(Micro Air Vehicle/ドローン用の通信プロトコル)

0x09 (9)

JPEG

0x0A (10)

String(文字列)

0x0B (11)

Float(倍精度浮動小数点数)

0x0C (12)

Int(64bit符号付き整数)

0x0D (13)

H.264

0x0E (14)

Bytes(バイト列)

0x0F (15)

PCM(WAVE)

0x10 (16)

AAC(ADTS)

0x7F (127)

Generic(汎用バイナリデータ)

上記のiSCPのデータタイプコードは、 Agentとデバイスコネクターの間で使われるFIFOのデータフォーマット (logger-msg) のデータタイプコードとは異なりますのでご注意ください。

3.4. 送信タイミングに関する設定(送信側でのフィルタリング)

送信側Agentでフィルターを設定することにより、intdashサーバーにデータを送信するRealtimeクライアントやBulkクライアントにデータを振り分け、データの送信タイミングを調整することができます。フィルターの詳細については、 送信側でのフィルタリング を参照してください。

3.4.1. 間引いて低頻度にしたデータをリアルタイムに送信し、残りのデータは後で送信する場合の設定例

ネットワーク帯域が狭い場合、サンプリングによりデータを間引いて一部のデータのみをRealtimeクライアントで送信し、残りのデータは帯域が回復した際にResendクライアントで送信することができます。

チャンネル1のデータを1秒間隔でサンプリングし、サンプリングしたデータをRealtimeクライアントで送信し、残りのデータはResendクライアントで送信する設定例

{
  "manager": {
    "filters": [
      {
        "name": "sampling",                                           # (1)
        "channel": "1",                                               # (2)
        "target": "realtime",                                         # (3)
        "setting": [
          {
            "key": "rate",                                            # (4)
            "value": "1000"                                           # (5)
          }
        ]
      }
    ],
    ...
  },
  "clients": [
    {
      "my_id": "f90f2b42-66a5-4a57-8e99-468c36ebb6f2",                # (6)
      "my_secret": "sEh9ZHPoKX8QYU-v0Noe0ZPzxGBF...........................iBn5fn_eFM", # (7)
      "type": "realtime",                                             # (8)
      "protocol": "mod_websocket.v2",                                 # (9)
      ...
    },
    {
      "my_id": "f90f2b42-66a5-4a57-8e99-468c36ebb6f2",                # (6)
      "my_secret": "sEh9ZHPoKX8QYU-v0Noe0ZPzxGBF...........................iBn5fn_eFM", # (7)
      "type": "bulk",                                                 # (10)
      "protocol": "mod_websocket.v2",                                 # (9)
      "store_cycle": 0,                                               # (11)
      ...
    },
    {
      "my_id": "f90f2b42-66a5-4a57-8e99-468c36ebb6f2",                # (6)
      "my_secret": "sEh9ZHPoKX8QYU-v0Noe0ZPzxGBF...........................iBn5fn_eFM", # (7)
      "type": "resend",                                               # (12)
      "protocol": "mod_http",                                         # (13)
      ...
    }
  ],
  "loggers": [{
    "connections": [{
        "channel": 1,                                                 # (14)
        ...
    }],
    ...
  }],
  ...
}

番号

フィールド

説明

(1)

name

フィルターの種類。 sampling とします。

(2)

channel

フィルター対象のチャンネル。この例ではチャンネル1を設定しています。

(3)

target

フィルター対象の送信方法。 realtime とします。

(4)

key

フィルターの詳細設定。サンプリング周期を設定するため rate とします。

(5)

value

フィルターの詳細設定。サンプリング周期を設定します。この例では1000ミリ秒(1秒)とします。1秒に1個のデータを送信します。

(6)

my_id

送信側エッジ(このエッジ)のUUID。

(7)

my_secret

送信側エッジ(このエッジ)の認証用クライアントシークレット。参考: エッジ情報の設定

(8)

type

送信クライアントの種類。 realtime とします。

(9)

protocol

送信クライアントの通信方法。RealtimeクライアントとBulkクライアントはRealtime APIを使用するため、 mod_websocket.v2 とします。

(10)

type

送信クライアントの種類。 bulk とします。

(11)

store_cycle

Bulkクライアントの送信間隔。Bulkクライアントからは送信せずにResendクライアントに委ねるため、0とします。

(12)

type

送信クライアントの種類。 resend とします。

(13)

protocol

送信クライアントの通信方法。この例ではResendクライアントはREST APIを使用するため、 mod_http とします。

(14)

channel

取得するデータに付加するチャンネル。この例では、このデバイスコネクター(logger)がチャンネル1です。

3.4.2. 一部のデータをリアルタイム送信し、その他のデータは後で送信する設定の例

ネットワーク帯域が狭い場合、小さいまたは頻度の少ないデータのみをRealtimeクライアントで送信し、残りのデータは帯域が回復した際にResendクライアントで送信することができます。

チャンネル1以外のデータをRealtimeクライアントで送信し、チャンネル1のデータはResendクライアントに委ねるための設定例

{
  "manager": {
    "filters": [
      {
        "name": "channel",                                            # (1)
        "channel": "1",                                               # (2)
        "target": "realtime",                                         # (3)
        "setting": []                                                 # (4)
      }
    ],
    ...
  },
  "clients": [
    {
      "my_id": "f90f2b42-66a5-4a57-8e99-468c36ebb6f2",                # (5)
      "my_secret": "sEh9ZHPoKX8QYU-v0Noe0ZPzxGBF...........................iBn5fn_eFM", # (6)
      "type": "realtime",                                             # (7)
      "protocol": "mod_websocket.v2",                                 # (8)
      ...
    },
    {
      "my_id": "f90f2b42-66a5-4a57-8e99-468c36ebb6f2",                # (5)
      "my_secret": "sEh9ZHPoKX8QYU-v0Noe0ZPzxGBF...........................iBn5fn_eFM", # (6)
      "type": "bulk",                                                 # (9)
      "protocol": "mod_websocket.v2",                                 # (8)
      "store_cycle": 0,                                               # (10)
      ...
    },
    {
      "my_id": "f90f2b42-66a5-4a57-8e99-468c36ebb6f2",                # (5)
      "my_secret": "sEh9ZHPoKX8QYU-v0Noe0ZPzxGBF...........................iBn5fn_eFM", # (6)
      "type": "resend",                                               # (11)
      "protocol": "mod_http",                                         # (12)
      ...
    }
  ],
  "loggers": [
    {
      "connections": [{
          "channel": 1,                                                 # (13)
          ...
      }],
      ...
    },
    {
      "connections": [{
          "channel": 2,                                                 # (14)
          ...
      }],
      ...
    }
  ],
  ...
}

番号

フィールド

説明

(1)

name

フィルターの種類。 channel とします。

(2)

channel

フィルター対象のチャンネル。この例ではチャンネル1とします。

(3)

target

フィルター対象の送信方法。 realtime とします。

(4)

setting

フィルターの詳細設定。設定内容は空にします。

(5)

my_id

送信側エッジ(このエッジ)のUUID。

(6)

my_secret

送信側エッジ(このエッジ)の認証用クライアントシークレット。参考: エッジ情報の設定

(7)

type

送信クライアントの種類。 realtime とします。

(8)

protocol

送信クライアントの通信方法。RealtimeクライアントとBulkクライアントはRealtime APIを使用するため、 mod_websocket.v2 とします。

(9)

type

送信クライアントの種類。 bulk とします。

(10)

store_cycle

Bulkクライアントの送信間隔。Bulkクライアントは送信せずにResendクライアントに委ねるため、0とします。

(11)

type

送信クライアントの種類。 resend とします。

(12)

protocol

送信クライアントの通信方法。この例ではResendクライアントはREST APIを使用するため、 mod_http とします。

(13)

channel

取得するデータに付加するチャンネル。この例では、1つ目のデバイスコネクター(logger)がチャンネル1です。

(14)

channel

取得するデータに付加するチャンネル。この例では、2つ目のデバイスコネクター(logger)がチャンネル2です。

3.4.3. 送信は行わずに全てのデータをRAWデータとして保存する場合の設定例

ネットワークの接続がまったく無いか、または帯域が狭すぎてデータを送信できない場合、intdashサーバーへのデータの送信はあきらめ、一旦すべてのデータをローカルストレージにダンプすることができます。ローカルストレージにダンプされたデータは、後で手動でintdashサーバーにアップロードする必要があります。

データをサーバーに送信しない設定の例

{
  "manager": {
    ...
  },
  "clients": [],                                                        # (1)
  "loggers": [
    {
      "connections": [{
          "channel": 1,                                                 # (2)
          ...
      }],
      ...
    },
    {
      "connections": [{
          "channel": 2,                                                 # (3)
          ...
      }],
      ...
    }
  ],
  ...
}

番号

フィールド

説明

(1)

clients

クライアントの設定。送信クライアントが設定されていない状態にします。

(2)

channel

取得するデータに付加するチャンネル。この例では、1つ目のデバイスコネクター(logger)がチャンネル1です。

(3)

channel

取得するデータに付加するチャンネル。この例では、2つ目のデバイスコネクター(logger)がチャンネル2です。

3.4.4. 全てのデータをResendクライアント用として蓄積する場合の設定例

ネットワークが不安定で、帯域に大きな変動がある場合、intdashサーバーへのリアルタイムでの転送はあきらめ、全てResendクライアント用のデータとして蓄積しておき、帯域が回復した際に一気に送信することができます。この再送処理は自動的に行われるため、手動でintdashサーバーにアップロードする必要はありません。

全てのチャンネルのデータを、リアルタイム送信せずにResendクライアントに委ねるための設定例

{
  "manager": {
    "filters": [
      {
        "name": "channel",                                            # (1)
        "channel": "-1",                                              # (2)
        "target": "realtime",                                         # (3)
        "setting": []                                                 # (4)
      }
    ],
    ...
  },
  "clients": [
    {
      "my_id": "f90f2b42-66a5-4a57-8e99-468c36ebb6f2",                # (5)
      "my_secret": "sEh9ZHPoKX8QYU-v0Noe0ZPzxGBF...........................iBn5fn_eFM", # (6)
      "type": "realtime",                                             # (7)
      "protocol": "mod_websocket.v2",                                 # (8)
      ...
    },
    {
      "my_id": "f90f2b42-66a5-4a57-8e99-468c36ebb6f2",                # (5)
      "my_secret": "sEh9ZHPoKX8QYU-v0Noe0ZPzxGBF...........................iBn5fn_eFM", # (6)
      "type": "bulk",                                                 # (9)
      "protocol": "mod_websocket.v2",                                 # (8)
      "store_cycle": 0,                                               # (10)
      ...
    },
    {
      "my_id": "f90f2b42-66a5-4a57-8e99-468c36ebb6f2",                # (5)
      "my_secret": "sEh9ZHPoKX8QYU-v0Noe0ZPzxGBF...........................iBn5fn_eFM", # (6)
      "type": "resend",                                               # (11)
      "protocol": "mod_http",                                         # (12)
      ...
    }
  ],
  "loggers": [
    {
      "connections": [{
          "channel": 1,                                                 # (13)
          ...
      }],
      ...
    },
    {
      "connections": [{
          "channel": 2,                                                 # (14)
          ...
      }],
      ...
    }
  ],
  ...
}

番号

フィールド

説明

(1)

name

フィルターの種類。 channel とします。

(2)

channel

フィルター対象のチャンネル。全てのチャンネルを対象とする-1を設定します。

(3)

target

フィルター対象の送信方法。 realtime とします。

(4)

setting

フィルターの詳細設定。設定内容は空にしてください。

(5)

my_id

送信側エッジ(このエッジ)のUUID。

(6)

my_secret

送信側エッジ(このエッジ)の認証用クライアントシークレット。参考: エッジ情報の設定

(7)

type

送信クライアントの種類。 realtime とします。

(8)

protocol

送信クライアントの通信方法。RealtimeクライアントとBulkクライアントはRealtime APIを使用するため、 mod_websocket.v2 とします。

(9)

type

送信クライアントの種類。 bulk とします。

(10)

store_cycle

Bulkクライアントの送信間隔。Bulkクライアントは送信せずにResendクライアントに委ねるため、0とします。

(11)

type

送信クライアントの種類。 resend とします。

(12)

protocol

送信クライアントの通信方法。この例ではResendクライアントはREST APIを使用するため、 mod_http とします。

(13)

channel

取得するデータに付加するチャンネル。この例では、このデバイスコネクター(logger)がチャンネル1です。

(14)

channel

取得するデータに付加するチャンネル。この例では、このデバイスコネクター(logger)がチャンネル2です。

3.5. RAWデータの保存に関する設定

RAWデータの詳細については、 RAWデータ を参照してください。

RAWデータの保存については、以下の設定ができます。

3.5.1. どのデータもRAWデータとして保存しない

どのデータもRAWデータとして保存しないように設定するには、 manager.rawdir をnullにします。

例(RAWデータを保存しない) :

{
  "manager": {
    ...
    "rawdir": null,
    ...
  },
  ...
}

3.5.2. 特定のチャンネルのRAWデータを保存しない

対象のチャンネルのデバイスコネクターの設定に loggers[].connections[].disable_raw を追加し、値に 1 を設定します。

例(チャンネル0のRAWデータ保存を無効にする) :

{
  "loggers": [{
    "connections": [{
      ...
      "disable_raw": 1,
      "channel": 0,
      ...
    }],
    ...
  }],
  ...
}