Création d'un modèle de détecteur - AWS IoT Events

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.

Création d'un modèle de détecteur

Dans cette rubrique, vous allez définir un modèle de détecteur (un modèle de votre équipement ou de votre processus) à l'aide des états.

Pour chaque état, vous définissez une logique conditionnelle (booléenne) qui évalue les entrées entrantes afin de détecter un événement significatif. Lorsqu'un événement est détecté, il change d'état et peut lancer des actions supplémentaires. Ces événements sont appelés événements de transition.

Dans vos états, vous définissez également des événements qui peuvent exécuter des actions chaque fois que le détecteur entre ou sort de cet état ou lorsqu'une entrée est reçue (ces événements sont appelés OnEnter OnInput événements OnExit et). Les actions ne sont exécutées que si la logique conditionnelle de l'événement est évaluée àtrue.

Pour créer un modèle de détecteur
  1. Le premier état du détecteur a été créé pour vous. Pour le modifier, sélectionnez le cercle avec le libellé State_1 dans l'espace d'édition principal.

  2. Dans le volet État, entrez le nom de l'État et OnEnterchoisissez Ajouter un événement.

  3. Sur la page Ajouter un OnEnter événement, entrez le nom de l'événement et la condition de l'événement. Dans cet exemple, entrez true pour indiquer que l'événement est toujours initié lorsque l'état est saisi.

  4. Sous Actions liées aux événements, choisissez Ajouter une action.

  5. Sous Actions liées aux événements, procédez comme suit :

    1. Sélectionnez Définir une variable

    2. Pour Fonctionnement variable, choisissez Affecter une valeur.

    3. Dans Nom de la variable, entrez le nom de la variable à définir.

    4. Pour Valeur variable, entrez la valeur 0 (zéro).

  6. Choisissez Save (Enregistrer).

    Une variable, comme celle que vous avez définie, peut être définie (avec une valeur) dans tous les cas dans le modèle de détecteur. La valeur de la variable ne peut être référencée (par exemple, dans la logique conditionnelle d'un événement) qu'une fois que le détecteur a atteint un état et a exécuté une action dans laquelle elle est définie ou définie.

  7. Dans le volet État, cliquez sur le X à côté de State pour revenir à la palette du modèle de détecteur.

  8. Pour créer un deuxième état de détecteur, dans la palette du modèle de détecteur, choisissez State et faites-le glisser dans l'espace d'édition principal. Cela crée un état intituléuntitled_state_1.

  9. Faites une pause sur le premier état (Normal). Une flèche apparaît sur le pourtour de l'État.

  10. Cliquez et faites glisser la flèche du premier état au second état. Une ligne dirigée entre le premier état et le second état (intitulée Sans titre) apparaît.

  11. Sélectionnez la ligne Sans titre. Dans le volet des événements de transition, entrez un nom d'événement et une logique de déclenchement d'événement.

  12. Dans le volet des événements de transition, choisissez Ajouter une action.

  13. Dans le volet Ajouter des actions relatives à un événement de transition, choisissez Ajouter une action.

  14. Pour Choisir une action, choisissez Définir une variable.

    1. Pour Fonctionnement variable, choisissez Affecter une valeur.

    2. Dans Nom de la variable, entrez le nom de la variable.

    3. Pour Attribuer une valeur, entrez une valeur telle que : $variable.pressureThresholdBreached + 3

    4. Choisissez Save (Enregistrer).

  15. Sélectionnez le deuxième état untitled_state_1.

  16. Dans le volet État, entrez le nom de l'État et pour En entrée, choisissez Ajouter un événement.

  17. Sur la page Ajouter OnEnter un événement, entrez le nom de l'événement et la condition de l'événement. Choisissez Add action.

  18. Pour Choisir une action, choisissez Envoyer un SNS message.

    1. Pour le SNSsujet, saisissez la cible ARN de votre SNS sujet Amazon.

    2. Choisissez Save (Enregistrer).

  19. Continuez à ajouter les événements dans l'exemple.

    1. Pour OnInput, choisissez Ajouter un événement, puis entrez et enregistrez les informations d'événement suivantes.

      Event name: Overpressurized Event condition: $input.PressureInput.sensorData.pressure > 70 Event actions: Set variable: Variable operation: Assign value Variable name: pressureThresholdBreached Assign value: 3
    2. Pour OnInput, choisissez Ajouter un événement, puis entrez et enregistrez les informations d'événement suivantes.

      Event name: Pressure Okay Event condition: $input.PressureInput.sensorData.pressure <= 70 Event actions: Set variable: Variable operation: Decrement Variable name: pressureThresholdBreached
    3. Pour OnExit, choisissez Ajouter un événement, puis entrez et enregistrez les informations d'événement suivantes en utilisant le ARN SNS sujet Amazon que vous avez créé.

      Event name: Normal Pressure Restored Event condition: true Event actions: Send SNS message: Target arn: arn:aws:sns:us-east-1:123456789012:pressureClearedAction
  20. Pause sur le deuxième état (Dangereux). Une flèche apparaît sur le pourtour de l'État

  21. Cliquez et faites glisser la flèche du deuxième état au premier état. Une ligne dirigée avec le libellé Sans titre apparaît.

  22. Choisissez la ligne Sans titre et dans le volet des événements de transition, entrez un nom d'événement et une logique de déclenchement d'événement à l'aide des informations suivantes.

    { Event name: BackToNormal Event trigger logic: $input.PressureInput.sensorData.pressure <= 70 && $variable.pressureThresholdBreached <= 0 }

    Pour plus d'informations sur les raisons pour lesquelles nous testons la $input valeur et la $variable valeur dans la logique de déclenchement, consultez l'entrée relative à la disponibilité des valeurs des variables dansRestrictions et limites du modèle de détecteur.

  23. Sélectionnez l'état de départ. Par défaut, cet état a été créé lorsque vous avez créé un modèle de détecteur). Dans le volet Démarrer, choisissez l'état de destination (par exemple, Normal).

  24. Configurez ensuite le modèle de votre détecteur pour qu'il écoute les entrées. Dans le coin supérieur droit, choisissez Publier.

  25. Sur la page du modèle de détecteur de publication, procédez comme suit.

    1. Entrez un nom de modèle de détecteur, une description et le nom d'un rôle. Ce rôle a été créé pour vous.

    2. Choisissez Créer un détecteur pour chaque valeur clé unique. Pour créer et utiliser votre propre rôle, suivez les étapes décrites Configuration des autorisations pour AWS IoT Events et saisissez-le comme rôle ici.

  26. Pour la clé de création du détecteur, choisissez le nom de l'un des attributs de l'entrée que vous avez définie précédemment. L'attribut que vous choisissez comme clé de création du détecteur doit être présent dans chaque message saisi et doit être unique pour chaque appareil qui envoie des messages. Cet exemple utilise l'attribut motorid.

  27. Choisissez Enregistrer et publier.

Note

Le nombre de détecteurs uniques créés pour un modèle de détecteur donné est basé sur les messages d'entrée envoyés. Lorsqu'un modèle de détecteur est créé, une clé est sélectionnée parmi les attributs d'entrée. Cette clé détermine l'instance de détecteur à utiliser. Si la clé n'a jamais été vue auparavant (pour ce modèle de détecteur), une nouvelle instance de détecteur est créée. Si la clé a déjà été vue, nous utilisons l'instance de détecteur existante correspondant à cette valeur de clé.

Vous pouvez créer une copie de sauvegarde de la définition de votre modèle de détecteur (inJSON) recréer ou mettre à jour le modèle de détecteur ou l'utiliser comme modèle pour créer un autre modèle de détecteur.

Vous pouvez le faire depuis la console ou à l'aide de la CLI commande suivante. Si nécessaire, modifiez le nom du modèle de détecteur pour qu'il corresponde à celui que vous avez utilisé lors de sa publication à l'étape précédente.

aws iotevents describe-detector-model --detector-model-name motorDetectorModel > motorDetectorModel.json

Cela crée un fichier (motorDetectorModel.json) dont le contenu est similaire au suivant.

{ "detectorModel": { "detectorModelConfiguration": { "status": "ACTIVE", "lastUpdateTime": 1552072424.212, "roleArn": "arn:aws:iam::123456789012:role/IoTEventsRole", "creationTime": 1552072424.212, "detectorModelArn": "arn:aws:iotevents:us-west-2:123456789012:detectorModel/motorDetectorModel", "key": "motorid", "detectorModelName": "motorDetectorModel", "detectorModelVersion": "1" }, "detectorModelDefinition": { "states": [ { "onInput": { "transitionEvents": [ { "eventName": "Overpressurized", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "$variable.pressureThresholdBreached + 3" } } ], "condition": "$input.PressureInput.sensorData.pressure > 70", "nextState": "Dangerous" } ], "events": [] }, "stateName": "Normal", "onEnter": { "events": [ { "eventName": "init", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "0" } } ], "condition": "true" } ] }, "onExit": { "events": [] } }, { "onInput": { "transitionEvents": [ { "eventName": "Back to Normal", "actions": [], "condition": "$variable.pressureThresholdBreached <= 1 && $input.PressureInput.sensorData.pressure <= 70", "nextState": "Normal" } ], "events": [ { "eventName": "Overpressurized", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "3" } } ], "condition": "$input.PressureInput.sensorData.pressure > 70" }, { "eventName": "Pressure Okay", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "$variable.pressureThresholdBreached - 1" } } ], "condition": "$input.PressureInput.sensorData.pressure <= 70" } ] }, "stateName": "Dangerous", "onEnter": { "events": [ { "eventName": "Pressure Threshold Breached", "actions": [ { "sns": { "targetArn": "arn:aws:sns:us-west-2:123456789012:MyIoTButtonSNSTopic" } } ], "condition": "$variable.pressureThresholdBreached > 1" } ] }, "onExit": { "events": [ { "eventName": "Normal Pressure Restored", "actions": [ { "sns": { "targetArn": "arn:aws:sns:us-west-2:123456789012:IoTVirtualButtonTopic" } } ], "condition": "true" } ] } } ], "initialStateName": "Normal" } } }