Avance.Lab

実験

Amazon Location Serviceを使ってデバイスの出入り検知 ~最終回~

公開日:2023.02.10 更新日:2023.02.10

tag: IoTクラウド

こんにちは。Mです。

前回までで特定範囲への出入り検知と、位置情報を送る部分を作成しました。

最終回となる今回は実際に出入り検知出来るか確認したいと思います。

概要

構成

EventBridge作成

今回の作業も全てAWSのマネジメントコンソールから行っていきます。作業内容は以下の3つです。

  1. CloudWatchをターゲットとするEventBridgeルール作成
  2. SNSトピックを作成してEventBridgeルールへ追加
  3. 動作確認

1. CloudWatchをターゲットとするEventBridgeルール作成

Amazon EventBridgeとはAWSで発生する様々なイベントを使用して、別のAWSサービスとつなげるサービスです。

早速EventBridgeルールを作成していきます。ルールタイプはイベントパターンを持つルールを選択。

イベント送信元はLocationServiceになるのでイベントソースは「AWSイベントまたはEventBridgeパートナーイベント」を選択します。

LocationServiceから特定範囲出入りイベントを受け入れるように、イベントパターンをJSON形式で設定します。

{
  "source": ["aws.geo"], // LocationServiceから
  "detail-type": ["Location Geofence Event"] // 出入りイベントを受け入れる
}

最後に呼び出すサービスとなるターゲットを指定します。今回はCloudWatchを指定します。

2. SNSトピックを作成してEventBridgeルールへ追加

次に出入り検知したらメール通知する為にAmazon SNSを設定していきます。

2.1 トピック作成

まずはSNSトピックから作成します。タイプはスタンダード、名前を入力して作成します。

2.2 サブスクリプション作成

作成したトピックへサブスクリプションを作成します。プロトコルをEメールにして受信したいメールアドレスをエンドポイントへ入力します。

2.3 サブスクライブ

エンドポイントへ登録したメールアドレスへ確認メールが届くので、本文にある「Confirm Subscription」部分のリンクを開くと、「Subscription confirmed!」と表示されます。これでメール通知の準備が出来ました。

2.4 EventBrigeルールへターゲット追加

最後に先程作成したEventBridgeルールのターゲットへSNSトピックを追加します。

3. 動作確認

3.1 位置情報送信

今回はAWS IoT CoreのMQTTテストクライアントから位置情報を送ってみて、ログ出力とメール通知されるか確認します。

送るデータはJSON形式で特定範囲座標に対して範囲内と範囲外をそれぞれ指定して送信します。

timestampはUnixtimeになります。

範囲内
{
  "payload": {
    "deviceid": "GPS-Device-001",
    "timestamp": 1675401458,
    "location": {
      "lat": 34.716,
      "long": 137.7769
    }
  }
}
範囲外
{
  "payload": {
    "deviceid": "GPS-Device-001",
    "timestamp": 1675401458,
    "location": {
      "lat": 34.7156,
      "long": 137.7741
    }
  }
}

3.2 CloudWatch確認

CloudWatchに範囲内(ENTER)と範囲外(EXIT)それぞれログが記録されています。

3.3 SNS確認

メールによる通知もされました。

最後に

今回はAmazon Location Serviceを使った出入り検知を試してみましたが、思ってた以上に簡単に作れるんだなと感じました。

スマートフォンやラズパイ、GPSトラッカーなどの位置情報を使えば色んな利用用途があると思います。

今後も気になったAWSサービスを試して掲載していきたいと思います。

M

AWSサービスを使ったり、IoT関係の開発してます。
GreengrassとSageMaker興味あります。

関連記事