Utilisez votre PC ou Mac Windows ou Linux comme AWS IoT appareil - AWS IoT Core

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.

Utilisez votre PC ou Mac Windows ou Linux comme AWS IoT appareil

Dans ce didacticiel, vous allez configurer un ordinateur personnel à utiliser avec AWS IoT. Ces instructions sont compatibles avec les PC et Mac Windows et Linux. Pour ce faire, vous devez installer des logiciels sur votre ordinateur. Si vous ne souhaitez pas installer de logiciel sur votre ordinateur, vous pouvez essayer Création d'un appareil virtuel avec Amazon EC2, ce qui permet d'installer tous les logiciels sur une machine virtuelle.

Configuration de votre ordinateur personnel

Pour suivre ce didacticiel, vous devez disposer d'un PC Windows ou Linux ou d'un Mac connecté à Internet.

Avant de passer à l'étape suivante, assurez-vous de pouvoir ouvrir une fenêtre de ligne de commande sur votre ordinateur. Utiliser cmd.exe sur un PC Windows. Sur un PC Linux ou un Mac, utilisez Terminal.

Installation de Git, Python et du SDK AWS IoT Device pour Python

Dans cette section, vous allez installer Python et le AWS IoT Device SDK for Python sur votre ordinateur.

Installez la dernière version de Git et Python

Pour télécharger et installer Git et Python sur votre ordinateur
  1. Vérifier si Git est installé sur votre ordinateur. Entrez cette commande dans la ligne de commande.

    git --version

    Si la commande affiche la version de Git, Git est installé et vous pouvez passer à l'étape suivante.

    Si la commande affiche une erreur, ouvrez https://git-scm.com/downloadet installez Git sur votre ordinateur.

  2. Vérifiez si vous avez déjà installé Python. Entrez la commande dans la ligne de commande.

    python -V
    Note

    Si cette commande renvoie une erreur : Python was not found, cela peut être dû au fait que votre système d'exploitation appelle l'exécutable Python v3.x en tant que Python3. Dans ce cas, remplacez toutes les instances de python par python3 et poursuivez le reste de ce didacticiel.

    Si la commande affiche la version de Python, c’est que Python est déjà installé. Ce didacticiel nécessite Python v3.7 ou version ultérieure.

  3. Si Python est installé, vous pouvez ignorer le reste des étapes de cette section. Si ce n'est pas le cas, continuez.

  4. Ouvrez https://www.python.org/downloads/ et téléchargez le programme d'installation pour votre ordinateur.

  5. Si le téléchargement ne démarre pas automatiquement, lancez le programme téléchargé pour installer Python.

  6. Vérifier l'installation de Python.

    python -V

    Vérifiez que la commande affiche la version de Python. Si la version de Python n'est pas affichée, réessayez de télécharger et d'installer Python.

Installation du SDK du AWS IoT périphérique pour Python

Pour installer le AWS IoT Device SDK pour Python sur votre ordinateur
  1. Installez la version 2 du SDK AWS IoT Device pour Python.

    python3 -m pip install awsiotsdk
  2. Clonez le référentiel AWS IoT Device SDK for Python dans le répertoire aws-iot-device-sdk -python-v2 de votre répertoire personnel. Cette procédure fait référence au répertoire de base des fichiers que vous installez en tant que page d'accueil.

    L'emplacement réel du répertoire personnel dépend de votre système d'exploitation.

    Linux/macOS

    Sous MacOs et Linux, le répertoire personnel est ~.

    cd ~ git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git
    Windows

    Sous Windows, vous pouvez trouver le chemin du répertoire personnel en exécutant cette commande dans la fenêtre cmd.

    echo %USERPROFILE% cd %USERPROFILE% git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git
    Note

    Si vous utilisez Windows PowerShell au lieu decmd.exe, utilisez la commande suivante.

    echo $home

Pour plus d'informations, consultez le GitHub référentiel AWS IoT Device SDK pour Python.

Se préparer à exécuter les exemples d'applications

