
Google Nest Hub Max 디스플레이는 Smart Device Management (SDM) API에서 지원됩니다. 이 기기는 디스플레이 기기 유형을 반환합니다.
sdm.devices.types.DISPLAY
Google Nest Hub Max에는 카메라가 있으며, 이 카메라는 카메라 기기 유형과 동일하게 작동합니다.
특성
참조
다음 특성, 명령어 또는 이벤트는 이 기기와 관련이 있습니다.
특성 | 설명 | 명령어 | 이벤트 |
---|---|---|---|
CameraEventImage | 이 특성은 이벤트에서 이미지를 생성하는 기능을 지원하는 모든 기기에 속합니다. | GenerateImage | |
CameraImage | 이 특성은 이미지를 촬영할 수 있는 모든 기기에 속합니다. | ||
CameraLiveStream | 이 특성은 라이브 스트리밍을 지원하는 모든 기기에 속합니다. | GenerateRtspStream ExtendRtspStream StopRtspStream | |
CameraMotion | 이 특성은 동작 감지 이벤트를 지원하는 모든 기기에 속합니다. | 모션 | |
CameraPerson | 이 특성은 사람 감지 이벤트를 지원하는 모든 기기에 속합니다. | Person | |
CameraSound | 이 특성은 소리 감지 이벤트를 지원하는 모든 기기에 속합니다. | 소리 | |
정보 | 이 특성은 기기 관련 정보가 있는 모든 기기에 속합니다. |
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" } } }
카메라 이벤트 처리
다음 이벤트는 디스플레이 기기 유형에서 트리거될 수 있습니다.유형 | 요소 | 설명 |
---|---|---|
이벤트 | CameraMotion 특성의 Motion 이벤트 | 카메라에서 움직임이 감지되었습니다. |
이벤트 | CameraPerson 특성의 Person 이벤트 | 카메라에서 사람이 감지되었습니다. |
이벤트 | CameraSound 특성의 Sound 이벤트 | 카메라에서 소리가 감지되었습니다. |
페이로드
{ "eventId" : "1dd1b516-a989-41dd-b67f-43b56835fc50",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.CameraMotion.Motion
" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "hCtjVjYO1ufdmKt8Yk6vCg8Zgt...", } } } "userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [ "enterprises/project-id/devices/device-id" ] }
eventId
이 포함되어 있습니다. 이 명령어는 이벤트와 관련된 카메라 이미지의 다운로드 URL을 반환합니다.
요청
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraEventImage.GenerateImage
",
"params" : {
"eventId" : "VMeeGduwnV2KTtClWR5dr878Xz..."
}
}
응답
{ "results" : { "url" : "https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...", "token" : "g.0.eventToken" } }
카메라 이미지 다운로드
GenerateImage 명령어 응답에서 url
에 대한 GET 호출을 실행하여 HTTP 승인 헤더에서 기본 승인과 함께 token
를 사용하여 카메라 이미지를 다운로드합니다.
curl -H "Authorization: Basic g.0.eventToken" \
https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...
width
또는 height
쿼리 매개변수를 사용하여 다운로드한 이미지의 해상도를 맞춤설정합니다. 이 매개변수 중 하나만 지정하면 됩니다. 다른 매개변수는 카메라의 가로세로 비율에 따라 자동으로 조정됩니다.
예를 들어 카메라의 가로세로 비율이 4:3인 경우 해상도가 480x360인 카메라 이미지를 다운로드하려면 너비 또는 높이를 지정합니다.
너비
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 명령어를 사용하세요.
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은 한 번에 한 클라이언트에서만 사용할 수 있습니다. 여러 클라이언트가 동시에 동일한 카메라에서 스트리밍하려는 경우 각 개별 클라이언트에 대해 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
라이브 스트림 중지
카메라 라이브 스트림을 더 이상 사용하지 않는 경우 스트림을 중지하고 무효화해야 합니다. 이렇게 하려면 생성한 스트림 형식에 적합한 StopFormatStream 명령어를CameraLiveStream특성에 사용하세요.
RTSP
RTSP 스트림을 중지하려면 토큰을 사용하여 CameraLiveStream 특성 명령의 StopRtspStream 명령으로 무효화합니다.
요청
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 오류 코드 참조를 확인하세요.