Erstellen Sie ein Detektormodell - AWS IoT Events

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erstellen Sie ein Detektormodell

In diesem Thema definieren Sie mithilfe von Zuständen ein Detektormodell (ein Modell Ihrer Ausrüstung oder Ihres Prozesses).

Für jeden Status definieren Sie eine bedingte (boolesche) Logik, die die eingehenden Eingaben auswertet, um ein signifikantes Ereignis zu erkennen. Wenn ein Ereignis erkannt wird, ändert es den Status und kann zusätzliche Aktionen einleiten. Diese Ereignisse werden als Übergangsereignisse bezeichnet.

In Ihren Zuständen definieren Sie auch Ereignisse, die Aktionen ausführen können, wenn der Melder in diesen Zustand eintritt oder ihn verlässt oder wenn eine Eingabe eingeht (diese Ereignisse werden als OnEnter OnInput AND-Ereignisse bezeichnet). OnExit Die Aktionen werden nur ausgeführt, wenn die Bedingungslogik des Ereignisses Folgendes ergibt. true

Um ein Detektormodell zu erstellen
  1. Der erste Detektorstatus wurde für Sie erstellt. Um ihn zu ändern, wählen Sie den Kreis mit der Bezeichnung State_1 im Hauptbearbeitungsbereich aus.

  2. Geben Sie im Bereich „Status“ den Namen des Bundesstaates ein und wählen Sie „OnEnterEreignis hinzufügen“.

  3. Geben Sie auf der Seite „ OnEnter Ereignis hinzufügen“ einen Namen für das Ereignis und die Bedingung für das Ereignis ein. Geben Sie in diesem Beispiel ein, true um anzugeben, dass das Ereignis immer ausgelöst wird, wenn der Status eingegeben wird.

  4. Wählen Sie unter Ereignisaktionen die Option Aktion hinzufügen aus.

  5. Gehen Sie unter Ereignisaktionen wie folgt vor:

    1. Wählen Sie „Variable festlegen

    2. Wählen Sie für den Variablenbetrieb die Option Wert zuweisen aus.

    3. Geben Sie unter Variablenname den Namen der Variablen ein, die festgelegt werden soll.

    4. Geben Sie für Variablenwert den Wert 0 (Null) ein.

  6. Wählen Sie Speichern.

    Eine Variable, wie die, die Sie definiert haben, kann auf jeden Fall im Detektormodell festgelegt werden (mit einem Wert). Auf den Wert der Variablen kann erst verwiesen werden (z. B. in der bedingten Logik eines Ereignisses), wenn der Detektor einen Status erreicht hat und eine Aktion ausgeführt hat, in der er definiert oder gesetzt ist.

  7. Wählen Sie im Statusbereich das X neben Status, um zur Modellpalette Detector zurückzukehren.

  8. Um einen zweiten Detektorstatus zu erstellen, wählen Sie in der Modellpalette Detektor die Option Status und ziehen Sie ihn in den Hauptbearbeitungsbereich. Dadurch wird ein Zustand mit dem Titel erstelltuntitled_state_1.

  9. Halten Sie im ersten Status (Normal) an. Am Rand des Bundesstaats erscheint ein Pfeil.

  10. Klicken Sie auf den Pfeil und ziehen Sie ihn vom ersten Status in den zweiten Status. Eine gerichtete Linie vom ersten zum zweiten Status (mit der Bezeichnung Unbenannt) wird angezeigt.

  11. Wählen Sie die Linie Ohne Titel aus. Geben Sie im Bereich „Übergangsereignis“ einen Namen für das Ereignis und eine Logik für das Ereignis ein.

  12. Wählen Sie im Bereich „Übergangsereignis“ die Option Aktion hinzufügen aus.

  13. Wählen Sie im Bereich „Aktionen für Übergangsereignis hinzufügen“ die Option Aktion hinzufügen aus.

  14. Wählen Sie für Aktion auswählen die Option Variable festlegen aus.

    1. Wählen Sie für Variablenoperation die Option Wert zuweisen aus.

    2. Geben Sie unter Variablenname den Namen der Variablen ein.

    3. Geben Sie für Wert zuweisen einen Wert ein, z. B.: $variable.pressureThresholdBreached + 3

    4. Wählen Sie Speichern.

  15. Wählen Sie den zweiten Status untitled_state_1 aus.

  16. Geben Sie im Bereich „Status“ den Namen des Bundesstaates ein und wählen Sie für „Bei Eingabe“ die Option „Ereignis hinzufügen“ aus.

  17. Geben Sie auf der Seite „ OnEnter Ereignis hinzufügen“ den Namen des Ereignisses und die Bedingung für das Ereignis ein. Wählen Sie Aktion hinzufügen aus.

  18. Wählen Sie für Aktion auswählen die Option SNS-Nachricht senden aus.

    1. Geben Sie unter SNS-Thema den Ziel-ARN Ihres Amazon SNS SNS-Themas ein.

    2. Wählen Sie Speichern.

  19. Fahren Sie mit dem Hinzufügen der Ereignisse im Beispiel fort.

    1. Wählen Sie für OnInputEreignis hinzufügen und geben Sie die folgenden Ereignisinformationen ein und speichern Sie sie.

      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. Wählen Sie für OnInputEreignis hinzufügen“ und geben Sie die folgenden Ereignisinformationen ein und speichern Sie sie.

      Event name: Pressure Okay Event condition: $input.PressureInput.sensorData.pressure <= 70 Event actions: Set variable: Variable operation: Decrement Variable name: pressureThresholdBreached
    3. Wählen Sie für OnExitEreignis hinzufügen und geben Sie die folgenden Ereignisinformationen ein und speichern Sie sie unter Verwendung des ARN des Amazon SNS SNS-Themas, das Sie erstellt haben.

      Event name: Normal Pressure Restored Event condition: true Event actions: Send SNS message: Target arn: arn:aws:sns:us-east-1:123456789012:pressureClearedAction
  20. Halten Sie im zweiten Status (Gefährlich) an. Am Rand des Bundesstaats erscheint ein Pfeil

  21. Klicken Sie auf den Pfeil und ziehen Sie ihn vom zweiten Status in den ersten Status. Eine gerichtete Linie mit der Bezeichnung Unbenannt wird angezeigt.

  22. Wählen Sie die Zeile „Unbenannt“ und geben Sie im Bereich „Übergangsereignis“ anhand der folgenden Informationen einen Namen für das Ereignis und eine Logik für das Ereignis ein.

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

    Weitere Informationen darüber, warum wir den $input Wert und den $variable Wert in der Triggerlogik testen, finden Sie im Eintrag zur Verfügbarkeit von Variablenwerten unter. Einschränkungen und Einschränkungen des Detektormodells

  23. Wählen Sie den Startstatus aus. Standardmäßig wurde dieser Status erstellt, als Sie ein Detektormodell erstellt haben). Wählen Sie im Startbereich den Zielstatus aus (z. B. Normal).

  24. Als Nächstes konfigurieren Sie Ihr Meldermodell so, dass es auf Eingaben wartet. Wählen Sie in der oberen rechten Ecke Veröffentlichen.

  25. Gehen Sie auf der Seite Meldermodell veröffentlichen wie folgt vor.

    1. Geben Sie einen Modellnamen für den Detektor, eine Beschreibung und den Namen einer Rolle ein. Diese Rolle wurde für Sie erstellt.

    2. Wählen Sie für jeden eindeutigen Schlüsselwert einen Detektor erstellen aus. Um Ihre eigene Rolle zu erstellen und zu verwenden, folgen Sie den Schritten unter Berechtigungen einrichten für AWS IoT Events und geben Sie sie hier als Rolle ein.

  26. Wählen Sie unter Detector creation key den Namen eines der Attribute der Eingabe, die Sie zuvor definiert haben. Das Attribut, das Sie als Schlüssel für die Erstellung des Melders wählen, muss in jeder Nachrichteneingabe vorhanden sein und für jedes Gerät, das Nachrichten sendet, eindeutig sein. In diesem Beispiel wird das motorid-Attribut verwendet.

  27. Wählen Sie Save and publish (Speichern und veröffentlichen).

