Tutorial: Senden einer Amazon SNS-Benachrichtigung - AWS IoT Core

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: Senden einer Amazon SNS-Benachrichtigung

Dieses Tutorial zeigt, wie Sie eine AWS IoT Regel erstellen, die MQTT-Nachrichtendaten an ein Amazon SNS-Thema sendet, damit sie als SMS-Nachricht gesendet werden können.

In diesem Tutorial erstellen Sie eine Regel, die Nachrichtendaten von einem Wettersensor an alle Abonnenten eines Amazon SNS-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 Nachrichtennutzlast 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 Amazon SNS-Benachrichtigung

  • So rufen Sie eine Amazon SNS-Benachrichtigung aus einer - AWS IoT Regel auf

  • Wie man einfache SQL-Abfragen und Funktionen in einer Regelabfrageanweisung verwendet

  • So verwenden Sie den MQTT-Client zum Testen einer - AWS IoT Regel

Für dieses Tutorial brauchen Sie ungefähr 30 Minuten.

Stellen Sie vor Beginn dieses Tutorials sicher, dass Sie über Folgendes verfügen:

Schritt 1: Erstellen Sie ein Amazon-SNS-Thema, das eine SMS-Textnachricht sendet

Ein Amazon-SNS-Thema erstellen, das eine SMS-Textnachricht sendet
  1. Erstellen Sie ein Amazon-SNS-Thema.

    1. Melden Sie sich bei der Amazon-SNS-Konsole an.

    2. Wählen Sie im linken Navigationsbereich Topics (Themen).

    3. Wählen Sie auf der Seite Topics (Themen) Create New Topic (Neues Thema erstellen) aus.

    4. Wählen Sie unter Details den Standardtyp aus. Standardmäßig erstellt die Konsole ein FIFO-Thema.

    5. Geben Sie im Feld Name den Namen des SNS-Themas ein. Geben Sie für dieses Tutorial high_temp_notice ein.

    6. 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.

  2. Erstellen Sie ein Amazon-SNS-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.

    1. Wählen Sie auf der Detailseite des Themas high_temp_notice die Option Abonnement erstellen.

    2. Wählen Sie unter Abonnement erstellen im Abschnitt Details in der Protokoll-Liste die Option SMS aus.

    3. 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.

    4. Wählen Sie Create subscription (Abonnement erstellen) aus.

  3. Testen Sie die Amazon SNS-Benachrichtigung.

    1. Wählen Sie in der Amazon SNS-Konsole im linken Navigationsbereich Themen.

    2. Um die Detailseite des Themas zu öffnen, wählen Sie unter Themen in der Liste der Themen den Eintrag high_temp_notice aus.

    3. 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.

    4. Geben Sie unter Nachricht zum Thema veröffentlichen im Abschnitt Nachrichtentext im Feld Nachrichtentext, der an den Endpunkt gesendet werden soll, eine Kurznachricht ein.

    5. Scrollen Sie auf der Seite nach unten und wählen Sie Nachricht veröffentlichen.

    6. 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 Amazon SNS-Konsole aus veröffentlichen können, bevor Sie mit dem Tutorial fortfahren.

Schritt 2: Erstellen einer AWS IoT Regel zum Senden der Textnachricht

Die AWS IoT Regel, die Sie in diesem Tutorial erstellen werden, abonniert die device/device_id/data MQTT-Themen, wobei die ID des Geräts device_id ist, das die Nachricht gesendet hat. Diese Themen werden in einem Themenfilter als 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 device_id Themennamen, den 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 Amazon SNS-Benachrichtigungsthema.

Zum Beispiel verwendet eine MQTT-Nachricht vom Wettersensorgerät Nummer 32 das device/32/data Thema und hat eine Nachrichtennutzlast, 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 device_id aus dem Themennamen und fügt den konstanten max_temperature Wert hinzu, um eine Nachrichtennutzlast zu senden, die wie folgt aussieht, zum Amazonc SNS-Thema:

