Amazon Web Services ブログ

AWS IoT Core と Amazon Location Service を使用したアセットトラッキング

この投稿では、最近ローンチした Location Action で AWS IoT Core と Amazon Location Service トラッカーを接続し、スケーラブルでシンプル、かつコスト効率良く IoT デバイスの位置情報の更新を追跡して保存する方法について紹介します。

リソースと実世界のアセットを追跡することは、あらゆるロジスティクスとオペレーションワークフローの重要な部分です。企業は、オペレーターがリアルタイムにアセットを追跡・監視し、問題や異常を確認したら必要な措置を講じることできるようなアセットをひと目で表示するシンプルで経済的な方法を必要としています。位置情報を使ってアセットを追跡することで、企業は稼働時間の改善、ボトルネックの解消、生産性の向上を実現し、IoT デバイスの保守・管理で通常発生する運用コストの削減が可能になります。

IoT センサーとデバイスは、アセットの追跡に必要な、より深い可視性と予測可能性を実現するための現実的な方法の1つです。IoT センサーとデバイスを使用すると、集中管理システムを通じて、アセットの動きを継続的に記録し、監視することができます。スマート自転車、配送トラック、輸送コンテナ、コネクテッドビークルなどの IoT 対応デバイスは、AWS IoT Core にパブリッシュおよびサブスクライブできます。IoT Core は、何十億もの IoT デバイスを接続し、何兆ものメッセージトピックを Amazon Web Services(AWS)に送信できる、フルマネージドサービスです。これらのメッセージトピックは、ルールエンジンを使用して、ストレージからメッセージング、ロケーションサービスに至るまで、多くの AWS サービスと連携することができます。

ルールエンジンは、Amazon Simple Storage Service (Amazon S3)、Amazon Simple Notification Services (Amazon SNS)、Amazon Kinesis、AWS Lambda などの Action を使用して、IoT デバイスから 20 以上のダウンストリームサービスにデータを送信することが可能です。

図1. AWS IoT CoreとAmazon Location Serviceを利用したアセットトラッキング- アーキテクチャ例

IoT ルールの Location Action を使った典型的なワークフローは、次のようになります。

Step1: IoT 対応デバイスは、MQTT プロトコルを使用して AWS IoT Core にメッセージを送信することができます。これらのメッセージは、一般的に緯度や経度のような地理空間データで構成され、数メートル以内の精度でアセットの物理的な位置への洞察を提供することができます。または、AWS IoT Core Device Location により、GPS を内蔵していない IoT デバイスが、セルラー、GNSS(Global Navigation Satellite System)、またはネットワークロケーションを使って AWS IoT Core に位置情報をリレーすることができます。

Step2: AWS IoT Core は、これらのメッセージをリッスンし、ルールエンジンはそれらを処理します。

Step3: ルールエンジン は Location Action を起動し、Amazon Location Service トラッカーリソースへの接続をトリガーします。

Step4: これらのトラッカーリソースは、トラッカーリソースがジオフェンスに入ったり出たりしたときにイベントをトリガーする機能で、Amazon Location ジオフェンスと連携することができます。

Step5: ジオフェンスイベントは、Amazon EventBridge のようなイベントバスに送ることができ、その後、通知、ストレージ、分析などの他のサービスやワークフローに接続することができます。

このソリューション全体は、インフラストラクチャをデプロイすることなく、わずか数行のコードでサーバーレスでセットアップすることができます。

IoT デバイスシミュレーターを使った Location Action の起動

IoT デバイスシミュレーターのセットアップ

IoT デバイスシミュレーターは、直感的な Web ベースのグラフィカルユーザーインターフェース(GUI)を介して、お客様がデバイスの統合をテストし、IoT バックエンドサービスのパフォーマンスを向上させるのを支援します。このソリューションでは、物理デバイスの設定や管理、時間のかかるスクリプトの開発を行うことなく、何百ものコネクテッドデバイスを作成し、シミュレーションすることができます。ソリューションページに記載されている手順に従い、IoT デバイスシミュレーター を AWS アカウントに導入してください。

デバイスの作成

IoT デバイスシミュレーターがデプロイされると、ログインしてデバイスを作成することができます。

デバイスの作成

  1. Device Typesに移動し、Add device typeを選択します。
  2. Automotive Demo を選択します。
  3. Device Type Definition で、以下を実行します。
    1. Device type name に、Tracking Demoと入力します。
    2. Topiciot/trackingdemo と入力します。
  4. Save を選択します。

図2. デバイスタイプの作成

シミュレーションの作成

  1. Simulations に移動し Add Simulation を選択します。
  2. Simulation Details で以下を実行します。
    1. Simulation nameTrackingDemo と入力します。
    2. Simulation TypeAutomotive Demo を選択します。
    3. Select a device typeTrackingDemo を選択します。
    4. Data transmission interval5 と入力します。
    5. Data transmission duration600 と入力します。
  3. Save を選択します。

図3. シミュレーションの作成

シミュレーション用のデバイスの作成が完了したので、いよいよ AWS IoT Core のルールを作成します。

