Toutes les anciennes sonnettes Nest sont compatibles avec l'API Smart Device Management (SDM). Cet appareil renvoie un type d'appareil DOORBELL :
sdm.devices.types.DOORBELL
La sonnette Google Nest Doorbell (ancienne) est dotée d'une caméra, qui fonctionne de la même manière qu'un appareil de type CAMERA.
Caractéristiques
Référence
Les caractéristiques, commandes ou événements suivants sont associés à cet appareil :
Trait | Description | Commandes | Événements |
---|---|---|---|
CameraEventImage | Cette caractéristique appartient à tout appareil compatible avec la génération d'images à partir d'événements. | GenerateImage | |
CameraImage | Cette caractéristique appartient à tous les appareils permettant de prendre des photos. | ||
CameraLiveStream | Cette caractéristique appartient à tous les appareils compatibles avec le streaming en direct. | GenerateRtspStream ExtendRtspStream StopRtspStream | |
CameraMotion | Cette caractéristique appartient à tous les appareils compatibles avec les événements de détection de mouvement. | Mouvement | |
CameraPerson | Cette caractéristique appartient à tous les appareils compatibles avec les événements de détection de personne. | Personne | |
CameraSound | Cette caractéristique appartient à tout appareil compatible avec les événements de détection de sons. | Son | |
DoorbellChime | Cette caractéristique appartient à tout appareil compatible avec une sonnerie de sonnette et les événements de pression associés. | Sonnerie | |
Infos | Cette caractéristique appartient à n'importe quel appareil pour les informations le concernant. |
JSON
L'absence d'un trait dans une réponse GET indique que le trait ou la fonctionnalité n'est pas actuellement disponible pour l'appareil. Pour en savoir plus, consultez la section Types d'appareils.
{ "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" } } }
Gérer les événements liés à la sonnette et à la caméra
Les événements suivants peuvent être déclenchés à partir d'un type d'appareil DOORBELL :Type | Élément | Description |
---|---|---|
Événement | Événement Mouvement de la caractéristique CameraMotion | Un mouvement a été détecté par la caméra. |
É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. |
Événement | Événement carillon correspondant au trait de la sonnette Doorbell | Une pression sur la sonnette a été déclenchée. |
Charge utile
{ "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
qui peut être utilisé avec la commande GenerateImage. Cette commande renvoie une URL de téléchargement de l'image de la caméra associée à l'événement :
Requête
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraEventImage.GenerateImage
",
"params" : {
"eventId" : "mFNqXZk08luMZuuBBPCPbS7mZ4..."
}
}
Réponse
{ "results" : { "url" : "https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...", "token" : "g.0.eventToken" } }
Télécharger l'image d'un appareil photo
Appelez url
à l'aide d'un appel GET à partir d'une réponse de commande GenerateImage, en utilisant token
dans l'en-tête d'autorisation HTTP avec autorisation de base, pour télécharger l'image de la caméra :
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 de l'image téléchargée. Vous ne devez spécifier qu'un seul de ces paramètres. L'autre paramètre est mis à l'échelle automatiquement en fonction du format de la caméra.
Par exemple, si le format de la caméra est 4:3, pour télécharger l'image de la caméra 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é etheight
est ignoré. - Si aucun paramètre n'est fourni dans l'URL, la valeur par défaut de 480 est choisie pour
width
.
Pour en savoir plus sur les propriétés des images, consultez la propriété CameraImage .
Accéder à une diffusion en direct
Le flux en direct d'une caméra est accessible. Les formats de flux suivants sont compatibles avec cet appareil:
- RTSP
Pour obtenir la liste complète des caméras et des formats de flux compatibles, consultez la section Appareils compatibles.
Pour accéder à une diffusion en direct, utilisez la commande GenerateFormatStream appropriée de la caractéristiqueCameraLiveStream.
RTSP
Pour un flux RTSP, la commande GenerateRtspStream de la commande de trait 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 seul client à la fois. Si plusieurs clients souhaitent diffuser du contenu en streaming à partir de la même caméra en même temps, des commandes RTSP doivent être envoyées pour chaque client, et chaque client doit utiliser sa propre URL de flux.
Prolonger une diffusion en direct
Les sessions de diffusion en direct de la 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 commande ExtendRtspStream de la commande de trait CameraLiveStream pour obtenir de nouvelles valeurs 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" } }
Modifiez l'URL de la diffusion avec ces nouvelles valeurs pour continuer à regarder la diffusion en direct :
rtsps://someurl.com/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?auth=g.0.newStreamingToken
Arrêter une diffusion en direct
Chaque fois que vous n'utilisez plus la diffusion en direct d'une caméra, vous devez l'arrêter et invalider le flux. Pour ce faire, utilisez la commande StopFormatStream appropriée de la caractéristiqueCameraLiveStreampour le format de flux que vous avez généré.
RTSP
Pour arrêter un flux RTSP, utilisez le jeton pour l'invalider avec la commande StopRtspStream de la commande de trait 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 être renvoyés pour cet appareil :
Message d'erreur | RPC | Dépannage |
---|---|---|
L'image de la caméra n'est plus disponible au téléchargement. | DEADLINE_EXCEEDED |
Les images des événements expirent 30 secondes après la publication de l'événement. Veillez à télécharger l'image avant son expiration. |
L'ID d'événement n'appartient pas à la caméra. | FAILED_PRECONDITION |
Utilisez la eventID correcte renvoyée par l'événement de l'appareil photo. |
Consultez la documentation de référence sur les codes d'erreur de l'API pour obtenir la liste complète des codes d'erreur de l'API.