
Все устаревшие модели дверных звонков Nest поддерживаются в API управления интеллектуальными устройствами (SDM). Это устройство возвращает тип устройства ДВЕРНОЙ ЗВОНОК:
sdm.devices.types.DOORBELL
Дверной звонок Google Nest Doorbell (устаревшая модель) оснащен камерой, которая функционирует так же, как устройство типа КАМЕРА.
Черты
Ссылка
С этим устройством связаны следующие характеристики, команды или события:
Черта | Описание | Команды | События |
---|---|---|---|
CameraEventImage | Эта черта присуща любому устройству, поддерживающему генерацию изображений из событий. | GenerateImage | |
CameraImage | Эта характеристика присуща любому устройству, поддерживающему фотосъемку. | ||
CameraLiveStream | Эта характеристика присуща любому устройству, поддерживающему потоковую трансляцию. | GenerateRtspStream ExtendRtspStream StopRtspStream | |
CameraMotion | Эта характеристика присуща любому устройству, поддерживающему события обнаружения движения. | Движение | |
CameraPerson | Эта характеристика присуща любому устройству, поддерживающему события обнаружения человека. | Человек | |
CameraSound | Эта характеристика присуща любому устройству, поддерживающему события обнаружения звука. | Звук | |
Дверной звонок | Эта функция доступна любому устройству, поддерживающему звуковой сигнал дверного звонка и связанные с ним события нажатия. | Перезвон | |
Информация | Эта черта присуща любому устройству для получения информации, связанной с устройством. |
JSON
Отсутствие характеристики в ответе GET означает, что эта характеристика или функция в настоящее время недоступна для устройства. Подробнее см. в разделе «Типы устройств» .
{ "type" : "sdm.devices.types.DOORBELL", "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.DoorbellChime" : {}, "sdm.devices.traits.Info" : { "customName" : "My device" } } }
Обработка событий дверного звонка и камеры
Следующие события могут быть вызваны устройством типа ДВЕРНОЙ ЗВОНОК:Тип | Элемент | Описание |
---|---|---|
Событие | Событие движения свойства CameraMotion | Камера зафиксировала движение. |
Событие | Событие Person черты CameraPerson | Камера зафиксировала человека. |
Событие | Звуковое событие признака CameraSound | Камера зафиксировала звук. |
Событие | Событие «Chime» черты DoorbellChime | Был нажат дверной звонок. |
Полезная нагрузка
{ "eventId" : "fc150baf-9644-4374-b3fc-3e69e4143c36",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.DoorbellChime.Chime
" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "QlUBqTijn_eelBUvEYzWWhahFg..." } } } "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" : "_yjgyhZoAc6tvl4TcsQKvgL0TM..."
}
}
Ответ
{ "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.
См. CameraImage признак для получения информации о свойствах изображения.
Доступ к прямой трансляции
Доступна прямая трансляция с камеры. Устройство поддерживает следующие форматы потоковой передачи:
- РТСП
Полный список камер и поддерживаемых форматов потоковой передачи см. в разделе Поддерживаемые устройства .
Чтобы получить доступ к прямой трансляции, используйте соответствующую команду «Сгенерировать Format потока»CameraLiveStreamчерта.
РТСП
Для потока 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 потока» в меню CameraLiveStream черта для сгенерированного вами формата потока.
РТСП
Чтобы расширить поток 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 вCameraLiveStreamчерта для сгенерированного вами формата потока.
РТСП
Чтобы остановить поток RTSP, используйте токен для аннулирования с помощью команды StopRtspStream команды-трейта CameraLiveStream:
Запрос
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.StopRtspStream
",
"params" : {
"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
}
}
Ответ
{}
Ошибки
В отношении данного устройства могут быть возвращены следующие коды ошибок:
Сообщение об ошибке | RPC | Поиск неисправностей |
---|---|---|
Изображение с камеры больше не доступно для загрузки. | DEADLINE_EXCEEDED | Изображения событий удаляются через 30 секунд после публикации. Обязательно загрузите изображение до истечения срока действия. |
Идентификатор события не принадлежит камере. | FAILED_PRECONDITION | Используйте правильный eventID , возвращаемый событием камеры. |
Полный список кодов ошибок API см. в Справочнике кодов ошибок API.