AWS IoT Core ルールの作成

  1. AWS IoT Core のコンソールに移動します。
  2. Message Routing を選択し、次に Rules を選択します。

    図4. IoT Core コンソール

  3. Create Rule を選択します。

    図5. ルールの作成

  4. Specify rules properties で以下を入力します。
    1. Rule nameTrackingDemo と入力します。
    2. DescriptionAn IoT Rule for Amazon Location Service Tracking と入力します。
  5. Next を選択します。

    図6. ルールのプロパティの指定

  6. Configure SQL statement で以下を入力します。
    1. SQL statement に以下を入力します。
  7. Next を選択します。

    図7. SQLステートメントの設定

  8. Rules actions で以下を実行します。
  9. Action 1Choose an action dropdown を選択し、Location を選択します。
  10. Tracker nameCreate a tracker を選択します。

    図8. トラッカーの作成

トラッカーの作成

  1. Create tracker ページで、以下の操作を行います。
    1. NameTrackerDemo と入力します。
    2. Position filteringAccuracy-based filtering を選択します。
  2. Create tracker を選択します。

    図9. トラッカーの作成

トラッカールールの設定

  1. AWS IoT Core タブに移動し、Choose an Amazon Location Service tracker ドロップダウンの横にある Refresh を選択します。
  2. TrackerDemo を選択します。
  3. AWS IoT Core は置換をサポートしているので、ペイロードから直接これらのフィールドを取り出すことができます。以下を入力します。
    1. Device ID${VIN} と入力します。
    2. Longitude${location.longitude} と入力します。
    3. Latitude${location.latitude} と入力します。
    4. Timestamp${timestamp()} と入力します.
  4. Create new role を選択し、Role nameTrackingDemo と入力します。

    図10. IAM ロールの作成

設定は以下のようになります。

図11. ルールの設定

Next を選択し、Review and create ページで Create を選択します。

シミュレーションの開始

  1. IoT デバイスシミュレーターに移動し、TrackingDemo の隣にある View を選択します。

    図12. シミュレーションの表示

  2. Start を選択すると、数秒以内に、シミュレーションしたデバイスの位置で地図が更新されるはずです。数秒経っても表示されない場合は、ページを更新してください。

    図13. シミュレーションの開始

Amazon Location Service トラッカーの表示

これでトラッカーが更新されていることが確認できます。シミュレーションから、ページの Messages 部分から VIN 番号をコピーします。Messages 部分には、AWS IoT Core に送信されるすべての生データが表示されます。

トラッカー履歴の表示

  1. AWS IoT Core コンソールに移動し、右上のメニューバーで Region の近くにある CloudShell を開きます。これは、Location Service API に対してコマンドを発行するために使用できる、インタラクティブなコマンドラインインターフェイスを開きます。

    図14. CloudShell の起動

  2. <VIN> をシミュレーターからの VIN 番号で置き換えて、以下のコマンドを入力します。
    aws location get-device-position --device-id <VIN> --tracker-name TrackerDemo
  3. これにより、最新のデバイスの位置が返されます。
    [cloudshell-user@ip-10-0-136-227 ~]$ aws location get-device-position --device-id <VIN> --tracker-name TrackerDemo
    {"DeviceId": "<VIN>;",
    "Position": [
    -77.227279,
    38.918713
    ],
    "ReceivedTime": "2022-11-11T16:30:47.807000+00:00",
    "SampleTime": "2022-11-11T16:30:47.665000+00:00"}
  4. 同じ CloudShell セッションを使用して、デバイスの位置履歴も表示することができます。以下のコマンドを入力します。
    aws location get-device-position-history --device-id <VIN> --tracker-name TrackerDemo
  5. これにより、過去のデバイスの更新履歴を最大 30 日分、リストアップすることができます。このデータを使って、デバイスの履歴を地図上にプロットしたり、移動距離や場所での滞在時間などの分析を行うことができます。

クリーンアップ

IoT デバイスシミュレーターを削除するには、実装ガイドに記載されている手順に従います。
AWS IoT Core ルールを削除するには

  1. AWS IoT Core に移動し、Message Routing を選択します。
  2. Rules を選択し、TrackingDemo を選択し、Delete を選択します。

まとめ

この投稿では、AWS IoT Core ルールの新しい Location Action を使用して、AWS IoT Core からのメッセージを使用して Amazon Location Service トラッキングリソースを更新する方法について学びました。IoT デバイスシミュレーターを使用して、デバイスが道路を移動する簡単なデモを設定し、Amazon Location Service API を使用して、そのデバイスの現在位置と位置履歴を追跡して視覚化することができます。位置情報を詳細に把握することで、デバイスをより適切に管理し、運用コストを削減し、保守担当者に実用的な情報を提供することができます。AWS IoT Core の Location action の詳細については、こちらのドキュメントをご覧ください。

本記事は Tracking Assets using AWS IoT Core and Amazon Location Service を翻訳したものです。

翻訳はソリューションアーキテクトの稲田(@inariku)が担当しました。