ディテクターモデルを作成します。 - AWS IoT Events

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ディテクターモデルを作成します。

このトピックでは、状態を使用してディテクターモデル (機器またはプロセスのモデル) を定義します。

状態ごとに、重要なイベントを検出するために着信入力を評価する条件付き (ブール) ロジックを定義します。イベントが検出されると、状態が変化し、追加のアクションをトリガーできます。これらのイベントは、移行イベントと呼ばれます。

状態では、ディテクターがその状態に出入りするとき、または入力を受信したときにアクションを実行できるイベントも定義します (これらは OnEnterOnExit、および OnInput イベントと呼ばれます)。アクションは、イベントの条件付きロジックが true と評価された場合にのみ実行されます。

ディテクターモデルを作成するには

  1. 最初のディテクターの状態が作成されました。変更するには、メインの編集スペースで State_1 というラベルの付いた円を選択します。

    
            AWS IoT Events コンソールでディテクターモデルを作成します。
  2. 状態ペインで、州名そしてOnEnter、選択イベントの追加

    
            AWS IoT Events コンソールでディテクターモデルを作成します。
  3. リポジトリの []を追加します。 OnEnter 出来事ページで、イベント名イベント条件。この例では、true と入力して、状態に入ったときにイベントが常にトリガーされることを示します。

  4. イベントアクションで、アクションの追加を選択します。

    
            AWS IoT Events コンソールでディテクターモデルを作成します。
  5. イベントアクションで、次の手順を実行します。

    1. 可変の設定を選択します

    2. 可変オペレーションの場合は、値の割当を選択します。

    3. 可変名に、設定する可変の名前を入力します。

    4. 可変値に、値 0 (ゼロ) を入力します。

    
            AWS IoT Events コンソールでディテクターモデルを作成します。
  6. [Save] (保存) を選択します。

    
            AWS IoT Events コンソールでディテクターモデルを作成します。

    定義した可変のような可変は、ディテクターモデルの任意のイベントで設定 (値を指定) できます。ただし、その値を参照できるのは、ディテクターが状態に到達し、定義または設定されているアクションを実行した後でのみです (例えば、イベントの条件付きロジックで)。

  7. 状態ペインで、状態の横のXを選択して、ディテクターモデルパレットに戻ります。

    
            AWS IoT Events コンソールでディテクターモデルを作成します。
  8. 2 番目のディテクターの状態を作成するには、ディテクターのモデルパレットで状態を選択し、メインの編集スペースにドラッグします。これにより、untitled_state_1 というタイトルの状態が作成されます。

    
            AWS IoT Events コンソールでディテクターモデルを作成します。
  9. 最初の状態で一時停止します (通常)。状態の周囲に矢印が表示されます。

  10. 矢印をクリックして、最初の状態から 2 番目の状態にドラッグします。最初の状態から 2 番目の状態 (無題のラベルが付いている) への有向線が表示されます。

    
            AWS IoT Events コンソールでディテクターモデルを作成します。
  11. 無題の行を選択します。移行イベントペインで、イベント名イベントトリガーロジックを入力します。

    
            AWS IoT Events コンソールでディテクターモデルを作成します。
  12. 移行イベントペインで、アクションの追加を選択します。

    
            AWS IoT Events コンソールでディテクターモデルを作成します。
  13. 移行イベントアクションの追加ペインで、アクションの追加を選択します。

    
            AWS IoT Events コンソールでディテクターモデルを作成します。
  14. アクションの選択で、可変の設定を選択します。

    1. 可変オペレーションの場合は、値の割当を選択します。

    2. 可変名に、可変の名前を入力します。

    3. 値の割り当てに、次のような値を入力します: $variable.pressureThresholdBreached + 3

    4. [Save] (保存) を選択します。

    
            AWS IoT Events コンソールでディテクターモデルを作成します。
  15. 2 番目の状態 untitled_state_1 を選択します。

  16. 状態ペインで状態名を入力し、入力時イベントの追加を選択します。

    
            AWS IoT Events コンソールでディテクターモデルを作成します。
  17. リポジトリの []を追加します。 OnEnter 出来事ページで、イベント名,イベント条件そして、アクションを追加する

    
            AWS IoT Events コンソールでディテクターモデルを作成します。
  18. アクションの選択で、SNS メッセージの送信を選択します。

    1. SNS トピックには、SNS トピックのターゲット ARN を入力します。

    2. [Save] (保存) を選択します。

    
            AWS IoT Events コンソールでディテクターモデルを作成します。
  19. 例にイベントを追加し続けます。

    1. を使用する場合OnInput、選択イベントの追加を選択し、次のイベント情報を入力して保存します。

      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. を使用する場合OnInput、選択イベントの追加を選択し、次のイベント情報を入力して保存します。

      Event name: Pressure Okay Event condition: $input.PressureInput.sensorData.pressure <= 70 Event actions: Set variable: Variable operation: Decrement Variable name: pressureThresholdBreached
    3. を使用する場合OnExit、選択イベントの追加を選択し、作成したSNSトピックの ARN を使用して、次のイベント情報を入力して保存します。

      Event name: Normal Pressure Restored Event condition: true Event actions: Send SNS message: Target arn: arn:aws:sns:us-east-1:123456789012:pressureClearedAction
  20. 2 番目の状態 (危険) で一時停止します。状態の周囲に矢印が表示されます

  21. 矢印をクリックして、2 番目の状態から最初の状態にドラッグします。無題のラベルが付いた有向線が表示されます。

    
            AWS IoT Events コンソールでディテクターモデルを作成します。
  22. 無題の行を選択し、移行イベントペインで、次の情報を使用してイベント名イベントトリガーロジックを入力します。

    { Event name: BackToNormal Event trigger logic: $input.PressureInput.sensorData.pressure <= 70 && $variable.pressureThresholdBreached <= 0 }
    
            AWS IoT Events コンソールでディテクターモデルを作成します。

    トリガーロジックで $input 値と $variable 値をテストする理由の詳細については、ディテクターモデルの制限と制限 での可変値の可用性のエントリを参照してください。

  23. スタート状態を選択します。デフォルトでは、この状態はディテクターモデルを作成したときに作成されました)。スタートウィンドウで、宛先の状態 (例えば、通常) を選択します。

    
            AWS IoT Events コンソールでディテクターモデルを作成します。
  24. 次に、入力をリッスンするようにディテクターモデルを設定します。右上隅で、公開を選択します。

  25. ディテクターモデルの公開ページで、次の手順を実行します。

    1. ディテクターモデル名説明、およびロールの名前を入力します。このロールが作成されます。

    2. 一意のキーバリューごとにディテクターの作成を選択します。独自のロールを作成して使用するには、 IAMコンソールを使用してロールと許可を管理する のステップに従って、ここにロールとして入力します。

      
                AWS IoT Events コンソールでディテクターモデルを公開します。
  26. ディテクター作成キーには、前に定義した入力の属性の 1 つの名前を選択します。ディテクター作成キーとして選択する属性は、各メッセージ入力に存在する必要があり、メッセージを送信する各デバイスに固有である必要があります。この例では、motorid 属性を使用しています。

  27. 保存して公開を選択します。

    
            AWS IoT Events コンソールでディテクターモデルを作成します。

ディテクターモデル定義のバックアップコピーを (JSON) 作成または更新してディテクターモデルを作成したり、テンプレートとして使用して別のディテクターモデルを作成したりできます。

これは、コンソールから、または次の CLI コマンドを使用して実行できます。必要に応じて、ディテクターモデルの名前を、前のステップで公開したときに使用したものと一致するように変更します。

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

これにより、次のような内容のファイル (motorDetectorModel.json) が作成されます。

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