Tutorial: Eine SNS Amazon-Benachrichtigung senden - 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: 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.

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

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

    1. Melden Sie sich bei der SNSAmazon-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 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.

    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 Protokollliste die Option aus SMS.

    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 SNS Amazon-Benachrichtigung.

    1. Wählen Sie in der SNSAmazon-Konsole im linken Navigationsbereich Themen aus.

    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 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/device_id/data MQTT Themen, in denen die ID des Geräts angegeben 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 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 device_id aus dem Themennamen und fügt den konstanten 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
  1. Öffnen Sie den Regel-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 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.

    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:

      • Sucht nach 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 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 in SNSTarget die Option Select aus, suchen Sie Ihr SNS Thema mit dem Namen high_temp_notice und wählen Sie Select aus.

    2. Wählen Sie unter Nachrichtenformat die Option. 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.

    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 in Ihrer Regel aufgerufen 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 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 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 zu verwenden
  1. Abonnieren Sie im MQTT Client in der AWS IoT Konsole die Eingabethemen, in diesem Falldevice/+/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 nicht zu MQTT Themen veröffentlichen, die Platzhalterzeichen enthalten.

    1. Wählen Sie im MQTT Client unter Abonnements die Option Als Thema veröffentlichen aus.

    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 Im Thema veröffentlichen, 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ü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 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, bei der die Temperatur den Grenzwert nicht überschreitet.

    1. Wählen Sie im MQTT Client unter Abonnements die Option Als Thema veröffentlichen aus.

    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.

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