ゲートウェイはトリガーを受け取ると、指定されたカメラの動画をクラウド上に保存します。

トリガーには以下の2種類があります。


種類

概要

外部からのリクエスト

MODEクラウドから動画取得コマンドを受信すると、指定されたカメラからその時間および前後を含む動画を取得します。

センサーとの紐付け

同一のゲートウェイに接続されているセンサーの値がしきい値以上(または以下)となった場合に、指定されたカメラからその時間および前後を含む動画を取得します。


外部からのリクエスト

ゲートウェイに対して、DDPで動画録画コマンドを登録してください。


以下は、コマンドを受信した時刻の前後を含む15秒間の動画を録画するための動画録画コマンドの例です。


operateSensorModule.json

{

    "value": {

        "sensorModuleId": "0002:iCamera2-iCamera2FC9EB8",

        "operation": "captureVideo",

        "parameters": {

            "duration": 15

        },

        "expirationPeriod": 600000,

        "status": "pending"

    }

}


sensorModuleId

固定文字列”0002:”に続けてカメラのセットアップの際に指定したIDを指定してください。

operation

"captureVideo" (変更不要)

duration

取得したい動画の長さを秒で指定してください。

timestamp

(オプション、上記例では未使用)取得したい動画の時刻をRFC3339の日時文字列で指定してください。

unixMillis

(オプション、timestampと排他、上記例では未使用)取得したい動画の時刻をUnix Epochからのミリ秒で指定してください。

expirationPeriod

600000 (変更不要)

status

"pending" (変更不要)


補足事項:バッファリングの関係上、通常時において実際に取得される動画の長さはdurationより5秒長くなります。ゲートウェイの起動直後等、まだ動画データがバッファされていない際は動画が取得できない場合や、またはdurationより短い動画が取得される場合もあります。


作成した動画録画コマンドをそのDeviceのDDP に保存してください。


End point

PUT /devices/{deviceId}/kv/{key}

Key

operateSensorModule:{コマンドID。任意の英数字。}

Value

上で作成したoperateSensorModule.json


具体的な方法として、curlコマンドを利用してコマンドIDが”test”の動画録画コマンドを送信する例を以下に示します。DEVICE_IDとAPIKEYにはセットアップ時に確認したIDとAPI Keyを設定してください。正常に送信ができると HTTP/2 204 が返ります。コマンド送信後に1分程度待ってから、ビデオクリップが参照できることを確認してください。


$ export DEVICE_ID=35425 

$ export APIKEY=v1.ZHw

$ curl  -i -X 'PUT' -H "Content-Type: application/json" -H "authorization: ModeCloud $APIKEY" -d @operateSensorModule.json "https://api.tinkermode.com/devices/$DEVICE_ID/kv/operateSensorModule:test"


センサーとの紐付け

ゲートウェイに対して、DDPでトリガーを定義してください。ここでは、ドアセンサーが「開」を検知したときに動画を録画するためのトリガー定義を例として説明します。


まずはじめに、トリガーとするセンサーをセンサーモジュールの追加から追加してください。センサー単体の動作確認を行った後、トリガーとするセンサーのSeries ID を確認してください。Series IDはSensor Cloudのグラフの上部に表示されます。ドアセンサーの場合、末尾が”count:0”のSeries IDがドアの開閉に相当し、0が「閉」、1が「開」に対応します。


次に、トリガーの定義を作成します。以下の例では1つのみが定義されていますが、複数のセンサーをトリガーとして利用する場合は、[ ] の中で複数のトリガーを定義してください。


triggerConfig.json

{

    "value": [{

        "sensorModuleId": "0130:d6f000bfb1b6f",

        "sensorType": "COUNT:0",

        "value": 0,

        "comparisonOperator": ">",

        "targetSensorModuleId": "0002:iCamera2-iCamera2FC9EB8",

        "customCommand": "captureVideo",

        "coolDownPeriod": 60000

    }]

}


sensorModuleId

Series IDのうち、ハイフンより前の文字列を指定してください。

sensorType

Series IDのうち、ハイフンより後ろを大文字で指定してください。

value

トリガーするしきい値を数字で入力してください。