{ "device_id": "32", "reported_temperature": 38, "max_temperature": 30 }
So erstellen Sie eine - AWS IoT Regel, um einen übermäßigen Temperaturwert zu erkennen und die Daten zu erstellen, die an das Amazon SNS-Thema gesendet werden sollen
  1. Öffnen Sie den Rules Hub der AWS IoT Konsole .

  2. Wenn dies Ihre erste Regel ist, wählen Sie Erstellen oder Regel erstellen.

  3. In Erstellen einer Regel:

    1. Geben Sie unter Name temp_limit_notify ein.

      Denken Sie daran, dass ein Regelname innerhalb Ihres AWS-Konto und 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.

    2. 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.

  4. In der Regelabfrageanweisung von Regel erstellen:

    1. Wählen Sie unter SQL-Version verwenden die Option 2016-03-23 aus.

    2. 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:

      • Lauscht auf MQTT-Nachrichten mit einem Thema, das dem device/+/data Themenfilter entspricht und deren temperature 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 dem reported_temperature Feld zu.

      • Erstellt einen konstanten Wert 30, der den Grenzwert darstellt, und weist ihn dem max_temperature Feld zu.

  5. 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.

  6. Wählen Sie unter Aktion auswählen die Option Eine Nachricht als SNS-Push-Benachrichtigung senden aus.

  7. Um die Konfigurationsseite der ausgewählten Aktion zu öffnen, wählen Sie unten in der Aktionsliste die Option Aktion konfigurieren aus.

  8. Gehen Sie in Aktion konfigurieren wie folgt vor:

    1. Wählen Sie unter SNS-Ziel die Option Auswählen aus, suchen Sie Ihr SNS-Thema mit dem Namen high_temp_notice und wählen Sie Auswählen aus.

    2. Wählen Sie unter Nachrichtenformat das Format RAW.

    3. Wählen Sie unter Rolle auswählen oder erstellen, um AWS IoT Zugriff auf diese Aktion zu gewähren die Option Rolle erstellen aus.

    4. 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.

    5. Wählen Sie Rolle erstellen aus.

    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.

  9. 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 Ihre Regel aufrufen wird.

    Dies ist die einzige Regelaktion, die Sie zu dieser Regel hinzufügen werden.

  10. 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 der AWS IoT Regel und der Amazon SNS-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 MQTT-Client in der AWS IoT Konsole in einem neuen Fenster. Auf diese Weise können Sie die Regel bearbeiten, ohne die Konfiguration Ihres MQTT-Clients zu verlieren. Wenn Sie den MQTT-Client verlassen, um zu einer anderen Seite in der Konsole zu wechseln, werden keine Abonnements oder Nachrichtenprotokolle gespeichert.

Um den MQTT-Client zum Testen Ihrer Regel verwenden.
  1. Abonnieren Sie im MQTT-Client in der AWS IoT Konsole die Eingabethemen, in diesem Fall device/+/data.

    1. Wählen Sie im MQTT-Client unter Abonnements die Option Thema abonnieren aus.

    2. Geben Sie im Abonnementthema das Thema des Eingabethemenfilters device/+/data ein.

    3. Belassen Sie die übrigen Felder auf ihren Standardeinstellungen.

    4. Wählen Sie Thema abonnieren aus.

      In der Spalte Abonnements wird device/+/data unter In einem Thema veröffentlichen angezeigt.

  2. Veröffentlichen Sie eine Nachricht zum Eingabethema mit einer bestimmten Geräte-ID, device/32/data. Sie können keine Beiträge in MQTT-Themen veröffentlichen, die Platzhalterzeichen enthalten.

    1. Wählen Sie im MQTT-Client unter Abonnements die Option In einem Thema veröffentlichen.

    2. Geben Sie im Feld Veröffentlichen den Namen des Eingabethemas device/32/data ein.

    3. 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 } }
    4. Wählen Sie In Thema veröffentlichen aus, um Ihre MQTT-Nachricht zu veröffentlichen.

  3. Bestätigen Sie, dass die Textnachricht gesendet wurde.

    1. 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.

    2. 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 } }
    3. Überprüfen Sie das Telefon, mit dem Sie das SNS-Thema abonniert haben, und vergewissern Sie sich, dass der Inhalt der Nutzlast der Nachricht so 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 Wert temperature numerisch ist. Das liegt daran, dass die topic() Funktion die Zeichenfolge aus dem Themennamen der Eingabenachricht extrahiert hat, während der temperature Wert den numerischen Wert aus der Nutzlast der Eingabenachricht verwendet.

      Wenn Sie den Wert zu einem numerischen device_id Wert machen möchten, ersetzen Sie topic(2) in der Anweisung zur Regelabfrage durch:

      cast(topic(2) AS DECIMAL)

      Beachten Sie, dass die Umwandlung des topic(2) Werts in einen numerischen DECIMAL Wert nur funktioniert, wenn dieser Teil des Themas nur numerische Zeichen enthält.

  4. Versuchen Sie, eine MQTT-Nachricht zu senden, in der die Temperatur den Grenzwert nicht überschreitet.

    1. Wählen Sie im MQTT-Client unter Abonnements die Option In einem Thema veröffentlichen.

    2. Geben Sie im Feld Veröffentlichen den Namen des Eingabethemas device/33/data ein.

    3. 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 } }
    4. 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.

Fehlerbehebung 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 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 den device/+/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 erhalten keine SMS-Nachricht

    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 Ihres MQTT- AWS-Region Clients und die von Ihnen erstellte Regel

      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 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 das temperature Feld in der Regelabfrageanweisung muss mit dem temperature 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 4: Überprüfen Sie die Ergebnisse und die nächsten Schritte

In diesem Tutorial:
  • Sie haben ein Amazon-SNS-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 erstellt, um eine Amazon SNS-Benachrichtigung zu senden, 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 Geräte_ID im Thema der Eingabenachricht und beobachten Sie die Auswirkungen 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.