4.1 検知器モデルの作成

コンソールのAWSアイコンを右クリックして、新しいタブを開き、トップメニューよりeventsと入力してIoT Eventsを選択します。

Events

検知器モデルの作成を選択します。

Events

新しく作成するを選択します。

Events

IoT EventsはGUIで設計するものとなっており、検知器自体は以下のキャンバス上で行います。

Events

入力の作成

まずは、検知器に入ってくるデータを定義しますので、右上の入力の作成を選択します。

Events

入力名にはdevice_connect_disconnect_eventの様な名前を入力します。

Events

次に、以下のJSONを自分のPC上にファイルとして保存します。

{
  "eventType": "",
  "ipAddress":"",
  "clientId":""
}

保存したファイルをファイルをアップロードから指定し、右下の作成で登録します。

Events

状態の編集

状態(丸)を選択すると、右側に詳細が表示されます。状態名にはConnectedと入力し、OnEnterのイベントを追加を選択します。

状態には複数のイベントをが用意されており、それぞれのイベントに対して、なんらかのアクションを追加します。

Events

イベント名にinitと入力し、イベントの条件には、以下の内容を入力します。

$input.device_connect_disconnect_event.eventType == "connected"

AWS IoT Eventsの検知器モデルでは、式や変数を利用することができます。 この例では、入力データ$input.device_connect_disconnect_eventeventTypeconnectedが指定されていた場合という条件を表現しています。

そして、Add actionを選択します。

Events

この条件に一致した時のアクションとして、変数の設定を選択します。

ハンズオンの手順では利用しませんが、このように設定した変数を他の条件やカスタムペイロードで利用することが可能です。

Events

変数名はipAddress、値の割り当てには、入力データの$input.device_connect_disconnect_event.ipAddressを指定し、Saveで保存します。

Events

新しい状態の追加

キャンバスの何もないところをクリックして、状態が選択されていないようにします。そして、右側にある状態をドラッグし、キャンバス上にドロップします。すると、キャンバス上に新しい状態が追加されます。

Events

状態を選択し、状態名にDisconnectedと入力し、イベントの追加を選択します。

Events

OnEnterのイベント名はinitと入力し、イベントの条件にはtrueと入力し、Add actionを選択します。

Events

イベントアクションではタイマーの設定を選択します。

Events

タイマーのオペレーションは、作成を選び、タイマー名にalert_timerと入力し、経過時間を入力にチェックをつけます。経過時間に1を、単位はを選択します。最後に右下のSaveを選択して保存します。

ここでは、1分経ったら発火するタイマーを作成します。

Events

状態遷移の作成

右側の状態の上にマウスをホバーすると、以下の様な矢印が表示されますので、その矢印をドラッグして、左側の状態の上でドロップします。同様に左側の状態の上にマウスをホバーし、矢印をドラッグして右側の状態にドロップします。 Events

正しく矢印をドラッグ&ドロップできると以下の様に、双方向に状態遷移の線が描画されます。

Events

まずは、ConnectedからDisconnectedに向いている矢印のタイトルなしとなっている部分を選択し、イベント名にto_disconnectedと入力し、イベントのトリガーロジックに以下の条件を入力します。

$input.device_connect_disconnect_event.eventType == "disconnected"

Events

次に、DisconnectedからConnectedに向いている矢印のタイトルなしとなっている部分を選択し、イベント名にto_connectedと入力し、イベントのトリガーロジックに以下の条件を入力します。

$input.device_connect_disconnect_event.eventType == "connected"

最後に、アクションの追加を選択します。

Events

移行イベントアクションの追加では、Add actionを選択します。

Events

イベントアクションでは、タイマーの設定を選択し、オペレーションの選択では消去するを選択します。タイマー名には先ほど作成したalert_timerと入力し、最後にSaveを選択します。

Events

通知用の状態を作成

新しく状態をキャンバスに追加し、状態名をalertを入力します。次にOnEnterのイベントの追加を選択します。

Events

OnEnterのイベント名にinitと入力し、イベントの条件にtrueを入力します。次に、Add actionを選択します。

Events

イベントアクションではSNSメッセージの送信を選択し、SNSトピックには、前に作成したトピックを選択します。カスタムペイロードを選択し、文字列を選択します。カスタムペイロードには、以下のメッセージを入力します。

デフォルトペイロードでは、置き換え変数が利用することができ、入力のデータや変数を利用することができます。

"device: ${$input.device_connect_disconnect_event.clientId} status changed to Disconnect!"

最後に右下のSaveで保存します。

Events

通知用の状態遷移を追加

先ほど行った様に、Disconnectedからalertalertからconnectedに状態遷移の矢印をつなげます。

状態をドラッグして、場所を移動できますので、みやすい様に移動してみてください。

Events

Disconnectedからalertタイトルなしとなっている部分を選択し、イベント名にto_alertと入力し、イベントのトリガーロジックにtimeout("alert_timer")と入力します。

Events

alertからconnectedタイトルなしとなっている部分を選択し、イベント名にto_connectedと入力し、イベントのトリガーロジックに以下を入力します。

$input.device_connect_disconnect_event.eventType == "connected"

最後に、アクションの追加を選択します。

Events

移行イベントアクションの追加では、Add actionを選択します。

Events

イベントアクションでは、タイマーの設定を選択し、オペレーションの選択では消去するを選択します。タイマー名には先ほど作成したalert_timerと入力し、最後にSaveを選択します。

Events

この手順での作業は以上となります。