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.
Tutorial: Eine MQTT-Nachricht erneut veröffentlichen
Dieses Tutorial zeigt, wie Sie eine AWS IoT Regel erstellen, die eine MQTT-Nachricht veröffentlicht, wenn eine bestimmte MQTT-Nachricht empfangen wird. Die Nutzlast für eingehende Nachrichten kann durch die Regel geändert werden, bevor sie veröffentlicht wird. Auf diese Weise können Sie Nachrichten erstellen, die auf bestimmte Anwendungen zugeschnitten sind, ohne dass Sie Ihr Gerät oder dessen Firmware ändern müssen. Sie können auch den Filteraspekt einer Regel verwenden, um Nachrichten nur zu veröffentlichen, wenn eine bestimmte Bedingung erfüllt ist.
Die durch eine Regel erneut veröffentlichten Nachrichten verhalten sich wie Nachrichten, die von einem anderen AWS IoT Gerät oder Client gesendet wurden. Geräte können die erneut veröffentlichten Nachrichten genauso abonnieren, wie sie jedes andere MQTT-Nachrichtenthema abonnieren können.
Was Sie in diesem Tutorial lernen werden:
-
Wie man einfache SQL-Abfragen und Funktionen in einer Regelabfrageanweisung verwendet
-
Wie benutzt man den MQTT-Client, um eine Regel zu testen AWS IoT
Für dieses Tutorial brauchen Sie ungefähr 30 Minuten.
In diesem Tutorial führen Sie die folgenden Aktivitäten durch:
Stellen Sie vor Beginn dieses Tutorials sicher, dass Sie über Folgendes verfügen:
-
Einrichten AWS-Konto
Sie benötigen Ihre AWS-Konto AWS IoT AND-Konsole, um dieses Tutorial abzuschließen.
-
Überprüft MQTT-Nachrichten mit dem AWS IoT MQTT-Client anzeigen
Stellen Sie sicher, dass Sie den MQTT-Client verwenden können, um ein Thema zu abonnieren und zu veröffentlichen. In diesem Verfahren werden Sie den MQTT-Client verwenden, um Ihre neue Regel zu testen.
Lesen Sie die MQTT-Themen und AWS IoT -Regeln
Bevor wir über AWS IoT Regeln sprechen, ist es hilfreich, das MQTT-Protokoll zu verstehen. In IoT-Lösungen bietet das MQTT-Protokoll einige Vorteile gegenüber anderen Netzwerkkommunikationsprotokollen wie HTTP, was es zu einer beliebten Wahl für die Verwendung durch IoT-Geräte macht. In diesem Abschnitt werden die wichtigsten Aspekte von MQTT in Bezug auf dieses Tutorial beschrieben. Informationen darüber, wie MQTT im Vergleich zu HTTP abschneidet, finden Sie unter Wählen Sie ein Anwendungsprotokoll für die Kommunikation mit Ihrem Gerät.
MQTT-Protokoll
Das MQTT-Protokoll verwendet ein publish/subscribe Kommunikationsmodell mit seinem Host. Um Daten zu senden, veröffentlichen Geräte Nachrichten, die anhand von Themen identifiziert sind, an den AWS IoT Message Broker. Um Nachrichten vom Message Broker zu empfangen, abonnieren Geräte die Themen, die sie erhalten, indem sie Themenfilter in Abonnementanfragen an den Message Broker senden. Die AWS IoT Regel-Engine empfängt MQTT-Nachrichten vom Message Broker.
AWS IoT Regeln
AWS IoT Regeln bestehen aus einer Regelabfrageanweisung und einer oder mehreren Regelaktionen. Wenn die AWS IoT Regel-Engine eine MQTT-Nachricht empfängt, reagieren diese Elemente wie folgt auf die Nachricht.
-
Anweisung zur Regelabfrage
Die Abfrageanweisung der Regel beschreibt die zu verwendenden MQTT-Themen, interpretiert die Daten aus der Nachrichtennutzlast und formatiert die Daten wie in einer SQL-Anweisung beschrieben, die den Anweisungen ähnelt, die in gängigen SQL-Datenbanken verwendet werden. Das Ergebnis der Abfrageanweisung sind die Daten, die an die Aktionen der Regel gesendet werden.
-
Regelaktion
Jede Regelaktion in einer Regel bezieht sich auf die Daten, die sich aus der Abfrageanweisung der Regel ergeben. AWS IoT unterstützt viele Regelaktionen. In diesem Tutorial konzentrieren Sie sich jedoch auf die Wiederveröffentlichen Regelaktion, bei der das Ergebnis der Abfrageanweisung als MQTT-Nachricht mit einem bestimmten Thema veröffentlicht wird.
Schritt 1: Erstellen Sie eine AWS IoT Regel, um eine MQTT-Nachricht erneut zu veröffentlichen
Die AWS IoT Regel, die Sie in diesem Tutorial erstellen, abonniert die device/
MQTT-Themen, wobei die ID des Geräts device_id
/datadevice_id
angegeben ist, das die Nachricht gesendet hat. Diese Themen werden durch einen Themenfilter als device/+/data
beschrieben, wobei es sich bei +
um ein Platzhalterzeichen handelt, das einer beliebigen Zeichenfolge zwischen den beiden Schrägstrichen entspricht.
Wenn die Regel eine Nachricht von einem passenden Thema empfängt, veröffentlicht sie die device_id
und temperature
Werte erneut als neue MQTT-Nachricht mit dem device/data/temp
Thema.
Die Nutzlast einer MQTT-Nachricht mit dem device/22/data
Thema sieht beispielsweise so aus:
{ "temperature": 28, "humidity": 80, "barometer": 1013, "wind": { "velocity": 22, "bearing": 255 } }
Die Regel verwendet den temperature
Wert aus der Nachrichtennutzlast und den device_id
aus dem Thema und veröffentlicht sie erneut als MQTT-Nachricht mit dem device/data/temp
Thema und einer Nachrichtennutzlast, die wie folgt aussieht:
{ "device_id": "22", "temperature": 28 }
Mit dieser Regel abonnieren Geräte, die nur die Geräte-ID und die Temperaturdaten benötigen, das device/data/temp
Thema, um nur diese Informationen zu erhalten.
Erstellen einer Regel, die eine MQTT-Nachricht erneut veröffentlicht
-
Öffnen Sie den Regel-Hub der AWS IoT Konsole
. -
Wählen Sie unter Regeln die Option Erstellen aus und beginnen Sie mit der Erstellung Ihrer neuen Regel.
-
Gehen Sie im oberen Teil von Regel erstellen wie folgt vor:
-
Geben Sie im Feld Name den Namen der Regel ein. Für dieses Tutorial nennen Sie es
republish_temp
.Denken Sie daran, dass ein Regelname innerhalb Ihres Kontos und Ihrer Region eindeutig sein muss und keine Leerzeichen enthalten darf. Wir haben in diesem Namen einen Unterstrich verwendet, um die beiden Wörter im Namen der Regel voneinander zu trennen.
-
Beschreiben Sie die Regel im Feld Beschreibung.
Eine aussagekräftige Beschreibung hilft Ihnen dabei, sich daran zu erinnern, was diese Regel bewirkt und warum Sie sie erstellt haben. Die Beschreibung kann so lang wie nötig sein, also seien Sie so detailliert wie möglich.
-
-
In der Regelabfrageanweisung von Regel erstellen:
-
Wählen Sie unter SQL-Version verwenden die Option
2016-03-23
aus. -
Geben Sie im Bearbeitungsfeld Regelabfrageanweisung die folgende Anweisung ein:
SELECT topic(2) as device_id, temperature FROM 'device/+/data'
Diese Aussage:
-
Hört auf MQTT-Nachrichten mit einem Thema, das dem
device/+/data
Themenfilter entspricht. -
Wählt das zweite Element aus der Themenzeichenfolge aus und weist es dem
device_id
Feld zu. -
Wählt das Wert
temperature
Feld aus der Nachrichtennutzlast aus und weist es demtemperature
Feld zu.
-
-
-
Gehen Sie im Feld Eine oder mehrere Aktionen festlegen wie folgt vor:
-
Um die Liste der Regelaktionen für diese Regel zu öffnen, wählen Sie Aktion hinzufügen.
-
Wählen Sie unter Aktion auswählen die Option Nachricht zu einem AWS IoT Thema erneut veröffentlichen aus.
-
Wählen Sie unten in der Aktionsliste die Option Aktion konfigurieren aus, um die Konfigurationsseite der ausgewählten Aktion zu öffnen.
-
-
Gehen Sie in Aktion konfigurieren wie folgt vor:
-
Geben Sie im Feld Thema
device/data/temp
ein. Dies ist das MQTT-Thema der Nachricht, die diese Regel veröffentlichen wird. -
Wählen Sie unter Qualität der Dienstleistung die Option 0 aus. Die Nachricht wird null oder mehrere Mal zugestellt.
-
Gehen Sie unter Rolle auswählen oder erstellen, um AWS IoT Zugriff auf diese Aktion zu gewähren, wie folgt vor:
-
Wählen Sie Rolle erstellen aus. Das Dialogfeld Eine neue Rolle erstellen wird geöffnet.
-
Geben Sie einen Namen ein, der die neue Rolle beschreibt. Verwenden Sie in diesem Tutorial
republish_role
.Wenn Sie eine neue Rolle erstellen, werden die richtigen Richtlinien für die Ausführung der Regelaktion erstellt und der neuen Rolle zugeordnet. Wenn Sie das Thema dieser Regelaktion ändern oder diese Rolle in einer anderen Regelaktion verwenden, müssen Sie die Richtlinie für diese Rolle aktualisieren, um das neue Thema oder die neue Aktion zu autorisieren. Um eine bestehende Rolle zu aktualisieren, wählen Sie in diesem Abschnitt die Option Rolle aktualisieren aus.
-
Wählen Sie Rolle erstellen aus, um die Rolle zu erstellen und das Dialogfeld zu schließen.
-
-
Wählen Sie Aktion hinzufügen, um die Aktion zur Regel hinzuzufügen und zur Seite Regel erstellen zurückzukehren.
-
-
Die Aktion Eine Nachricht in einem AWS IoT Thema erneut veröffentlichen ist jetzt unter Eine oder mehrere Aktionen festlegen aufgeführt.
In der Kachel der neuen Aktion unter Nachricht zu einem AWS IoT Thema erneut veröffentlichen können Sie das Thema sehen, in dem die neue Aktion veröffentlicht wird.
Dies ist die einzige Regelaktion, die Sie zu dieser Regel hinzufügen werden.
-
Scrollen Sie in Regel erstellen ganz nach unten und wählen Sie Regel erstellen aus, um die Regel zu erstellen und diesen Schritt abzuschließen.
Schritt 2: Testen Ihrer neuen Regel
Um Ihre neue Regel zu testen, verwenden Sie den MQTT-Client, um die von dieser Regel verwendeten MQTT-Nachrichten zu veröffentlichen und zu abonnieren.
Öffnen Sie den MQTT-Client in der AWS IoT
Konsole
Um den MQTT-Client zum Testen Ihrer Regel verwenden.
-
Abonnieren Sie im MQTT-Client in der AWS IoT Konsole
die Eingabethemen, in diesem Fall device/+/data
.-
Wählen Sie im MQTT-Client unter Abonnements die Option Thema abonnieren aus.
-
Geben Sie im Abonnementthema das Thema des Eingabethemenfilters
device/+/data
ein. -
Belassen Sie die übrigen Felder auf ihren Standardeinstellungen.
-
Wählen Sie Thema abonnieren aus.
In der Spalte Abonnements wird
device/+/data
unter In einem Thema veröffentlichen angezeigt.
-
-
Abonnieren Sie das Thema, das Ihre Regel veröffentlichen wird:
device/data/temp
.-
Wählen Sie unter Abonnements erneut die Option Thema abonnieren aus, und geben Sie unter Abonnementthema das Thema der erneut veröffentlichten Nachricht
device/data/temp
ein. -
Belassen Sie die übrigen Felder auf ihren Standardeinstellungen.
-
Wählen Sie Thema abonnieren aus.
In der Spalte Abonnements wird
device/data/temp
unter Geräte/+/Daten angezeigt.
-
-
Veröffentlichen Sie eine Nachricht zum Eingabethema mit einer bestimmten Geräte-ID,
device/22/data
. Sie können keine Beiträge in MQTT-Themen veröffentlichen, die Platzhalterzeichen enthalten.-
Wählen Sie im MQTT-Client unter Abonnements die Option In einem Thema veröffentlichen.
-
Geben Sie im Feld Veröffentlichen den Namen des Eingabethemas
device/22/data
ein. -
Kopieren Sie die hier gezeigten Beispieldaten und fügen Sie die Beispieldaten in das Bearbeitungsfeld unter dem Themennamen ein.
{ "temperature": 28, "humidity": 80, "barometer": 1013, "wind": { "velocity": 22, "bearing": 255 } }
-
Um Ihre MQTT-Nachricht zu senden, wählen Sie Im Thema veröffentlichen.
-
-
Überprüfen Sie die gesendeten Nachrichten.
-
Im MQTT-Client befindet sich unter Abonnements ein grüner Punkt neben den beiden Themen, die Sie zuvor abonniert haben.
Die grünen Punkte zeigen an, dass eine oder mehrere neue Nachrichten eingegangen sind, seit Sie sie das letzte Mal angesehen haben.
-
Wählen Sie unter Abonnements die Option Gerät/+/Daten aus, um zu überprüfen, ob die Nutzlast der Nachricht mit dem übereinstimmt, was Sie gerade veröffentlicht haben, und wie folgt aussieht:
{ "temperature": 28, "humidity": 80, "barometer": 1013, "wind": { "velocity": 22, "bearing": 255 } }
-
Prüfen Sie unter Abonnements device/data/temp, ob Ihre Payload für erneut veröffentlichte Nachrichten wie folgt aussieht:
{ "device_id": "22", "temperature": 28 }
Beachten Sie, dass es sich bei dem
device_id
Wert um eine Zeichenfolge in Anführungszeichen handelt und der Werttemperature
numerisch ist. Das liegt daran, dass dietopic()
Funktion die Zeichenfolge aus dem Themennamen der Eingabenachricht extrahiert hat, während dertemperature
Wert den numerischen Wert aus der Nutzlast der Eingabenachricht verwendet.Wenn Sie den Wert zu einem numerischen
device_id
Wert machen möchten, ersetzen Sietopic(2)
in der Anweisung zur Regelabfrage durch:cast(topic(2) AS DECIMAL)
Beachten Sie, dass die Umwandlung des
topic(2)
Werts in einen numerischen Wert nur funktioniert, wenn dieser Teil des Themas nur numerische Zeichen enthält.
-
-
Wenn Sie feststellen, dass die richtige Nachricht zum device/data/tempThema veröffentlicht wurde, hat Ihre Regel funktioniert. Weitere Informationen zur Aktion „Regel erneut veröffentlichen“ finden Sie im nächsten Abschnitt.
Wenn du nicht siehst, dass die richtige Nachricht entweder auf dem Gerät/+/data oder in den device/data/tempThemen veröffentlicht wurde, sieh dir die Tipps zur Fehlerbehebung an.
Problembehebung bei der Regel „Nachricht erneut veröffentlichen“
Hier sind einige Dinge, die Sie überprüfen sollten, falls Sie nicht die erwarteten Ergebnisse sehen.
-
Sie haben ein Fehlerbanner
Wenn bei der Veröffentlichung der Eingabemeldung ein Fehler aufgetreten ist, korrigieren Sie diesen Fehler zuerst. Die folgenden Schritte können Ihnen helfen, diesen Fehler zu korrigieren.
-
Sie sehen die Eingabenachricht nicht im MQTT-Client
Jedes Mal, wenn Sie Ihre Eingabenachricht zum
device/22/data
Thema veröffentlichen, sollte diese Nachricht im MQTT-Client erscheinen, wenn Sie dendevice/+/data
Themenfilter wie im Verfahren beschrieben abonniert haben.Zu überprüfende Dinge
-
Überprüfen Sie den Themenfilter, den Sie abonniert haben
Wenn Sie das Thema der Eingabenachricht wie im Verfahren beschrieben abonniert haben, sollte Ihnen bei jeder Veröffentlichung eine Kopie der Eingabenachricht angezeigt werden.
Wenn Sie die Nachricht nicht sehen, überprüfen Sie den Themennamen, den Sie abonniert haben, und vergleichen Sie ihn mit dem Thema, zu dem Sie sie veröffentlicht haben. Bei Themennamen wird Groß- und Kleinschreibung beachtet, und das Thema, das Sie abonniert haben, muss mit dem Thema identisch sein, zu dem Sie die Nachrichtennutzlast veröffentlicht haben.
-
Überprüfen Sie die Funktion zum Veröffentlichen von Nachrichten
Wählen Sie im MQTT-Client unter Abonnements die Option Gerät/+/Daten aus, überprüfen Sie das Thema der Veröffentlichungsnachricht und wählen Sie dann Im Thema veröffentlichen aus. Sie sollten sehen, dass die Nutzlast der Nachricht aus dem Bearbeitungsfeld unter dem Thema in der Nachrichtenliste erscheinen.
-
-
Sie sehen Ihre erneut veröffentlichte Nachricht nicht im MQTT-Client
Damit Ihre Regel funktioniert, muss sie über die richtige Richtlinie verfügen, die sie autorisiert, eine Nachricht zu empfangen und erneut zu veröffentlichen, und sie muss die Nachricht empfangen.
Zu überprüfende Dinge
-
Überprüfen Sie Ihren MQTT-Client und die AWS-Region Regel, die Sie erstellt haben
Die Konsole, in der Sie den MQTT-Client ausführen, muss sich in derselben AWS Region befinden wie die von Ihnen erstellte Regel.
-
Überprüfen Sie das Thema der Eingabemeldung in der Regelabfrageanweisung
Damit die Regel funktioniert, muss sie eine Nachricht mit dem Themennamen erhalten, der dem Themenfilter in der FROM-Klausel der Regelabfrageanweisung entspricht.
Überprüfen Sie die Schreibweise des Themenfilters in der Regelabfrageanweisung mit der des Themas im MQTT-Client. Bei Themennamen wird Groß- und Kleinschreibung beachtet, und das Thema der Nachricht muss mit dem Themenfilter in der Regelabfrageanweisung übereinstimmen.
-
Überprüfen Sie den Inhalt der Nutzlast der Input-Nachricht
Damit die Regel funktioniert, muss sie das Datenfeld in der Nachrichtennutzlast finden, das in der SELECT-Anweisung deklariert ist.
Überprüfen Sie die Schreibweise des
temperature
Felds in der Regelabfrageanweisung mit der Schreibweise der Nachrichtennutzlast im MQTT-Client. Bei Feldnamen wird zwischen Groß- und Kleinschreibung unterschieden, und dastemperature
Feld in der Regelabfrageanweisung muss mit demtemperature
Feld in der Nachrichtennutzlast identisch sein.Stellen Sie sicher, dass das JSON-Dokument in der Nachrichtennutzlast korrekt formatiert ist. Wenn das JSON Fehler enthält, z. B. ein fehlendes Komma, kann die Regel es nicht lesen.
-
Überprüfen Sie das Thema der erneut veröffentlichten Nachricht in der Regelaktion
Das Thema, zu dem die Regelaktion „Erneut veröffentlichen“ die neue Nachricht veröffentlicht, muss mit dem Thema übereinstimmen, das Sie im MQTT-Client abonniert haben.
Öffnen Sie die Regel, die Sie in der Konsole erstellt haben, und überprüfen Sie das Thema, zu dem die Regelaktion die Nachricht erneut veröffentlicht.
-
Überprüfen Sie die Rolle, die von der Regel verwendet wird
Die Regelaktion muss berechtigt sein, das ursprüngliche Thema zu empfangen und das neue Thema zu veröffentlichen.
Die Richtlinien, mit denen die Regel autorisiert wird, Nachrichtendaten zu empfangen und erneut zu veröffentlichen, sind spezifisch für die verwendeten Themen. Wenn Sie das Thema ändern, das für die erneute Veröffentlichung der Nachrichtendaten verwendet wird, müssen Sie die Rolle der Regelaktion aktualisieren, damit ihre Richtlinie dem aktuellen Thema entspricht.
Wenn Sie vermuten, dass dies das Problem ist, bearbeiten Sie die Aktion Regel erneut veröffentlichen und erstellen Sie eine neue Rolle. Neue Rollen, die durch die Regelaktion erstellt wurden, erhalten die erforderlichen Autorisierungen, um diese Aktionen auszuführen.
-
Schritt 3: Überprüfen Sie die Ergebnisse und die nächsten Schritte
In diesem Tutorial
-
Sie haben eine einfache SQL-Abfrage und einige Funktionen in einer Regelabfrageanweisung verwendet, um eine neue MQTT-Nachricht zu erzeugen.
-
Sie haben eine Regel erstellt, die diese neue Nachricht erneut veröffentlicht hat.
-
Sie haben den MQTT-Client verwendet, um Ihre AWS IoT Regel zu testen.
Nächste Schritte
Nachdem Sie einige Nachrichten mit dieser Regel erneut veröffentlicht haben, probieren Sie sie aus, um zu sehen, wie sich Änderungen einiger Aspekte des Tutorials auf die erneut veröffentlichte Nachricht auswirken. Hier sind einige Ideen, die Ihnen den Einstieg erleichtern sollen.
-
Ändern Sie das Thema
device_id
der Eingabenachricht und beobachten Sie die Auswirkungen in der neu veröffentlichten Nachrichten-Payload. -
Ändern Sie die in der Regelabfrageanweisung ausgewählten Felder und beobachten Sie die Auswirkungen auf die Nutzlast der erneut veröffentlichten Nachricht.
-
Probieren Sie das nächste Tutorial in dieser Serie und lernen Sie, wie man Tutorial: Senden einer Amazon SNS-Benachrichtigung.
Die in diesem Tutorial verwendete Aktion Regel erneut veröffentlichen kann Ihnen auch beim Debuggen von Regelabfrageanweisungen helfen. Sie können diese Aktion beispielsweise einer Regel hinzufügen, um zu sehen, wie ihre Regelabfrageanweisung die von ihren Regelaktionen verwendeten Daten formatiert.