4. チュートリアルC: 付属デバイスコネクターを使ってカメラ画像を送信する

このチュートリアルでは、intdash Edge Agentに付属のデバイスコネクター(intdash-edge-logger)を使ってカメラから画像データを取得し、intdashに送信します。

注釈

このチュートリアルを実行するために事前にチュートリアルAやBを実行する必要はありません。 ただし、エッジデバイスにintdash Edge Agentが正しくインストールされ、サーバー側でエッジ「edge1」が作成されていることを前提にしています。

以下の理解にお役立てください。

  • マネージャーの設定ファイル(manager.conf)での接続先や認証情報の設定方法、デバイスコネクターの指定方法

  • 付属デバイスコネクター(intdash-edge-logger)の設定方法

4.1. 設定のために必要な情報

  • 接続先サーバー名(例: xxxxxx.intdash.jp)

  • エッジ(edge1)のUUIDとクライアントシークレット

  • 使用するカメラのデバイスパス(デバイスパスの調べ方については (参考)カメラのデバイスパスを調べる を参考にしてください)

4.1.1. (参考)カメラのデバイスパスを調べる

■ エッジデバイスのターミナルでの操作

エッジデバイスに接続されたカメラから画像を取得するには、カメラのデバイスパスが必要です。

デバイスパスを調べるには、カメラを接続する前と後にカメラの一覧を取得し、差分を確認すると便利です。

  1. カメラを接続する前の状態で以下のコマンドを実行します(コマンドの出力結果は一例です)。

    $ ls /dev/v4l/by-id
    
    usb-abcdefghijkl.camera-video-index0
    usb-abcdefghijkl.camera-video-index1
    
  2. 使用したいカメラを接続し、同じコマンドを実行します。

    $ ls /dev/v4l/by-id
    
    usb-abcdefghijkl.camera-video-index0
    usb-abcdefghijkl.camera-video-index1
    usb-mnopqrstuvwxyz.camera-video-index0 <-- new device
    

    ここで新たに見つかったデバイスパスが、使用するカメラのデバイスパスです。 この例の場合、デバイスパスは以下であることが分かります:

    /dev/v4l/by-id/usb-mnopqrstuvwxyz.camera-video-index0

4.2. 設定ファイルを用意する

■ エッジデバイスのターミナルでの操作

このチュートリアルでは2つの設定ファイルが必要です。

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

  • intdash-edge-loggerの設定ファイル

いずれも、アプトポッドがGitHub上で公開しているサンプルを使用します。

注釈

intdash-edgeパッケージによりインストールされた基本の設定ファイル /etc/opt/intdash/manager.conf はこのチュートリアルでは使用しません。

  1. サンプルのリポジトリをクローンします。

    $ git clone https://github.com/aptpod/device-connector-samples.git
    
  2. 使用するサンプルのディレクトリに移動します。

    $ cd device-connector-samples/samples/mjpeg/
    

このあとの手順で、設定ファイル内の接続先と認証情報を書き換えます。

4.3. マネージャーについて設定する(manager.conf)

■ エッジデバイスのターミナルでの操作

カレントディレクトリにあるintdash Edge Agentの設定ファイル(manager.conf)を編集して、必要な設定を行います。

4.3.1. リアルタイム送信に関する設定

リアルタイム送信に関する設定を、以下のように行います。

リスト 4 clients 内の、 "type": "realtime" の設定
 {
   "path": "/opt/vm2m/sbin/intdash-edge-client",
   "protocol": "mod_websocket.v2",
   "type": "realtime",
   ...
   "my_id": "XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",                # (A)
   "my_secret": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", # (B)
   "auth_path": "/var/lib/intdash/.auth",
   "connection": {
     "host": "xxxxx.intdash.jp",                                    # (C)
   ...
   }
 },
(A) my_id

エッジのUUIDを入力します。

(B) my_secret

エッジのクライアントシークレットを入力します。

(C) host

接続先のintdashサーバーのホスト名を入力します。

4.3.2. 再送処理に関する設定

同様に、再送処理に関する設定を以下のように行います。

リスト 5 clients 内の、 "type": "resend" の設定
 {
   "path": "/opt/vm2m/sbin/intdash-edge-client",
   "protocol": "mod_http",
   "type": "resend",
   ...
   "my_id": "XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",                # (D)
   "my_secret": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", # (E)
   "auth_path": "/var/lib/intdash/.auth",
   "connection": {
     "host": "xxxxx.intdash.jp",                                    # (F)
     ...
   }
 }

注釈

リアルタイム送信に関する設定と同じ値を設定します。

(D) my_id

エッジのUUIDを入力します。

(E) my_secret

エッジのクライアントシークレットを入力します。

(F) host

接続先のintdashサーバーのホスト名を入力します。

4.3.3. デバイスコネクターの設定ファイルを指定

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

リスト 6 loggers
"loggers": [
  {
    "devicetype": "mjpeg",
    "path": "/opt/vm2m/sbin/intdash-edge-logger",
    "conf": "/xxxx/logger_001.conf",                  # (G)
    "status": "/var/run/intdash/logger_001.stat",
    "connections": [
      {
        "channel": 1,
        "fifo_tx": "/var/run/intdash/logger_001.tx",
        "fifo_rx": "/var/run/intdash/logger_001.rx"
      }
    ]
  }
]
(G) conf