Pour préparer votre système à exécuter l'exemple d'application
  • Créez le répertoire certs. Dans le répertoire certs, copiez les fichiers de clé privée, de certificat de l’appareil et de certificat d'autorité de certification racine que vous avez enregistrés lorsque vous avez créé et enregistré l'objet dans Créez des AWS IoT ressources. Les noms de chaque fichier du répertoire de destination doivent correspondre à ceux du tableau.

    Les commandes figurant dans la section suivante supposent que vos fichiers de clé et de certificat sont stockés sur votre appareil, comme indiqué dans ce tableau.

    Linux/macOS

    Exécutez cette commande pour créer le sous-répertoire certs que vous utiliserez lorsque vous exécuterez les exemples d'applications.

    mkdir ~/certs

    Dans le nouveau sous-répertoire, copiez les fichiers vers les chemins de fichiers de destination indiqués dans le tableau suivant.

    Noms des fichiers de certificat

    Fichier

    Chemin d'accès du fichier

    Clé privée

    ~/certs/private.pem.key

    Certificat de l'appareil

    ~/certs/device.pem.crt

    Certificat racine de l'autorité de certification

    ~/certs/Amazon-root-CA-1.pem

    Exécutez cette commande pour répertorier les fichiers du répertoire certs et les comparer à ceux répertoriés dans le tableau.

    ls -l ~/certs
    Windows

    Exécutez cette commande pour créer le sous-répertoire certs que vous utiliserez lorsque vous exécuterez les exemples d'applications.

    mkdir %USERPROFILE%\certs

    Dans le nouveau sous-répertoire, copiez les fichiers vers les chemins de fichiers de destination indiqués dans le tableau suivant.

    Noms des fichiers de certificat

    Fichier

    Chemin d'accès du fichier

    Clé privée

    %USERPROFILE%\certs\private.pem.key

    Certificat de l'appareil

    %USERPROFILE%\certs\device.pem.crt

    Certificat racine de l'autorité de certification

    %USERPROFILE%\certs\Amazon-root-CA-1.pem

    Exécutez cette commande pour répertorier les fichiers du répertoire certs et les comparer à ceux répertoriés dans le tableau.

    dir %USERPROFILE%\certs

Configuration de la politique et exécution de l'exemple d'application

Dans cette section, vous allez configurer votre politique et exécuter l'exemple de script pubsub.py qui se trouve dans le aws-iot-device-sdk-python-v2/samples répertoire du Kit SDK des appareils AWS IoT pour Python. Ce script montre comment votre appareil utilise la bibliothèque MQTT pour publier et s'abonner aux messages MQTT.

L'exemple d'application pubsub.py s'abonne à une rubrique, test/topic, publie 10 messages sur cette rubrique et affiche les messages au fur et à mesure qu'ils sont reçus de l’agent de messages.

Pour exécuter l'exemple de script pubsub.py, vous avez besoin des informations suivantes :

Valeurs des paramètres de l'application

Paramètre

Où trouver la valeur

your-iot-endpoint
  1. Dans le menu de gauche de la AWS IoT console, sélectionnez Paramètres.

  2. Sur la page Paramètres, votre point de terminaison est affiché dans la section Point de terminaison des données de l'appareil.

La your-iot-endpointvaleur a le format suivant :endpoint_id-ats.iot.region.amazonaws.com, par exemple,a3qj468EXAMPLE-ats.iot.us-west-2.amazonaws.com.

Avant d'exécuter le script, assurez-vous que la politique de votre objet autorise l'exemple de script à se connecter, à s'abonner, à publier et à recevoir.

