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.
Ingérez des données provenant d'objets AWS IoT
Découvrez comment intégrer des données à AWS IoT SiteWise partir d'une multitude d' AWS IoT objets en utilisant les ombres des appareils dans ce didacticiel. Les ombres d'un appareil sont JSON des objets qui stockent des informations sur l'état actuel d'un AWS IoT appareil. Pour plus d'informations, voir Device Shadow Service dans le Guide du AWS IoT développeur.
Après avoir terminé ce didacticiel, vous pouvez configurer une opération en AWS IoT SiteWise fonction AWS IoT des éléments. En utilisant AWS IoT des objets, vous pouvez intégrer vos opérations à d'autres fonctionnalités utiles de AWS IoT. Par exemple, vous pouvez configurer les AWS IoT fonctionnalités pour effectuer les tâches suivantes :
-
Configurez des règles supplémentaires pour diffuser des données vers Amazon DynamoDB AWS IoT Events, etc. Services AWS Pour plus d'informations, consultez la section Règles du guide du AWS IoT développeur.
-
Indexez, recherchez et agrégez les données de vos appareils grâce au service d'indexation de AWS IoT flotte. Pour plus d'informations, consultez la section Service d'indexation de flotte dans le Guide du AWS IoT développeur.
-
Auditez et sécurisez vos appareils avec AWS IoT Device Defender. Pour plus d’informations, consultez AWS IoT Device Defender dans le Guide du développeur AWS IoT .
Dans ce didacticiel, vous allez apprendre à ingérer des données depuis les zones d'ombre AWS IoT des appareils vers les actifs qu'ils contiennent. AWS IoT SiteWise Pour ce faire, vous créez un ou plusieurs AWS IoT éléments et exécutez un script qui met à jour le shadow de l'appareil CPU et les données d'utilisation de la mémoire de chaque élément. Dans ce didacticiel, vous utilisez les données d'utilisation CPU et d'utilisation de la mémoire pour imiter des données de capteurs réalistes. Ensuite, vous créez une règle avec une AWS IoT SiteWise action qui envoie ces données à un actif AWS IoT SiteWise chaque fois que le device shadow d'un objet est mis à jour. Pour de plus amples informations, veuillez consulter Ingérer des données à l'aide de règles AWS IoT Core.
Rubriques
- Prérequis
- Étape 1 : créer une AWS IoT politique
- Étape 2 : créer et configurer un AWS IoT objet
- Étape 3 : Création d'un modèle de ressource d'appareil
- Étape 4 : Création d'un modèle de parc d'appareils
- Étape 5 : Création et configuration d'un actif de périphérique
- Étape 6 : Création et configuration d'un parc d'appareils
- Étape 7 : créer une règle dans AWS IoT Core pour envoyer des données aux actifs de l'appareil
- Étape 8 : Exécuter le script client de l'appareil
- Étape 9 : Nettoyer les ressources après le didacticiel
Prérequis
Pour suivre ce didacticiel, vous aurez besoin des éléments suivants :
-
Un Compte AWS. Si vous n'en avez pas, veuillez consulter Configurez un Compte AWS.
-
Un ordinateur de développement exécutant WindowsmacOS,Linux, ou Unix permettant d'accéder au AWS Management Console. Pour plus d'informations, consultez Démarrer avec le AWS Management Console.
-
Un AWS Identity and Access Management (IAM) utilisateur doté d'autorisations d'administrateur.
-
Python3 installé sur votre ordinateur de développement ou installé sur l'appareil que vous souhaitez enregistrer en tant qu' AWS IoT objet.
Étape 1 : créer une AWS IoT politique
Dans cette procédure, créez une AWS IoT politique permettant à vos AWS IoT objets d'accéder aux ressources utilisées dans ce didacticiel.
Pour créer une AWS IoT politique
-
Connectez-vous à la AWS Management Console
. -
Passez en revue les AWS régions dans lesquelles le AWS IoT SiteWise support est pris en charge. Basculez vers l'une de ces régions prises en charge, si nécessaire.
-
Accédez à la console AWS IoT
. Si un bouton Connect device apparaît, sélectionnez-le. -
Dans le volet de navigation de gauche, choisissez Security, puis Policies.
-
Sélectionnez Create (Créer).
-
Entrez le nom de la AWS IoT politique (par exemple,
SiteWiseTutorialDevicePolicy
). -
Sous Document de stratégie, choisissez JSONde saisir la politique suivante dans le JSON formulaire. Remplacez
region
andaccount-id
avec votre région et votre numéro de compte, tels queus-east-1
et123456789012
.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Connect", "Resource": "arn:aws:iot:
region
:account-id
:client/SiteWiseTutorialDevice*" }, { "Effect": "Allow", "Action": "iot:Publish", "Resource": [ "arn:aws:iot:region
:account-id
:topic/$aws/things/${iot:Connection.Thing.ThingName}/shadow/update", "arn:aws:iot:region
:account-id
:topic/$aws/things/${iot:Connection.Thing.ThingName}/shadow/delete", "arn:aws:iot:region
:account-id
:topic/$aws/things/${iot:Connection.Thing.ThingName}/shadow/get" ] }, { "Effect": "Allow", "Action": "iot:Receive", "Resource": [ "arn:aws:iot:region
:account-id
:topic/$aws/things/${iot:Connection.Thing.ThingName}/shadow/update/accepted", "arn:aws:iot:region
:account-id
:topic/$aws/things/${iot:Connection.Thing.ThingName}/shadow/delete/accepted", "arn:aws:iot:region
:account-id
:topic/$aws/things/${iot:Connection.Thing.ThingName}/shadow/get/accepted", "arn:aws:iot:region
:account-id
:topic/$aws/things/${iot:Connection.Thing.ThingName}/shadow/update/rejected", "arn:aws:iot:region
:account-id
:topic/$aws/things/${iot:Connection.Thing.ThingName}/shadow/delete/rejected" ] }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": [ "arn:aws:iot:region
:account-id
:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/shadow/update/accepted", "arn:aws:iot:region
:account-id
:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/shadow/delete/accepted", "arn:aws:iot:region
:account-id
:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/shadow/get/accepted", "arn:aws:iot:region
:account-id
:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/shadow/update/rejected", "arn:aws:iot:region
:account-id
:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/shadow/delete/rejected" ] }, { "Effect": "Allow", "Action": [ "iot:GetThingShadow", "iot:UpdateThingShadow", "iot:DeleteThingShadow" ], "Resource": "arn:aws:iot:region
:account-id
:thing/SiteWiseTutorialDevice*" } ] }Cette politique permet à vos AWS IoT appareils d'établir des connexions et de communiquer avec leurs espions à l'aide de MQTT messages. Pour plus d'informations sur les MQTT messages, voir Qu'est-ce que c'est MQTT ?
. Pour interagir avec les ombres des appareils, vos AWS IoT contenus publient et reçoivent MQTT des messages sur des sujets commençant par $aws/things/
. Cette politique intègre une variable de politique d'objets connue sous le nom dething-name
/shadow/${iot:Connection.Thing.ThingName}
. Cette variable remplace le nom de l'objet connecté dans chaque rubrique. L'iot:Connect
instruction définit des limites quant aux appareils autorisés à établir des connexions, en veillant à ce que la variable thing policy ne puisse remplacer que les noms commençant parSiteWiseTutorialDevice
.Pour plus d'informations, consultez la section Variables de politique des objets dans le manuel du AWS IoT développeur.
Note
Cette stratégie s'applique aux objets dont le nom commence par
SiteWiseTutorialDevice
. Pour utiliser un nom différent pour vos objets, vous devez mettre à jour la stratégie en conséquence. -
Sélectionnez Create (Créer).
Étape 2 : créer et configurer un AWS IoT objet
Dans cette procédure, vous créez et configurez n'importe quel AWS IoT objet. Vous pouvez désigner votre ordinateur de développement comme n'importe quel AWS IoT objet. Au fur et à mesure que vous progressez, n'oubliez pas que les principes que vous apprenez ici peuvent être appliqués à des projets réels. Vous avez la flexibilité de créer et de configurer AWS IoT des éléments sur n'importe quel appareil capable d'exécuter un AWS IoT SDK, y compris AWS IoT Greengrass gratuitementRTOS. Pour plus d'informations, consultez AWS IoT SDKsle guide du AWS IoT développeur.
Pour créer et configurer n'importe quel AWS IoT objet
-
Ouvrez une ligne de commande et exécutez la commande suivante pour créer un répertoire pour ce didacticiel.
mkdir iot-sitewise-rule-tutorial cd iot-sitewise-rule-tutorial
-
Exécutez la commande suivante pour créer un répertoire pour les certificats de l'objet.
mkdir device1
Si vous créez des objets supplémentaires, incrémentez le nombre en conséquence dans le nom du répertoire pour pouvoir déterminer quel certificat appartient à quel objet.
-
Accédez à la console AWS IoT
. -
Dans le volet de navigation de gauche, choisissez Tous les appareils dans la section Gérer. Ensuite, choisissez Things (Objets).
-
Si une boîte de dialogue You don't have any things yet (Vous n'avez pas encore d'objet) s'affiche, choisissez Create a thing (Créer un objet). Sinon, choisissez Create things.
-
Sur la page Création d'objets, choisissez Créer un objet unique, puis cliquez sur Suivant.
-
Sur la page Spécifier les propriétés de l'objet, entrez le nom de votre AWS IoT objet (par exemple,
SiteWiseTutorialDevice1
) puis choisissez Suivant. Si vous créez des objets supplémentaires, incrémentez le nombre en conséquence dans le nom de l'objet.Important
Le nom de l'objet doit correspondre au nom utilisé dans la politique que vous avez créée à l'étape 1 : Création d'une AWS IoT politique. Dans le cas contraire, votre appareil ne pourra pas se connecter à AWS IoT.
-
Sur la page Configurer le certificat de l'appareil - facultatif, choisissez Générer automatiquement un nouveau certificat (recommandé) puis cliquez sur Suivant. Les certificats permettent AWS IoT d'identifier vos appareils en toute sécurité.
-
Sur la page facultative Attacher des politiques au certificat, sélectionnez la politique que vous avez créée à l'étape 1 : Création d'une AWS IoT politique, puis choisissez Créer un objet.
-
Dans la boîte de dialogue Télécharger les certificats et les clés, procédez comme suit :
-
Choisissez les liens Télécharger pour télécharger le certificat, la clé publique et la clé privée de votre objet. Enregistrez les trois fichiers dans le répertoire que vous avez créé pour les certificats de l'objet (par exemple,
iot-sitewise-rule-tutorial/device1
).Important
Il s'agit de l'unique fois où vous pouvez télécharger le certificat et les clés de l'objet, sans lesquels votre appareil ne pourra pas se connecter à AWS IoT.
-
Cliquez sur le lien Télécharger pour télécharger un certificat CA racine. Enregistrez le certificat d'autorité de certification racine dans
iot-sitewise-rule-tutorial
. Nous vous recommandons de télécharger Amazon Root CA 1.
-
-
Sélectionnez Exécuté.
Vous avez maintenant enregistré AWS IoT quelque chose sur votre ordinateur. Procédez à l'une des étapes suivantes :
-
Passez à l'étape 3 : Création d'un modèle de ressource d'appareil sans créer d' AWS IoT éléments supplémentaires. Vous pouvez réaliser ce didacticiel avec un seul objet.
-
Répétez les étapes de cette section sur un autre ordinateur ou périphérique pour créer d'autres objets AWS IoT . Pour ce didacticiel, nous vous recommandons de suivre cette option afin de pouvoir ingérer des données uniques CPU et d'utilisation de la mémoire provenant de plusieurs appareils.
-
Répétez les étapes de cette section sur le même périphérique (ordinateur) pour créer davantage d'objets AWS IoT . Chaque AWS IoT élément reçoit des données similaires CPU et d'utilisation de la mémoire de votre ordinateur. Utilisez cette approche pour démontrer l'ingestion de données non uniques provenant de plusieurs appareils.
Étape 3 : Création d'un modèle de ressource d'appareil
Dans cette procédure, vous créez un modèle d'actif AWS IoT SiteWise pour représenter vos appareils qui diffusent des données CPU et utilisent la mémoire. Pour traiter les données des actifs qui représentent des groupes d'appareils, les modèles d'actifs appliquent des informations cohérentes sur plusieurs actifs du même type. Pour de plus amples informations, veuillez consulter Modéliser des actifs industriels.
Pour créer un modèle de ressource qui représente un périphérique
-
Accédez à la console AWS IoT SiteWise
. -
Dans le volet de navigation de gauche, choisissez Models (Modèles).
-
Sélectionnez Create model.
-
Sous Détails du modèle, entrez le nom de votre modèle. Par exemple,
SiteWise Tutorial Device Model
. -
Sous Measurement definitions (Définitions de mesure), procédez comme suit :
-
Pour Name (Nom), entrez
CPU Usage
. -
Pour Unit (Unité), saisissez
%
. -
Conservez le type de données Double.
Les propriétés de mesure représentent les flux de données brutes d'un périphérique. Pour de plus amples informations, veuillez consulter Définir les flux de données provenant de l'équipement (mesures).
-
-
Choisissez Ajouter une nouvelle mesure pour ajouter une deuxième propriété de mesure.
-
Dans la deuxième ligne sous Measurement definitions (Définitions de mesure), procédez comme suit :
-
Pour Name (Nom), entrez
Memory Usage
. -
Pour Unit (Unité), saisissez
%
. -
Conservez le type de données Double.
-
-
Sous Metric definitions (Définitions de métrique), procédez comme suit :
-
Pour Name (Nom), entrez
Average CPU Usage
. -
Pour Formula (Formule), saisissez
avg(CPU Usage)
. Choisissez CPU Usage dans la liste de saisie semi-automatique lorsqu'elle apparaît. -
Dans Time interval (Intervalle de temps), entrez
5 minutes
.
Les propriétés de métrique définissent les calculs d'agrégation qui traitent tous les points de données en entrée sur un intervalle et qui produisent un point de données unique par intervalle. Cette propriété métrique calcule l'CPUutilisation moyenne de chaque appareil toutes les 5 minutes. Pour de plus amples informations, veuillez consulter Données agrégées provenant de propriétés et d'autres actifs (métriques).
-
-
Choisissez Ajouter une nouvelle métrique pour ajouter une deuxième propriété de métrique.
-
Dans la deuxième ligne sous Metric definitions (Définitions de métrique), procédez comme suit :
-
Pour Name (Nom), entrez
Average Memory Usage
. -
Pour Formula (Formule), saisissez
avg(Memory Usage)
. Choisissez Memory Usage dans la liste de saisie semi-automatique lorsqu'elle apparaît. -
Dans Time interval (Intervalle de temps), entrez
5 minutes
.
Cette propriété de métrique calcule l'utilisation moyenne de la mémoire de chaque périphérique toutes les 5 minutes.
-
-
(Facultatif) Ajoutez les autres métriques que vous souhaitez calculer pour chaque périphérique. Certaines fonctions intéressantes comprennent
min
etmax
. Pour de plus amples informations, veuillez consulter Utiliser des expressions de formule. À l'étape 4 : Création d'un modèle d'actifs de parc d'appareils, vous créez un actif parent capable de calculer des mesures à l'aide des données de l'ensemble de votre parc d'appareils. -
Sélectionnez Create model.
Étape 4 : Création d'un modèle de parc d'appareils
Dans cette procédure, vous créez un modèle de ressource AWS IoT SiteWise pour symboliser votre collection d'appareils. Dans ce modèle d'actifs, vous établissez une structure qui vous permet de relier de nombreux équipements à un actif de flotte global. Ensuite, vous définissez les mesures du modèle d'actifs du parc afin de consolider les données de tous les actifs des appareils connectés. Cette approche vous fournit des informations complètes sur les performances collectives de l'ensemble de votre flotte.
Pour créer un modèle de ressource qui représente un parc de périphériques
-
Accédez à la console AWS IoT SiteWise
. -
Dans le volet de navigation de gauche, choisissez Models (Modèles).
-
Sélectionnez Create model.
-
Sous Détails du modèle, entrez le nom de votre modèle. Par exemple,
SiteWise Tutorial Device Fleet Model
. -
Sous Hierarchy definitions (Définitions de hiérarchie), procédez comme suit :
-
Dans Hierarchy name (Nom de la hiérarchie), entrez
Device
. -
Dans Hierarchy model (Modèle de hiérarchie), choisissez votre modèle de ressource de périphérique (
SiteWise Tutorial Device Model
).
Une hiérarchie définit une relation entre un modèle de ressource parent (parc) et un modèle de ressource enfant (périphérique). Les ressources parents peuvent accéder aux données de propriété des ressources enfants. Lorsque vous créerez des ressources par la suite, vous devrez associer des ressources enfants aux ressources parents selon une définition de hiérarchie dans le modèle de ressource parent. Pour de plus amples informations, veuillez consulter Définir les hiérarchies des modèles d'actifs.
-
-
Sous Metric definitions (Définitions de métrique), procédez comme suit :
-
Pour Name (Nom), entrez
Average CPU Usage
. -
Pour Formula (Formule), saisissez
avg(Device | Average CPU Usage)
. Lorsque la liste de saisie semi-automatique apparaît, choisissez Device pour sélectionner une hiérarchie, puis choisissez Average CPU Usage pour sélectionner la métrique à partir de la ressource de périphérique que vous avez créée précédemment. -
Dans Time interval (Intervalle de temps), entrez
5 minutes
.
Cette propriété métrique calcule l'CPUutilisation moyenne de tous les équipements associés à un actif du parc par le biais de la
Device
hiérarchie. -
-
Choisissez Ajouter une nouvelle métrique pour ajouter une deuxième propriété de métrique.
-
Dans la deuxième ligne sous Metric definitions (Définitions de métrique), procédez comme suit :
-
Pour Name (Nom), entrez
Average Memory Usage
. -
Pour Formula (Formule), saisissez
avg(Device | Average Memory Usage)
. Lorsque la liste de saisie semi-automatique apparaît, choisissez Device pour sélectionner une hiérarchie, puis choisissez Average Memory Usage pour sélectionner la métrique à partir de la ressource de périphérique que vous avez créée précédemment. -
Dans Time interval (Intervalle de temps), entrez
5 minutes
.
Cette propriété de métrique calcule l'utilisation moyenne de la mémoire de toutes les ressources de périphériques associées à une ressource de parc via la hiérarchie
Device
. -
-
(Facultatif) Ajoutez les autres métriques que vous souhaitez calculer pour l'ensemble de votre parc de périphériques.
-
Sélectionnez Create model.
Étape 5 : Création et configuration d'un actif de périphérique
Dans cette procédure, vous générez un actif d'appareil basé sur le modèle d'actif de votre appareil. Ensuite, vous définirez des alias de propriété pour chaque propriété de mesure. Un alias de propriété est une chaîne unique qui identifie la propriété d'un actif. Plus tard, vous pourrez identifier une propriété pour le téléchargement des données en utilisant les alias au lieu de l'ID de ressource et de l'ID de propriété. Pour de plus amples informations, veuillez consulter Mappez les flux de données industriels aux propriétés des actifs.
Pour créer une ressource de périphérique et définir des alias de propriété
-
Accédez à la console AWS IoT SiteWise
. -
Dans le panneau de navigation de gauche, choisissez Assets (Ressources).
-
Choisissez Create asset (Créer une ressource).
-
Sous Informations sur le modèle, choisissez le modèle de ressource de votre appareil,
SiteWise Tutorial Device Model
. -
Sous Informations sur l'actif, entrez le nom de votre actif. Par exemple,
SiteWise Tutorial Device 1
. -
Choisissez Create asset (Créer une ressource).
-
Pour la nouvelle ressource de périphérique, choisissez Edit (Modifier).
-
Sous CPU Usage, entrez
/tutorial/device/SiteWiseTutorialDevice1/cpu
comme alias de propriété. Vous incluez le nom de l' AWS IoT objet dans l'alias de propriété, afin de pouvoir ingérer les données de tous vos appareils à l'aide d'une seule AWS IoT règle. -
Sous Memory Usage, entrez
/tutorial/device/SiteWiseTutorialDevice1/memory
comme alias de propriété. -
Choisissez Save (Enregistrer).
Si vous avez créé plusieurs AWS IoT éléments précédemment, répétez les étapes 3 à 10 pour chaque appareil, puis incrémentez le numéro dans le nom de l'actif et les alias de propriété en conséquence. Par exemple, le nom de la deuxième ressource de périphérique doit être SiteWise Tutorial Device 2
, et ses alias de propriété doivent être /tutorial/device/SiteWiseTutorialDevice2/cpu
et /tutorial/device/SiteWiseTutorialDevice2/memory
.
Étape 6 : Création et configuration d'un parc d'appareils
Dans cette procédure, vous créez un actif de parc d'appareils dérivé de votre modèle d'actifs de parc d'appareils. Ensuite, vous liez les actifs de vos appareils individuels à l'actif du parc. Cette association permet aux propriétés métriques de l'actif du parc de compiler et d'analyser les données provenant de plusieurs appareils. Ces données vous fournissent une vue consolidée des performances collectives de l'ensemble de la flotte.
Pour créer une ressource de parc de périphériques et associer des ressources de périphérique
-
Accédez à la console AWS IoT SiteWise
. -
Dans le panneau de navigation de gauche, choisissez Assets (Ressources).
-
Choisissez Create asset (Créer une ressource).
-
Sous Informations sur le modèle, choisissez le modèle d'actif de votre parc d'appareils,
SiteWise Tutorial Device Fleet Model
. -
Sous Informations sur l'actif, entrez le nom de votre actif. Par exemple,
SiteWise Tutorial Device Fleet 1
. -
Choisissez Create asset (Créer une ressource).
-
Pour la nouvelle ressource de parc de périphériques, choisissez Edit (Modifier).
-
Sous Ressources associées à cette ressource, choisissez Ajouter une ressource associée et procédez comme suit :
-
Sous Hierarchy (Hiérarchie), choisissez Device. Cette hiérarchie identifie la relation hiérarchique entre les ressources de périphériques et de parc de périphériques. Vous avez défini cette hiérarchie dans le modèle de ressource de parc de périphériques précédemment dans ce didacticiel.
-
Sous Asset (Ressource), sélectionnez votre ressource de périphérique, SiteWise Tutorial Device 1.
-
-
(Facultatif) Si vous avez créé plusieurs actifs d'appareil précédemment, répétez les étapes 8 à 10 pour chaque actif d'appareil que vous avez créé.
-
Choisissez Save (Enregistrer).
Vous devriez maintenant voir les ressources de votre périphérique organisées sous forme de hiérarchie.
Étape 7 : créer une règle dans AWS IoT Core pour envoyer des données aux actifs de l'appareil
Dans cette procédure, vous établissez une règle dans AWS IoT Core. La règle est conçue pour interpréter les messages de notification provenant du shadow de l'appareil et pour transmettre les données aux actifs de votre appareil dans AWS IoT SiteWise.Chaque fois que le shadow de votre appareil est mis à jour, AWS IoT envoie un MQTT message. Vous pouvez créer une règle qui intervient lorsque les ombres de l'appareil changent en fonction du MQTT message. Dans ce cas, l'objectif est de gérer le message de mise à jour, d'extraire les valeurs des propriétés et de les transmettre aux actifs de votre appareil dans AWS IoT SiteWise.
Pour créer une règle avec une AWS IoT SiteWise action
-
Accédez à la console AWS IoT
. -
Dans le volet de navigation de gauche, choisissez Routage des messages, puis sélectionnez Règles.
-
Choisissez Créer une règle.
-
Entrez un nom et une description pour votre règle, puis choisissez Next.
-
Entrez la SQL déclaration suivante, puis choisissez Next.
SELECT * FROM '$aws/things/+/shadow/update/accepted' WHERE startsWith(topic(3), "SiteWiseTutorialDevice")
Cette instruction de requête de règle fonctionne, car le service d'ombres de périphérique publie les mises à jour des ombres vers
$aws/things/
. Pour plus d'informations sur le Device Shadow, voir Device Shadow Service dans le Guide du AWS IoT développeur.thingName
/shadow/update/acceptedDans la clause
WHERE
, cette instruction de requête de règle utilise la fonctiontopic(3)
pour obtenir le nom de l'objet à partir du troisième segment de la rubrique. Ensuite, l'instruction filtre les périphériques dont les noms ne correspondent pas à ceux des périphériques du didacticiel. Pour plus d'informations AWS IoT SQL, consultez la AWS IoT SQLréférence dans le Guide du AWS IoT développeur. -
Sous Actions de règle, choisissez Envoyer les données des messages aux propriétés des actifs dans AWS IoT SiteWise et procédez comme suit :
-
Choisissez By property alias (Par alias de propriété).
-
Dans Property alias (Alias de propriété), entrez
/tutorial/device/${topic(3)}/cpu
.La
${...}
syntaxe est un modèle de substitution. AWS IoT évalue le contenu des bretelles. Ce modèle de substitution extrait le nom de l'objet à partir de la rubrique pour créer un alias spécifique à chaque objet. Pour plus d'informations, consultez la section Modèles de substitution dans le Guide du AWS IoT développeur.Note
Comme une expression dans un modèle de substitution est évaluée séparément de l'instruction
SELECT
, vous ne pouvez pas utiliser un modèle de substitution pour référencer un alias créé à l'aide d'une clauseAS
. Vous pouvez référencer uniquement les informations présentes dans la charge utile d'origine, en plus des fonctions et opérateurs pris en charge. -
Dans Numéro d'entrée - facultatif, entrez
${concat(topic(3), "-cpu-", floor(state.reported.timestamp))}
.L'entrée IDs identifie de manière unique chaque tentative de saisie de valeur. Si une entrée renvoie une erreur, vous pouvez trouver son ID dans l'erreur générée pour résoudre le problème. Le modèle de substitution de cet ID d'entrée combine le nom de l'objet et l'horodatage signalé du périphérique. Par exemple, l'ID d'entrée généré peut ressembler à
SiteWiseTutorialDevice1-cpu-1579808494
. -
Dans Time in seconds (Délai en secondes), entrez
${floor(state.reported.timestamp)}
.Ce modèle de substitution calcule le délai en secondes à compter de l'horodatage signalé du périphérique. Dans ce didacticiel, les périphériques signalent l'horodatage en secondes au format d'heure Unix epoch sous la forme d'un nombre à virgule flottante.
-
Dans la zone Décalage en nanos - facultatif, entrez
${floor((state.reported.timestamp % 1) * 1E9)}
.Ce modèle de substitution calcule le décalage en nanoseconde à compter du délai en secondes en convertissant la partie décimale de l'horodatage signalé du périphérique.
Note
AWS IoT SiteWise nécessite que vos données aient un horodatage actuel en temps réel à l'époque Unix. Si vos périphériques n'indiquent pas l'heure avec précision, vous pouvez obtenir l'heure actuelle à partir du moteur de règles AWS IoT avec timestamp(). Cette fonction signale le délai en millisecondes. Vous devez donc remplacer les paramètres de délai de l'action de règle par les valeurs suivantes :
-
Dans Time in seconds (Délai en secondes), entrez
${floor(timestamp() / 1E3)}
. -
Dans Offset in nanos (Décalage en nanosecondes), entrez
${(timestamp() % 1E3) * 1E6}
.
-
-
Dans Data type (Type de données), choisissez Double.
Ce type de données doit correspondre au type de données de la propriété de ressource que vous avez définie dans le modèle de ressource.
-
Dans Value (Valeur), entrez
${state.reported.cpu}
. Dans les modèles de substitution, vous utilisez l'.
opérateur pour récupérer une valeur au sein d'une JSON structure. -
Choisissez Add entry (Ajouter une entrée) pour ajouter une entrée pour la propriété d'utilisation de la mémoire et suivez à nouveau les étapes ci-dessous pour cette propriété :
-
Choisissez By property alias (Par alias de propriété).
-
Dans Property alias (Alias de propriété), entrez
/tutorial/device/${topic(3)}/memory
. -
Dans Numéro d'entrée - facultatif, entrez
${concat(topic(3), "-memory-", floor(state.reported.timestamp))}
. -
Dans Time in seconds (Délai en secondes), entrez
${floor(state.reported.timestamp)}
. -
Dans la zone Décalage en nanos - facultatif, entrez
${floor((state.reported.timestamp % 1) * 1E9)}
. -
Dans Data type (Type de données), choisissez Double.
-
Dans Value (Valeur), entrez
${state.reported.memory}
.
-
-
Sous IAMRôle, choisissez Créer un nouveau rôle pour créer un IAM rôle pour cette action de règle. Ce rôle permet AWS IoT de transférer les données vers les propriétés de votre parc d'appareils et de sa hiérarchie d'actifs.
-
Entrez un nom de rôle et choisissez Create.
-
-
(Facultatif) Configurez une action d'erreur que vous pouvez utiliser pour dépanner la règle. Pour de plus amples informations, veuillez consulter Résoudre les problèmes liés à une règle ()AWS IoT SiteWise.
-
Choisissez Suivant.
-
Vérifiez les paramètres et choisissez Créer pour créer la règle.
Étape 8 : Exécuter le script client de l'appareil
Dans le cadre de ce didacticiel, vous n'utilisez pas un appareil réel pour communiquer des données. Au lieu de cela, vous exécutez un script pour mettre à jour l'ombre AWS IoT de l'appareil CPU et l'utilisation de la mémoire de votre appareil afin d'imiter les données réelles des capteurs. Pour exécuter le script, vous devez d'abord installer les Python packages requis. Dans cette procédure, vous installez les Python packages requis, puis vous exécutez le script client de l'appareil.
Pour configurer et exécuter le script client de périphérique
-
Accédez à la console AWS IoT
. -
En bas du volet de navigation de gauche, choisissez Settings (Paramètres).
-
Enregistrez le point de terminaison personnalisé pour l'utiliser avec le script client de périphérique. Vous utiliserez ce point de terminaison pour interagir avec les ombres de votre objet. Ce point de terminaison est unique à votre compte dans la région actuelle.
Le point de terminaison personnalisé devrait ressembler à l'exemple suivant.
identifier
.iot.region
.amazonaws.com -
Ouvrez une ligne de commande et exécutez la commande suivante pour accéder au répertoire du didacticiel que vous avez créé précédemment.
cd iot-sitewise-rule-tutorial
-
Exécutez la commande suivante pour installer le kit Kit SDK des appareils AWS IoT pour Python.
pip3 install AWSIoTPythonSDK
Pour plus d'informations, consultez Kit SDK des appareils AWS IoT pour Pythonle guide du AWS IoT développeur
-
Exécutez la commande suivante pour installer psutil, bibliothèque d'utilitaires système et de processus multiplateformes.
pip3 install psutil
Pour plus d'informations, consultez psutil
dans l'index des packages Python. -
Créez un fichier appelé
thing_performance.py
dans le répertoireiot-sitewise-rule-tutorial
, puis copiez le code Python suivant dans le fichier.import AWSIoTPythonSDK.MQTTLib as AWSIoTPyMQTT import json import psutil import argparse import logging import time # Configures the argument parser for this program. def configureParser(): parser = argparse.ArgumentParser() parser.add_argument( "-e", "--endpoint", action="store", required=True, dest="host", help="Your AWS IoT custom endpoint", ) parser.add_argument( "-r", "--rootCA", action="store", required=True, dest="rootCAPath", help="Root CA file path", ) parser.add_argument( "-c", "--cert", action="store", required=True, dest="certificatePath", help="Certificate file path", ) parser.add_argument( "-k", "--key", action="store", required=True, dest="privateKeyPath", help="Private key file path", ) parser.add_argument( "-p", "--port", action="store", dest="port", type=int, default=8883, help="Port number override", ) parser.add_argument( "-n", "--thingName", action="store", required=True, dest="thingName", help="Targeted thing name", ) parser.add_argument( "-d", "--requestDelay", action="store", dest="requestDelay", type=float, default=1, help="Time between requests (in seconds)", ) parser.add_argument( "-v", "--enableLogging", action="store_true", dest="enableLogging", help="Enable logging for the AWS IoT Device SDK for Python", ) return parser # An MQTT shadow client that uploads device performance data to AWS IoT at a regular interval. class PerformanceShadowClient: def __init__( self, thingName, host, port, rootCAPath, privateKeyPath, certificatePath, requestDelay, ): self.thingName = thingName self.host = host self.port = port self.rootCAPath = rootCAPath self.privateKeyPath = privateKeyPath self.certificatePath = certificatePath self.requestDelay = requestDelay # Updates this thing's shadow with system performance data at a regular interval. def run(self): print("Connecting MQTT client for {}...".format(self.thingName)) mqttClient = self.configureMQTTClient() mqttClient.connect() print("MQTT client for {} connected".format(self.thingName)) deviceShadowHandler = mqttClient.createShadowHandlerWithName( self.thingName, True ) print("Running performance shadow client for {}...\n".format(self.thingName)) while True: performance = self.readPerformance() print("[{}]".format(self.thingName)) print("CPU:\t{}%".format(performance["cpu"])) print("Memory:\t{}%\n".format(performance["memory"])) payload = {"state": {"reported": performance}} deviceShadowHandler.shadowUpdate( json.dumps(payload), self.shadowUpdateCallback, 5 ) time.sleep(args.requestDelay) # Configures the MQTT shadow client for this thing. def configureMQTTClient(self): mqttClient = AWSIoTPyMQTT.AWSIoTMQTTShadowClient(self.thingName) mqttClient.configureEndpoint(self.host, self.port) mqttClient.configureCredentials( self.rootCAPath, self.privateKeyPath, self.certificatePath ) mqttClient.configureAutoReconnectBackoffTime(1, 32, 20) mqttClient.configureConnectDisconnectTimeout(10) mqttClient.configureMQTTOperationTimeout(5) return mqttClient # Returns the local device's CPU usage, memory usage, and timestamp. def readPerformance(self): cpu = psutil.cpu_percent() memory = psutil.virtual_memory().percent timestamp = time.time() return {"cpu": cpu, "memory": memory, "timestamp": timestamp} # Prints the result of a shadow update call. def shadowUpdateCallback(self, payload, responseStatus, token): print("[{}]".format(self.thingName)) print("Update request {} {}\n".format(token, responseStatus)) # Configures debug logging for the AWS IoT Device SDK for Python. def configureLogging(): logger = logging.getLogger("AWSIoTPythonSDK.core") logger.setLevel(logging.DEBUG) streamHandler = logging.StreamHandler() formatter = logging.Formatter( "%(asctime)s - %(name)s - %(levelname)s - %(message)s" ) streamHandler.setFormatter(formatter) logger.addHandler(streamHandler) # Runs the performance shadow client with user arguments. if __name__ == "__main__": parser = configureParser() args = parser.parse_args() if args.enableLogging: configureLogging() thingClient = PerformanceShadowClient( args.thingName, args.host, args.port, args.rootCAPath, args.privateKeyPath, args.certificatePath, args.requestDelay, ) thingClient.run()
-
Exécutez
thing_performance.py
depuis la ligne de commande avec les paramètres suivants :-
-n
,--thingName
— Le nom de votre objet, tel queSiteWiseTutorialDevice1
. -
-e
,--endpoint
— Votre point de AWS IoT terminaison personnalisé que vous avez enregistré plus tôt dans cette procédure. -
-r
,--rootCA
— Le chemin d'accès à votre certificat CA AWS IoT racine. -
-c
,--cert
— Le chemin d'accès à votre certificat d' AWS IoT objet. -
-k
,--key
— Le chemin d'accès à la clé privée de votre certificat d' AWS IoT objet. -
-d
,--requestDelay
— (Facultatif) Temps d'attente en secondes entre chaque mise à jour instantanée de l'appareil. Par défaut, il correspond à 1 seconde. -
-v
,--enableLogging
— (Facultatif) Si ce paramètre est présent, le script imprime des messages de débogage à partir du Kit SDK des appareils AWS IoT pour Python.
La commande doit être similaire à l'exemple suivant :
python3 thing_performance.py \ --thingName SiteWiseTutorialDevice1 \ --endpoint
identifier
.iot.region
.amazonaws.com \ --rootCA AmazonRootCA1.pem \ --cert device1/thing-id
-certificate.pem.crt \ --key device1/thing-id
-private.pem.keySi vous exécutez le script pour d'autres AWS IoT éléments, mettez à jour le nom de l'objet et le répertoire des certificats en conséquence.
-
-
Essayez d'ouvrir et de fermer des programmes sur votre appareil pour voir comment l'utilisation de la mémoire CPU et de la mémoire évolue. Le script imprime chaque lecture CPU ainsi que la lecture de l'utilisation de la mémoire. Si le script charge des données vers le service d'ombres de périphérique avec succès, la sortie du script doit ressembler à l'exemple suivant.
[SiteWiseTutorialDevice1] CPU: 24.6% Memory: 85.2% [SiteWiseTutorialDevice1] Update request e6686e44-fca0-44db-aa48-3ca81726f3e3 accepted
-
Procédez comme suit pour vérifier que le script met à jour l'ombre du périphérique :
-
Accédez à la console AWS IoT
. -
Dans le volet de navigation de gauche, choisissez Tous les appareils, puis Objets.
-
Choisissez votre truc, SiteWiseTutorialDevice.
-
Choisissez l'onglet Device Shadows, choisissez Classic Shadow et vérifiez que l'état Shadow ressemble à l'exemple suivant.
{ "reported": { "cpu": 24.6, "memory": 85.2, "timestamp": 1579567542.2835066 } }
Si l'état fantôme de votre objet est vide ou ne ressemble pas à celui de l'exemple précédent, vérifiez que le script est en cours d'exécution et que vous y êtes connecté correctement AWS IoT. Si le script continue à expirer lors de la connexion à AWS IoT, vérifiez que votre politique d'objets est configurée conformément à ce didacticiel.
-
-
Procédez comme suit pour vérifier que l'action de règle envoie des données à AWS IoT SiteWise :
-
Accédez à la console AWS IoT SiteWise
. -
Dans le panneau de navigation de gauche, choisissez Assets (Ressources).
-
Sélectionnez la flèche en regard de votre parc de périphériques (SiteWise Tutorial Device Fleet 1 1) pour développer sa hiérarchie de ressources, puis choisissez votre ressource de périphérique (SiteWise Tutorial Device 1).
-
Choisissez Measurements (Mesures).
-
Vérifiez que les cellules Latest value (Valeur la plus récente) ont des valeurs pour les propriétés CPU Usage et Memory Usage.
-
Si les propriétés CPU Usage et Memory Usage n'ont pas les dernières valeurs, actualisez la page. Si aucune ligne n'apparaît après quelques minutes, consultez Résoudre les problèmes liés à une règle ()AWS IoT SiteWise.
-
Vous avez terminé ce didacticiel. Si vous souhaitez explorer les visualisations en direct de vos données, vous pouvez configurer un portail dans AWS IoT SiteWise Monitor. Pour de plus amples informations, veuillez consulter Surveillez les données avec AWS IoT SiteWise Monitor. Sinon, vous pouvez appuyer sur CTRL+C dans votre invite de commande pour arrêter le script client de l'appareil. Il est peu probable que le programme Python envoie suffisamment de messages pour générer des frais, mais il est recommandé d'arrêter le programme une fois que vous avez terminé.
Étape 9 : Nettoyer les ressources après le didacticiel
Après avoir terminé le didacticiel sur l'ingestion de données provenant d' AWS IoT objets, nettoyez vos ressources pour éviter d'encourir des frais supplémentaires.
Pour supprimer des actifs hiérarchiques dans AWS IoT SiteWise
-
Accédez à la AWS IoT SiteWise console
-
Dans le panneau de navigation de gauche, choisissez Assets (Ressources).
-
Lorsque vous supprimez des actifs AWS IoT SiteWise, vous devez d'abord les dissocier.
Procédez comme suit pour dissocier les ressources de périphérique de votre parc de périphériques :
-
Choisissez l'actif de votre parc d'appareils (SiteWise Tutorial Device Fleet 1).
-
Choisissez Modifier.
-
Sous Assets associated to this asset (Ressources associées à cette ressource), choisissez Disassociate (Dissocier) pour chaque ressource de périphérique associée à cette ressource de parc de périphériques.
-
Choisissez Save (Enregistrer).
Désormais, les ressources de votre périphérique ne devraient plus être organisées sous forme de hiérarchie.
-
-
Choisissez votre ressource de périphérique (SiteWise Tutorial Device 1).
-
Sélectionnez Delete (Supprimer).
-
Dans le champ de confirmation, entrez,
Delete
, puis choisissez Delete (Supprimer). -
Répétez les étapes 4 à 6 pour chaque actif de l'appareil et pour le parc d'appareils (SiteWise Tutorial Device Fleet 1).
Pour supprimer des modèles d'actifs hiérarchiques dans AWS IoT SiteWise
-
Accédez à la console AWS IoT SiteWise
. -
Si vous ne l'avez pas déjà fait, supprimez vos périphériques et les ressources de votre parc de périphériques. Pour plus d'informations, consultez la procédure précédente. Vous ne pouvez pas supprimer un modèle s'il existe des ressources créées à partir de ce modèle.
-
Dans le volet de navigation de gauche, choisissez Models (Modèles).
-
Choisissez votre modèle de ressource de parc de périphériques (SiteWise Tutorial Device Fleet Model).
Lorsque vous supprimez des modèles d'actifs hiérarchiques, commencez par supprimer d'abord le modèle d'actif parent.
-
Sélectionnez Delete (Supprimer).
-
Dans le champ de confirmation, entrez,
Delete
, puis choisissez Delete (Supprimer). -
Répétez les étapes 4 à 6 pour le modèle de ressource de périphérique (SiteWise Tutorial Device Model Model).
Pour désactiver ou supprimer une règle dans AWS IoT Core
-
Accédez à la console AWS IoT
. -
Dans le volet de navigation de gauche, choisissez Routage des messages, puis sélectionnez Règles.
-
Sélectionnez votre règle, puis cliquez sur Supprimer.
-
Dans la boîte de dialogue de confirmation, entrez le nom de la règle, puis choisissez Supprimer.