
Все устаревшие модели дверных звонков Nest поддерживаются в API управления интеллектуальными устройствами (SDM). Данное устройство возвращает тип устройства DOORBELL:
sdm.devices.types.DOORBELL
В дверном звонке Google Nest (старая модель) есть камера, которая функционирует так же, как и любое другое устройство с камерой.
Черты
Ссылка
К данному устройству относятся следующие характеристики, команды или события:
| Черта | Описание | Команды | События |
|---|---|---|---|
| CameraEventImage | Эта особенность присуща любому устройству, поддерживающему генерацию изображений на основе событий. | GenerateImage | |
| CameraImage | Эта функция присуща любому устройству, поддерживающему фотосъемку. | ||
| CameraLiveStream | Эта функция присуща любому устройству, поддерживающему прямую трансляцию. | GenerateRtspStream ExtendRtspStream StopRtspStream | |
| CameraMotion | Эта функция присуща любому устройству, поддерживающему обнаружение движения. | Движение | |
| Оператор | Эта функция присуща любому устройству, поддерживающему события обнаружения людей. | Человек | |
| 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 | Звук зафиксирован камерой. |
| Событие | Событие звонка, связанное с характеристикой DoorbellChime. | Дверной звонок нажат. |
Полезная нагрузка
{
"eventId" : "3e7b7488-09ad-41f5-8381-165d5a589759",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : {
"name" : "enterprises/project-id/devices/device-id",
"events" : {
"sdm.devices.events.DoorbellChime.Chime" : {
"eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...",
"eventId" : "rjn57L02poi7gTFbOCYg0ocaKz..."
}
}
}
"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" : "nrbIeLo2lIzhuzLdJD7ARyfrsS..."
}
}
Ответ
{
"results" : {
"url" : "https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...",
"token" : "g.0.eventToken"
}
}
Скачать изображение с камеры
Для загрузки изображения с камеры выполните GET-запрос к url из ответа команды GenerateImage , используя token из заголовка HTTP Authorization с базовой авторизацией:
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
Полный список камер и поддерживаемых форматов потоковой передачи см. в разделе «Поддерживаемые устройства» .
Для доступа к прямой трансляции используйте соответствующую команду «Создать Format потока» в настройках.CameraLiveStreamчерта.
RTSP
Для потока 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
Для расширения потока 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
Остановить прямую трансляцию
Всякий раз, когда вы перестаёте использовать прямую трансляцию с камеры, следует остановить её и аннулировать поток. Для этого используйте соответствующую команду «Остановить Format потока» в настройках.CameraLiveStreamхарактеристика для сгенерированного вами формата потока.
RTSP
Чтобы остановить поток 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.