Anmerkung

Die Anzahl der eindeutigen Melder, die für ein bestimmtes Detektormodell erstellt wurden, basiert auf den gesendeten Eingangsmeldungen. Wenn ein Detektormodell erstellt wird, wird ein Schlüssel aus den Eingabeattributen ausgewählt. Dieser Schlüssel bestimmt, welche Detektorinstanz verwendet werden soll. Wenn der Schlüssel noch nie gesehen wurde (für dieses Detektormodell), wird eine neue Detektorinstanz erstellt. Wenn der Schlüssel schon einmal gesehen wurde, verwenden wir die bestehende Detektorinstanz, die diesem Schlüsselwert entspricht.

Sie können eine Sicherungskopie Ihrer Detektormodelldefinition (in JSON) erstellen, das Detektormodell neu erstellen oder aktualisieren oder als Vorlage verwenden, um ein anderes Detektormodell zu erstellen.

Sie können dies von der Konsole aus oder mit dem folgenden CLI-Befehl tun. Ändern Sie bei Bedarf den Namen des Detektormodells so, dass er dem entspricht, den Sie bei der Veröffentlichung im vorherigen Schritt verwendet haben.

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

Dadurch wird eine Datei (motorDetectorModel.json) erstellt, deren Inhalt dem folgenden ähnelt.

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