Отображать

l10n-placeholder69
Гнездо Хаб Макс

Дисплей Google Nest Hub Max поддерживается API управления интеллектуальными устройствами (SDM). Это устройство возвращает тип устройства DISPLAY:

sdm.devices.types.DISPLAY

Google Nest Hub Max оснащен камерой, которая работает так же, как и устройство типа КАМЕРА.

Черты

Ссылка

Следующие характеристики, команды или события связаны с этим устройством:

Черта Описание Команды События
CameraEventImage Эта особенность свойственна любому устройству, поддерживающему генерацию изображений из событий. Генерировать изображение
CameraImage Эта особенность свойственна любому устройству, поддерживающему съемку изображений.
CameraLiveStream Эта особенность свойственна любому устройству, поддерживающему прямую трансляцию. ГенерироватьRtspStream
РасширитьRtspStream
СтопRtspStream
CameraMotion Эта особенность принадлежит любому устройству, поддерживающему события обнаружения движения. Движение
КамераЧеловек Эта особенность принадлежит любому устройству, поддерживающему события обнаружения человека. Человек
CameraSound Эта особенность принадлежит любому устройству, поддерживающему события обнаружения звука. Звук
Информация Эта черта принадлежит любому устройству и содержит информацию, связанную с устройством.

JSON

Отсутствие признака в ответе GET указывает на то, что признак или функция в настоящее время недоступны для устройства. Дополнительные сведения см. в разделе Типы устройств .

{
  "type" : "sdm.devices.types.DISPLAY",
  "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.Info" : {
      "customName" : "My device"
    }
  }
}

Обработка событий камеры

Следующие события могут быть инициированы типом устройства ДИСПЛЕЯ:

Тип Элемент Описание
Событие Событие движения свойства CameraMotion Камера обнаружила движение.
Событие Событие Person свойства CameraPerson Камера обнаружила человека.
Событие Звуковое событие свойства CameraSound Камера обнаружила звук.
Например, здесь камера обнаружила движение:

Полезная нагрузка

{
  "eventId" : "066a40f6-0191-45bf-bb04-4d626c0e83ed",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.CameraMotion.Motion" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "kyiDY1YbEIro_YGP9lB0aTdele...", } } } "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" : "kFuixU38gzuSdSlQb2_rC7pSoL..."
  }
}

Ответ

{
  "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 для получения информации о свойствах изображения.

Доступ к прямой трансляции

Доступна прямая трансляция с камеры. Данное устройство поддерживает следующие форматы потоков:

  • РТСП

Полный список камер и поддерживаемых форматов потоков см. в разделе «Поддерживаемые устройства» .

Чтобы получить доступ к прямому потоку, используйте соответствующую команду Generate Format Stream типажа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..."
  }
}

Ответ

{}

Ошибки

Следующие коды ошибок могут быть возвращены в отношении этого устройства:

Сообщение об ошибке ПКП Поиск неисправностей
Изображение с камеры больше недоступно для загрузки. DEADLINE_EXCEEDED Срок действия изображений событий истекает через 30 секунд после публикации события. Обязательно загрузите изображение до истечения срока его действия.
Идентификатор события не принадлежит камере. FAILED_PRECONDITION Используйте правильный eventID , возвращаемый событием камеры.

Полный список кодов ошибок API см. в Справочнике кодов ошибок API.