Amazon Web Services ブログ
AWS IoT Core を使用して持続可能な廃棄物管理の効率を向上させる
英国の地方自治体協会によると、地方自治体は廃棄物収集に年間約 8 億 5200 万ポンドを費やしています。したがって、5 %のわずかな節約でもかなりの額になり、4,260 万ポンドになります。
さらに、食品に関しては、世界中で毎年約 10 億トンの食品を無駄にしています。WRAP charity によると、企業や政府は、世界の温室効果ガスの最大 10 %を排出する原因となっている食品廃棄物に取り組むのに十分な努力をしていません。より広い立法の文脈は、地方自治体をより環境に優しくし、それらの二酸化炭素排出量と大気汚染への影響を検討するように駆り立てています。その結果、地方自治体は廃棄物を埋め立て地に送ることにますます消極的になり、廃棄物の防止、最小化、再利用、リサイクルなど、廃棄物ヒエラルキーの上位にある処分オプションを支持しています。
地方自治体や政府による廃棄物最小化イニシアチブをサポートするには、測定していないものを管理できないため、廃棄物を埋め立て地に送る前に、信頼性が高く、包括的で一貫性のある廃棄物データを収集することが重要です。このブログのコネクテッドごみ箱ソリューションの例は、発生したごみの重量と種類を示しています。地方自治体、コミュニティ、および民間部門(レストランチェーンなど)は、持続可能な廃棄物管理の目的と目標に対して成功の領域を特定するために、それらのパフォーマンスをベンチマークすることができます。
廃棄物の監視は、デポでの廃棄物の潜在的な備蓄を回避し、規制当局の透明性を高めます。規制当局は、どの種類の廃棄物が埋め立てられるかについて情報に基づいた決定を下し、リサイクル施設に送られる廃棄物の種類に基づいて埋め立て地の迂回を最大化することにより、環境への影響を減らすために特定の廃棄物または地域を対象にすることができます。
特定の地域で特定の期間に発生する廃棄物の量を知ることにより、不要な廃棄物の収集をスケジュールすることを回避できます。それは、廃棄物管理プロセスの合理化に役立ったり、コスト効率化となり、徐々に二酸化炭素排出量を削減します。
コネクテッドゴミ箱をキッチンに設置することで、レストランチェーンは食品廃棄物に関する完全な透明性を手に入れ、過去のデータからインサイトを得て、食品廃棄物とコストを削減します。商業ビル/オフィスでは、このソリューションは廃棄物の種類を特定し、正しいゴミ箱を指すのに役立ちます。全体として、コネクテッドゴミ箱ソリューションは、持続可能な廃棄物管理イニシアチブの重要なツールになる可能性があります。
このブログ記事では、AWS IoT Core と Amazon Rekognition を使用してコネクテッドゴミ箱ソリューションを構築し、持続可能性の目標を達成する方法の例を示しています。
概要
この記事では、デバイスをプロビジョニングし、AWS IoT Core を介してAWS IoT Analytics に廃棄物の重量データを収集し、Amazon Simple Storage Service(S3)に廃棄物の画像を直接取り込むための AWS サーバーレスキーアーキテクチャコンポーネントについて説明します。データがAmazonS3に入ると、ソリューションはAmazon Rekognition を使用して画像を分析し、廃棄物データを強化します。エンドユーザーはこれを利用して、Amazon QuickSight を使用して地域の廃棄物レベルや廃棄物ヒートマップなどのレポートを作成できます。
このソリューションには、センサーとカメラのインストール、Raspberry Pi での AWS IoT Greengrass の構成、フリートプロビジョニングを使用したAWS IoT Core への接続、Amazon Rekognition を使用した機械学習モデルの構築、AWS IoT Analytics と Amazon QuickSight をそれぞれ使用してデータパイプラインと視覚化の構築が含まれます。
クラウドへのエンドツーエンドのセンサーデータフロー
次のセクションでは、前のアーキテクチャ図で番号が付けられたステップについて説明します。
- IoT ゲートウェイは、フリートプロビジョニングメカニズムを使用して AWS IoT Core にプロビジョニングし、そこから AWS IoT Core によって発行された一意の X.509 デバイス証明書を使用して認証します。また、センサーを読み取るためのカスタムアプリケーションコンポーネントを起動します。カスタムコンポーネントのデプロイについては、リモートアプリケーションのデプロイテストセクションでさらに説明します。
- 重量センサーはゴミ箱を監視します。重量が特定のしきい値だけ上がると、カメラがトリガーされます。
- カメラが廃棄物の写真を撮ります。
- 次に、カスタムアプリケーションは、AWS IoT Greengrass ストリームマネージャー SDK を使用して廃棄物の画像を Amazon S3 バケットにアップロードします。
- また、MQTT チャネルを介して重量データを AWS IoT Core に送信します。
- AWS IoT Core は重量データを受け取ります。次に、AWS IoT ルールを実行して、データを AWS IoT Analytics パイプラインに取り込みます。
- パイプラインは、AWS Lambda 関数を使用してデータ変換を実行します。この関数は、アップロードされた廃棄物の画像を Amazon S3 バケットから取得し、Amazon Rekognition の事前構築された機械学習モデルを使用して画像を分析します。
- 最後に、変換されたペイロードを Amazon S3 ストアがサポートするデータストアに保存します。
- Amazon QuickSight を使用して、分析レポートを生成します。
ごみ箱センサーの設置
デモンストレーションでは、IoT デバイスゲートウェイとして Raspberry Pi を使用し、廃棄物の重量を測定する重力センサーと、ゴミ箱にアイテムを落としたときに廃棄物の静止写真を撮るカメラを使用します。次の図に示すように、ゴミ箱をクラウドに接続するために、デモのユースケースのゴミ箱にセンサーを配線します。
MLモデルの構築
構築済みの Amazon Rekogntion モデルを使用して、Amazon Rekognition から返されたラベルを確認することで、廃棄物の画像を分析し、廃棄物の中のアイテムを検出できます。
または、特定のタイプのニーズに合わせてカスタムラベル付きデータセットを準備することもできます。これらのデータセットの準備には、さまざまな廃棄物画像(たとえば、家庭ごみ箱にある一般的な廃棄物)を収集し、トレーニングおよびテストデータセットの下でそれらの画像をカスタムプロジェクトにアップロードすることが含まれます。アップロード後、モデルをトレーニングするために廃棄物の画像にラベルを付ける必要があります。Amazon SageMaker Ground Truth Plus を使用して、データのラベル付けを自動化できます。
このブログの例では、事前に作成されたモデルを使用しています。
前提条件
- AWS アカウント
- AWS Identity and Access Management (IAM) 管理者アクセス
- AWS Command Line Interface (AWS CLI)
- src/greengrass-app-component ディレクトリの下にあるクローンリポジトリからすべてのアーティファクトをアップロードするための Amazon S3 バケット
- ローカル開発の場合、IDE(vscode や python3 など)
- JDK および AWS IoT Greengrass Core に必要なその他の依存関係とともにインストールされた AWS IoT Greengrass Core デバイスとして使用する Linux OS を備えた IoT デバイス
- AWS IoT Greengrass Core ソフトウェアを実行するための IoT デバイスへのルートアクセス
- Raspberry Pi のセットアップに関する基本的な理解
- ごみ箱センサーの取り付けのセクションで説明されているハードウェア接続
- 以下の基本的な理解
ソリューションをデプロイする
まず、AWS IoT Greengrass カスタムコンポーネントアーティファクトを Amazon S3 バケットにアップロードします。ソリューションのソースコードは GitHub で入手できます。
- リポジトリを GitHub からローカルにクローンします。
- AWS コンソールで、Amazon S3 サービスを選択します。
- 前提条件に記載されているように作成済みのバケットを選択します。
- Create folder を選択します。
- フォルダ名フィールドに greengrass-app-component と入力し、Create folder を選択します。
- greengrass-app-component フォルダーを選択し、Upload を選択します。
- アップロード画面で Add files を選択し、ローカル環境に複製されたリポジトリから greengrass-app-component ディレクトリからすべてのファイルを選択します。
- 最後に、Upload を選択します。
- すべてのアーティファクトが s3://<バケット名>/greengrass-app-component の下にあることを確認してください。これは、エッジゲートウェイでのデプロイを成功させるためにパスが正しいことを確認するために非常に重要です。
AWS CloudFormation テンプレートを使用して、AWS に以下のリソースを設定するソリューションをデプロイできます。
- 廃棄物の画像と重量センサーデータを保存するための Amazon S3 バケット
- フリートプロビジョニング、AWS IoT Core、AWS Lambda 関数、AWS IoT Analytics を備えた AWS IoT Greengrass Core ソフトウェアをインストールするために必要な IAM ロール とポリシー
- センサーデータを収集、変換、保存する AWS IoT Analytics
- MQTT トピックからデータを読み取り、ダウンストリームの AWS IoT Analytics サービスに取り込む AWS IoT Core ルール
- AWS 上の AWS Lambda 関数
- IdentificationWasteType – Amazon Rekognition を使用して廃棄物の画像を分析します
- Certificate provisioner – クレーム証明書を作成して AWS Secrets に保存します
- RoleAliasProvisioner –トークン交換ロールを指すロールを作成します
- センサーを読み取るためにIoTゲートウェイにデプロイするコンポーネントソフトウェアを作成します
スマートゴミ箱デモ アプリの CloudFormation テンプレートは、クラウドリソースを設定するための上記の手順を自動化します。このスクリプトを実行する場合は、AWS コンソールの手順に従ってスタックのデプロイを完了してください。スタックがデプロイされたら、ステータスが CREATE_COMPLETE に変わるまで画面を更新してください。
- 希望する AWS リージョンについて以下のリンクをたどって、最新の CloudFormation テンプレートをデプロイします。
リージョン | 起動テンプレート |
US East (N. Virginia) (us-east-1) | |
US West (Oregon) (us-west-2) | |
EU (Ireland) (eu-west-1) | |
EU (Frankfurt) (eu-central-1) | |
AP (Sydney) (ap-southeast-2) |
- プロンプトが表示されたら、AWS アカウントのクレデンシャルを使用してログインします。
- Specify template ステップで、Create Stack というタイトルの画面が表示されます。CloudFormation テンプレートを指定するフィールドは事前に入力されています。ページの下部にある Next を選択します。
- Specify stack details 画面で、CloudFormation スタックの次のパラメーターをカスタマイズできます。
Parameter label | Default | Description |
Stack name | smart-bin-demo-app | これは、デプロイされた AWS CloudFormation の名前です |
ArtefactsBucketName | 前提条件セクションのステップ 4 でアーティファクトをアップロードした Amazon S3 バケット名を入力します | |
ProjectName | smart-bin-demo-app | スマートゴミ箱アプリのプロジェクト名 |
ResourcePrefix | demo | AWSリソースには、このパラメーターの値に基づいてプレフィックスが付けられます。同じアカウント内で複数回起動する場合は、この値を変更する必要があります。 |
完了したら、Next を選択します
- 必要に応じてスタックオプションを構成し、Next を選択します。
- レビュー画面で、次のチェックボックスをオンにする必要があります。これらは、CloudFormation がスタックに必要なリソースへのアクセスを許可し、リソースに動的に名前を付ける役割を作成できるようにするために必要です。
- AWS CloudFormation によって IAM リソースが作成される場合があることを承認します
- AWS CloudFormation によって IAM リソースがカスタム名で作成される場合があることを承認します
- AWS CloudFormation によって、次の要求される場合があることを承認します:CAPABILITY_AUTO_EXPAND
- Create Stack を選択します
- CloudFormation スタックが起動するのを待ちます。Stack status が CREATE_COMPLETE の場合、完了が表示されます。
- Events タブでスタック作成の進行状況を監視できます。
AWS IoT Greengrass を IoT ゲートウェイにデプロイする
クラウド上の AWS アカウントに必要なすべてのリソースを設定したので、AWS IoT フリートプロビジョニングを使用して AWS IoT Greengrass v2 Core ソフトウェアをインストールするためのパッケージを準備できます。
パッケージを準備する際のすべてのステップはこのスクリプトに含まれています。このスクリプトは、IoT デバイスゲートウェイまたはコンピューターで実行できます。 AWS アカウントにアクセスできる AWS CLI v2 がインストールされていることを確認してください。
このユースケースでは、ラップトップで実行して、ビルドディレクトリにパッケージを作成します。次に、パッケージをIoTゲートウェイ(Raspberry Piなど)にコピーできます。スクリプトは次の手順を実行します。
- ビルドディレクトリを作成します。
mkdir build && cd build
- AWS Secrets Manager からクレーム証明書とAWS CA をダウンロードします。
- AWS IoT Greengrass とフリートプロビジョニングプラグインをダウンロードします。
- AWS IoT Core のエンドポイントとフリートプロビジョニングテンプレートを取得します。
- config.yml を準備します。
- AWS IoT Greengrass 起動コマンドを準備します。
- 実行権限を変更します。
ソリューションをテストする
AWS IoT Greengrass Core ソフトウェアと自動フリートプロビジョニングを使用して Raspberry Pi を構成したので、AWS IoT Greengrass サービスを実行してみましょう。
デバイスプロビジョニングのテストする
- IoT デバイスゲートウェイ(Raspberry Piなど)コマンドラインターミナルに接続し(ssh)、次のコマンドを実行して AWS IoT Greengrass サービスを開始し、自動プロビジョニング、認証、および AWS IoT Core への接続を確立します。
sudo build/fleet_provision.sh
- AWS IoT Core コンソールで、左側のパネルから Greengrass セクションを展開し、Core Devices オプションを選択してデバイスの状態を確認します。デバイスのステータスは、次のように正常に表示されます。
- デバイスが正常に表示されない場合は、AWS IoT Greengrass サービスログで /greengrass/v2/logs フォルダーの下にエラーがないか確認し、トラブルシューティングのドキュメントに従ってください。
リモートアプリケーションのデプロイをテストする
- AWS IoT Greengrass セクションで、エッジアプリケーションのデプロイのために Component を選択します。クラウドのデプロイセクションのステップ 9 で作成した monitor_wastebin_app カスタムコンポーネントをデプロイします。下図の手順を参照してください。
- バージョン2.0.0 の詳細を確認し、Deploy を選択します
- デプロイステージで、Create new deployment を選択します
- ターゲットの指定ページで、ターゲットとして Core device を選択し、Greengrass デバイスプロビジョニングのテストセクションの手順 2 のコアデバイスの名前を入力します。残りのフィールドについては、ページの指示に従ってください。
- コンポーネントの選択ページで、スクリーンショットに示すように、次のコンポーネント(My Componentsと Public Components)を選択してください。
- 最後に、コンポーネントの構成を確認して、Next を選択します。次に、Configure advanced settings で、Next を選択して Review に移動します。Review 段階で、Deploy を選択してデプロイを終了します。
- 同じコンポーネントを再デプロイする場合は、変更されたコンポーネントを選択し、右上隅にある Configure component を選択することに注意してください。次に、次のスクリーンショットに示すように、Configuration to merge セクションに、「deployment7」などのテキストを入力してください。
- AWS IoT Greengrass コンソールでは、デプロイが完了したように表示されます。そうでない場合は、以下のコマンドを使用して、Raspberry Pi で greengrass サービスを再起動します。
sudo systemctl stop greengrass.service
sudo systemctl start greengrass.service
テストデータフロー
- AWS IoT Core コンソールで、左側のパネルから Test を選択し、MQTTトピックの demo/smart-bin にサブスクライブします。
- E2E フローをテストするには、重力センサープレートにゴミ箱を置きます。また、カメラの焦点をゴミ箱に合わせることができることを確認してください。ゴミ箱に廃棄物を捨ててください。ごみ箱の重量が変わると、アプリは最新のごみ箱の重量と廃棄物の写真を AWS クラウドにアップロードします。
- 手順 1 で説明したように、AWS IoT Core が MQTT トピックの廃棄データペイロードを受信することを確認します。
データの取り込み
AWS IoT Analytics コンソールで、demo_trash_dataset にクエリを実行して、最終的に拡張されたペイロードを確認します。
レポートを作成する
Amazon QuickSight を初めて使用する場合は、次の手順でここからサインアップし、Standard エディションを選択してください。
SPICEデータセットを作成する
ダッシュボードを作成する前に、まず、Amazon QuickSight が使用する堅牢なメモリ内エンジンである超高速の並列メモリ内計算エンジン(SPICE)データセットを作成する必要があります。ダッシュボードを作成する前に、まず、Amazon QuickSightが使用する堅牢なメモリ内エンジンである超高速の並列メモリ内計算エンジン(SPICE)データセットを作成する必要があります。
- Amazon QuickSight コンソールで、New dataset を選択します。
- データソースとして AWS IoT Analytics を選択します。
- 名前を入力します。 AWS IoT Analytics にて demo_trash_dataset を選択して、SPICE データセットにインポートします。これで、Amazon QuickSight を使用してデータを操作する準備が整いました。
ダッシュボードを作成する
報告と分析の目的で廃棄物データを収集するだけでなく、地方自治体とレストランチェーンは廃棄物分析を構築して、以下のいくつかの論理的根拠を正当化することができます。
- さまざまなディメンションにわたってデータを集約することにより、定期的な廃棄物の最小化目標に対するパフォーマンスのベンチマーク
- 収集サイクルの計画と、廃棄物の最小化に関する将来の戦略を策定
- 事前にエリアごとの廃棄物ヒートマップを理解し、デポにすでに積み上げられた廃棄物をストックすることによる潜在的な問題の特定。このデータを使用して、新しいリサイクル施設の資金を確保するためのビジネスケースを構築します。
- 食品廃棄物の削減:レストランは、一連のレストラン全体で特定の食品廃棄物を特定し、食品廃棄物を削減するための目標を定義し、これらの目標のパフォーマンスを評価できます。
以下のサンプルダッシュボードは、郵便番号ごとおよび日付ごとに集計された廃棄物データを示しています。
クリーンアップ
今後の請求を回避するために、作成されたリソースをクリーンアップしてください。
Cloud Formation スタックを正常に削除するには、最初に次の手順を実行してください。そうしないと、スタックの削除が失敗する可能性があります。
- demo-trash-bin の内容をすべて削除して、空にします。
- AWS IoT Core コンソールで、Manage セクションの Things を選択します。次に、DemoWasteBin を選択します。
- Certificates タブを選択します。次に、各証明書を選択し、Detach を選択します。
- Secure セクションで、Certificates を選択します。
- 最後に、一つずつ全ての証明書を Secure セクションの下にある Actions ドロップダウンから Revoke と Deleteを選択することによって、取り消しと削除をします。
スタックを削除する
AWS IoT Greengrass のアンインストールセクションで説明されている手順を使用して、IoT ゲートウェイ(Raspberry Pi)から AWS IoT Greengrass を削除します。
- AWS CloudFormation コンソールを開きます。
- スタックの下にある smart-bin-demo-app プロジェクトを選択し、Delete Stack を選択します。
- スタックの削除には時間がかかる場合があります。Events タブで進行状況を追跡できます。
- 完了すると、ステータスが DELETE_IN_PROGRESS から DELETE_COMPLETE に変わります。その後、リストから消えます。スタックの削除には時間がかかるため、ステータスが DELETE_COMPLETE と表示されるまで更新してください。
まとめ
埋め立て地の大部分は容量の限界に近いため、都市部の環境と健康衛生に多大な影響があります。廃棄物の監視と計量により、どのオプションが環境基準を満たしているかを理解できます。たとえば、廃棄物の実際の量を理解することは、定額料金やゴミ箱の量ではなく、廃棄物の実際の重量に基づいて廃棄物収集料金を計算するのに役立つ場合があります。これにより、消費者は請求額を直接管理できるようになり、持続可能な選択を行うことができます。英国のコミュニティや地方自治体の部門による持続可能な廃棄物管理の詳細と、ウェストミンスター市のサステナビリティガイドをご覧ください。
About the Authors
Satish Mane は、英国ロンドンを拠点とする AWS の SMB チームのソリューションアーキテクトです。彼は技術的なガイダンスを提供し、お客様が AWS でイノベーションを起こすのを支援します。彼は分析と IoT テクノロジーに情熱を注いでいます。彼は、IoT、ストリーミング、AI/ML テクノロジーを中心にプロトタイプ/デモ構築に情熱を注いでいます。仕事以外では、家族と一緒に旅行したり、クリケットをしたり、料理をしたり、ドライブを楽しんでいます。 |
Manish Dhawaria は、アマゾンウェブサービスのシニアソリューションアーキテクトです。Mani は、コンテナー、可観測性、オープンソースツールに情熱を注いでおり、顧客がテクノロジーの問題を解決するのを支援することを楽しんでいます。彼はロンドンを拠点としており、余暇には家族と過ごすのが好きで、アウトドアアクティビティを楽しんでいます。 |
このブログは、ソリューションアーキテクトの戸塚智哉が翻訳しました。