Дверной звонок (устаревший)

Гнездо Привет

Все устаревшие модели дверных звонков 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.