Mendix、AWS、そしてモノのインターネット | Mendix

メインコンテンツへスキップ

Mendix、AWS、そしてモノのインターネット

AWSとの戦略的関係の拡大に関する最近の発表をご覧になったかと思いますが、 Mendix と AWS は協力して、さまざまなデモンストレーターとテンプレートを作成してきました。金融サービスや保険向けのアクセラレーターなど、これらの優れたプラットフォームがどのように連携できるかを示したいと考えました。

私たちが皆さんにぜひお見せしたいことの一つは、 Mendix およびAWSこのブログでは、私たちが構築したデモとその方法について説明します。

この投稿は、 サイモンブラック (エバンジェリズムおよび技術支援担当シニアマネージャー) アリスター・クロフォード (ソリューションエバンジェリスト) エイドリアン・プレストン (ソリューションエバンジェリスト)。

シナリオ

コールドチェーン物流ブログで説明したように、コールドチェーン物流のシナリオと温度管理された商品の輸送を追跡する方法が示されました。これを実現するために、 Mendix AWS サービスでサポートされる Web アプリケーション フロントエンドを作成します。これらのツールを使用して、次のものを構築したいと考えました。

  • オフィスベースのユーザー向けのWebアプリケーション
  • 現場スタッフ向けのモバイル版
  • データを処理して提供するためのAWSクラウドアーキテクチャ

デモの構築パート 1: IoT と AWS

実際のデータのデモンストレーションを簡素化するため (そしてセンサー付きの物理的なトラックの必要性をなくすため)、AWS サービスにデータを供給するために使用するデータシミュレーターを構築することにしました。

AWS で IoT データを処理するには、AWS Timestream を使用することにしたので、そこから始めました。温度と湿度のセンサーデータを表す Timestream からのデータフィードを作成しました。また、移動データと、最終的な IoT デバイス (ロック、バックアップ コンプレッサー) からのデータも必要になります。

ロックは、ロックがオンになっているかどうかを保存する単純なブール値です。バックアップ コンプレッサーもオンまたはオフのブール値ですが、Timestream データのシミュレーターにフィードバックされるため、コンプレッサーがオンになっていると温度データは下降傾向になります。

私たちが実装することにしたもう 1 つの AWS 機能は、画像認識です。私たちが与えられたシナリオでは、トラックは生鮮食品 (この場合は果物) を輸送しており、配達時に検査する必要がありました。配達が完了し、反対側で商品を検査する人が写真を撮影したら、それを AWS Rekognition に通して、製品の良否を検出できます。

ここでは、これらの各データセットと関数が AWS でどのように作成されたかについて簡単に説明します。

AWS IoT の設定

デバイスからデータを受信するにはAWS IoT Coreを活用しましたまず必要なのはed IoTで知られるデバイスを設定する '物事'. 私たちは もの  トラックからの車両データと、トラック内の各コンテナ用の別の Thing を取得します。これにより、車両を追跡し、コンテナの状態を監視することができます。 

これらが適切なセキュリティ ポリシーで設定されると、データの送受信に使用される MQTT パブリッシュおよびサブスクライブ メカニズムに自動的にアクセスできるようになります。

最後に、AWS IoT Core でルールを設定し、車両やコンテナから受信したデータを TimestreamDB 内に保存して、後で使用できるようにします。

Amazon Timestream データベースの設定

Amazon Timestream データベースは簡単にセットアップできます。「logistics」というデータベースを作成し、その中にコンテナ センサー データを格納する「container」というテーブルと、トラック データを受信する「conveyance」というテーブルを作成しました。

アプリの起動後すぐに Amazon Timestream データベースで履歴データが利用できるようになるため、アプリはランダムに生成されたレコードのセットをデータベースに追加して「Things」を初期化します。これは、AWS Java SDK とインターフェイスして Timestream レコード書き込み機能にアクセスする Java アクションを使用して行われます。

その後、AWS IoT Core のルールによって新しいデータがデータベース テーブルに追加されます。ルールは、AWS IoT Core を介してセンサー/シミュレーターによって公開された選択されたメッセージを取得し、指定されたデータベース テーブルに書き込みます。

AWS Timestream データベースフィードが稼働したら、ジャーニーデータを作成する必要がありました。

旅程データの生成

実際の旅程とデバイスの追跡のシナリオでは、トラック デバイスには通常、位置、方向、速度のデータを送信する GPS モジュールが搭載されています。これにより、緯度、経度、MPH (または KPH)、加速度のデータが得られます。

旅のシミュレーションには、AWS のおかげで公開されている既存のシミュレーション ルートをいくつか利用しました。AWS には、出発地、目的地、そしてその間に現実的なパターンで存在する一連のステージまたはポイントを含む優れた静的ルート セットがあります。これはすべて JSON 形式で、簡単に理解できます。

その他のほとんどのセンサー データについては、温度や湿度など、しきい値内に収まるランダムな値を生成するために簡単な計算を利用しました。

