Все устаревшие дверные звонки Nest поддерживаются API управления интеллектуальными устройствами (SDM). Это устройство возвращает тип устройства ДВЕРНОЙ ЗВОНОК:
sdm.devices.types.DOORBELL
Дверной звонок Google Nest (устаревший вариант) оснащен камерой, функции которой аналогичны устройствам типа КАМЕРА.
Черты
Ссылка
Следующие характеристики, команды или события связаны с этим устройством:
Черта | Описание | Команды | События |
---|---|---|---|
КамераСобытиеИзображение | Эта особенность свойственна любому устройству, поддерживающему генерацию изображений из событий. | Генерировать изображение | |
КамераИзображение | Эта особенность свойственна любому устройству, поддерживающему съемку изображений. | ||
КамераLiveStream | Эта особенность свойственна любому устройству, поддерживающему прямую трансляцию. | ГенерироватьRtspStream РасширитьRtspStream СтопRtspStream | |
КамераДвижение | Эта особенность принадлежит любому устройству, поддерживающему события обнаружения движения. | Движение | |
КамераЧеловек | Эта особенность принадлежит любому устройству, поддерживающему события обнаружения человека. | Человек | |
КамераЗвук | Эта особенность принадлежит любому устройству, поддерживающему события обнаружения звука. | Звук | |
Дверной ЗвонокПерезвон | Эта особенность свойственна любому устройству, поддерживающему звуковой сигнал дверного звонка и связанные с ним пресс-мероприятия. | перезвон | |
Информация | Эта черта принадлежит любому устройству и содержит информацию, связанную с устройством. |
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" : "76f85e13-cc15-4705-83c3-0b3838118524",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.DoorbellChime.Chime
" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "cV7T3NiEMXH5ZmQz21AwMaW0mF..." } } } "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" : "mFNqXZk08luMZuuBBPCPbS7mZ4..."
}
}
Ответ
{ "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.