comparisonOperator

">" または "<" を指定してください。 

targetSensorModuleId

固定文字列"0002:"につづけて、動画を取得するカメラのIDを指定してください。

customCommand

"captureVideo" (変更不要)

coolDownPeriod

ミリ秒。一度トリガーした後は、この時間が経過するまでは同一のルールはトリガーされません。


作成したトリガーの定義をDeviceのDDP に保存してください。


End point

PUT /devices/{deviceId}/kv/{key}

Key

triggerConfig

Value

上で作成したtriggerConfig.json


具体的な方法として、curlコマンドを利用して定義する例を以下に示します。DEVICE_IDとAPIKEYにはセットアップ時に確認したIDとAPI Keyを設定してください。正常に送信ができると HTTP/2 204 が返ります。


$ export DEVICE_ID=35425 

$ export APIKEY=v1.ZHw

$ curl  -i -X 'PUT' -H "Content-Type: application/json" -H "authorization: ModeCloud $APIKEY" -d @triggerConfig.json "https://api.tinkermode.com/devices/$DEVICE_ID/kv/triggerConfig"


定義した後、ドアセンサーを開閉してビデオが録画されることをご確認ください。

センサーとの紐付け解除

登録したトリガーの定義をDeviceのDDPからDELETEしてください。削除後に動作確認を行い、ビデオが録画されないことをご確認ください。


$ export DEVICE_ID=35425 

$ export APIKEY=v1.ZHw

$ curl  -i -X 'DELETE' -H "Content-Type: application/json" -H "authorization: ModeCloud $APIKEY" "https://api.tinkermode.com/devices/$DEVICE_ID/kv/triggerConfig"

外部システムとの連携例

外部からのリクエストの仕組みを活用することで、Webhookを利用できる外部のシステムから動画の保存をリクエストすることができます。


ここでは、Actcast との連携を例に、Actcastのデバイスでイベントを検知したときに、そのときの動画をSensor CloudにアップロードするActcastの設定例を示します。

Device Nameの設定

Actcastにログインし、検知で使うDeviceのDeviceNameに、そのDeviceに対応するカメラのID(MODE側のカメラの設定で設定したIDと同じID)を設定してください。また、HostnameにそのDevice Nameを小文字にした名前を設定してください。



Castの設定

最初にActの設定を行ってください。Actの設定後にCastを追加してください。CastはMODEのゲートウェイ毎に追加する必要があります。


Triggerの設定にて、Cast Nameを設定してください。この際、MODEのゲートウェイ名称と同じ名称を入力しておくとあとから確認が容易になります。





次にActionの設定からWebhookを選択し、以下のとおり設定してください。




URL

MODE側の動画リクエスト用エンドポイントを指定してください。

例)

https://api.tinkermode.com/devices/35425/kv/operateSensorModule:Actcast

Device ID(35425)は変更してください。

Method

PUT

Headers : Content-Type

application/json

Headers : authorization

Add Itemで”authorization”を追加してください。 

固定文字列“ModeCloud”の後ろに1つスペースを開けて、MODEプロジェクトのAPI Keyを指定してください。デバイスのAPI Keyでは動作しません。

Body

以下の内容を設定してください。durationには取得したい動画の長さ(秒)を指定してください。


{

  "value": {

    "sensorModuleId": "0002:{{ device.name }}",

    "operation": "captureVideo",

    "parameters": {

      "unixMillis": {{ detected_at }},

      "duration": 15

    },

    "expirationPeriod": 600000,

    "status": "pending"

  }

}



Finish ボタンをクリックして終了し、動作確認を行ってください。ActcastのActivity LogからCastがトリガーされたかどうかを確認することができます。





ビデオクリップの参照

保存されたビデオクリップはSensor Cloudから参照ができます。また、MODEプラットフォームのAPI利用することで外部のシステムからダウンロードすることもできます。


Sensor Cloudのモジュール一覧から、該当するビデオカメラを選択してください。


ビデオクリップの一覧が表示されます。サムネイル画像をクリックすると動画が再生されます。



動画再生画面のメニュー([...]ボタン)から、動画をダウンロードすることもできます。