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 SNS Amazon-Benachrichtigung senden
Dieses Tutorial zeigt, wie Sie eine AWS IoT Regel erstellen, die MQTT Nachrichtendaten an ein SNS Amazon-Thema sendet, sodass sie als SMS Textnachricht gesendet werden können.
In diesem Tutorial erstellen Sie eine Regel, die Nachrichtendaten von einem Wettersensor an alle Abonnenten eines SNS Amazon-Themas sendet, wenn die Temperatur den in der Regel festgelegten Wert überschreitet. Die Regel erkennt, wenn die gemeldete Temperatur den in der Regel festgelegten Wert überschreitet, und erstellt dann eine neue Nachrichtennutzlast, die nur die Geräte-ID, die gemeldete Temperatur und den Temperaturgrenzwert, der überschritten wurde, enthält. Die Regel sendet die neue Nachrichten-Payload als JSON Dokument an ein SNS Thema, wodurch alle Abonnenten des SNS Themas benachrichtigt werden.
Was Sie in diesem Tutorial lernen werden:
-
So erstellen und testen Sie eine SNS Amazon-Benachrichtigung
-
So rufen Sie eine SNS Amazon-Benachrichtigung von einer AWS IoT Regel aus auf
-
Wie verwendet man einfache SQL Abfragen und Funktionen in einer Regelabfrageanweisung
-
Wie benutzt man den MQTT Client, um eine AWS IoT Regel zu testen
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 Handkonsole, um dieses Tutorial abzuschließen.
-
Überprüft MQTTNachrichten 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 verwenden Sie den MQTT Client, um Ihre neue Regel zu testen.
-
Der Amazon Amazon Simple Notification Service wurde überprüft
Wenn Sie Amazon SNS noch nicht verwendet haben, lesen Sie den Artikel Zugriff für Amazon einrichten SNS. Wenn Sie bereits andere AWS IoT Tutorials abgeschlossen haben, AWS-Konto sollten Sie bereits korrekt konfiguriert sein.
Schritt 1: Erstellen Sie ein SNS Amazon-Thema, das eine SMS Textnachricht sendet
In diesem Verfahren wird erklärt, wie Sie das SNS Amazon-Thema erstellen, an das Ihr Wettersensor Nachrichtendaten senden kann. Das SNS Amazon-Thema benachrichtigt dann alle Abonnenten per SMS Textnachricht über die Überschreitung der Temperaturgrenze.
Um ein SNS Amazon-Thema zu erstellen, das eine SMS Textnachricht sendet
-
Erstellen Sie ein SNS Amazon-Thema.
-
Melden Sie sich bei der SNSAmazon-Konsole
an. -
Wählen Sie im linken Navigationsbereich Topics (Themen).
-
Wählen Sie auf der Seite Topics (Themen) Create New Topic (Neues Thema erstellen) aus.
-
Wählen Sie unter Details den Standardtyp aus. Standardmäßig erstellt die Konsole ein FIFO Thema.
-
Geben Sie im Feld Name den Namen des SNS Themas ein. Geben Sie für dieses Tutorial
high_temp_notice
ein. -
Scrollen Sie zum Ende der Seite und wählen Sie Create topic (Erstellen eines Themas) aus.
In der Konsole wird die Seite Details geöffnet.
-
-
Erstellen Sie ein SNS Amazon-Abonnement.
Anmerkung
Für die Telefonnummer, die Sie in diesem Abonnement verwenden, können Gebühren für Textnachrichten aufgrund der Nachrichten anfallen, die Sie in diesem Tutorial versenden.
-
Wählen Sie auf der Detailseite des Themas high_temp_notice die Option Abonnement erstellen.
-
Wählen Sie unter Abonnement erstellen im Abschnitt Details in der Protokollliste die Option aus SMS.
-
Geben Sie im Feld Endpunkt die Nummer eines Telefons ein, das Textnachrichten empfangen kann. Achten Sie darauf, dass Sie es so eingeben, dass es mit einem
+
beginnt, die Landes- und Ortsvorwahl enthält und keine anderen Satzzeichen enthält. -
Wählen Sie Create subscription (Abonnement erstellen) aus.
-
-
Testen Sie die SNS Amazon-Benachrichtigung.
-
Wählen Sie in der SNSAmazon-Konsole
im linken Navigationsbereich Themen aus. -
Um die Detailseite des Themas zu öffnen, wählen Sie unter Themen in der Liste der Themen den Eintrag high_temp_notice aus.
-
Um die Seite Nachricht im Thema veröffentlichen zu öffnen, wählen Sie auf der Detailseite von high_temp_notice die Option Nachricht veröffentlichen aus.
-
Geben Sie unter Nachricht zum Thema veröffentlichen im Abschnitt Nachrichtentext im Feld Nachrichtentext, der an den Endpunkt gesendet werden soll, eine Kurznachricht ein.
-
Scrollen Sie auf der Seite nach unten und wählen Sie Nachricht veröffentlichen.
-
Vergewissern Sie sich auf dem Telefon mit der Nummer, die Sie zuvor bei der Erstellung des Abonnements verwendet haben, dass die Nachricht empfangen wurde.
Wenn Sie die Testnachricht nicht erhalten haben, überprüfen Sie die Telefonnummer und die Einstellungen Ihres Telefons.
Stellen Sie sicher, dass Sie Testnachrichten von der SNSAmazon-Konsole
aus veröffentlichen können, bevor Sie mit dem Tutorial fortfahren. -
Schritt 2: Erstellen Sie eine AWS IoT Regel zum Senden der Textnachricht
Die AWS IoT Regel, die Sie in diesem Tutorial erstellen, abonniert die device/
MQTT Themen, in denen die ID des Geräts angegeben device_id
/data
ist, das die Nachricht gesendet hat. Diese Themen werden in einem Themenfilter als device_id
device/+/data
beschrieben, wobei es sich bei +
um ein Platzhalterzeichen handelt, das einer beliebigen Zeichenfolge zwischen den beiden Schrägstrichen entspricht. Diese Regel testet auch den Wert des temperature
Felds in der Nachrichtennutzlast.
Wenn die Regel eine Nachricht von einem passenden Thema empfängt, verwendet sie den
Themennamen, den device_id
temperature
Wert aus der Nachrichtennutzlast, fügt einen konstanten Wert für das zu testende Limit hinzu und sendet diese Werte als JSON Dokument an ein SNS Amazon-Benachrichtigungsthema.
Eine MQTT Nachricht vom Wettersensorgerät Nummer 32 verwendet beispielsweise das device/32/data
Thema und hat eine Nachrichten-Payload, die wie folgt aussieht:
{ "temperature": 38, "humidity": 80, "barometer": 1013, "wind": { "velocity": 22, "bearing": 255 } }
Die Regelabfrageanweisung der Regel nimmt den temperature
Wert aus der Nachrichtennutzlast, den
aus dem Themennamen und fügt den konstanten device_id
max_temperature
Wert hinzu, um eine Nachrichtennutzlast zu senden, die wie folgt aussieht, zum SNS Amazon-Thema:
{ "device_id": "32", "reported_temperature": 38, "max_temperature": 30 }
Um eine AWS IoT Regel zur Erkennung einer Temperaturüberschreitung zu erstellen und die Daten zu erstellen, die an das SNS Amazon-Thema gesendet werden sollen
-
Öffnen Sie den Regel-Hub der AWS IoT Konsole
. -
Wenn dies Ihre erste Regel ist, wählen Sie Erstellen oder Regel erstellen.
-
In Erstellen einer Regel:
-
Geben Sie unter Name
temp_limit_notify
ein.Denken Sie daran, dass ein Regelname in Ihrer Region AWS-Konto und in Ihrer Region eindeutig sein muss und keine Leerzeichen enthalten darf. Wir haben in diesem Namen einen Unterstrich verwendet, um die Wörter im Namen der Regel voneinander zu trennen.
-
Beschreiben Sie die Regel im Feld Beschreibung.
Eine aussagekräftige Beschreibung macht es einfacher, 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 as reported_temperature, 30 as max_temperature FROM 'device/+/data' WHERE temperature > 30
Diese Aussage:
-
Sucht nach MQTT Nachrichten mit einem Thema, das dem
device/+/data
Themenfilter entspricht und derentemperature
Wert größer als 30 ist. -
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 demreported_temperature
Feld zu. -
Erstellt einen konstanten Wert
30
, der den Grenzwert darstellt, und weist ihn demmax_temperature
Feld zu.
-
-
-
Um die Liste der Regelaktionen für diese Regel zu öffnen, wählen Sie unter Eine oder mehrere Aktionen festlegen die Option Aktion hinzufügen aus.
-
Wählen Sie unter Aktion auswählen die Option Nachricht als SNS Push-Benachrichtigung senden aus.
-
Um die Konfigurationsseite der ausgewählten Aktion zu öffnen, wählen Sie unten in der Aktionsliste die Option Aktion konfigurieren aus.
-
Gehen Sie in Aktion konfigurieren wie folgt vor:
-
Wählen Sie in SNSTarget die Option Select aus, suchen Sie Ihr SNS Thema mit dem Namen high_temp_notice und wählen Sie Select aus.
-
Wählen Sie unter Nachrichtenformat die Option. RAW
-
Wählen Sie unter Rolle auswählen oder erstellen, um AWS IoT Zugriff auf diese Aktion zu gewähren, die Option Rolle erstellen aus.
-
Geben Sie unter Neue Rolle erstellen im Feld Name einen eindeutigen Namen für die neue Rolle ein. Verwenden Sie für dieses Tutorial
sns_rule_role
. -
Wählen Sie Rolle erstellen.
Wenn Sie dieses Tutorial wiederholen oder eine bestehende Rolle wiederverwenden, wählen Sie Rolle aktualisieren, bevor Sie fortfahren. Dadurch wird das Richtliniendokument der Rolle aktualisiert, sodass es mit dem SNS Ziel funktioniert.
-
-
Wählen Sie Aktion hinzufügen und kehren Sie zur Seite Regel erstellen zurück.
In der Kachel der neuen Aktion unter Eine Nachricht als SNS Push-Benachrichtigung senden finden Sie das SNS Thema, das in Ihrer Regel aufgerufen wird.
Dies ist die einzige Regelaktion, die Sie zu dieser Regel hinzufügen werden.
-
Um die Regel zu erstellen und diesen Schritt abzuschließen, scrollen Sie unter Regel erstellen nach unten und wählen Sie Regel erstellen aus.
Schritt 3: Testen Sie die AWS IoT Regel und die SNS Amazon-Benachrichtigung
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 MQTTClient in der AWS IoT
Konsole
Um den MQTT Client zum Testen Ihrer Regel zu 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.
-
-
Veröffentlichen Sie eine Nachricht zum Eingabethema mit einer bestimmten Geräte-ID,
device/32/data
. Sie können nicht zu MQTT Themen veröffentlichen, die Platzhalterzeichen enthalten.-
Wählen Sie im MQTT Client unter Abonnements die Option Als Thema veröffentlichen aus.
-
Geben Sie im Feld Veröffentlichen den Namen des Eingabethemas
device/32/data
ein. -
Kopieren Sie die hier gezeigten Beispieldaten und fügen Sie die Beispieldaten in das Bearbeitungsfeld unter dem Themennamen ein.
{ "temperature": 38, "humidity": 80, "barometer": 1013, "wind": { "velocity": 22, "bearing": 255 } }
-
Wählen Sie Im Thema veröffentlichen, um Ihre MQTT Nachricht zu veröffentlichen.
-
-
Bestätigen Sie, dass die Textnachricht gesendet wurde.
-
Im MQTT Client befindet sich unter Abonnements ein grüner Punkt neben dem Thema, das Sie zuvor abonniert haben.
Der grüne Punkt zeigt 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": 38, "humidity": 80, "barometer": 1013, "wind": { "velocity": 22, "bearing": 255 } }
-
Überprüfe das Telefon, mit dem du das SNS Thema abonniert hast, und vergewissere dich, dass der Inhalt der Nachrichten-Payload wie folgt aussieht:
{"device_id":"32","reported_temperature":38,"max_temperature":30}
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 numerischenDECIMAL
Wert nur funktioniert, wenn dieser Teil des Themas nur numerische Zeichen enthält.
-
-
Versuchen Sie, eine MQTT Nachricht zu senden, bei der die Temperatur den Grenzwert nicht überschreitet.
-
Wählen Sie im MQTT Client unter Abonnements die Option Als Thema veröffentlichen aus.
-
Geben Sie im Feld Veröffentlichen den Namen des Eingabethemas
device/33/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.
Sie sollten die Nachricht sehen, die Sie im
device/+/data
Abonnement gesendet haben. Da der Temperaturwert jedoch unter der Höchsttemperatur in der Regelabfrageanweisung liegt, sollten Sie keine Textnachricht erhalten.Wenn Sie nicht das richtige Verhalten feststellen, lesen Sie die Tipps zur Fehlerbehebung.
-
Problembehandlung bei Ihrer SNS Nachrichtenregel
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 Eingabemeldung nicht im MQTT Client
Jedes Mal, wenn Sie Ihre Eingabenachricht zu dem
device/22/data
Thema veröffentlichen, sollte diese Nachricht im MQTT Client erscheinen, sofern 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 device/+/data aus, überprüfen Sie das Thema der Veröffentlichungsnachricht und wählen Sie dann Als Thema veröffentlichen aus. Sie sollten sehen, dass die Nutzlast der Nachricht aus dem Bearbeitungsfeld unter dem Thema in der Nachrichtenliste erscheinen.
-
-
Sie erhalten keine Nachricht SMS
Damit Ihre Regel funktioniert, muss sie über die richtige Richtlinie verfügen, die sie autorisiert, eine Nachricht zu empfangen und eine SNS Benachrichtigung zu senden, und sie muss die Nachricht empfangen.
Zu überprüfende Dinge
-
Überprüfen Sie die AWS-Region Ihres MQTT Clients und die 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, ob der Temperaturwert in der Nachrichtennutzlast den Testschwellenwert überschreitet
Wenn der Temperaturwert kleiner oder gleich 30 ist, wie in der Regelabfrageanweisung definiert, führt die Regel keine ihrer Aktionen aus.
-
Ü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 Schreibweise 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 Nachrichtennutzdaten 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 Nachrichten-Payload korrekt formatiert ist. Wenn das Fehler JSON 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 Client abonniert haben. MQTT
Ö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 4: Überprüfen Sie die Ergebnisse und die nächsten Schritte
In diesem Tutorial:
-
Sie haben ein SNS Amazon-Benachrichtigungsthema und ein Abonnement erstellt und getestet.
-
Sie haben eine einfache SQL Abfrage und Funktionen in einer Regelabfrageanweisung verwendet, um eine neue Nachricht für Ihre Benachrichtigung zu erstellen.
-
Sie haben eine AWS IoT Regel zum Senden einer SNS Amazon-Benachrichtigung erstellt, die Ihre benutzerdefinierte Nachrichtennutzlast verwendet hat.
-
Sie haben den MQTT Client verwendet, um Ihre AWS IoT Regel zu testen.
Nächste Schritte
Nachdem Sie einige Textnachrichten mit dieser Regel gesendet haben, versuchen Sie, damit zu experimentieren, um zu sehen, wie sich Änderungen einiger Aspekte des Tutorials auf die Nachricht auswirken und wann sie gesendet wird. Hier sind einige Ideen, die Ihnen den Einstieg erleichtern sollen.
-
Ändern Sie die
device_id
im Thema der Eingangsnachricht und beobachten Sie die Auswirkung auf den Inhalt der Textnachricht. -
Ändern Sie die in der Regelabfrageanweisung ausgewählten Felder und beobachten Sie die Auswirkungen auf den Inhalt der Textnachricht.
-
Ändern Sie den Test in der Regelabfrageanweisung so, dass er auf eine Mindesttemperatur statt auf eine Höchsttemperatur testet. Denken Sie daran, den Namen von
max_temperature
zu ändern! -
Fügen Sie eine Regelaktion zum erneuten Veröffentlichen hinzu, um eine MQTT Nachricht zu senden, wenn eine SNS Benachrichtigung gesendet wird.
-
Probieren Sie das nächste Tutorial in dieser Serie und lernen Sie, wie man Tutorial: Gerätedaten in einer DynamoDB-Tabelle speichern.