トラックの追跡をシミュレートできるように旅程データを生成した後、画像認識機能を実装してデータセットを構築する必要がありました。

AWS 認識

製品 (この場合は果物) の品質検査プロセスを簡素化するために、AI を実装することにしました。AWS には、さまざまなシナリオ向けに設計されたさまざまな機械学習および AI ソリューションがあります。画像とビデオの認識には、AWS が AWS Rekognition を提供しています。Rekognition は、さまざまな事前トレーニング済みの機械学習モデルを提供するほか、独自のモデルをトレーニングすることもできます。私たちのユースケースでは、ユーザーが果物の写真を撮ってその品質を検査できるようにしたいと考えました。

まず、良い果物と悪い果物がどのような見た目であるかを理解するために、認識モデルをトレーニングする必要がありました。効果的なモデルを構築するには、優れたデータセットを用意することが重要です。モデルのトレーニングに提供できる画像が多ければ多いほど、より良い結果が得られます。幸いなことに、開発を加速するのに役立つ無料のオープンデータセットが多数ありました。私たちは、腐った果物と新鮮な果物を表す何千もの画像を含むこのデータセットを見つけました。

https://www.kaggle.com/datasets/sriramr/fruits-fresh-and-rotten-for-classification

このデータセットを取得して AWS S3 にアップロードし、AWS Rekognition がこれらの画像を使用してトレーニングとテストを実行できるようにしました。カスタム ラベルを検出するモデルの構築は、迅速かつ簡単に行うことができます。6 つの手順で、ラベルを検出するモデルを構築できます。

データセットをトレーニングする際 認識 S3で使用されているフォルダ名に基づいて画像に自動ラベルを付けたり、手動でラベルを追加したりできます。データセットが大きいため、自動ラベル割り当てを使用することにしました。これはt それ データセットを構築する際、すべての画像に手動でラベルを追加する必要がなかった。 この セーブed 時間と労力がかかります。データセットを構築する際には、トレーニングデータセットとテストデータセットの両方を提供することが重要です。これにより、AWS 認識 〜へ 自ら訓練し、 〜へ その後テスト トレーニング セットを使用して構築されたモデルの精度。 

 

データセットを使用してモデルをトレーニングしたら (約 30 分かかります)、モデルを起動する必要があります。トレーニングが完了してモデルが起動すると、AWS API 経由でリクエストを受け入れ (詳細についてはこの投稿の後半で説明します)、画像入力に基づいてラベルを検出できるようになります。

デモの構築パート 2: Mendix

構築を開始するにあたり、ワイヤーフレームとプロセス フローをいくつか作成し、UX デザイナーがアプリケーションの外観と操作性をガイドする Figma デザインを作成しました。

最終的にどのような外観になるか大まかにわかったので、さまざまな部分を組み立て始めることができました。

  • インテグレーション
  • ドメインモデル
  • 用途

構築は、システムをサポートするための管理ツールと、システムにデータを事前入力する方法から始まりました。トラック、そのコンテナ、運転手、輸送される商品に必要な情報を格納するためのドメイン モデル エンティティを作成しました。次に、デモ用のサンプル データを事前入力し、将来他の人が簡単に使用できるようにするためのルーチンを作成しました。

その後、トラックは移動データにリンクされ、コンテナは Timestream データ ソースに接続されました。

統合 Mendix AWS Timestream を使用
Logistics アプリが Timestream から過去の IoT データを取得する必要がある場合、SELECT ステートメントを設定し、それを Timestream クエリ Java アクションで実行することでこれを実行します。これは、AWS Java SDK を使用して Timestream データベースに対してクエリを実行し、結果を返すように構築された Java アクションです。

データ生成をサポートし、すべてが機能していることを確認するために、データをプレビュー、変更、エクスポートするための管理ページをいくつか作成しました。エクスポートは、作成した JSON ファイルをデモ アプリケーション内で事前入力するためのデータ ソースとして使用できるため、特に便利です。

次に、作成したトラックとドライバーの情報を概要ページに表示しました。これにより、バックオフィスのユーザーは、確認したい車両を選択できます。デモでは 1 台の車両のみが稼働していましたが、複数台あった場合は簡単に選択できたでしょう。

トラックをクリックすると、そのトラックの詳細と現在の状態が表示されます。ここで、シミュレートされた情報が役立ちます。上から下に向かって作業を進めていくと、まずコンテナ セレクターから始めました。システム内のすべてのトラックには 2 つのコンテナがあり、これによって下のセクションのモニターの表示が制御されます。

次に右上の地図が来ました。 Mendixのデフォルトのウィジェットは場所を表示するのに最適ですが、当時はルートラインを描画したり、移動中のトラックを簡単に表示したりする組み込みオプションがありませんでした。マーケットプレイスでざっと検索しても、私たちが求めているものはほとんど見つからなかったため、独自のウィジェットを作成しました。 プラグイン可能なウィジェット React と JavaScript を使用します。この新しいウィジェットは、ルート ライン、ラインに沿って移動するトラック、およびトラックが向かう方向を表示します。

