AWS IoT Device Defender デモ - FreeRTOS

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS IoT Device Defender デモ

重要

これは、FreeRTOS リリース 202012.00 で使用する FreeRTOS ユーザーガイドのアーカイブ版です。このドキュメントの最新バージョンについては、FreeRTOS ユーザーガイドを参照してください。

序章

このデモでは、 AWS IoT Device Shadow ライブラリを使用して に接続する方法を示しますAWS IoT Device Defender。このデモでは、coreMQTT ライブラリを使用して、MQTT ブローカーへの TLS (相互認証) による AWS IoT MQTT 接続を確立し、coreJSON ライブラリを使用して受信するレスポンスを検証および解析します AWS IoT Device Defender。このデモでは、デバイスから収集されたメトリクスを使用して JSON 形式のレポートを作成する方法と、このレポートを AWS IoT Device Defenderに送信する方法を示します。このデモでは、coreMQTT ライブラリにコールバック関数を登録して、 がレポートが承諾されたか拒否されたかを確認するために AWS IoT Device Defender 送信するレスポンスを処理する方法も示します。

注記

FreeRTOS デモをセットアップして実行するには、FreeRTOS の開始方法 の手順に従います。

機能

このデモでは、メトリクスの収集、JSON 形式での Device Defender レポートの構築、MQTT AWS IoT ブローカーへの安全な MQTT 接続 AWS IoT Device Defender を介した への送信方法を示す単一のアプリケーションタスクを作成します。

メトリクスの収集方法は、使用される TCP/IP スタックによって異なります。FreeRTOS+TCP およびサポートされている lwIP 設定には、デバイスから実際のメトリクスを収集して AWS IoT Device Defender レポートでメトリクスを送信する、メトリクス収集の実装を提供しています。FreeRTOS+TCPlwIP 向けの実装は、GitHub で入手できます。

他の TCP/IP スタックを使用するボードには、すべてのメトリクスに対してゼロを返すメトリクス収集関数のスタブ定義を提供しています。このスタブ実装を使用してボードの実際のメトリクスを送信するには、ネットワークスタック向けに freertos/demos/device_defender_for_aws/metrics_collector/stub/metrics_collector.c に関数を実装します。このファイルも GitHub ウェブサイトから入手できます。

ESP32 の場合、デフォルトの lwIP 設定はコアロックを使用しないため、デモではスタブメトリクスが使用されます。参照 lwIP メトリクス収集の実装を使用する場合は、lwiopts.h に次のマクロを定義します。

#define LINK_SPEED_OF_YOUR_NETIF_IN_BPS 0 #define LWIP_TCPIP_CORE_LOCKING 1 #define LWIP_STATS 1 #define MIB2_STATS 1

以下に、デモを実行したときの出力例を示します。

Console output showing MQTT connection, subscription, publish, and disconnect operations with timestamps.

ボードが FreeRTOS+TCP またはサポートされている lwIP 設定を使用していない場合、出力は次のようになります。

Console output showing MQTT connection, subscriptions, and error messages for network metrics.

デモのソースコードは、freertos/demos/device_defender_for_aws/ ディレクトリのダウンロード内、または GitHub ウェブサイトにあります。

AWS IoT Device Defender トピックをサブスクライブする

subscribeToDefenderTopics 関数は、MQTT トピックをサブスクライブして、発行された Device Defender レポートに対する応答を受信します。ここでは、マクロ DEFENDER_API_JSON_ACCEPTED を使用して、受け入れた Device Defender レポートの応答を受信するトピック文字列を作成します。ここでは、マクロ DEFENDER_API_JSON_REJECTED を使用して、拒否した Device Defender レポートの応答を受信するトピック文字列を作成します。

デバイスメトリクスを収集する

collectDeviceMetrics 関数は、metrics_collector.h で定義されている関数を使用してネットワークメトリクスを収集します。送受信されたバイト数とパケット数、開いている TCP ポート、開いている UDP ポート、確立された TCP 接続に関するメトリクスが収集されます。

AWS IoT Device Defender レポートを生成する

generateDeviceMetricsReport 関数は、report_builder.h で定義されている関数を使用して Device Defender レポートを生成します。この関数は、ネットワークメトリクスとバッファを受け取り、 が期待する形式で JSON ドキュメントを作成し AWS IoT Device Defender 、提供されたバッファに書き込みます。で想定される JSON ドキュメントの形式 AWS IoT Device Defender は、 AWS IoT デベロッパーガイド「デバイス側のメトリクス」で指定されています。

AWS IoT Device Defender レポートの発行

AWS IoT Device Defender レポートは、JSON AWS IoT Device Defender レポートを発行するための MQTT トピックで発行されます。レポートは、GitHub ウェブサイトのこのコードスニペットに示したように、マクロ DEFENDER_API_JSON_PUBLISH を使用して作成されます。

応答を処理するコールバック

publishCallback 関数は、受信する MQTT 発行メッセージを処理します。 AWS IoT Device Defender ライブラリの Defender_MatchTopic API を使用して、受信 MQTT メッセージが AWS IoT Device Defender サービスからのものであるかどうかを確認します。メッセージの送信元である場合 AWS IoT Device Defender、受信した JSON レスポンスを解析し、レスポンス内のレポート ID を抽出します。その後、レポート ID は、レポート内に送信されたものと同じかどうか検証されます。