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. (参考)カメラのデバイスパスを調べる¶
■ エッジデバイスのターミナルでの操作
エッジデバイスに接続されたカメラから画像を取得するには、カメラのデバイスパスが必要です。
デバイスパスを調べるには、カメラを接続する前と後にカメラの一覧を取得し、差分を確認すると便利です。
カメラを接続する前の状態で以下のコマンドを実行します(コマンドの出力結果は一例です)。
$ ls /dev/v4l/by-id usb-abcdefghijkl.camera-video-index0 usb-abcdefghijkl.camera-video-index1
使用したいカメラを接続し、同じコマンドを実行します。
$ 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
はこのチュートリアルでは使用しません。
サンプルのリポジトリをクローンします。
$ git clone https://github.com/aptpod/device-connector-samples.git
使用するサンプルのディレクトリに移動します。
$ cd device-connector-samples/samples/mjpeg/
このあとの手順で、設定ファイル内の接続先と認証情報を書き換えます。
4.3. マネージャーについて設定する(manager.conf)¶
■ エッジデバイスのターミナルでの操作
カレントディレクトリにあるintdash Edge Agentの設定ファイル(manager.conf)を編集して、必要な設定を行います。
4.3.1. リアルタイム送信に関する設定¶
リアルタイム送信に関する設定を、以下のように行います。
{
"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. 再送処理に関する設定¶
同様に、再送処理に関する設定を以下のように行います。
{
"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. デバイスコネクターの設定ファイルを指定¶
デバイスコネクターの設定ファイルを指定します。
"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)で、カメラのデバイスパスを指定します。
{
"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/
)を開き、使用しているエッジの[トラフィック]をクリックして、データが送信されていることを確認します。
注釈
Edge Finderで動画が表示されるのはMJPEGの場合だけです。
4.7. Data Visualizerで表示する¶
■ ウェブアプリケーションでの操作
Data Visualizerで動画データを表示します。
4.7.1. データ設定を読み込む/準備する¶
Data Visualizerで動画データを表示するには、データ設定が必要です。
Data Visualizerで、 (Data Settings)をクリックします。
[+ Add Group]をクリックして新規グループを作成します。
作成されたグループを展開し、[+ Add Data]をクリックします。
以下のように設定します。
Data Name: 任意の名前(このチュートリアルでは「Video_001」とします)
Data Type: VIDEO(H.264,JPEG)
Data ID: VIDEO
Channel: 1
設定ができたら[OK]をクリックします。
4.7.2. ビジュアルパーツを設置してデータをバインドする¶
Data Visualizerのダッシュボード上で空いているところをクリックし、[2x2]を選択します。
Visual Partsの種類としてImage Viewerを選択します。
重要
Video PlayerはMJPEGの表示はできないため、Image Viewerを選択してください。
Data Bindingで、エッジ名(edge1)とVideo_001を選択します。
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 デベロッパーガイド の「デバイスコネクターの設定ファイル例」を参照してください。