チュートリアル2: ダウンストリームで受信する
このチュートリアルでは、 チュートリアル1 でサーバーに送信されているデータを、別のintdash Edge Agent 2で受信します。
intdashサーバーから受信したデータは、通常、FIFOを使ってデバイスコネクターに渡され、デバイスコネクターから外部デバイスに渡されますが、ここでは手順を簡単にするため、デバイスコネクターの代わりにcatコマンドを使ってデータを確認します。
操作手順は以下のようになります。
接続先サーバーを設定する
デバイスコネクターIPCの設定を作成する
ダウンストリームの設定を作成する
リアルタイム受信を開始する
データを確認する
準備するもの
注釈
このチュートリアルでは、アップストリーム用エッジとダウンストリーム用エッジの合計2つのエッジを使用します。 このチュートリアルを実行する前に、先に チュートリアル1 を行って、アップストリーム用エッジをセットアップしてください。 ダウンストリーム用エッジはこのあとの手順でセットアップします。
ダウンストリーム用エッジをセットアップするには、以下が必要です。
intdash Edge Agent 2をインストール済みのエッジデバイス
接続先のintdashサーバーのホスト名(アップストリーム用エッジに設定したものと同じ)
プロジェクトUUID(アップストリーム用エッジに設定したものと同じ)
エッジデバイスに割り当てるエッジUUIDとクライアントシークレット(ダウンストリーム用エッジ)
エッジUUIDとクライアントシークレットは、ウェブブラウザーでintdashにログイン後、My Pageで発行することができます。 エッジは使用するプロジェクトに所属させておいてください。
注釈
1つのエッジ(1つのintdash Edge Agent 2)でアップストリームとダウンストリームを行うことも可能です。
接続先サーバーを設定する
ダウンストリーム用エッジでの操作
注釈
デーモン(intdash-agentd)の自動起動が行われない環境(Docker Hubで公開されているUbuntuなど)をご使用の場合は、 sudo /etc/init.d/intdash-agentd start
でデーモンを起動してから以下の操作を行ってください。
intdash-agentctl configコマンドを使って接続先サーバーと認証情報を設定します。
$ intdash-agentctl config connection --modify '
server_url: https://xxxxxx.intdash.jp
project_uuid: 00000000-0000-0000-0000-000000000000
edge_uuid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
client_secret: f1OMTtns..........................JhvNgPJFRk.EXAMPLE
'
--modify
に続く引数はYAML形式の文字列です。あらかじめ準備した接続情報を使用してください。
キー |
入力する値 |
---|---|
server_url |
intdashサーバーのホスト名 |
project_uuid |
使用するプロジェクトのUUID |
edge_uuid |
ダウンストリーム用エッジのUUID |
client_secret |
ダウンストリーム用エッジのクライアントシークレット |
デバイスコネクターIPCの設定を作成する
ダウンストリーム用エッジでの操作
デバイスコネクターIPCの設定(FIFOのパスなど)を、以下のコマンドで新規作成します。
データの流れは「intdash Edge Agent 2からデバイスコネクターへ」という方向なので、ダウンストリーム方向(downstream)のデバイスコネクターIPCとして作成します。
$ intdash-agentctl config device-connector downstream --create '
id: down-hello
enabled: true
format: iscp-v2-compat
ipc:
type: fifo
path: /var/run/intdash/down-hello.fifo
'
このコマンドにより以下の設定が行われます。
キー |
値 |
---|---|
id |
このデバイスコネクターIPC設定に与える任意のID |
enabled |
デバイスコネクターIPCを有効化(true) |
format |
デバイスコネクターとの通信に使用されるデータフォーマット(ここでは、 |
ipc.type |
intdash Edge Agent 2とデバイスコネクターの間のデータ通信方法(現在 |
ipc.path |
デバイスコネクターがintdash Edge Agent 2からデータを受け取るためのFIFOのパス。 |
ダウンストリームの設定を作成する
ダウンストリーム用エッジでの操作
次に、iSCPによるデータ受信の経路(ダウンストリーム)の設定を作成します。
ダウンストリームのIDは任意の文字列を設定可能ですが、ここでは down
というIDとします。
$ intdash-agentctl config downstream --create '
id: sample-downstream
enabled: true
dest_ids:
- down-hello
filters:
- src_edge_uuid: 03ace3b1-d208-4fc3-xxxx-xxxxxxxxxxxx
data_filters:
- type: string
name: v1/1/ab
'
キー |
入力する値 |
---|---|
id |
このダウンストリームに与える任意のID |
enabled |
ダウンストリームを有効化 |
dest_ids |
このダウンストリームで受信したデータを渡す先の、デバイスコネクターIPCのID。さきほど作成した |
filters |
受信対象とするデータポイントの指定 |
filters.[].src_edge_uuid |
受信対象とする送信元のエッジUUID(チュートリアル1で使用したエッジ) |
filters.[].data_filters |
受信対象とするデータIDを定義した設定のリスト(チュートリアル1の設定に合わせる) |
filters.[].data_filters.[].type |
受信対象とするデータの型(チュートリアル1の設定に合わせる) |
filters.[].data_filters.[].name |
受信対象とするデータの名前(チュートリアル1の設定に合わせる) |
注釈
ここで設定している filters
は、iSCPにおいて「ダウンストリームフィルター」と呼ばれるもので、サーバーから受信する対象のデータポイントを指定するものです。
intdash Edge Agent 2内でのデータの行先を変えるフィルター( フィルタリング/サンプリング )とは別の概念です。
リアルタイム受信を開始する
ダウンストリーム用エッジでの操作
以下のコマンドを実行します。
$ intdash-agentctl run
これによりストリーマーが起動され、 /var/run/intdash/down-hello.fifo
が作成されます。
また、intdash Edge Agent 2とintdashサーバーとの接続が確立され、サーバーからのデータを待ち受ける状態になります。
データを確認する
アップストリーム用エッジでの操作
チュートリアル1 でセットアップしたアップストリーム用エッジで、 intdash-agentctl run
を実行し、チュートリアル1の手順のとおりechoコマンドでデータを書き込みます。データはリアルタイムにサーバーに送信されます。
ダウンストリーム用エッジでの操作
サーバーからデータが受信され、デバイスコネクターIPCの設定に従って /var/run/intdash/down-hello.fifo
に書き込まれます。
確認のため、以下のように cat
コマンドを使って、FIFOに書き込まれたデータを表示させます。
$ cat /var/run/intdash/down-hello.fifo
バイナリデータであるためヘッダー部分は認識できる文字にはなりませんが、文字列 Hello
が表示されており、受信できていることが分かります。
ダウンストリーム用エッジでの操作
確認が済んだら、 intdash-agentctl run
を実行したターミナルでCtrl+Cを押して、intdash-agentctl runを終了します。
アップストリーム用エッジでの操作
intdash-agentctl run
を実行したターミナルでCtrl+Cを押して、intdash-agentctl runを終了します。