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

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

Все устаревшие дверные звонки 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" : "608c91c2-c583-47ad-87b0-6253432c3846",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.DoorbellChime.Chime" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "7ReaCtL1fJF5fVgSM_cR8g3ogS..." } } } "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" : "CRuCxiJkFRa1zNdznBU9PJdOuN..."
  }
}

Ответ

{
  "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.