Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
AWS IoT Device Defender Demo
Wichtig
Diese Demo wird im Amazon-FreeRTOS-Repository gehostet, das veraltet ist. Wir empfehlen, dass Sie hier beginnen, wenn Sie ein neues Projekt erstellen. Wenn Sie bereits ein vorhandenes FreeRTOS-Projekt haben, das auf dem inzwischen veralteten Amazon-FreeRTOS-Repository basiert, finden Sie weitere Informationen unter. Leitfaden zur Migration des kostenlosen RTOS Github-Repositorys von Amazon
Einführung
Diese Demo zeigt Ihnen, wie Sie die Device Defender-Bibliothek verwenden, um eine Verbindung herzustellen. AWS IoT AWS IoT Device Defender Die Demo verwendet die CoreMQTT-Bibliothek, um eine MQTT-Verbindung über TLS (gegenseitige Authentifizierung) zum AWS IoT MQTT-Broker herzustellen, und die CoreJSON-Bibliothek, um die vom Dienst empfangenen Antworten zu validieren und zu analysieren. AWS IoT Device Defender Die Demo zeigt Ihnen, wie Sie einen Bericht im JSON-Format mithilfe der vom Gerät gesammelten Metriken erstellen und wie Sie den erstellten Bericht an den Service senden. AWS IoT Device Defender Die Demo zeigt auch, wie Sie eine Callback-Funktion in der CoreMQTT-Bibliothek registrieren, um die Antworten des AWS IoT Device Defender Dienstes zu verarbeiten und zu bestätigen, ob ein gesendeter Bericht akzeptiert oder abgelehnt wurde.
Anmerkung
Folgen Sie den Schritten unter, um die FreeRTOS-Demos einzurichten und auszuführen. Jetzt kostenlos durchstarten RTOS
Funktionalität
Diese Demo erstellt eine einzelne Anwendungsaufgabe, die demonstriert, wie Sie Metriken sammeln, einen Device Defender-Bericht im JSON-Format erstellen und ihn über eine sichere MQTT-Verbindung zum MQTT-Broker an den AWS IoT Device Defender Service senden. AWS IoT Die Demo umfasst sowohl die standardmäßigen Netzwerkmetriken als auch benutzerdefinierte Metriken. Für benutzerdefinierte Metriken umfasst die Demo:
-
Eine Metrik namens "
task_numbers
", die eine Liste von FreeRTOS-Task-IDs ist. Der Typ dieser Metrik ist „Zahlenliste“. -
Eine Metrik mit dem Namen "
stack_high_water_mark
", bei der es sich um das Stack-High-Wasserzeichen für die Demo-Anwendungsaufgabe handelt. Der Typ dieser Metrik ist „Zahl“.
Wie wir Netzwerkmetriken sammeln, hängt vom verwendeten TCP/IP-Stack ab. Für FreeRTOS+TCP und unterstützte LwIP-Konfigurationen bieten wir Implementierungen zur Erfassung von Metriken an, die echte Metriken vom Gerät sammeln und sie im Bericht einreichen. AWS IoT Device Defender Sie finden die Implementierungen für FreeRTOS+TCP
Für Boards, die einen anderen TCP/IP-Stack verwenden, bieten wir Stub-Definitionen der Funktionen zur Erfassung von Metriken an, die für alle Netzwerkmetriken Nullen zurückgeben. Implementieren Sie die Funktionen
für Ihren Netzwerk-Stack, um echte Metriken zu senden. Die Datei ist auch auf der GitHubfreertos
/demos/device_defender_for_aws/metrics_collector/stub/metrics_collector.c
Für ESP32 verwendet die Standard-LWiP-Konfiguration kein Core-Locking und daher verwendet die Demo Stubbed-Metriken. Wenn Sie die Referenzimplementierung zur Erfassung von LWIP-Metriken verwenden möchten, definieren Sie die folgenden Makros in: 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
Im Folgenden finden Sie ein Beispiel für die Ausgabe, wenn Sie die Demo ausführen.

Wenn dein Board nicht FreeRTOS+TCP oder eine unterstützte LwIP-Konfiguration verwendet, sieht die Ausgabe wie folgt aus.

Der Quellcode der Demo befindet sich in Ihrem
Download-Verzeichnis oder auf der GitHubfreertos
/demos/device_defender_for_aws/
Themen abonnieren AWS IoT Device Defender
Mit der subscribeToDefenderThemenfunktionDEFENDER_API_JSON_ACCEPTED
, um die Themenzeichenfolge zu erstellen, zu der Antworten auf akzeptierte Device Defender-Berichte eingehen. Es verwendet das MakroDEFENDER_API_JSON_REJECTED
, um die Themenzeichenfolge zu erstellen, zu der Antworten auf abgelehnte Device Defender-Berichte eingehen.
Erfassung von Gerätemetriken
Die collectDeviceMetricsmetrics_collector.h
Bei den gesammelten Metriken handelt es sich um die Anzahl der gesendeten und empfangenen Bytes und Pakete, die offenen TCP-Ports, die offenen UDP-Ports und die hergestellten TCP-Verbindungen.
Der AWS IoT Device Defender Bericht wird generiert
Die generateDeviceMetricsBerichtsfunktionreport_builder.h
. Diese Funktion verwendet die Netzwerkmetriken und einen Puffer, erstellt ein JSON-Dokument in dem von erwarteten Format AWS IoT Device Defender und schreibt es in den bereitgestellten Puffer. Das von erwartete Format des JSON-Dokuments AWS IoT Device Defender ist unter Geräteseitige Metriken im AWS IoT Entwicklerhandbuch angegeben.
Den Bericht veröffentlichen AWS IoT Device Defender
Der AWS IoT Device Defender Bericht wird zum MQTT-Thema für die Veröffentlichung von AWS IoT Device Defender JSON-Berichten veröffentlicht. Der Bericht wird mithilfe des Makros erstelltDEFENDER_API_JSON_PUBLISH
, wie in diesem Codeausschnitt
Rückruf zur Bearbeitung von Antworten
Die Funktion publishCallbackDefender_MatchTopic
API aus der AWS IoT Device Defender Bibliothek, um zu überprüfen, ob die eingehende MQTT-Nachricht vom Dienst stammt. AWS IoT Device Defender Wenn die Nachricht vom AWS IoT Device Defender Dienst stammt, analysiert er die empfangene JSON-Antwort und extrahiert die Berichts-ID aus der Antwort. Anschließend wird überprüft, ob die Berichts-ID mit der im Bericht gesendeten identisch ist.