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.
Daten aufnehmen in AWS IoT SiteWise from AWS IoT things
In diesem Tutorial erfahren Sie, wie Sie mithilfe AWS IoT SiteWise von AWS IoT Geräteschatten Daten aus einer Vielzahl von Geräten aufnehmen. Geräteschatten sind JSON-Objekte, die aktuelle Statusinformationen für ein AWS IoT Gerät speichern. Weitere Informationen finden Sie im AWS IoT Entwicklerhandbuch unter Device Shadow Service.
Nachdem Sie dieses Tutorial abgeschlossen haben, können Sie eine Operation einrichten, die auf AWS IoT Dingen AWS IoT SiteWise basiert. Mithilfe von AWS IoT Dingen können Sie Ihren Vorgang in andere nützliche Funktionen von integrieren AWS IoT. Beispielsweise können Sie AWS IoT Funktionen so konfigurieren, dass sie die folgenden Aufgaben ausführen:
-
Konfigurieren Sie zusätzliche Regeln für das Streamen von Daten an AWS IoT Events Amazon DynamoDB und andere AWS Dienste. Weitere Informationen finden Sie unter Regeln im AWS IoT Entwicklerhandbuch.
-
Indizieren, suchen und aggregieren Sie Ihre Gerätedaten mit dem AWS IoT Fleet Indexing Service. Weitere Informationen finden Sie unter Fleet Indexing Service im AWS IoT Entwicklerhandbuch.
-
Überwachen und sichern Sie Ihre Geräte mit AWS IoT Device Defender. Weitere Informationen finden Sie unter AWS IoT Device Defender im AWS IoT -Entwicklerhandbuch.
In diesem Tutorial erfahren Sie, wie Sie Daten aus den Geräteschatten von AWS IoT Dingen in Assets aufnehmen können. AWS IoT SiteWise Dazu erstellen Sie ein oder mehrere AWS IoT Dinge und führen ein Skript aus, das den Geräteschatten jedes Dings mit CPU- und Speichernutzungsdaten aktualisiert. In diesem Tutorial verwenden Sie CPU- und Speichernutzungsdaten, um realistische Sensordaten zu imitieren. Anschließend erstellen Sie eine Regel mit einer AWS IoT SiteWise Aktion, die diese Daten AWS IoT SiteWise jedes Mal an ein Asset sendet, wenn der Geräteshadow eines Objekts aktualisiert wird. Weitere Informationen finden Sie unter Daten AWS IoT SiteWise mithilfe AWS IoT Core von Regeln aufnehmen.
Themen
Voraussetzungen
Zum Durcharbeiten dieses Tutorials ist Folgendes erforderlich:
-
Ein AWS Konto. Falls Sie noch keines haben, beachten Sie die Informationen unter Richten Sie eine ein AWS Konto.
-
Ein Entwicklungscomputer, auf demWindows,macOS, oder ausgeführt wirdLinux, oder Unix für den Zugriff auf AWS-Managementkonsole. Weitere Informationen finden Sie unter Erste Schritte mit AWS-Managementkonsole.
-
Ein AWS Identity and Access Management (IAM-) Benutzer mit Administratorrechten.
-
Python3 ist auf Ihrem Entwicklungscomputer installiert oder auf dem Gerät installiert, das Sie als AWS IoT Ding registrieren möchten.
Schritt 1: Erstellen Sie eine AWS IoT policy
Erstellen Sie in diesem Verfahren eine AWS IoT Richtlinie, die Ihren AWS IoT Dingen den Zugriff auf die in diesem Tutorial verwendeten Ressourcen ermöglicht.
Diese Richtlinie ermöglicht es Ihren AWS IoT Geräten, mithilfe von MQTT-Nachrichten Verbindungen herzustellen und mit Geräteschatten zu kommunizieren. Weitere Informationen zu MQTT-Nachrichten finden Sie unter Was ist MQTT? $aws/things/ beginnen. Diese Richtlinie beinhaltet eine Richtlinienvariable für Dinge, die als thing-name/shadow/${iot:Connection.Thing.ThingName} bekannt ist. Diese Variable ersetzt den Namen der verbundenen Sache in jedem Thema. Die iot:Connect Anweisung schränkt ein, welche Geräte Verbindungen herstellen können, und stellt so sicher, dass die Richtlinienvariable „Ding“ nur Namen ersetzen kann, die mit SiteWiseTutorialDevice beginnen.
Weitere Informationen finden Sie https://docs.aws.amazon.com/iot/latest/developerguide/iot-policy-variables.html im AWS IoT Entwicklerhandbuch unter Ding-Richtlinienvariablen.
Anmerkung
Diese Richtlinie gilt für Objekte, deren Namen mit SiteWiseTutorialDevice beginnen. Um einen anderen Namen für Ihre Objekte zu verwenden, müssen Sie die Richtlinie entsprechend aktualisieren.
Schritt 2: Erstellen und konfigurieren Sie eine AWS IoT Objekt
In diesem Verfahren erstellen und konfigurieren Sie ein AWS IoT Objekt. Sie können Ihren Entwicklungscomputer als ein beliebiges AWS IoT Ding bezeichnen. Denken Sie im weiteren Verlauf daran, dass die Prinzipien, die Sie hier lernen, auf tatsächliche Projekte angewendet werden können. Sie haben die Flexibilität, AWS IoT Dinge auf jedem Gerät zu erstellen und einzurichten, auf dem ein AWS IoT SDK ausgeführt werden kann, einschließlich AWS IoT Greengrass FreeRTOS. Weitere Informationen finden Sie unter AWS IoT SDKs im Entwicklerhandbuch. AWS IoT
Sie haben jetzt AWS IoT etwas auf Ihrem Computer registriert. Führen Sie einen der folgenden nächsten Schritte aus:
-
Fahren Sie mit Schritt 3: Erstellen eines Geräteobjektmodells fort, ohne zusätzliche AWS IoT Dinge zu erstellen. Sie können dieses Lernprogramm mit nur einem Objekt abschließen.
-
Wiederholen Sie die Schritte in diesem Abschnitt auf einem anderen Computer oder Gerät, um weitere AWS IoT -Objekte zu erstellen. Für dieses Tutorial empfehlen wir, diese Option zu befolgen, damit Sie eindeutige CPU- und Speicherauslastungsdaten von mehreren Geräten erfassen können.
-
Wiederholen Sie die Schritte in diesem Abschnitt auf demselben Gerät (Ihrem Computer), um weitere AWS IoT -Objekte zu erstellen. Jedes AWS IoT Ding erhält ähnliche CPU- und Speichernutzungsdaten von Ihrem Computer. Verwenden Sie diesen Ansatz, um zu demonstrieren, dass nicht eindeutige Daten von mehreren Geräten aufgenommen werden.
Schritt 3: Erstellen Sie ein Geräte-Asset-Modell
In diesem Verfahren erstellen Sie ein Asset-Modell, das Ihre Geräte darstellt, die CPU- und Speichernutzungsdaten streamen. AWS IoT SiteWise Um Daten in Anlagen zu verarbeiten, die Gruppen von Geräten repräsentieren, erzwingen Anlagenmodelle konsistente Informationen für mehrere Anlagen desselben Typs. Weitere Informationen finden Sie unter Modellieren Sie Industrieanlagen.
So erstellen Sie ein Komponentenmodell, das ein Gerät darstellt
-
Navigieren Sie zur AWS IoT SiteWise -Konsole
. -
Wählen Sie im linken Navigationsbereich Models (Modelle) aus.
-
Wählen Sie Anlagenmodell erstellen aus.
-
Geben Sie unter Modelldetails einen Namen für Ihr Modell ein. Beispiel,
SiteWise Tutorial Device Model. -
Führen Sie unter Measurement definitions (Messungsdefinitionen) die folgenden Schritte aus:
-
Geben Sie unter Name
CPU Usageein. -
Geben Sie unter Unit (Einheit)
%ein. -
Lassen Sie den Data type (Datentyp) bei Double (Doppelt).
Messungseigenschaften stellen die Rohdatenströme eines Geräts dar. Weitere Informationen finden Sie unter Definieren Sie Datenströme von Geräten (Messungen).
-
-
Wählen Sie Neue Messung hinzufügen, um eine zweite Maßeigenschaft hinzuzufügen.
-
Führen Sie in der zweiten Zeile unter Measurement definitions (Messungsdefinitionen) die folgenden Schritte aus:
-
Geben Sie unter Name
Memory Usageein. -
Geben Sie unter Unit (Einheit)
%ein. -
Lassen Sie den Data type (Datentyp) bei Double (Doppelt).
-
-
Führen Sie unter Metric definitions (Metrikdefinitionen) die folgenden Schritte aus:
-
Geben Sie unter Name
Average CPU Usageein. -
Geben Sie unter Formula (Formel)
avg(CPU Usage)ein. Wählen Sie CPU Usage aus der Autovervollständigungsliste aus, wenn sie angezeigt wird. -
Geben Sie unter Time interval (Zeitintervall)
5 minutesein.
Metrikeigenschaften definieren Aggregationsberechnungen, die alle Eingabedatenpunkte über ein Intervall verarbeiten und einen einzelnen Datenpunkt pro Intervall ausgeben. Diese Metrikeigenschaft berechnet alle 5 Minuten die durchschnittliche CPU-Auslastung jedes Geräts. Weitere Informationen finden Sie unter Aggregieren Sie Daten aus Immobilien und anderen Vermögenswerten (Metriken).
-
-
Wählen Sie Neue Metrik hinzufügen, um eine zweite Metrikeigenschaft hinzuzufügen.
-
Führen Sie in der zweiten Zeile unter Metric definitions (Metrikdefinitionen) die folgenden Schritte aus:
-
Geben Sie unter Name
Average Memory Usageein. -
Geben Sie unter Formula (Formel)
avg(Memory Usage)ein. Wählen Sie Memory Usage aus der Autovervollständigungsliste aus, wenn sie angezeigt wird. -
Geben Sie unter Time interval (Zeitintervall)
5 minutesein.
Diese Metrikeigenschaft berechnet alle 5 Minuten die durchschnittliche Speicherbelegung jedes Geräts.
-
-
(Optional) Fügen Sie weitere zusätzliche Metriken hinzu, die Sie pro Gerät berechnen möchten. Einige interessante Funktionen sind
minundmax. Weitere Informationen finden Sie unter Verwenden Sie Formelausdrücke. In Schritt 4: Erstellen eines Geräteflotten-Asset-Modells erstellen Sie ein übergeordnetes Asset, das anhand der Daten Ihrer gesamten Geräteflotte Metriken berechnen kann. -
Wählen Sie Modell erstellen aus.
Schritt 4: Erstellen Sie ein Anlagenmodell für die Geräteflotte
In diesem Verfahren erstellen Sie ein Asset-Modell, AWS IoT SiteWise das Ihre Gerätesammlung symbolisiert. Innerhalb dieses Asset-Modells richten Sie eine Struktur ein, die es Ihnen ermöglicht, zahlreiche Geräte-Assets mit einem übergeordneten Flotten-Asset zu verknüpfen. Anschließend skizzieren Sie Kennzahlen im Flottenanlagenmodell, um die Daten aller angeschlossenen Geräteressourcen zu konsolidieren. Dieser Ansatz bietet Ihnen umfassende Einblicke in die kollektive Leistung Ihrer gesamten Flotte.
So erstellen Sie ein Komponentenmodell, das eine Geräteflotte darstellt:
-
Navigieren Sie zur AWS IoT SiteWise -Konsole
. -
Wählen Sie im linken Navigationsbereich Models (Modelle) aus.
-
Wählen Sie Anlagenmodell erstellen.
-
Geben Sie unter Modelldetails einen Namen für Ihr Modell ein. Beispiel,
SiteWise Tutorial Device Fleet Model. -
Führen Sie unter Hierarchy definitions (Hierarchiedefinitionen) die folgenden Schritte aus:
-
Geben Sie unter Hierarchy name (Hierarchiename)
Deviceein. -
Wählen Sie unter Hierarchy model (Hierarchiemodell) das Gerätekomponentenmodell (
SiteWise Tutorial Device Model).
Eine Hierarchie definiert eine Beziehung zwischen einem übergeordneten (Flotten-) Komponentenmodell und einem untergeordneten (Geräte-) Komponentenmodell. Übergeordnete Komponenten können auf die Eigenschaftendaten von untergeordneten Komponenten zugreifen. Wenn Sie Komponenten später erstellen, müssen Sie untergeordnete Komponenten gemäß einer Hierarchiedefinition im übergeordneten Komponentenmodell den übergeordneten Komponenten zuordnen. Weitere Informationen finden Sie unter Anlagenhierarchien stellen die Beziehungen zwischen Geräten dar.
-
-
Führen Sie unter Metric definitions (Metrikdefinitionen) die folgenden Schritte aus:
-
Geben Sie unter Name
Average CPU Usageein. -
Geben Sie unter Formula (Formel)
avg(Device | Average CPU Usage)ein. Wenn die Autovervollständigungsliste angezeigt wird, wählen Sie Device, um eine Hierarchie auszuwählen, und dann Average CPU Usage, um die Metrik aus der zuvor erstellten Gerätekomponente auszuwählen. -
Geben Sie unter Time interval (Zeitintervall)
5 minutesein.
Diese Metrikeigenschaft berechnet die durchschnittliche CPU-Auslastung aller Gerätekomponenten, die einer Flottenkomponente über die
Device-Hierarchie zugeordnet sind. -
-
Wählen Sie Neue Metrik hinzufügen, um eine zweite Metrikeigenschaft hinzuzufügen.
-
Führen Sie in der zweiten Zeile unter Metric definitions (Metrikdefinitionen) die folgenden Schritte aus:
-
Geben Sie unter Name
Average Memory Usageein. -
Geben Sie unter Formula (Formel)
avg(Device | Average Memory Usage)ein. Wenn die Autovervollständigungsliste angezeigt wird, wählen Sie Device, um eine Hierarchie auszuwählen, und dann Average Memory Usage, um die Metrik aus der zuvor erstellten Gerätekomponente auszuwählen. -
Geben Sie unter Time interval (Zeitintervall)
5 minutesein.
Diese Metrikeigenschaft berechnet die durchschnittliche Speicherbelegung aller Gerätekomponenten, die einer Flottenkomponente über die
Device-Hierarchie zugeordnet sind. -
-
(Optional) Fügen Sie weitere zusätzliche Metriken hinzu, die Sie für Ihre gesamte Geräteflotte berechnen möchten.
-
Wählen Sie Modell erstellen aus.
Schritt 5: Erstellen und konfigurieren Sie ein Geräte-Asset
In diesem Verfahren generieren Sie ein Geräte-Asset, das auf Ihrem Geräte-Asset-Modell basiert. Anschließend definieren Sie Eigenschaftsaliase für jede Messungseigenschaft. Ein Eigenschaftsalias ist eine eindeutige Zeichenfolge, die eine Asset-Eigenschaft identifiziert. Später können Sie eine Eigenschaft für den Datenupload identifizieren, indem Sie die Aliase anstelle der Asset-ID und der Eigenschaften-ID verwenden. Weitere Informationen finden Sie unter Datenströme verwalten für AWS IoT SiteWise.
So erstellen Sie eine Gerätekomponente und definieren Eigenschaftsaliase
-
Navigieren Sie zur AWS IoT SiteWise -Konsole
. -
Klicken Sie im linken Navigationsbereich auf Assets (Komponenten).
-
Wählen Sie dann Create asset (Komponente erstellen) aus.
-
Wählen Sie unter Modellinformationen das Asset-Modell Ihres Geräts aus.
SiteWise Tutorial Device Model -
Geben Sie unter Asset-Informationen einen Namen für Ihr Asset ein. Beispiel,
SiteWise Tutorial Device 1. -
Wählen Sie dann Create asset (Komponente erstellen) aus.
-
Wählen Sie für Ihre neue Gerätekomponente Edit (Bearbeiten).
-
Unter Messungen:
-
Geben Sie unter CPU Usage
/tutorial/device/SiteWiseTutorialDevice1/cpuals Eigenschaftenalias ein. Sie nehmen den AWS IoT Namen des Objekts in den Eigenschaftsalias auf, sodass Sie mithilfe einer einzigen AWS IoT Regel Daten von all Ihren Geräten aufnehmen können. -
Geben Sie unter Memory Usage
/tutorial/device/SiteWiseTutorialDevice1/memoryals Eigenschaftenalias ein.
-
-
Wählen Sie Speichern.
Wenn Sie zuvor mehrere AWS IoT Dinge erstellt haben, wiederholen Sie die Schritte 3 bis 10 für jedes Gerät und erhöhen Sie die Zahl im Assetnamen und den Eigenschaftsaliasnamen entsprechend. Beispielsweise sollte der Name der zweiten Gerätekomponente SiteWise Tutorial Device 2 sein und die Eigenschaftsaliase sollten /tutorial/device/SiteWiseTutorialDevice2/cpu und /tutorial/device/SiteWiseTutorialDevice2/memory sein.
Schritt 6: Erstellen und konfigurieren Sie eine Geräteflotte
In diesem Verfahren erstellen Sie eine Geräteflotte, die aus Ihrem Geräteflottenmodell abgeleitet ist. Anschließend verknüpfen Sie Ihre individuellen Geräteressourcen mit dem Flottenbestand. Diese Verknüpfung ermöglicht es den metrischen Eigenschaften der Flottenanlage, Daten von mehreren Geräten zu kompilieren und zu analysieren. Diese Daten bieten Ihnen einen konsolidierten Überblick über die kollektive Leistung der gesamten Flotte.
So erstellen Sie eine Geräteflottenkomponente und ordnen ihr Gerätekomponenten zu:
-
Navigieren Sie zur AWS IoT SiteWise -Konsole
. -
Klicken Sie im linken Navigationsbereich auf Assets (Komponenten).
-
Wählen Sie dann Create asset (Komponente erstellen) aus.
-
Wählen Sie unter Modellinformationen Ihr Geräteflottenmodell aus
SiteWise Tutorial Device Fleet Model. -
Geben Sie unter Bestandsinformationen einen Namen für Ihr Asset ein. Beispiel,
SiteWise Tutorial Device Fleet 1. -
Wählen Sie dann Create asset (Komponente erstellen) aus.
-
Wählen Sie für Ihre neue Geräteflottenkomponente Edit (Bearbeiten).
-
Wählen Sie unter Mit diesem Asset verknüpfte Assets die Option Assoziiertes Asset hinzufügen aus und gehen Sie wie folgt vor:
-
Wählen Sie unter Hierarchy (Hierarchie) die Option Device aus. Diese Hierarchie identifiziert die hierarchische Beziehung zwischen Geräte- und Geräteflottenkomponenten. Sie haben diese Hierarchie im Geräteflottenkomponentenmodell früher in diesem Tutorial definiert.
-
Wählen Sie unter Asset (Komponente) Ihre Gerätekomponente, SiteWise Tutorial Device 1, aus.
-
-
(Optional) Wenn Sie zuvor mehrere Geräte-Assets erstellt haben, wiederholen Sie die Schritte 8 bis 10 für jedes von Ihnen erstellte Geräte-Asset.
-
Wählen Sie Speichern.
Sie sollten nun Ihre Gerätekomponenten als Hierarchie sehen.
Schritt 7: Erstellen Sie eine Regel in AWS IoT Kern zum Senden von Daten an Geräteressourcen
In diesem Verfahren erstellen Sie eine Regel in AWS IoT Core. Die Regel dient dazu, Benachrichtigungen von Device-Shadows zu interpretieren und die Daten an Ihre Geräte-Assets in zu übertragen AWS IoT SiteWise. Jedes Mal, wenn der Shadow Ihres Geräts aktualisiert wird, wird eine MQTT-Nachricht AWS IoT gesendet. Sie können eine Regel erstellen, die aktiv wird, wenn sich Geräteschatten basierend auf der MQTT-Nachricht ändern. In diesem Fall besteht das Ziel darin, die Aktualisierungsnachricht zu verarbeiten, die Eigenschaftswerte zu extrahieren und sie an Ihre Geräteressourcen zu übertragen. AWS IoT SiteWise
Um eine Regel mit einem zu erstellen AWS IoT SiteWise action
-
Navigieren Sie zur AWS IoT -Konsole
. -
Wählen Sie im linken Navigationsbereich Nachrichtenrouting und dann Regeln aus.
-
Wählen Sie Regel erstellen aus.
-
Geben Sie einen Namen und eine Beschreibung für Ihre Regel ein und wählen Sie dann Weiter.
-
Geben Sie die folgende SQL-Anweisung ein und wählen Sie dann Weiter.
SELECT * FROM '$aws/things/+/shadow/update/accepted' WHERE startsWith(topic(3), "SiteWiseTutorialDevice")Diese Regelabfrageanweisung funktioniert, weil der Geräte-Schattenservice Schattenaktualisierungen in
$aws/things/veröffentlicht. Weitere Informationen zu Device Shadows finden Sie im AWS IoT Developer Guide unter Device Shadow Service.thingName/shadow/update/acceptedIn der
WHERE-Klausel verwendet diese Regelabfrageanweisung dietopic(3)-Funktion, um den Namen des Objekts aus dem dritten Segment des Themas abzurufen. Anschließend filtert die Anweisung Geräte heraus, die Namen haben, die nicht mit denen der Geräte für das Tutorial übereinstimmen. Weitere Informationen zu AWS IoT SQL finden Sie in der AWS IoT SQL-Referenz im AWS IoT Entwicklerhandbuch. -
Wählen Sie unter Regelaktionen die Option Nachrichtendaten an Asset-Eigenschaften senden in aus AWS IoT SiteWise und gehen Sie wie folgt vor:
-
Wählen Sie By property alias (Nach Eigenschaftenalias).
-
Geben Sie unter Property alias (Eigenschaftenalias)
/tutorial/device/${topic(3)}/cpuein.Die
${...}Syntax ist eine Substitutionsvorlage. AWS IoT wertet den Inhalt innerhalb der geschweiften Klammern aus. Diese Substitutionsvorlage ruft den Namen des Objekts aus dem Thema ab, um einen Alias zu erstellen, der für jedes Thema eindeutig ist. Weitere Informationen finden Sie im Entwicklerhandbuch unter AWS IoT Substitutionsvorlagen.Anmerkung
Da ein Ausdruck in einer Substitutionsvorlage getrennt von der
SELECT-Anweisung ausgewertet wird, können Sie keine Substitutionsvorlage verwenden, um auf einen Alias zu verweisen, der mit einerAS-Klausel erstellt wurde. Zusätzlich zu den unterstützten Funktionen und Operatoren können Sie nur in der ursprünglichen Nutzlast vorhandene Informationen referenzieren. -
Geben
${concat(topic(3), "-cpu-", floor(state.reported.timestamp))}Sie im Feld Eintrags-ID — optional den Wert ein.Eintrags-IDs identifizieren jeden Werteeintragsversuch eindeutig. Wenn ein Eintrag einen Fehler zurückgibt, finden Sie die Eintrags-ID in der Fehlerausgabe, um das Problem zu beheben. Die Substitutionsvorlage in dieser Eintrags-ID kombiniert den Namen des Objekts und den gemeldeten Zeitstempel des Geräts. Beispielsweise könnte die resultierende Eintrags-ID wie
SiteWiseTutorialDevice1-cpu-1579808494aussehen. -
Geben Sie unter Time in seconds (Zeit in Sekunden)
${floor(state.reported.timestamp)}ein.Diese Substitutionsvorlage berechnet die Zeit in Sekunden aus dem gemeldeten Zeitstempel des Geräts. In diesem Tutorial melden Geräte Zeitstempel in Sekunden nach Unix-Epoche als Gleitkommazahl.
-
Geben
${floor((state.reported.timestamp % 1) * 1E9)}Sie im Feld Offset in Nanos — optional den Wert ein.Diese Substitutionsvorlage berechnet die Verschiebung in Nanosekunden aus der Zeit in Sekunden, indem der Dezimalteil des gemeldeten Zeitstempels des Geräts konvertiert wird.
Anmerkung
AWS IoT SiteWise erfordert, dass Ihre Daten einen aktuellen Zeitstempel in Unix-Epochenzeit haben. Wenn Ihre Geräte die Zeit nicht genau melden, können Sie die aktuelle Zeit von der AWS IoT -Regelengine mit timestamp()abrufen. Diese Funktion meldet die Zeit in Millisekunden. Daher müssen Sie die Zeitparameter Ihrer Regelaktion auf die folgenden Werte aktualisieren:
-
Geben Sie unter Time in seconds (Zeit in Sekunden)
${floor(timestamp() / 1E3)}ein. -
Geben Sie unter Offset in Nanos (Verschiebung in Nanosekunden)
${(timestamp() % 1E3) * 1E6}ein.
-
-
Wählen Sie unter Data type (Datentyp) die Option Double (Doppelt).
Dieser Datentyp muss mit dem Datentyp der Komponenteneigenschaft übereinstimmen, die Sie im Komponentenmodell definiert haben.
-
Geben Sie unter Value (Wert)
${state.reported.cpu}ein. In Substitutionsvorlagen verwenden Sie den.-Operator, um einen Wert aus einer JSON-Struktur abzurufen. -
Wählen Sie Add entry (Eintrag hinzufügen), um einen neuen Eintrag für die Speicherbelegungseigenschaft hinzuzufügen, und führen Sie die folgenden Schritte für diese Eigenschaft erneut aus:
-
Wählen Sie By property alias (Nach Eigenschaftenalias).
-
Geben Sie unter Property alias (Eigenschaftenalias)
/tutorial/device/${topic(3)}/memoryein. -
Geben Sie im Feld Eintrags-ID — optional den Wert ein.
${concat(topic(3), "-memory-", floor(state.reported.timestamp))} -
Geben Sie unter Time in seconds (Zeit in Sekunden)
${floor(state.reported.timestamp)}ein. -
Geben
${floor((state.reported.timestamp % 1) * 1E9)}Sie im Feld Offset in Nanos — optional den Wert ein. -
Wählen Sie unter Data type (Datentyp) die Option Double (Doppelt).
-
Geben Sie unter Value (Wert)
${state.reported.memory}ein.
-
-
Wählen Sie unter IAM-Rolle die Option Neue Rolle erstellen aus, um eine IAM-Rolle für diese Regelaktion zu erstellen. Diese Rolle ermöglicht es AWS IoT , Daten an Eigenschaften in Ihrer Geräteflotte und deren Asset-Hierarchie weiterzuleiten.
-
Geben Sie einen Rollennamen ein und wählen Sie Erstellen.
-
-
(Optional) Konfigurieren Sie eine Fehleraktion, die Sie zur Problembehandlung Ihrer Regel verwenden können. Weitere Informationen finden Sie unter Fehler bei einer Regel beheben (AWS IoT SiteWise).
-
Wählen Sie Weiter aus.
-
Überprüfen Sie die Einstellungen und wählen Sie Erstellen, um die Regel zu erstellen.
Schritt 8: Führen Sie das Geräte-Client-Skript aus
In diesem Tutorial verwenden Sie kein echtes Gerät, um Daten zu melden. Stattdessen führst du ein Skript aus, um den Geräteschatten AWS IoT deines Dings mit der CPU- und Speicherauslastung zu aktualisieren, um echte Sensordaten nachzuahmen. Um das Skript auszuführen, müssen Sie zuerst die erforderlichen Python Pakete installieren. In diesem Verfahren installieren Sie die erforderlichen Python Pakete und führen dann das Geräte-Client-Skript aus.
So konfigurieren und führen Sie das Geräte-Clientskript aus
-
Navigieren Sie zur AWS IoT -Konsole
. -
Wählen Sie unten im linken Navigationsbereich Settings (Einstellungen) aus.
-
Speichern Sie Ihren benutzerdefinierten Endpunkt zur Verwendung mit dem Geräte-Clientskript. Sie verwenden diesen Endpunkt, um mit den Schatten Ihres Objekts zu interagieren. Dieser Endpunkt ist eindeutig für Ihr Konto in der aktuellen Region.
Ihr benutzerdefinierter Endpunkt sollte wie im folgenden Beispiel aussehen.
identifier.iot.region.amazonaws.com -
Öffnen Sie eine Befehlszeile, und führen Sie den folgenden Befehl aus, um zu dem zuvor erstellten Tutorialverzeichnis zu navigieren.
cd iot-sitewise-rule-tutorial -
Führen Sie den folgenden Befehl aus, um das AWS IoT-Geräte-SDK for Python zu installieren:
pip3 install AWSIoTPythonSDKWeitere Informationen finden Sie AWS IoT-Geräte-SDK for Python im AWS IoT Entwicklerhandbuch
-
Führen Sie den folgenden Befehl aus, um psutil, eine plattformübergreifende Prozess- und Systemdienstprogrammbibliothek, zu installieren.
pip3 install psutilWeitere Informationen finden Sie unter psutil
im Python-Paketindex. -
Erstellen Sie eine Datei mit dem Namen
thing_performance.pyim Verzeichnisiot-sitewise-rule-tutorial, und kopieren Sie dann den folgenden Python-Code in diese Datei.import AWSIoTPythonSDK.MQTTLib as AWSIoTPyMQTT import json import psutil import argparse import logging import time # Configures the argument parser for this program. def configureParser(): parser = argparse.ArgumentParser() parser.add_argument( "-e", "--endpoint", action="store", required=True, dest="host", help="Your AWS IoT custom endpoint", ) parser.add_argument( "-r", "--rootCA", action="store", required=True, dest="rootCAPath", help="Root CA file path", ) parser.add_argument( "-c", "--cert", action="store", required=True, dest="certificatePath", help="Certificate file path", ) parser.add_argument( "-k", "--key", action="store", required=True, dest="privateKeyPath", help="Private key file path", ) parser.add_argument( "-p", "--port", action="store", dest="port", type=int, default=8883, help="Port number override", ) parser.add_argument( "-n", "--thingName", action="store", required=True, dest="thingName", help="Targeted thing name", ) parser.add_argument( "-d", "--requestDelay", action="store", dest="requestDelay", type=float, default=1, help="Time between requests (in seconds)", ) parser.add_argument( "-v", "--enableLogging", action="store_true", dest="enableLogging", help="Enable logging for the AWS IoT Device SDK for Python", ) return parser # An MQTT shadow client that uploads device performance data to AWS IoT at a regular interval. class PerformanceShadowClient: def __init__( self, thingName, host, port, rootCAPath, privateKeyPath, certificatePath, requestDelay, ): self.thingName = thingName self.host = host self.port = port self.rootCAPath = rootCAPath self.privateKeyPath = privateKeyPath self.certificatePath = certificatePath self.requestDelay = requestDelay # Updates this thing's shadow with system performance data at a regular interval. def run(self): print("Connecting MQTT client for {}...".format(self.thingName)) mqttClient = self.configureMQTTClient() mqttClient.connect() print("MQTT client for {} connected".format(self.thingName)) deviceShadowHandler = mqttClient.createShadowHandlerWithName( self.thingName, True ) print("Running performance shadow client for {}...\n".format(self.thingName)) while True: performance = self.readPerformance() print("[{}]".format(self.thingName)) print("CPU:\t{}%".format(performance["cpu"])) print("Memory:\t{}%\n".format(performance["memory"])) payload = {"state": {"reported": performance}} deviceShadowHandler.shadowUpdate( json.dumps(payload), self.shadowUpdateCallback, 5 ) time.sleep(args.requestDelay) # Configures the MQTT shadow client for this thing. def configureMQTTClient(self): mqttClient = AWSIoTPyMQTT.AWSIoTMQTTShadowClient(self.thingName) mqttClient.configureEndpoint(self.host, self.port) mqttClient.configureCredentials( self.rootCAPath, self.privateKeyPath, self.certificatePath ) mqttClient.configureAutoReconnectBackoffTime(1, 32, 20) mqttClient.configureConnectDisconnectTimeout(10) mqttClient.configureMQTTOperationTimeout(5) return mqttClient # Returns the local device's CPU usage, memory usage, and timestamp. def readPerformance(self): cpu = psutil.cpu_percent() memory = psutil.virtual_memory().percent timestamp = time.time() return {"cpu": cpu, "memory": memory, "timestamp": timestamp} # Prints the result of a shadow update call. def shadowUpdateCallback(self, payload, responseStatus, token): print("[{}]".format(self.thingName)) print("Update request {} {}\n".format(token, responseStatus)) # Configures debug logging for the AWS IoT Device SDK for Python. def configureLogging(): logger = logging.getLogger("AWSIoTPythonSDK.core") logger.setLevel(logging.DEBUG) streamHandler = logging.StreamHandler() formatter = logging.Formatter( "%(asctime)s - %(name)s - %(levelname)s - %(message)s" ) streamHandler.setFormatter(formatter) logger.addHandler(streamHandler) # Runs the performance shadow client with user arguments. if __name__ == "__main__": parser = configureParser() args = parser.parse_args() if args.enableLogging: configureLogging() thingClient = PerformanceShadowClient( args.thingName, args.host, args.port, args.rootCAPath, args.privateKeyPath, args.certificatePath, args.requestDelay, ) thingClient.run() -
Führen Sie
thing_performance.pyüber die Befehlszeile mit den folgenden Parametern aus:-
-n,--thingName— Ihr Dingname, z.SiteWiseTutorialDevice1B. -
-e,--endpoint— Ihr benutzerdefinierter AWS IoT Endpunkt, den Sie zuvor in diesem Verfahren gespeichert haben. -
-r,--rootCA— Der Pfad zu Ihrem AWS IoT Root-CA-Zertifikat. -
-c,--cert— Der Pfad zu Ihrem AWS IoT Ding-Zertifikat. -
-k,--key— Der Pfad zu Ihrem privaten Schlüssel für AWS IoT das Ding-Zertifikat. -
-d,--requestDelay— (Optional) Die Wartezeit in Sekunden zwischen den einzelnen Geräte-Shadow-Updates. Standard ist 1 Sekunde. -
-v,--enableLogging— (Optional) Wenn dieser Parameter vorhanden ist, druckt das Skript Debug-Meldungen von AWS IoT-Geräte-SDK for Python.
Ihr Befehl sollte ähnlich wie im folgenden Beispiel aussehen.
python3 thing_performance.py \ --thingName SiteWiseTutorialDevice1 \ --endpointidentifier.iot.region.amazonaws.com \ --rootCA AmazonRootCA1.pem \ --cert device1/thing-id-certificate.pem.crt \ --key device1/thing-id-private.pem.keyWenn Sie das Skript für zusätzliche AWS IoT Dinge ausführen, aktualisieren Sie den Dingnamen und das Zertifikatsverzeichnis entsprechend.
-
-
Versuchen Sie, Programme auf Ihrem Gerät zu öffnen und zu schließen, um zu sehen, wie sich die CPU- und Speichernutzung ändern. Das Skript druckt jede Ablesung von CPU- und Speichernutzung. Wenn das Skript Daten erfolgreich zum Geräteschattenservice hochlädt, sollte die Ausgabe des Skripts wie im folgenden Beispiel aussehen.
[SiteWiseTutorialDevice1] CPU: 24.6% Memory: 85.2% [SiteWiseTutorialDevice1] Update request e6686e44-fca0-44db-aa48-3ca81726f3e3 accepted -
Gehen Sie folgendermaßen vor, um zu überprüfen, ob das Skript den Geräteschatten aktualisiert:
-
Navigieren Sie zur AWS IoT -Konsole
. -
Wählen Sie im linken Navigationsbereich Alle Geräte und dann Dinge aus.
-
Wähle dein Ding, SiteWiseTutorialDevice.
-
Wählen Sie den Tab „Geräteschatten“, wählen Sie „Klassischer Schatten“ und vergewissern Sie sich, dass der Schattenstatus wie im folgenden Beispiel aussieht.
{ "reported": { "cpu": 24.6, "memory": 85.2, "timestamp": 1579567542.2835066 } }Wenn der Schattenstatus deines Dings leer ist oder nicht wie im vorherigen Beispiel aussieht, überprüfe, ob das Skript ausgeführt wird und erfolgreich eine Verbindung hergestellt wurde AWS IoT. Wenn das Skript beim Herstellen einer Verbindung zu weiterhin einen Timeout hat AWS IoT, überprüfe, ob deine Ding-Richtlinie gemäß diesem Tutorial konfiguriert ist.
-
-
Gehen Sie folgendermaßen vor, um zu überprüfen, ob die Regelaktion Daten an AWS IoT SiteWise sendet:
-
Navigieren Sie zur AWS IoT SiteWise -Konsole
. -
Klicken Sie im linken Navigationsbereich auf Assets (Komponenten).
-
Klicken Sie auf den Pfeil neben Ihrem Gerätebestand (SiteWise Tutorial Device Fleet 1), um dessen Asset-Hierarchie zu erweitern, und wählen Sie dann Ihr Geräte-Asset (SiteWise Tutorial Device1) aus.
-
Wählen Sie Measurements (Messungen).
-
Stellen Sie sicher, dass die Zellen Latest value (Letzter Wert) Werte für die Eigenschaften CPU Usage und Memory Usage aufweisen.
-
Wenn die Eigenschaften CPU Usage und Memory Usage nicht über die neuesten Werte verfügen, aktualisieren Sie die Seite. Wenn nach einigen Minuten keine Werte angezeigt werden, finden Sie weitere Informationen unter Fehler bei einer Regel beheben (AWS IoT SiteWise).
-
Sie haben dieses Tutorial abgeschlossen. Wenn Sie Live-Visualisierungen Ihrer Daten untersuchen möchten, können Sie ein Portal in AWS IoT SiteWise Monitor konfigurieren. Weitere Informationen finden Sie unter Überwachen Sie Daten mit AWS IoT SiteWise Monitor. Andernfalls können Sie STRG+C in der Eingabeaufforderung betätigen, um das Geräte-Clientskript zu stoppen. Es ist unwahrscheinlich, dass das Python-Programm so viele Nachrichten sendet, dass Kosten anfallen, aber es hat sich bewährt, das Programm zu beenden, wenn Sie fertig sind.
Schritt 9: Bereinigen Sie die Ressourcen nach dem Tutorial
Anmerkung
Die in diesem Tutorial erstellten Ressourcen sind für das Tutorial „Daten in SiteWise Edge integrieren“ erforderlich. Bereinigen Sie die Ressourcen in diesem Schritt nicht, wenn Sie ihn abschließen möchten.
Nachdem Sie das Tutorial zum Aufnehmen von Daten aus AWS IoT Dingen abgeschlossen haben, bereinigen Sie Ihre Ressourcen, um zusätzliche Kosten zu vermeiden.
Um hierarchische Assets zu löschen in AWS IoT SiteWise
-
Navigieren Sie zur Konsole AWS IoT SiteWise
-
Klicken Sie im linken Navigationsbereich auf Assets (Komponenten).
-
Wenn Sie Assets in löschen AWS IoT SiteWise, müssen Sie sie zunächst trennen.
Führen Sie die folgenden Schritte aus, um die Zuordnung Ihrer Gerätekomponenten zu Ihrer Geräteflottenkomponente aufzuheben:
-
Wählen Sie das Asset Ihrer Geräteflotte (SiteWise Tutorial Device Fleet 1) aus.
-
Wählen Sie Bearbeiten aus.
-
Wählen Sie unter Assets associated to this asset (Dieser Komponente zugeordnete Komponenten) die Option Disassociate (Zuordnung aufheben) für jede Gerätekomponente, die dieser Geräteflottenkomponente zugeordnet ist.
-
Wählen Sie Speichern.
Sie sollten nun Ihre Gerätekomponenten nicht mehr als Hierarchie organisiert sehen.
-
-
Wählen Sie Ihre Gerätekomponente ( SiteWise Tutorial Device 1).
-
Wählen Sie Löschen aus.
-
Geben Sie in das Bestätigungsfeld
Deleteein, und wählen Sie dann Delete (Löschen). -
Wiederholen Sie die Schritte 4 bis 6 für jedes Geräte-Asset und das Geräteflotten-Asset (SiteWise Tutorial Device Fleet 1).
Um hierarchische Anlagenmodelle zu löschen in AWS IoT SiteWise
-
Navigieren Sie zur AWS IoT SiteWise -Konsole
. -
Wenn Sie dies noch nicht getan haben, löschen Sie Ihre Geräte- und Geräteflottenkomponenten. Weitere Informationen finden Sie im vorhergehenden Verfahren. Sie können ein Modell nicht löschen, wenn Sie Komponenten haben, die aus diesem Modell erstellt wurden.
-
Wählen Sie im linken Navigationsbereich Models (Modelle) aus.
-
Wählen Sie Ihr Geräteflottenkomponentenmodell (SiteWise Tutorial Device Fleet Model).
Wenn Sie hierarchische Anlagenmodelle löschen, löschen Sie zunächst das übergeordnete Anlagenmodell.
-
Wählen Sie Löschen aus.
-
Geben Sie in das Bestätigungsfeld
Deleteein, und wählen Sie dann Delete (Löschen). -
Wiederholen Sie die Schritte 4 bis 6 für Ihr Gerätekomponentenmodell (SiteWise Tutorial Device Model).
Um eine Regel zu deaktivieren oder zu löschen in AWS IoT Core
-
Navigieren Sie zur AWS IoT -Konsole
. -
Wählen Sie im linken Navigationsbereich Nachrichtenrouting und dann Regeln aus.
-
Wählen Sie Ihre Regel aus und klicken Sie auf Löschen.
-
Geben Sie im Bestätigungsdialogfeld den Namen der Regel ein und wählen Sie dann Löschen.