Utiliser l'API

Avec un jeton d'accès à la main et l'appel initial de la liste d'appareils, vous êtes prêt à 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, appelez GET au point de terminaison devices pour obtenir la liste des 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 a sa propre liste 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 les autres appels d'API.

Obtenir des informations sur un appareil

Pour obtenir des informations sur un appareil spécifique, appelez 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 identique à celle obtenue précédemment, mais uniquement pour l'appareil concerné:

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

APPAREIL PHOTO

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 sont obtenus:

thermostat

Vous recevez une réponse vide, et le thermostat physique remplace son mode actuel par le mode spécifié dans les paramètres de commande.

{}

APPAREIL PHOTO

Vous recevez l'URL de la diffusion en direct et les 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é

Les jetons d'accès pour 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

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