下部のセクションには、選択したコンテナ内の温度と湿度、および輸送中の製品に関する最新情報が表示されます。また、バックアップ コンプレッサーとロックのトグルも表示されます。これらすべてを Timestream データに接続する必要がありました。

その後、データは定期的に更新され、最新の情報が提供されます。温度または湿度のしきい値を超えたときにトリガーされるアラートは、Web ソケット経由でクライアントに渡され、ほぼ瞬時に更新されます。この機能を Amazon SNS で拡張し、SMS および電子メールによる通知も提供できるようになりました。

すべてのアクションはログに記録され、アラートからドアのロック、ロック解除まで、トラックの移動中の主要なイベントを示すタイムラインに表示されます。すべてのセンサー データも詳細ビューに表示されます。

 

パズルの最後のピースは、現場のユーザー向けのモバイル アプリケーションです。このデモでは、ネイティブ モバイルではなくレスポンシブ Web アプリケーションを使用することにしたので、バック オフィス システムとモバイル バージョンの間で多くのデザインを再利用できます。

    

最後に実装したのは、検査フォームと Rekognition API です。フォームは、商品の写真、到着日、状態の評価というシンプルなものです。写真を撮影すると、Rekognition API に送信されます。この API は、大量の画像サンプルに基づいて良品と不良品を認識できるようにトレーニングされています。良品か不良品かの品質評価と、結果に対する信頼度を返します。

統合 Mendix AWS Rekognition を使用

統合は簡単 Mendix AWS Rekognition で。AWS は、プラットフォームに統合するための複数の方法を提供しています。選択した言語で SDK を使用するか、基盤となる API を使用するかを選択できます。 Mendix 選択肢は2つありました。AWS Java SDKを使用するか、 Mendix RESTマイクロフローアクション。Javaへの依存を最小限に抑え、ネイティブのRESTをできるだけ多く使用するため、RESTルートを選択しました。 Mendix 可能な限り(Mendix REST API との統合は、私たちがよく知らない SDK との統合とは対照的に簡単なプロセスであるため、これまでのところ最もシンプルで迅速なルートです。

まず、カスタムラベルを検出するというメインアクティビティの実装に重点を置きました。このAPIを使用して、マッピングを構築することができました。 Mendix: https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DetectCustomLabels.html

まず、レスポンスの JSON スニペットと、レスポンスを処理するためのインポート マッピングを構築しました。

次に、画像を「Bytes」属性でBase64エンコードされた文字列としてAWSに送信する方法が必要でした。これを実現するために、 Mendix System.Image で、Contents 属性を選択し、外部名を「Bytes」に変更しました。

次に、エクスポート マッピングと上記のメッセージ定義を使用して、画像を適切な JSON 形式に変換しました。

最後に、画像を A​​WS Recognition に送信し、機械学習モデルによって検出されたラベルを返すには、Microflow 呼び出しが必要です。この Microflow 呼び出しには、AWS Rekognition に必要な一連のパラメータがあります。最初に、Microflow は画像を「Bytes」という 1 つの属性を持つ JSON オブジェクト文字列にエクスポートします。次に、これは REST アクションのペイロード内の他のパラメータとともに使用されます。

REST アクション内で、パラメータで渡された AWS リージョンを使用して場所を定義します。API に必要な HTTP ヘッダーを追加します。必要なリクエスト ペイロードとレスポンス マッピングを追加します。

デモンストレーター用に構築した最後の魔法は、もう少し技術的なものです。 カバーの下で。 AWS API では、すべての API 呼び出しを Sig4 というプロセスを使用して署名する必要があります。HTTP リクエストを送信する前に AccessKey と SecretKey を使用して署名し、その正当性を確認します。After Startup Microflow では、AWS Rekognition へのすべての呼び出しをインターセプトし、送信前に必要な追加の Sig4 ヘッダーを追加する Java アクションを追加しました。

AWS RekognitionとSig4 Interceptorへのすべての統合は、 Mendix まもなくマーケットプレイスで利用可能になります。これにより、AWS Rekognition との統合がさらに簡素化され、ビデオで説明されているように AWS Rekognition を使用できるようになります。

それを包み込む

デモアプリケーションでは、商品が出荷元から店舗まで輸送中に追跡・監視される様子を紹介しています。AWS IoT Coreを使用して、AWS Timestreamサービスで温度、湿​​度、場所を監視し、Rekognitionで画像を分析しました。 Mendix これらのサービスに接続し、複数のデバイスタイプにデータをリアルタイムで提供するための、応答性の高いフロントエンドを迅速に構築します。

使い方について詳しく知りたい場合は Mendix AWSをご利用の方は、30月XNUMX日のウェビナーにご登録ください。 Mendix AWS サービスを利用したプラットフォームです。生鮮品の輸送物流を改善するスマート アプリの作成方法を紹介するデモを用意しました。 ここでサインアップ!

言語を選択してください