Utilisation d'AWS IoT 1-Click avec l'interface de ligne de commande AWS - AWS IoT 1-Click

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation d'AWS IoT 1-Click avec l'interface de ligne de commande AWS

Pour démontrer l'utilisation de l'interface de ligne de commande AWS (AWS CLI), réfléchissez au scénario d'une entreprise d'élimination qui veut rationaliser son service de ramassage de bennes à ordures à l'aide d'AWS IoT 1-Click.

Dans ce scénario, chaque benne à ordures est jumelée à un AWS IoT Enterprise Button. Lorsqu'une benne à ordures est pleine, le client n'a qu'à appuyer sur le bouton associé pour demander son remplacement.

Note

Tous les ID d'appareil AWS IoT Button commencent par « G030PM ».

Les étapes suivantes sont utilisées par la société d'élimination des déchets pour préparer le AWS IoT Enterprise Button pour l'utilisation par le client.

Pour préparer le AWS IoT Enterprise Button pour l'utilisation du client
  1. La seule façon de configurer le Wi-Fi pour un AWS IoT Enterprise Button est d'utiliser l'application mobile AWS IoT 1-Click. Pour installer l'application, veuillez consulter Application mobile AWS IoT 1-Click. Après avoir installé l'application, n'appuyez pas sur Connexion à un compte AWS (comme c'est normalement le cas). Dans cet exercice, nous voulons démontrer comment utiliser l'interface de ligne de commande AWS. Si vous appuyez sur Connexion à un compte AWS, les commandes initiate-device-claim et finalize-device-claim sont appelées pour vous, et nous voulons le faire « manuellement » à l'aide de l'interface de ligne de commande comme indiqué dans les étapes suivantes.

  2. Pour la démonstration de l'interface de ligne de commande AWS, au lieu d'appuyer surSe connecter au compte AWS, choisissez la petite icône Wi-Fi ronde dans le coin supérieur droit. Ensuite, choisissez Configurer le Wi-Fi. Scannez ou saisissez l'ID de l'appareil et suivez le reste des instructions de l'application mobile.

  3. Si l'interface de ligne de commande AWS n'est pas installée, suivez les instructions décrites dans la rubriqueInstallation de l'interface de ligne de commande AWS. Pour répertorier les commandes AWS CLI 1-Click disponibles, exécutez les deux commandes suivantes.

    aws iot1click-projects help
    aws iot1click-devices help
  4. Pour associer le AWS IoT Enterprise Button maintenant connecté au Wi-Fi au compte AWS de la société d'élimination des déchets, exécutez la commande suivante à l'aide de l'ID de votre appareil.

    aws iot1click-devices initiate-device-claim --device-id G030PM0123456789 { "State": "CLAIM_INITIATED" }

    Appuyez sur le bouton de l'appareil. Après un clignotement intermittent de lumière blanche, vous devriez voir un voyant vert fixe pendant environ une seconde. Si tel n'est pas le cas, répétez la procédure de connexion Wi-Fi précédente.

  5. Une fois que vous avez vu le voyant vert fixe à l'étape précédente, exécutez la commande suivante (en utilisant la valeur d'ID de votre appareil).

    aws iot1click-devices finalize-device-claim --device-id G030PM0123456789 { "State": "CLAIMED" }

    La ."State": "CLAIMED"indique que l'appareil est enregistré avec succès auprès du service AWS IoT 1-Click.

    Note

    Si le fabricant de l'appareil a fourni un code de demande commençant par « C- », vous pouvez utiliser simplement la commande aws iot1click-devices claim-devices-by-claim-code pour demander un ou plusieurs appareils à l'aide d'un seul code de demande, comme illustré dans l'exemple suivant.

    aws iot1click-devices claim-devices-by-claim-code --claim-code C-123EXAMPLE { "Total": 9 "ClaimCode": "C-123EXAMPLE" }

    Dans cet exemple,"Total": 9indique que les neuf appareils associés au code de demandeC-123EXAMPLEont été demandés avec succès par le service AWS IoT 1-Click.

  6. Ensuite, vous vous préparez à créer un projet AWS IoT 1-Click approprié pour la société de cession en créant un fichier texte JSON nommécreate-project.json. Le fichier zip contient les éléments suivants :

    { "projectName": "SeattleDumpsters", "description": "All dumpsters in the Seattle region.", "placementTemplate": { "defaultAttributes": { "City" : "Seattle" }, "deviceTemplates": { "empty-dumpster-request" : { "deviceType": "button" } } } }

    Les paires clé-valeur placementTemplate et deviceTemplates sont les attributs qui seront appliqués à tous les boutons qui font partie du projet SeattleDumpsters. Pour créer ce projet, exécutez la commande suivante (qui suppose quecreate-project.jsonse trouve dans leRépertoire de travail actuelDe l'invite de commande AWS).

    aws iot1click-projects create-project --cli-input-json file://create-project.json

    Pour afficher le projet nouvellement créé, exécutez la commande suivante.

    aws iot1click-projects list-projects { "projects": [ { "arn": "arn:aws:iot1click:us-west-2:012345678901:projects/SeattleDumpsters", "projectName": "SeattleDumpsters", "createdDate": 1563483100, "updatedDate": 1563483100, "tags": {} } ] }

    Pour plus de détails, exécutez la commande describe-project, comme suit.

    aws iot1click-projects describe-project --project-name SeattleDumpsters { "project": { "arn": "arn:aws:iot1click:us-west-2:012345678901:projects/SeattleDumpsters", "projectName": "SeattleDumpsters", "description": "All dumpsters in the Seattle region.", "createdDate": 1563483100, "updatedDate": 1563483100, "placementTemplate": { "defaultAttributes": { "City": "Seattle" }, "deviceTemplates": { "empty-dumpster-request": { "deviceType": "button", "callbackOverrides": {} } } }, "tags": {} } }
  7. Avec le projet créé pour la région de Seattle, vous créez ensuite un emplacement pour une benne à ordures particulière (pour le client 217), comme suit. Les guillemets échappés sont nécessaires pour Windows.

    aws iot1click-projects create-placement --project-name SeattleDumpsters --placement-name customer217 --attributes "{\"location\": \"1800 9th Ave Seattle, WA 98101\", \"phone\": \"206-123-4567\"}"

    Pour afficher le placement nouvellement créé, exécutez la commande suivante.

    aws iot1click-projects list-placements --project-name SeattleDumpsters { "placements": [ { "projectName": "SeattleDumpsters", "placementName": "customer217", "createdDate": 1563488454, "updatedDate": 1563488454 } ] }

    Pour plus de détails, exécutez la commande describe-placement, comme suit.

    aws iot1click-projects describe-placement --project-name SeattleDumpsters --placement-name customer217 { "placement": { "projectName": "SeattleDumpsters", "placementName": "customer217", "attributes": { "phone": "206-123-4567", "location": "1800 9th Ave Seattle, WA 98101" }, "createdDate": 1563488454, "updatedDate": 1563488454 } }
  8. Bien que l'appareil soit désormais associé au compte AWS IoT 1-Click de la société de cession, il n'est pas associé au placement. Pour ce faire, exécutez la commande suivante.

    aws iot1click-projects get-devices-in-placement --project-name SeattleDumpsters --placement-name customer217 { "devices": {} }

    Pour associer l'appareil au placement, exécutez la commande suivante.

    aws iot1click-projects associate-device-with-placement --project-name SeattleDumpsters --placement-name customer217 --device-template-name empty-dumpster-request --device-id G030PM0123456789

    Pour confirmer la commande précédente, exécutez get-devices-in-placement à nouveau.

    aws iot1click-projects get-devices-in-placement --project-name SeattleDumpsters --placement-name customer217 { "devices": { "empty-dumpster-request": "G030PM0123456789" } }

    Pour plus de détails, exécutez la commande describe-device, comme suit (remarquez le basculement de iot1click-projects vers iot1click-devices).

    aws iot1click-devices describe-device --device-id G030PM0123456789 { "DeviceDescription": { "Arn": "arn:aws:iot1click:us-west-2:012345678901:devices/G030PM0123456789", "Attributes": { "projectRegion": "us-west-2", "projectName": "SeattleDumpsters", "placementName": "customer217", "deviceTemplateName": "empty-dumpster-request" }, "DeviceId": "G030PM0123456789", "Enabled": false, "RemainingLife": 99.9, "Type": "button", "Tags": {} } }

    Étant donné qu'il n'y a actuellement qu'un seul appareil, la commande suivante produit des résultats similaires.

    aws iot1click-devices list-devices --device-type button { "Devices": [ { "Arn": "arn:aws:iot1click:us-west-2:012345678901:devices/G030PM0123456789", "Attributes": { "projectRegion": "us-west-2", "projectName": "SeattleDumpsters", "placementName": "customer217", "deviceTemplateName": "empty-dumpster-request" }, "DeviceId": "G030PM0123456789", "Enabled": false, "RemainingLife": 99.9, "Type": "button", "Tags": {} } ] }
  9. Pour vérifier que l'appareil fonctionne correctement, exécutez la commande suivante. Ajustez les horodatages de manière appropriée, qui sont au format ISO 8061.

    aws iot1click-devices list-device-events --device-id G030PM0123456789 --from-time-stamp 2019-07-17T15:45:12.880Z --to-time-stamp 2019-07-19T15:45:12.880Z { "Events": [ { "Device": { "Attributes": {}, "DeviceId": "G030PM0123456789", "Type": "button" }, "StdEvent": "{\"clickType\": \"SINGLE\", \"reportedTime\": \"2019-07-18T23:47:55.015Z\", \"certificateId\": \"fe8798a6c97c62ef8756b80eeefdcf2280f3352f82faa8080c74cc4f4a4d1811\", \"remainingLife\": 99.85000000000001, \"testMode\": false}" } ] }

    Ici, nous voyons qu'un événement en un clic (\"clickType\": \"SINGLE\") s'est produit le 2019-07-18T 23:47:55.015Z. Double-cliquez maintenant sur l'appareil (deux appuis successifs rapides sur le bouton), puis exécutez à nouveau la commande. Notez maintenant l'événement de double-clic (\"clickType\": \"DOUBLE\"), similaire à ce qui suit.

    aws iot1click-devices list-device-events --device-id G030PM0123456789 --from-time-stamp 2019-07-17T15:45:12.880Z --to-time-stamp 2019-07-19T15:45:12.880Z { "Events": [ { "Device": { "Attributes": {}, "DeviceId": "G030PM0123456789", "Type": "button" }, "StdEvent": "{\"clickType\": \"SINGLE\", \"reportedTime\": \"2019-07-18T23:47:55.015Z\", \"certificateId\": \"fe8798a6c97c62ef8756b80eeefdcf2280f3352f82faa8080c74cc4f4a4d1811\", \"remainingLife\": 99.85000000000001, \"testMode\": false}" }, { "Device": { "Attributes": {}, "DeviceId": "G030PM0123456789", "Type": "button" }, "StdEvent": "{\"clickType\": \"DOUBLE\", \"reportedTime\": \"2019-07-19T00:14:41.353Z\", \"certificateId\": \"fe8798a6c97c62ef8756b80eeefdcf2280f3352f82faa8080c74cc4f4a4d1811\", \"remainingLife\": 99.8, \"testMode\": false}" } ] }
  10. Chaque type d'appareil a un ensemble de méthodes d'appareil appelables. Pour répertorier les méthodes disponibles pour votre type d'appareil, exécutez la commande get-device-methods, comme suit.

    aws iot1click-devices get-device-methods --device-id G030PM0123456789 { "DeviceMethods": [ { "MethodName": "getDeviceHealthParameters" }, { "MethodName": "setDeviceHealthMonitorCallback" }, { "MethodName": "getDeviceHealthMonitorCallback" }, { "MethodName": "setOnClickCallback" }, { "MethodName": "getOnClickCallback" } ] }

    Pour appeler l'une des méthodes disponibles, utilisez la commande invoke-device-method, comme indiqué ci-dessous.

    aws iot1click-devices invoke-device-method --cli-input-json file://invoke-device-method.json { "DeviceMethodResponse": "{\"remainingLife\": 99.8}" }

    Ici, invoke-device-method.json contient ce qui suit.

    { "DeviceId": "G030PM0123456789", "DeviceMethod": { "DeviceType": "device", "MethodName": "getDeviceHealthParameters" } }
    Note

    Les méthodes get (telles que getDeviceHealthParameters) ne s'attendent pas à des paramètres. Par conséquent, la ligne "DeviceMethodParameters": "" dans le fichier JSON ne peut pas être utilisée (cela entraînera ceci : An error occurred (InvalidRequestException) when calling the InvokeDeviceMethod operation: A request parameter was invalid.)

  11. En exécutant aws iot1click-devices list-devices --device-type button, vous pouvez voir que la valeur par défaut pour Enabled est false. La commande suivante définit cette clé sur true.

    aws iot1click-devices update-device-state --device-id G030PM0123456789 --enabled

    Pour le redéfinir sur false, exécutez la commande précédente, à nouveau en utilisant l'argument --no-enabled.

  12. Si les informations client changent, vous pouvez mettre à jour les informations de placement d'un appareil comme indiqué ci-après (notez le basculement de iot1click-devices vers iot1click-projects). Exécutez la commande suivante pour afficher les informations actuelles de customer217 (voir attributes).

    aws iot1click-projects describe-placement --project-name SeattleDumpsters --placement-name customer217 { "placement": { "projectName": "SeattleDumpsters", "placementName": "customer217", "attributes": { "phone": "206-123-4567", "location": "1800 9th Ave Seattle, WA 98101" }, "createdDate": 1563488454, "updatedDate": 1563488454 } }

    Ensuite, exécutez la commande suivante pour mettre à jour les attributs de téléphone et d'emplacement du client.

    aws iot1click-projects update-placement --cli-input-json file://update-placement.json

    Ici, update-placement.json contient ce qui suit.

    { "projectName": "SeattleDumpsters", "placementName": "customer217", "attributes": { "phone": "206-266-1000", "location": "410 Terry Ave N Seattle, WA 98109" } }

    Pour consulter cette mise à jour, exécutez describe-placement à nouveau, comme indiqué.

    aws iot1click-projects describe-placement --project-name SeattleDumpsters --placement-name customer217 { "placement": { "projectName": "SeattleDumpsters", "placementName": "customer217", "attributes": { "phone": "206-266-1000", "location": "410 Terry Ave N Seattle, WA 98109" }, "createdDate": 1563488454, "updatedDate": 1563572842 } }
  13. Pour mettre à jour les informations du projet, utilisez la commande update-project. Un projet contient généralement plusieurs placements de clients. Voici les informations existantes sur le projet SeattleDumpster.

    aws iot1click-projects describe-project --project-name SeattleDumpsters { "project": { "arn": "arn:aws:iot1click:us-west-2:012345678901:projects/SeattleDumpsters", "projectName": "SeattleDumpsters", "description": "All dumpsters in the Seattle region.", "createdDate": 1563483100, "updatedDate": 1563483100, "placementTemplate": { "defaultAttributes": { "City": "Seattle" }, "deviceTemplates": { "empty-dumpster-request": { "deviceType": "button", "callbackOverrides": {} } } }, "tags": {} } }

    Pour remplacer « Toutes les bennes à ordures dans la région de Seattle » par « Toutes les bennes à ordures (jardin de jardin)déchet, recyclage et déchets) dans la région de Seattle », exécutez la commande suivante.

    aws iot1click-projects update-project --project-name SeattleDumpsters --description "All dumpsters (yard waste, recycling, garbage) in the Seattle region."

    Vous pouvez voir que la valeur de la clé "description" a été mise à jour pour tous les emplacements SeattleDumpsters.

    aws iot1click-projects describe-project --project-name SeattleDumpsters { "project": { "arn": "arn:aws:iot1click:us-west-2:012345678901:projects/SeattleDumpsters", "projectName": "SeattleDumpsters", "description": "All dumpsters (yard waste, recycling, garbage) in the Seattle region.", "createdDate": 1563483100, "updatedDate": 1563819039, "placementTemplate": { "defaultAttributes": { "City": "Seattle" }, "deviceTemplates": { "empty-dumpster-request": { "deviceType": "button", "callbackOverrides": {} } } }, "tags": {} } }
  14. Vous pouvez utiliser des balises pour appliquer des méta-informations aux ressources de projet (iot1click-projects) et aux ressources de placement (iot1click-devices), comme suit.

    aws iot1click-projects tag-resource --cli-input-json file://projects-tag-resource.json

    Ici, projects-tag-resource.json contient ce qui suit.

    { "resourceArn": "arn:aws:iot1click:us-west-2:012345678901:projects/SeattleDumpsters", "tags": { "Account": "45215", "Manager": "Tom Jones" } }

    Pour répertorier les balises de la ressource du projet, exécutez la procédure suivante.

    aws iot1click-projects list-tags-for-resource --resource-arn "arn:aws:iot1click:us-west-2:012345678901:projects/SeattleDumpsters" { "tags": { "Manager": "Tom Jones", "Account": "45215" } }

    Pour afficher les balises de projet dans le contexte, exécutez la procédure suivante.

    aws iot1click-projects describe-project --project-name SeattleDumpsters { "project": { "arn": "arn:aws:iot1click:us-west-2:012345678901:projects/SeattleDumpsters", "projectName": "SeattleDumpsters", "description": "All dumpsters (yard waste, recycling, garbage) in the Seattle region.", "createdDate": 1563483100, "updatedDate": 1563819039, "placementTemplate": { "defaultAttributes": { "City": "Seattle" }, "deviceTemplates": { "empty-dumpster-request": { "deviceType": "button", "callbackOverrides": {} } } }, "tags": { "Manager": "Tom Jones", "Account": "45215" } } }

    Pour découvrir les appareils Amazon Resource Names (ARN), exécutez la procédure suivante.

    aws iot1click-devices list-devices { "Devices": [ { "Arn": "arn:aws:iot1click:us-west-2:012345678901:devices/G030PM0123456789", "Attributes": { "projectRegion": "us-west-2", "projectName": "SeattleDumpsters", "placementName": "customer217", "deviceTemplateName": "empty-dumpster-request" }, "DeviceId": "G030PM0123456789", "Enabled": true, "RemainingLife": 99.7, "Type": "button", "Tags": {} } ] }

    Pour ajouter des balises à l'appareil précédent, exécutez la procédure suivante.

    aws iot1click-devices tag-resource --cli-input-json file://devices-tag-resource.json

    Ici, devices-tag-resources.json contient ce qui suit (notez l'imbrication requise de ResourceArn et Tags).

    { "ResourceArn": "arn:aws:iot1click:us-west-2:012345678901:devices/G030PM0123456789", "Tags": { "Driver": "John Smith", "Driver Phone": "206-123-4567" } }

    Pour répertorier les balises de la ressource de l'appareil, exécutez la procédure suivante.

    aws iot1click-devices list-tags-for-resource --resource-arn "arn:aws:iot1click:us-west-2:012345678901:devices/G030PM0123456789" { "Tags": { "Driver Phone": "206-123-4567", "Driver": "John Smith" } }

    Pour afficher les balises d'appareil dans le contexte, exécutez list-devices.

    aws iot1click-devices list-devices { "Devices": [ { "Arn": "arn:aws:iot1click:us-west-2:012345678901:devices/G030PM0123456789", "Attributes": { "projectRegion": "us-west-2", "projectName": "SeattleDumpsters", "placementName": "customer217", "deviceTemplateName": "empty-dumpster-request" }, "DeviceId": "G030PM0123456789", "Enabled": true, "RemainingLife": 99.7, "Type": "button", "Tags": { "Driver Phone": "206-123-4567", "Driver": "John Smith" } } ] }
  15. À ce stade, vous pouvez associer une action à une pression sur le bouton de l'appareil, par exemple déclencher une fonction AWS Lambda ou envoyer un message Amazon SNS. Vous pouvez le faire facilement à l'aide de la console AWS IoT 1-Click (laModèle de programmation AWS IoT 1-Clickest également une option). Une fois les actions appropriées associées à l'appareil, vous pouvez l'amener à l'emplacement du client et le connecter à son réseau Wi-Fi en suivant la procédure décrite aux étapes 1 et 2.

Démontage du périphérique AWS IoT 1-Click

Les étapes suivantes décrivent comment inverser (annuler) les étapes précédentes.

  1. Pour retirer les balises d'une ressource de projet, exécutez la commande suivante.

    aws iot1click-projects untag-resource --resource-arn "arn:aws:iot1click:us-west-2:012345678901:projects/SeattleDumpsters" --tag-keys "Manager"

    Cela supprime la balise Manager du projet, comme indiqué ci-dessous.

    aws iot1click-projects describe-project --project-name SeattleDumpsters { "project": { "arn": "arn:aws:iot1click:us-west-2:012345678901:projects/SeattleDumpsters", "projectName": "SeattleDumpsters", "description": "All dumpsters (yard waste, recycling, garbage) in the Seattle region.", "createdDate": 1563483100, "updatedDate": 1563819039, "placementTemplate": { "defaultAttributes": { "City": "Seattle" }, "deviceTemplates": { "empty-dumpster-request": { "deviceType": "button", "callbackOverrides": {} } } }, "tags": { "Account": "45215" } } }
  2. Pour retirer les balises d'une ressource d'appareil, exécutez la commande suivante.

    aws iot1click-devices untag-resource --resource-arn "arn:aws:iot1click:us-west-2:012345678901:devices/G030PM0123456789" --tag-keys "Driver Phone" "Driver"

    Cela supprime les balises de l'appareil, comme indiqué ci-dessous (notez la liste vide "Tags": {}).

    aws iot1click-devices list-devices { "Devices": [ { "Arn": "arn:aws:iot1click:us-west-2:012345678901:devices/G030PM0123456789", "Attributes": { "projectRegion": "us-west-2", "projectName": "SeattleDumpsters", "placementName": "customer217", "deviceTemplateName": "empty-dumpster-request" }, "DeviceId": "G030PM0123456789", "Enabled": true, "RemainingLife": 99.7, "Type": "button", "Tags": {} } ] }
  3. Pour dissocier un appareil d'un emplacement, exécutez la commande suivante.

    aws iot1click-projects disassociate-device-from-placement --project-name SeattleDumpsters --placement-name customer217 --device-template-name empty-dumpster-request

    Comme vous pouvez le voir dans ce qui suit, le placement customer217 n'est plus associé à aucun appareil.

    aws iot1click-projects get-devices-in-placement --project-name SeattleDumpsters --placement-name customer217 { "devices": {} }
  4. Pour supprimer un placement d'un projet, exécutez la commande suivante.

    aws iot1click-projects delete-placement --project-name SeattleDumpsters --placement-name customer217

    Comme vous pouvez le voir dans ce qui suit, le projet SeattleDumpsters n'a pas de placements car le placement customer217 était le seul à l'intérieur de SeattleDumpsters.

    aws iot1click-projects list-placements --project-name SeattleDumpsters { "placements": [] }
  5. Pour supprimer un projet, exécutez la commande suivante.

    aws iot1click-projects delete-project --project-name SeattleDumpsters

    Comme vous pouvez le voir dans ce qui suit, tous les projets sont supprimés carSeattleDumpstersétait le seul projet associé à votre compte AWS IoT 1-Click.

    aws iot1click-projects list-projects { "projects": [] }

    Si, par exemple, vous souhaitez laisser un ami essayer votre appareil à l'aide de son compte AWS, vous devez d'abord annuler la demande de votre appareil depuis votre compte AWS IoT 1-Click, comme suit.

    aws iot1click-devices unclaim-device --device-id G030PM0123456789 { "State": "UNCLAIMED" }

    L'appareil peut désormais être utilisé avec n'importe quel compte AWS IoT 1-Click.