Pour rechercher et consulter le document de politique d'une ressource d'objet
  1. Dans la AWS IoT console, dans la liste des Objets, recherchez la ressource d'objets qui représente votre appareil.

  2. Cliquez sur le lien Nom de la ressource d'objet qui représente votre appareil pour ouvrir la page des détails de l'objet.

  3. Sur la page Détails de l'objet, dans l'onglet Certificats, choisissez le certificat attaché à la ressource d'objet. Il ne doit y avoir qu'un seul certificat dans la liste. S'il y en a plusieurs, choisissez le certificat dont les fichiers sont installés sur votre appareil et auquel vous souhaitez vous connecter AWS IoT Core.

    Sur la page Détails du certificat, dans l'onglet Politiques, choisissez la politique attachée au certificat. Il ne doit y en avoir qu'un. S'il y en a plusieurs, répétez l'étape suivante pour chacune afin de vous assurer qu'au moins une politique accorde l'accès requis.

  4. Sur la page d'aperçu de la politique, recherchez l'éditeur JSON et choisissez Modifier le document de politique pour consulter et modifier le document de politique selon les besoins.

  5. La politique JSON est affichée dans l'exemple suivant. Dans l'"Resource"élément, remplacez region:account par votre Région AWS et Compte AWS dans chacune des Resource valeurs.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account:topic/test/topic" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account:topicfilter/test/topic" ] }, { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:region:account:client/test-*" ] } ] }
Linux/macOS
Pour exécuter l'exemple de script sous Linux/MacOs
  1. Dans votre fenêtre de ligne de commande, accédez au répertoire ~/aws-iot-device-sdk-python-v2/samples/node/pub_sub créé par le SDK à l'aide de ces commandes.

    cd ~/aws-iot-device-sdk-python-v2/samples
  2. Dans votre fenêtre de ligne de commande, remplacez your-iot-endpointcomme indiqué et exécutez cette commande.

    python3 pubsub.py --endpoint your-iot-endpoint --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key
Windows
Pour exécuter l'exemple d'application sur un PC Windows
  1. Dans votre fenêtre de ligne de commande, accédez au répertoire %USERPROFILE%\aws-iot-device-sdk-python-v2\samples créé par le SDK et installez l’exemple d’application à l’aide de ces commandes.

    cd %USERPROFILE%\aws-iot-device-sdk-python-v2\samples
  2. Dans votre fenêtre de ligne de commande, remplacez your-iot-endpointcomme indiqué et exécutez cette commande.

    python3 pubsub.py --endpoint your-iot-endpoint --ca_file %USERPROFILE%\certs\Amazon-root-CA-1.pem --cert %USERPROFILE%\certs\device.pem.crt --key %USERPROFILE%\certs\private.pem.key

Exemple de script :

  1. Se connecte AWS IoT Core à votre compte.

  2. S'abonne à la rubrique du message, topic/test, et affiche les messages qu'il reçoit à cette rubrique.

  3. Publie 10 messages dans la rubrique topic/test.

  4. Affiche une sortie similaire à celle-ci :

Connected! Subscribing to topic 'test/topic'... Subscribed with QoS.AT_LEAST_ONCE Sending 10 message(s) Publishing message to topic 'test/topic': Hello World! [1] Received message from topic 'test/topic': b'"Hello World! [1]"' Publishing message to topic 'test/topic': Hello World! [2] Received message from topic 'test/topic': b'"Hello World! [2]"' Publishing message to topic 'test/topic': Hello World! [3] Received message from topic 'test/topic': b'"Hello World! [3]"' Publishing message to topic 'test/topic': Hello World! [4] Received message from topic 'test/topic': b'"Hello World! [4]"' Publishing message to topic 'test/topic': Hello World! [5] Received message from topic 'test/topic': b'"Hello World! [5]"' Publishing message to topic 'test/topic': Hello World! [6] Received message from topic 'test/topic': b'"Hello World! [6]"' Publishing message to topic 'test/topic': Hello World! [7] Received message from topic 'test/topic': b'"Hello World! [7]"' Publishing message to topic 'test/topic': Hello World! [8] Received message from topic 'test/topic': b'"Hello World! [8]"' Publishing message to topic 'test/topic': Hello World! [9] Received message from topic 'test/topic': b'"Hello World! [9]"' Publishing message to topic 'test/topic': Hello World! [10] Received message from topic 'test/topic': b'"Hello World! [10]"' 10 message(s) received. Disconnecting... Disconnected!

Si vous rencontrez des difficultés en exécutant l'exemple d'application, veuillez consulter Dépannage des problèmes avec l'exemple d'application.

Vous pouvez également ajouter le paramètre --verbosity Debug sur la ligne de commande afin que l'exemple d'application affiche des messages détaillés sur ce qu'elle fait. Ces informations peuvent vous aider à corriger le problème.

Afficher les messages de l'exemple d'application dans la AWS IoT console

Vous pouvez voir les messages de l'application d'exemple lorsqu'ils passent par l’agent de messages en utilisant le client de test MQTT dans la AWS IoT console.

Pour afficher les messages MQTT publiés par l'exemple d'application
  1. Consultez Afficher les messages MQTT avec le client AWS IoT MQTT. Cela vous permet d'apprendre à utiliser le client de test MQTT dans la AWS IoT console pour afficher les messages MQTT lorsqu'ils transitent par l’agent de messages.

  2. Ouvrez le client de test MQTT dans la AWS IoT console.

  3. Dans S'abonner à une rubrique, abonnez-vous à la rubrique, test/topic.

  4. Dans votre fenêtre de ligne de commande, exécutez à nouveau l'exemple d'application et observez les messages du client MQTT dans la AWS IoT console.

    Linux/macOS
    cd ~/aws-iot-device-sdk-python-v2/samples python3 pubsub.py --topic test/topic --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint
    Windows
    cd %USERPROFILE%\aws-iot-device-sdk-python-v2\samples python3 pubsub.py --topic test/topic --ca_file %USERPROFILE%\certs\Amazon-root-CA-1.pem --cert %USERPROFILE%\certs\device.pem.crt --key %USERPROFILE%\certs\private.pem.key --endpoint your-iot-endpoint

Pour plus d'informations sur le MQTT et sur la manière dont le protocole est pris AWS IoT Core en charge, consultez MQTT.

Exécutez l'exemple d'abonnement partagé dans Python

AWS IoT Core prend en charge les abonnements partagés pour MQTT 3 et MQTT 5. Les abonnements partagés permettent à plusieurs clients de partager un abonnement à une rubrique et un seul client recevra les messages publiés sur cette rubrique selon une distribution aléatoire. Pour utiliser les abonnements partagés, les clients s'abonnent au filtre de rubrique d'un abonnement partagé :$share/{ShareName}/{TopicFilter}.

Pour configurer la politique et exécuter l'exemple d'abonnement partagé
  1. Pour exécuter l'exemple d'abonnement partagé, vous devez configurer la politique de votre objet, comme indiqué dans Abonnement partagé MQTT 5.

  2. Pour exécuter l'exemple d'abonnement partagé, exécutez les commandes suivantes.

    Linux/macOS
    Pour exécuter l'exemple de script sous Linux/MacOs
    1. Dans votre fenêtre de ligne de commande, accédez au répertoire ~/aws-iot-device-sdk-python-v2/samples créé par le SDK à l'aide de ces commandes.

      cd ~/aws-iot-device-sdk-python-v2/samples
    2. Dans votre fenêtre de ligne de commande, remplacez your-iot-endpointcomme indiqué et exécutez cette commande.

      python3 mqtt5_shared_subscription.py --endpoint your-iot-endpoint --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --group_identifier consumer
    Windows
    Pour exécuter l'exemple d'application sur un PC Windows
    1. Dans votre fenêtre de ligne de commande, accédez au répertoire %USERPROFILE%\aws-iot-device-sdk-python-v2\samples créé par le SDK et installez l’exemple d’application à l’aide de ces commandes.

      cd %USERPROFILE%\aws-iot-device-sdk-python-v2\samples
    2. Dans votre fenêtre de ligne de commande, remplacez your-iot-endpointcomme indiqué et exécutez cette commande.

      python3 mqtt5_shared_subscription.py --endpoint your-iot-endpoint --ca_file %USERPROFILE%\certs\Amazon-root-CA-1.pem --cert %USERPROFILE%\certs\device.pem.crt --key %USERPROFILE%\certs\private.pem.key --group_identifier consumer
    Note

    Vous pouvez éventuellement spécifier un identifiant de groupe en fonction de vos besoins lorsque vous exécutez l'échantillon (par exemple,--group_identifier consumer). Si vous n’en spécifiez pas, python-sample est l’identifiant de groupe par défaut.

  3. Le résultat de votre ligne de commande peut ressembler à ce qui suit :

    Publisher]: Lifecycle Connection Success [Publisher]: Connected Subscriber One]: Lifecycle Connection Success [Subscriber One]: Connected Subscriber Two]: Lifecycle Connection Success [Subscriber Two]: Connected [Subscriber One]: Subscribed to topic 'test/topic' in shared subscription group 'consumer'. [Subscriber One]: Full subscribed topic is: '$share/consumer/test/topic' with SubAck code: [<SubackReasonCode.GRANTED_QOS_1: 1>] [Subscriber Two]: Subscribed to topic 'test/topic' in shared subscription group 'consumer'. [Subscriber Two]: Full subscribed topic is: '$share/consumer/test/topic' with SubAck code: [<SubackReasonCode.GRANTED_QOS_1: 1>] [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber Two] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [1]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber One] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [2]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber Two] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [3]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber One] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [4]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber Two] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [5]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber One] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [6]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber Two] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [7]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber One] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [8]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber Two] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [9]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber One] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [10]"' [Subscriber One]: Unsubscribed to topic 'test/topic' in shared subscription group 'consumer'. [Subscriber One]: Full unsubscribed topic is: '$share/consumer/test/topic' with UnsubAck code: [<UnsubackReasonCode.SUCCESS: 0>] [Subscriber Two]: Unsubscribed to topic 'test/topic' in shared subscription group 'consumer'. [Subscriber Two]: Full unsubscribed topic is: '$share/consumer/test/topic' with UnsubAck code [<UnsubackReasonCode.SUCCESS: 0>] Publisher]: Lifecycle Disconnected [Publisher]: Lifecycle Stopped [Publisher]: Fully stopped Subscriber One]: Lifecycle Disconnected [Subscriber One]: Lifecycle Stopped [Subscriber One]: Fully stopped Subscriber Two]: Lifecycle Disconnected [Subscriber Two]: Lifecycle Stopped [Subscriber Two]: Fully stopped Complete!
  4. Ouvrez client de test MQTT dans la AWS IoT console. Dans S'abonner à un sujet, abonnez-vous au sujet de l'abonnement partagé tel que :$share/consumer/test/topic. Vous pouvez spécifier un identifiant de groupe en fonction de vos besoins lorsque vous exécutez l'échantillon (par exemple,--group_identifier consumer). Si vous ne spécifiez pas d'identifiant de groupe, la valeur par défaut est python-sample. Pour plus d'informations, consultez l'exemple Python d'abonnement partagé MQTT 5 et le guide AWS IoT Core du développeur sur les abonnements partagés.

    Dans votre fenêtre de ligne de commande, exécutez à nouveau l'exemple d'application et observez la distribution des messages dans votre Client de test MQTT de la AWS IoT console et de la ligne de commande.

    
                                    La page de sortie des abonnements partagés.