Google Nest Hub Max ディスプレイ は、Smart Device Management(SDM)API でサポートされています。このデバイスは、デバイスタイプ DISPLAY を返します。
sdm.devices.types.DISPLAY
Google Nest Hub Max にはカメラが搭載されており、カメラはデバイスタイプ CAMERA と同じように機能します。
トレイト
リファレンス
このデバイスに関連するトレイト、コマンド、イベントは次のとおりです。
| トレイト | 説明 | コマンド | イベント |
|---|---|---|---|
| CameraEventImage | このトレイトは、イベントから画像を生成できるデバイスに使用します。 | GenerateImage | |
| CameraImage | このトレイトは、画像を撮影できるデバイスに使用します。 | ||
| CameraLiveStream | このトレイトは、ライブ ストリーミングをサポートするデバイスに使用します。 | GenerateRtspStream ExtendRtspStream StopRtspStream | |
| CameraMotion | このトレイトは、モーション検知イベントをサポートするデバイスに使用します。 | Motion | |
| CameraPerson | このトレイトは、人感センサーイベントをサポートするデバイスに使用します。 | Person | |
| CameraSound | このトレイトは、サウンド検知イベントをサポートするデバイスに使用します。 | Sound | |
| Info | このトレイトは、デバイス関連の情報を提供するデバイスに使用します。 |
JSON
GET レスポンスにトレイトがない場合、そのトレイトまたは 機能は現在デバイスで使用できません。詳しくは、 デバイスタイプをご覧ください。
{
"type" : "sdm.devices.types.DISPLAY",
"traits" : {
"sdm.devices.traits.CameraEventImage" : {},
"sdm.devices.traits.CameraImage" : {
"maxImageResolution" : {
"width" : 1280,
"height" : 960
}
},
"sdm.devices.traits.CameraLiveStream" : {
"maxVideoResolution" : {
"width" : 640,
"height" : 480
},
"videoCodecs" : ["H264"],
"audioCodecs" : ["AAC"],
"supportedProtocols" : ["WEB_RTC"]
},
"sdm.devices.traits.CameraMotion" : {},
"sdm.devices.traits.CameraPerson" : {},
"sdm.devices.traits.CameraSound" : {},
"sdm.devices.traits.Info" : {
"customName" : "My device"
}
}
}カメラ イベントを処理する
DISPLAY デバイスタイプから次のイベントがトリガーされることがあります。| タイプ | 要素 | 説明 |
|---|---|---|
| イベント | Motion トレイトのモーション イベント | カメラが動きを検出しました。 |
| イベント | CameraPerson トレイトの人物イベント | カメラが人物を検出しました。 |
| イベント | CameraSound トレイトの音イベント | カメラが音を検出しました。 |
ペイロード
{
"eventId" : "f39b35b7-21ba-4cf4-bbf0-5d36b21b345d",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : {
"name" : "enterprises/project-id/devices/device-id",
"events" : {
"sdm.devices.events.CameraMotion.Motion" : {
"eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...",
"eventId" : "hkDG-nDge7SgosWYto0eOCLQeQ...",
}
}
}
"userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [
"enterprises/project-id/devices/device-id"
]
}eventId が含まれており、
GenerateImage
コマンドで使用できます。このコマンドは、イベントに関連するカメラ画像のダウンロード URL を返します。
リクエスト
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraEventImage.GenerateImage",
"params" : {
"eventId" : "Xza0fN83xY5p88UNrpa-Bx55Hh..."
}
}
レスポンス
{
"results" : {
"url" : "https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...",
"token" : "g.0.eventToken"
}
}
カメラ画像をダウンロードする
curl -H "Authorization: Basic g.0.eventToken" \
https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...width クエリ パラメータまたは height クエリ パラメータを使用して、ダウンロードした画像の解像度をカスタマイズします。これらのパラメータはどちらか一方を指定するだけで済みます。もう一方のパラメータは、カメラのアスペクト比に応じて自動的にスケーリングされます。
たとえば、カメラのアスペクト比が 4:3 の場合、解像度 480 x 360 のカメラ画像をダウンロードするには、幅または高さを指定します。
幅
curl -H "Authorization: Basic g.0.eventToken" \
https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?width=480身長
curl -H "Authorization: Basic g.0.eventToken" \
https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?height=360ダウンロード URL には、次の制限が適用されます。
- URL に両方のパラメータが指定されている場合は、
widthが使用され、heightは無視されます。 - URL にどちらのパラメータも指定されていない場合は、
widthのデフォルト値として 480 が選択されます。
画像プロパティについては、 CameraImage トレイトを ご覧ください。
ライブ ストリームにアクセスする
カメラからのライブ ストリームにアクセスできます。このデバイスでは、次のストリーム形式がサポートされています。
- RTSP
カメラとサポートされているストリーム形式の完全なリストについては、 サポートされているデバイスをご覧ください。
ライブ ストリームにアクセスするには、CameraLiveStream トレイトの適切な GenerateFormatStream command of the CameraLiveStream コマンドを使用します。
RTSP
RTSP ストリームの場合、CameraLiveStream トレイト コマンドの
GenerateRtspStream コマンドは、ストリーム URL と関連する streamToken を返します。
リクエスト
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.GenerateRtspStream",
"params" : {}
}
レスポンス
{
"results" : {
"streamUrls" : {
"rtspUrl" : "rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken"
},
"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...",
"streamToken" : "g.0.streamingToken",
"expiresAt" : "2018-01-04T18:30:00.000Z"
}
}
次に、ストリーム URL を使用してカメラのライブ ストリームにアクセスします。
rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken
RTSP ライブ ストリーム URL をクライアント間で共有することはできません。ストリーム URL は、一度に 1 つのクライアントでのみ使用できます。複数のクライアントが同じカメラから同時にストリーミングする場合は、個々のクライアントごとに RTSP コマンドを送信する必要があります。また、個々のクライアントは独自のストリーム URL を使用する必要があります。
ライブ ストリームを延長する
カメラのライブ ストリーム セッションは 5 分間のみ有効です。ライブ ストリームの有効期間を延長する必要がある場合は、生成したストリーム形式に応じて、 CameraLiveStream トレイトの適切な ExtendFormatStream コマンドを使用します。
RTSP
RTSP ストリームを延長するには、CameraLiveStream トレイト コマンドの
ExtendRtspStream コマンドを使用して、新しい streamExtensionToken と streamToken
値を取得します。
リクエスト
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.ExtendRtspStream",
"params" : {
"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
}
}
レスポンス
{
"results" : {
"streamExtensionToken" : "dGNUlTU2CjY5Y3VKaTZwR3o4Y1...",
"streamToken" : "g.0.newStreamingToken",
"expiresAt" : "2018-01-04T18:30:00.000Z"
}
}
これらの新しい値でストリーム URL を更新して、 ライブ ストリームの視聴を続けます。
rtsps://someurl.com/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?auth=g.0.newStreamingToken
ライブ ストリームを停止する
カメラのライブ ストリームを使用しなくなった場合は、停止してストリームを無効にする必要があります。これを行うには、生成したストリーム形式に応じて、CameraLiveStream トレイトの適切な StopFormatStream command of the CameraLiveStream コマンドを使用します。
RTSP
RTSP ストリームを停止するには、トークンを使用して、 StopRtspStream コマンドの CameraLiveStream トレイト コマンドで無効にします。
リクエスト
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.StopRtspStream",
"params" : {
"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
}
}
レスポンス
{}
エラー
このデバイスに関連して、次のエラーコードが返されることがあります。
| エラー メッセージ | RPC | トラブルシューティング |
|---|---|---|
| カメラ画像はダウンロードできなくなりました。 | DEADLINE_EXCEEDED |
イベント画像は、イベントが公開されてから 30 秒後に期限切れになります。期限切れになる前に画像をダウンロードしてください。 |
| イベント ID がカメラに属していません。 | FAILED_PRECONDITION |
カメラ アクティビティから返された正しい eventID を使用してください。 |
API エラーコードの完全なリストについては、API エラーコード リファレンスをご覧ください。