Maintenant que vous disposez d'un jeton d'accès et que l'appel initial de la liste des appareils a été effectué, vous pouvez utiliser l'API SDM pour accéder à votre appareil et le contrôler.
Lister les structures et les appareils
Utilisez curl
pour effectuer un appel GET simple au point de terminaison structures
:
curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/structures' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access-token'
Un appel réussi renvoie une liste de structures pour les comptes associés à votre projetDevice Access :
{ "structures": [ { "name": "enterprises/project-id/structures/structure-id", "traits": { "sdm.structures.traits.Info": { "customName": "structure-name" } } } ] }
Si vous ne l'avez pas déjà fait, effectuez un appel GET au point de terminaison devices
pour obtenir une liste d'appareils:
curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access-token'
Un appel réussi renvoie une liste d'appareils associés à votre projet Device Access. Chaque appareil dispose d'une liste unique de caractéristiques disponibles:
{ "devices": [ { "name": "enterprises/project-id/devices/device-id", "type": "sdm.devices.types.device-type", "traits": { ... }, "parentRelations": [ { "parent": "enterprises/project-id/structures/structure-id/rooms/room-id", "displayName": "device-room-name" } ] } ] }
Copiez le device-id pour chaque appareil. Vous en aurez besoin pour d'autres appels d'API.
Obtenir des informations sur un appareil
Pour obtenir des informations sur un appareil spécifique, effectuez un appel GET au point de terminaison device-id:
curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices/device-id' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access-token'
La réponse devrait être semblable à celle obtenue précédemment, mais uniquement pour l'appareil spécifique:
{ "name": "enterprises/project-id/devices/device-id", "type": "sdm.devices.types.device-type", "traits": { ... }, "parentRelations": [ { "parent": "enterprises/project-id/structures/structure-id/rooms/room-id", "displayName": "device-room-name" } ] }
Exécuter une commande
Après avoir validé votre accès à l'aide d'un appel GET réussi, essayez d'exécuter une commande en fonction du type d'appareil que vous avez autorisé:
THERMOSTAT
curl -X POST \
'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices/device-id:executeCommand' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access-token' \
--data-raw '{
"command" : "sdm.devices.commands.ThermostatMode.SetMode",
"params" : {
"mode" : "HEAT"
}
}'
CAMÉRA
curl -X POST \
'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices/device-id:executeCommand' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access-token' \
--data-raw '{
"command" : "sdm.devices.commands.CameraLiveStream.GenerateRtspStream",
"params" : {}
}'
Si l'appel aboutit, les résultats suivants se produisent:
THERMOSTAT
Vous recevez une réponse vide et le thermostat physique passe du mode actuel au mode spécifié dans les paramètres de commande.
{}
CAMÉRA
Vous recevez une URL de diffusion en direct et des jetons associés.
{ "results" : { "streamUrls" : { "rtspUrl" : "rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken" }, "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "streamToken" : "g.0.streamingToken", "expiresAt" : "2018-01-04T18:30:00.000Z" } }
Dépannage
Non authentifiés
Les jetons d'accès de l'API SDM ne sont valides que pendant une heure. Si vous recevez une réponse UNAUTHENTICATED, le jeton a probablement expiré. Utilisez votre jeton d'actualisation pour obtenir un nouveau jeton d'accès.
Autres erreurs
Pour obtenir la liste complète des codes d'erreur Device Access , consultez la documentation de référence sur les codes d'erreur.