Utiliser l'API

Avec un jeton d'accès en main et l'appel initial de liste d'appareils, vous êtes maintenant prêt à utiliser l'API SDM pour accéder à votre appareil et le contrôler.

Structures de listes et 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 la liste des structures des comptes associés à votre Device Access projet:

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

Les appels réussis affichent la liste des appareils associés à votre Device Access projet. Chaque appareil dispose de 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, effectuez un appel GET auprès de device-id. point de terminaison:

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 à la précédente, 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 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 votre appel aboutit, les résultats suivants se produisent:

thermostat

Vous recevez une réponse vide et le thermostat physique modifie sa mode actuel sur le mode spécifié dans les paramètres de la commande.

{}

CAMÉRA

Vous recevez une URL de 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és

Les jetons d'accès pour l'API SDM ne sont valides que pendant 1 heure. Si vous obtenez une réponse NON AUTHENTIFIÉE, c'est que le jeton a probablement expiré. Utilisez votre jeton d'actualisation pour obtenir un jeton d'accès.

Autres erreurs

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