3. ダッシュボード向けAPI

本節ではダッシュボード(Node-RED)で使用可能なAPIについて説明します。

3.1. 共通事項

ストリーミング画像表示以外のAPIの共通事項を説明します。

3.1.1. エンドポイント

すべてのAPIはHTTPをベースとしています。APIの発行先のホストは、環境変数APIHOSTに含まれています。API毎のパスと連結してURLを生成します。

環境変数APIHOSTの値の例

10.0.1.1:3001

URLの例

http://10.0.1.1:3001/api/devices

3.1.2. APIキー

APIを発行する際には、認証のためのAPIキーをAuthorizationヘッダーのBearerトークンに設定する必要があります。APIキーは環境変数APIKEYから取得できます。

環境変数APIKEYの値の例

ffc782664c51a0a796fd3af9ac06be2fa3543879

Authorizationヘッダーの例

Authorization: Bearer ffc782664c51a0a796fd3af9ac06be2fa3543879

警告

APIキーは絶対に他の人に知られないようにしてください。

APIキーを知られると、なりすましの被害を受ける可能性があります。

3.2. MSM-PF端末情報取得

所有しているMSM-PF端末のリストを取得します。

  • パス

    • /api/devices

  • メソッド

    • GET

  • クエリパラメーター

    • idOnly

      • 値 false

        • 端末IDだけでなく、詳細情報も受け取る

  • 応答

    • content-type

      • application/json

    • MSM-PF端末のIDのリスト (idOnly指定なし、またはidOnly=trueの場合)

    • MSM-PF端末の詳細情報のリスト (idOnly=falseの場合)

3.3. 直近センサーデータ取得

指定のMSM-PF端末の直近1000サンプル点のセンサーデータを取得します。

応答で得られるセンサーデータはsensordata形式です。MSM-PF端末がsensorjson形式でセンサーデータをアップロードした場合、"sensor values"の値は、sensorjson形式の1サンプル点を表したJSONを構成要素に分解したもののCSVとなります。

  • パス

    • /api/devices/{deviceId}/currentSensorData

  • メソッド

    • GET

  • パスパラメーター

    • deviceId

      • MSM-PF端末のID

  • 応答

    • content-type

      • application/json

3.4. センサーデータ受信

SSE(Server Sent Events)により、MSM-PF端末から届いたセンサーデータをすぐに受け取ります。

直近センサデータ取得APIではポーリングでセンサーデータを取得するのに対し、本APIではセンサーデータがプッシュされてきますので、低遅延で可視化等を行うことができます。

  • パス

    • /api/devices/{deviceId}/events

  • メソッド

    • GET

  • パスパラメーター

    • deviceId

      • MSM-PF端末のID

  • クエリパラメーター

    • mode

      • 値 all

        • MSM-PF端末から受信したセンサーデータすべてを受け取る

  • 応答

    • content-type

      • text/event-stream

    • イベントストリームのdataフィールド (mode=allの場合)

      • キープアライブのため、定期的に空のdataフィールドが届きます

      • 1つのdataフィールドが、MSM-PF端末からのセンサーデータの1サンプル点です

      • MSM-PF端末が送信してくるセンサーデータの形式により、CSVとJSONのどちらかの形式です

      • CSVの場合、最初のカラムはタイムスタンプの秒部分、2番目のカラムはタイムスタンプのマイクロ秒部分で、以降のカラムにセンサ値が並びます

    • イベントストリームのdataフィールド (mode指定がない場合)

      • キープアライブのため、定期的に空のdataフィールドが届きます

      • MSM-PF端末からアップロードされるセンサーデータのメッセージ受信毎に、そのメッセージ中の最後(最新)の1点のみが届きます

      • MSM-PF端末が送信してくるセンサーデータの形式により、CSVとJSONのどちらかの形式です

      • CSVの場合、タイムスタンプは含まれず、センサ値のみが並びます

3.5. 上り制御メッセージ受信

SSE(Server Sent Events)により、MSM-PF端末からの上り制御メッセージを受け取ります。

  • パス

    • /api/devices/{deviceId}/ctl-events

  • メソッド

    • GET

  • パスパラメーター

    • deviceId

      • MSM-PF端末のID

  • 応答

    • content-type

      • text/event-stream

    • イベントストリームのdataフィールド

      • キープアライブのため、定期的に空のdataフィールドが届きます

      • MSM-PF端末が送信した上り制御メッセージ(JSON)

3.6. 下り制御メッセージ送信

MSM-PF端末へ下り制御メッセージを送信します。

  • パス

    • /api/devices/{deviceId}/ctl-events

  • メソッド

    • POST

  • パスパラメーター

    • deviceId

      • MSM-PF端末のID

  • リクエストボディ

    • content-type

      • application/json

    • MSM-PF端末へ送信する下り制御メッセージ

3.7. カメラ端末情報取得

所有しているカメラ端末のリストを取得します。

  • パス

    • /api/cameras

  • メソッド

    • GET

  • 応答

    • content-type

      • application/json

    • カメラ端末のIDのリスト

3.8. ストリーミング画像表示

Node-REDのサーバー側ではなく、ブラウザー側で、Amazon Kinesis Video Streams with WebRTCを使用します。つまり、Node-REDのTemplate UIノードを使用してブラウザー側の処理を記述し、その中でAmazon Kinesis Video Streams with WebRTCを呼び出します。

AWSへのAPI発行のためのアクセスキーID、シークレットアクセスキー、リージョンは、環境変数 _AWS_ACCESS_KEY_ID, _AWS_SECRET_ACCESS_KEY, _AWS_REGION から取得できます。

警告

アクセスキーIDとシークレットアクセスキーは、絶対に他の人に知られないようにしてください。

カメラ端末からのストリーミング画像を盗み見られることがあります。