Display

Nest Hub Max

L'écran Google Nest Hub Max écran est compatible avec l'API Smart Device Management (SDM). Cet appareil renvoie un type d'appareil sur DISPLAY:

sdm.devices.types.DISPLAY

Le Google Nest Hub Max est doté d'une caméra qui fonctionne de la même manière qu'un type d'appareil CAMERA.

Caractéristiques

Référence

Les traits, commandes ou événements suivants sont liés à cet appareil:

TraitDescriptionCommandesÉvénements
CameraEventImageCette caractéristique appartient à tout appareil compatible avec la génération d'images à partir d'événements.GenerateImage
CameraImageCette caractéristique appartient à tout appareil compatible avec la prise d'images.
CameraLiveStreamCette caractéristique appartient à tout appareil compatible avec la diffusion en direct.GenerateRtspStream
ExtendRtspStream
StopRtspStream
CameraMotionCette caractéristique appartient à tout appareil compatible avec les événements de détection de mouvement.Mouvement
CameraPersonCette caractéristique appartient à tout appareil compatible avec les événements de détection de personnes.Personne
CameraSoundCette caractéristique appartient à tout appareil compatible avec les événements de détection de sons.Son
InfosCette caractéristique appartient à n'importe quel appareil pour les informations liées aux appareils.

JSON

L'absence de caractéristique dans une réponse GET indique que la caractéristique ou fonctionnalité n'est actuellement pas disponible pour l'appareil. Voir Types d'appareils des informations.

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

Gérer les événements de caméra

Les événements suivants peuvent être déclenchés à partir d'un type d'appareil DISPLAY:

Type Élément Description
Événement Événement Motion de la caractéristique CameraMotion La caméra a détecté un mouvement.
Événement Événement Person de la caractéristique CameraPerson Une personne a été détectée par la caméra.
Événement Événement Sound de la caractéristique CameraSound La caméra a détecté un son.
Dans cet exemple, la caméra a détecté un mouvement:

Charge utile

{
  "eventId" : "5d849994-d0c3-4e9e-829c-9c6595e51a1d",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.CameraMotion.Motion" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "vCUm8lDdJkr6UmerKxa2LUeRP-...", } } } "userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [ "enterprises/project-id/devices/device-id" ] }
La charge utile de cet événement contient un eventId qui peut être utilisé avec GenerateImage . Cette commande renvoie une URL de téléchargement pour l'image de l'appareil photo associée à événement:

Requête

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.CameraEventImage.GenerateImage",
  "params" : {
    "eventId" : "DyHUSHhGFaT-lezu-NCO00XPRp..."
  }
}

Réponse

{
  "results" : {
    "url" : "https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...",
    "token" : "g.0.eventToken"
  }
}

Télécharger l'image d'un appareil photo

Effectuez un appel GET à url à partir d'une Réponse de la commande GenerateImage, à l'aide du token dans l'en-tête d'autorisation HTTP avec l'autorisation de base, pour téléchargez l'image de l'appareil photo:

curl -H "Authorization: Basic g.0.eventToken" \
      https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...

Utilisez les paramètres de requête width ou height pour personnaliser la résolution du l'image téléchargée. Vous ne devez spécifier qu'un seul de ces paramètres. L'autre est mis à l'échelle automatiquement en fonction du format de la caméra.

Par exemple, si la caméra est au format 4:3, télécharger l'image avec une résolution de 480 x 360, spécifiez la largeur ou la hauteur:

Largeur

curl -H "Authorization: Basic g.0.eventToken" \
      https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?width=480

Hauteur

curl -H "Authorization: Basic g.0.eventToken" \
      https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?height=360

D'autres restrictions s'appliquent à l'URL de téléchargement:

  • Si les deux paramètres sont fournis dans l'URL, width est utilisé et height est utilisé. est ignoré.
  • Si aucun paramètre n'est fourni dans l'URL, la valeur par défaut du paramètre width

Découvrez la caractéristique CameraImage sur les propriétés des images.

Accéder à une diffusion en direct

Le flux en direct d'une caméra est accessible. Les formats de flux suivants sont pris en charge par cet appareil:

  • RTSP

Pour obtenir la liste complète des caméras et des formats de flux compatibles, consultez Appareils compatibles.

Pour accéder à une diffusion en direct, utilisez l'option "GénérerFormatflux" appropriée de la commande CameraLiveStream trait de caractère.

RTSP

Pour un flux RTSP, le paramètre Commande GenerateRtspStream de la commande de caractéristique CameraLiveStream renvoie l'URL du flux et le streamToken associé:

Requête

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.CameraLiveStream.GenerateRtspStream",
  "params" : {}
}

Réponse

{
  "results" : {
    "streamUrls" : {
      "rtspUrl" : "rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken"
    },
    "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...",
    "streamToken" : "g.0.streamingToken",
    "expiresAt" : "2018-01-04T18:30:00.000Z"
  }
}

Utilisez ensuite l'URL du flux pour accéder au flux en direct de la caméra:

rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken

Les URL de diffusion en direct RTSP ne peuvent pas être partagées entre les clients. Une URL de flux ne peut être utilisée que par un client à la fois. Si plusieurs clients souhaitent diffuser du contenu en streaming depuis la même caméra en même temps, des commandes RTSP doivent être envoyées pour chaque client, et chacun d'eux doit utiliser sa propre URL de flux.

Prolonger une diffusion en direct

Les sessions de diffusion en direct d'une caméra ne sont valides que pendant cinq minutes. Si vous devez prolonger la durée de vie d'une diffusion en direct, utilisez la commande "ExtendFormatStream" appropriée de la caractéristique CameraLiveStream pour le format de flux que vous avez généré.

RTSP

Pour étendre un flux RTSP, utilisez la fonction ExtendRtspStream de la commande de caractéristique CameraLiveStream pour obtenez les nouveaux streamExtensionToken et streamToken :

Requête

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.CameraLiveStream.ExtendRtspStream",
  "params" : {
    "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
  }
}

Réponse

{
  "results" : {
    "streamExtensionToken" : "dGNUlTU2CjY5Y3VKaTZwR3o4Y1...",
    "streamToken" : "g.0.newStreamingToken",
    "expiresAt" : "2018-01-04T18:30:00.000Z"
  }
}

Mettez à jour l'URL du flux avec ces nouvelles valeurs pour continuer à voir le diffusion en direct:

rtsps://someurl.com/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?auth=g.0.newStreamingToken

Arrêter une diffusion en direct

Chaque fois que vous n'utilisez plus le flux en direct d'une caméra, vous devez l'arrêter et invalider le flux. Pour ce faire, utilisez l'élément StopFormatStream approprié de la commande CameraLiveStream du format de flux que vous avez généré.

RTSP

Pour arrêter un flux RTSP, utilisez le jeton pour invalider à l'aide du Commande StopRtspStream de la commande de caractéristique CameraLiveStream:

Requête

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.CameraLiveStream.StopRtspStream",
  "params" : {
    "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
  }
}

Réponse

{}

Erreurs

Le ou les codes d'erreur suivants peuvent s'afficher pour cet appareil:

Message d'erreur RPC Dépannage
L'image de l'appareil photo n'est plus disponible au téléchargement. DEADLINE_EXCEEDED Les images d'un événement expirent 30 secondes après leur publication. Veillez à télécharger l'image avant qu'elle n'expire.
L'ID d'événement n'appartient pas à la caméra. FAILED_PRECONDITION Utilisez le bon eventID renvoyé par l'événement enregistré.

Consultez la documentation de référence sur les codes d'erreur de l'API pour la liste complète des codes d'erreur de l'API.