チュートリアル2: ダウンストリームで受信する

このチュートリアルでは、 チュートリアル1 でサーバーに送信されているデータを、別のintdash Edge Agent 2で受信します。

intdashサーバーから受信したデータは、通常、FIFOを使ってデバイスコネクターに渡され、デバイスコネクターから外部デバイスに渡されますが、ここでは手順を簡単にするため、デバイスコネクターの代わりにcatコマンドを使ってデータを確認します。

../_images/tutorial-2.svg

図 4 チュートリアル2

操作手順は以下のようになります。

  1. 接続先サーバーを設定する

  2. デバイスコネクターIPCの設定を作成する

  3. ダウンストリームの設定を作成する

  4. リアルタイム受信を開始する

  5. データを確認する

準備するもの

注釈

このチュートリアルでは、アップストリーム用エッジとダウンストリーム用エッジの合計2つのエッジを使用します。 このチュートリアルを実行する前に、先に チュートリアル1 を行って、アップストリーム用エッジをセットアップしてください。 ダウンストリーム用エッジはこのあとの手順でセットアップします。

ダウンストリーム用エッジをセットアップするには、以下が必要です。

  • intdash Edge Agent 2をインストール済みのエッジデバイス

  • 接続先のintdashサーバーのホスト名(アップストリーム用エッジに設定したものと同じ)

  • プロジェクトUUID(アップストリーム用エッジに設定したものと同じ)

  • エッジデバイスに割り当てるエッジUUIDとクライアントシークレット(ダウンストリーム用エッジ)

    • エッジUUIDとクライアントシークレットは、ウェブブラウザーでintdashにログイン後、My Pageで発行することができます。 エッジは使用するプロジェクトに所属させておいてください。

注釈

1つのエッジ(1つのintdash Edge Agent 2)でアップストリームとダウンストリームを行うことも可能です。

../_images/tutorial-2-same-edge.svg

図 5 アップストリームとダウンストリームを1つのエッジで行う

接続先サーバーを設定する

ダウンストリーム用エッジでの操作

注釈

デーモン(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

デバイスコネクターとの通信に使用されるデータフォーマット(ここでは、 iscp-v2-compat を使用します。)

ipc.type

intdash Edge Agent 2とデバイスコネクターの間のデータ通信方法(現在 fifo のみに対応しているため、 fifo を指定してください。)

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。さきほど作成した down-hello というデバイスコネクターIPCを指定しています。

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を終了します。