![Гнездо Хаб Макс](https://developers.google.cn/nest/device-access/images/device-hub-max.png?authuser=6&hl=ru)
Дисплей Google Nest Hub Max поддерживается API управления интеллектуальными устройствами (SDM). Это устройство возвращает тип устройства DISPLAY:
sdm.devices.types.DISPLAY
Google Nest Hub Max оснащен камерой, которая работает так же, как и устройство типа КАМЕРА.
Черты
Ссылка
Следующие характеристики, команды или события связаны с этим устройством:
Черта | Описание | Команды | События |
---|---|---|---|
КамераСобытиеИзображение | Эта особенность свойственна любому устройству, поддерживающему генерацию изображений из событий. | Генерировать изображение | |
КамераИзображение | Эта особенность свойственна любому устройству, поддерживающему съемку изображений. | ||
КамераLiveStream | Эта особенность свойственна любому устройству, поддерживающему прямую трансляцию. | ГенерироватьRtspStream РасширитьRtspStream СтопRtspStream | |
КамераДвижение | Эта особенность принадлежит любому устройству, поддерживающему события обнаружения движения. | Движение | |
КамераЧеловек | Эта особенность принадлежит любому устройству, поддерживающему события обнаружения человека. | Человек | |
КамераЗвук | Эта особенность принадлежит любому устройству, поддерживающему события обнаружения звука. | Звук | |
Информация | Эта черта принадлежит любому устройству и содержит информацию, связанную с устройством. |
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 | Камера обнаружила движение. |
Событие | Событие Person свойства CameraPerson | Камера обнаружила человека. |
Событие | Звуковое событие свойства CameraSound | Камера обнаружила звук. |
Полезная нагрузка
{ "eventId" : "e5efc212-2b66-454c-8a17-ea2302586547",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.CameraMotion.Motion
" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "KYp0O88IrEB6lMnbADZLkjqcYN...", } } } "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" : "fbFikofb9nWN1onMhn1tgwcIwI..."
}
}
Ответ
{ "results" : { "url" : "https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...", "token" : "g.0.eventToken" } }
Загрузите изображение с камеры
Выполните GET-вызов url
из ответа команды GenerateImage , используя token
в заголовке HTTP-авторизации с базовой авторизацией, чтобы загрузить изображение с камеры:
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.
См. КамераИзображение черта для получения информации о свойствах изображения.
Доступ к прямой трансляции
Доступна прямая трансляция с камеры. Данное устройство поддерживает следующие форматы потоков:
- РТСП
Полный список камер и поддерживаемых форматов потоков см. в разделе «Поддерживаемые устройства» .
Чтобы получить доступ к прямому потоку, используйте соответствующую команду «Создать поток FormatКамераLiveStreamчерта.
РТСП
Для потока RTSP команда GenerateRtspStream команды типажа CameraLiveStream возвращает 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
URL-адреса прямых трансляций RTSP не могут использоваться совместно между клиентами. URL-адрес потока может использоваться только одним клиентом одновременно. Если несколько клиентов хотят одновременно осуществлять потоковую передачу с одной и той же камеры, команды RTSP должны быть отправлены для каждого отдельного клиента, и каждый отдельный клиент должен использовать свой собственный URL-адрес потока.
Продлить прямую трансляцию
Сеансы прямой трансляции с камеры действительны только в течение 5 минут. Если вам нужно продлить время жизни прямого потока, используйте соответствующую команду «Расширить Format потока» КамераLiveStream признак сгенерированного вами формата потока.
РТСП
Чтобы расширить поток RTSP, используйте команду ExtendRtspStream команды типажа CameraLiveStream, чтобы получить новые 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
Остановить прямую трансляцию
Каждый раз, когда вы больше не используете прямую трансляцию с камеры, вам следует остановить ее и сделать поток недействительным. Для этого используйте соответствующую команду Stop Format Stream вКамераLiveStreamпризнак сгенерированного вами формата потока.
РТСП
Чтобы остановить поток RTSP, используйте токен для аннулирования с помощью команды StopRtspStream команды признака CameraLiveStream:
Запрос
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.StopRtspStream
",
"params" : {
"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
}
}
Ответ
{}
Ошибки
Следующие коды ошибок могут быть возвращены в отношении этого устройства:
Сообщение об ошибке | ПКП | Поиск неисправностей |
---|---|---|
Изображение с камеры больше недоступно для загрузки. | DEADLINE_EXCEEDED | Срок действия изображений события истекает через 30 секунд после публикации события. Обязательно загрузите изображение до истечения срока его действия. |
Идентификатор события не принадлежит камере. | FAILED_PRECONDITION | Используйте правильный eventID возвращаемый событием камеры. |
Полный список кодов ошибок API см. в Справочнике кодов ошибок API.