intdash-edge-logger用の設定ファイル(カレントディレクトリのlogger_001.conf)のフルパスを入力します。

注釈

path は、使用するデバイスコネクターのパスです。付属デバイスコネクター intdash-edge-logger のフルパスが設定されています。 channel は1がアサインされています。

また、 "fifo_tx": "/var/run/intdash/logger_100.tx" からデータを読み込む設定になっていることが分かります。

4.4. デバイスコネクターについて設定する(logger_001.conf)

■ エッジデバイスのターミナルでの操作

デバイスコネクターの設定ファイル(logger_001.conf)で、カメラのデバイスパスを指定します。

リスト 7 logger_001.conf
{
  "type": "mjpeg",
  "data_handler": {
    "path": "/dev/xxxx",                         # (H)
    "baudrate": 15,
    "camera_width": 320,
    "camera_height": 240,
    "camera_hwencodedelay_msec": 100
  },
  "manager_client": {
    "tx_path": "/var/run/intdash/logger_001.tx",
    "rx_path": "/var/run/intdash/logger_001.rx"
  },
  "status": "/var/run/intdash/logger_001.stat",
  "basetime": "/var/run/intdash/basetime"
}
(H) data_handlser.path

カメラのデバイスパスを入力します。 デバイスパスの調べ方ついては、 (参考)カメラのデバイスパスを調べる を参照してください。

注釈

manager_client.tx_path は、デバイスコネクターがデータを書き込み、intdash Edge Agentがデータを受け取るために使用するFIFOです。manager.confの fifo_tx と同じ値が設定されています。

4.5. intdash Edge Agentを起動する

■ エッジデバイスのターミナルでの操作

以下のコマンドを実行して、intdash Edge Agentを起動します。

$ sudo LD_LIBRARY_PATH=/opt/vm2m/lib /opt/vm2m/sbin/intdash-edge-manager -C `pwd`/manager.conf

これによりintdash Edge Agentが起動し、自動的にデバイスコネクターintdash-edge-loggerも起動され、intdashサーバーへのデータの送信が始まります。

4.6. Edge Finderで表示する

■ ウェブアプリケーションでの操作

Edge Finder( <ベースURL>/edges/ )を開き、使用しているエッジの[トラフィック]をクリックして、データが送信されていることを確認します。

../_images/mjpeg-edge-finder.ja.png

図 8 データが送信されていることをEdge Finderで確認する

注釈

Edge Finderで動画が表示されるのはMJPEGの場合だけです。

4.7. Data Visualizerで表示する

■ ウェブアプリケーションでの操作

Data Visualizerで動画データを表示します。

4.7.1. データ設定を読み込む/準備する

Data Visualizerで動画データを表示するには、データ設定が必要です。

  1. Data Visualizerで、 data-settings (Data Settings)をクリックします。

  2. [+ Add Group]をクリックして新規グループを作成します。

  3. 作成されたグループを展開し、[+ Add Data]をクリックします。

  4. 以下のように設定します。

    • Data Name: 任意の名前(このチュートリアルでは「Video_001」とします)

    • Data Type: VIDEO(H.264,JPEG)

    • Data ID: VIDEO

    • Channel: 1

    設定ができたら[OK]をクリックします。

4.7.2. ビジュアルパーツを設置してデータをバインドする

  1. Data Visualizerのダッシュボード上で空いているところをクリックし、[2x2]を選択します。

    ../_images/2x2.png

    図 9 パネルを設置

  2. Visual Partsの種類としてImage Viewerを選択します。

    重要

    Video PlayerはMJPEGの表示はできないため、Image Viewerを選択してください。

  3. Data Bindingで、エッジ名(edge1)とVideo_001を選択します。

4.7.3. 再生する

LIVEモードにして、 play をクリックします。

../_images/mjpeg-data-visualizer.png

図 10 Data Visualizerでの再生

注釈

Data Visualizerの詳細については、 Data Visualizer 操作マニュアル を参照してください。

4.8. intdash Edge Agentを終了する

■ エッジデバイスのターミナルでの操作

intdash Edge Agentを起動したターミナルで、Ctrl-Cを押してintdash Edge Agentを終了します。

これにより、intdash Edge Agentおよびデバイスコネクターが終了します。

注釈

付属デバイスコネクターintdash-edge-loggerでは、MJPEGのほかにも、H.264、NMEA、CANなどのデータを送信することができます。

intdash-edge-loggerを使用する場合は、本チュートリアルで行ったのと同様に、以下が必要です。

  • intdash-edge-loggerの設定ファイルを用意する(本チュートリアルのlogger_001.confに相当)

  • intdash-edge-loggerを使用するようにマネージャーを設定する(本チュートリアルのmanager.confに相当)

取得するデータによって、intdash-edge-loggerの設定ファイルの内容は異なります。

intdash-edge-loggerの設定ファイルについては、 intdash Edge Agent デベロッパーガイド の「デバイスコネクターの設定ファイル例」を参照してください。