Tutorial: invio di una SNS notifica Amazon - AWS IoT Core

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Tutorial: invio di una SNS notifica Amazon

Questo tutorial dimostra come creare una AWS IoT regola che invii i dati dei MQTT messaggi a un SNS argomento di Amazon in modo che possa essere inviato come messaggio di SMS testo.

In questo tutorial, crei una regola che invia i dati dei messaggi da un sensore meteorologico a tutti gli abbonati di un SNS argomento Amazon, ogni volta che la temperatura supera il valore impostato nella regola. La regola rileva quando la temperatura segnalata supera il valore impostato dalla regola e quindi crea un nuovo payload del messaggio che include solo l'ID del dispositivo, la temperatura segnalata e il limite di temperatura superato. La regola invia il payload del nuovo messaggio come JSON documento a un SNS argomento, che avvisa tutti gli abbonati all'argomento. SNS

Cosa imparerai in questo tutorial:
  • Come creare e testare una SNS notifica Amazon

  • Come richiamare una SNS notifica Amazon da una AWS IoT regola

  • Come utilizzare SQL query e funzioni semplici in un'istruzione di interrogazione basata su regole

  • Come usare il MQTT client per testare una regola AWS IoT

Questo tutorial dura circa 30 minuti.

Prima di iniziare questo tutorial, assicurati di disporre di:

Passaggio 1: crea un SNS argomento Amazon che invii un messaggio SMS di testo

Questa procedura spiega come creare l'SNSargomento Amazon a cui il sensore meteorologico può inviare i dati dei messaggi. L'SNSargomento Amazon notificherà quindi a tutti i suoi abbonati tramite un messaggio di SMS testo il limite di temperatura superato.

Per creare un SNS argomento Amazon che invii un messaggio SMS di testo
  1. Crea un SNS argomento Amazon.

    1. Accedi alla SNSconsole Amazon.

    2. Nel pannello di navigazione a sinistra, selezionare Topics (Argomenti).

    3. Nella pagina Topics (Argomenti), seleziona Create topic (Crea argomento).

    4. In Details (Dettagli), scegli il tipo standard. Per impostazione predefinita, la console crea un FIFO argomento.

    5. In Nome, inserisci il nome dell'SNSargomento. Per questo tutorial, digita high_temp_notice.

    6. Scorri fino alla parte inferiore della pagina e scegli Crea argomento.

      La console apre la pagina Details (Dettagli) del nuovo argomento.

  2. Crea un SNS abbonamento Amazon.

    Nota

    Il numero di telefono utilizzato in questo abbonamento potrebbe comportare costi di messaggistica di testo per i messaggi inviati in questo tutorial.

    1. Nella pagina dei dettagli dell'argomento high_temp_notice, scegli Create subscription (Crea sottoscrizione).

    2. In Crea abbonamento, nella sezione Dettagli, nell'elenco Protocolli, scegli SMS.

    3. In Endpoint, inserisci il numero di un telefono che può ricevere messaggi di testo. Assicurati di inserirlo in modo che inizi con un +, includa il paese e il prefisso locale e non includa altri caratteri di punteggiatura.

    4. Scegli Crea sottoscrizione.

  3. Prova la SNS notifica Amazon.

    1. Nella SNSconsole Amazon, nel riquadro di navigazione a sinistra, scegli Argomenti.

    2. Per aprire la pagina dei dettagli dell'argomento, in Topics (Argomenti), nell'elenco degli argomenti, seleziona high_temp_notice.

    3. Per aprire la pagina Publish message to topic (Pubblica il messaggio nell'argomento), nella pagina dei dettagli high_temp_notice, scegli Publish message (Pubblica messaggio).

    4. In Publish message to topic (Pubblica il messaggio nell'argomento), nella sezione Message body (Corpo del messaggio), in Message body to send to the endpoint (Corpo del messaggio da inviare all'endpoint), inserisci un breve messaggio.

    5. Scorri fino alla parte inferiore della pagina e scegli Publish message (Pubblica messaggio).

    6. Sul telefono con il numero che hai usato in precedenza durante la creazione della sottoscrizione, conferma che il messaggio è stato ricevuto.

    Se non hai ricevuto il messaggio di prova, controlla due volte il numero di telefono e le impostazioni del tuo cellulare.

    Assicurati di poter pubblicare messaggi di prova dalla SNSconsole Amazon prima di continuare il tutorial.

Passaggio 2: crea una AWS IoT regola per inviare il messaggio di testo

La AWS IoT regola che creerai in questo tutorial riguarda gli device/device_id/data MQTT argomenti in cui si device_id trova l'ID del dispositivo che ha inviato il messaggio. Questi argomenti sono descritti in un filtro argomento come device/+/data, dove + è un carattere jolly che corrisponde a qualsiasi stringa tra i due caratteri di barra in avanti. Questa regola verifica anche il valore del campo temperature nel payload del messaggio.

Quando la regola riceve un messaggio da un argomento corrispondente, prende il nome device_id dall'argomento, il temperature valore dal payload del messaggio e aggiunge un valore costante per il limite che sta testando e invia questi valori come JSON documento a un argomento di SNS notifica Amazon.

Ad esempio, un MQTT messaggio proveniente dal sensore meteorologico numero 32 utilizza l'device/32/dataargomento e ha un payload di messaggi simile al seguente:

{ "temperature": 38, "humidity": 80, "barometer": 1013, "wind": { "velocity": 22, "bearing": 255 } }

L'istruzione rule query della regola prende il temperature valore dal payload del messaggio, device_id dal nome dell'argomento e aggiunge il max_temperature valore costante per inviare un payload del messaggio simile al seguente all'argomento AmazonSNS:

{ "device_id": "32", "reported_temperature": 38, "max_temperature": 30 }
Creare una AWS IoT regola per rilevare un valore di temperatura superiore al limite e creare i dati da inviare all'argomento Amazon SNS
  1. Apri l'hub Rules della AWS IoT console.

  2. Se è la prima regola, scegli Create (Crea) oppure Create a rule (Crea una regola).

  3. In Create a rule (Crea una regola):

    1. In Nome, inserisci temp_limit_notify.

      Ricorda che il nome di una regola deve essere univoco all'interno della tua regione Account AWS e non può avere spazi. Abbiamo usato un carattere di sottolineatura in questo nome per separare le parole nel nome della regola.

    2. In Description (Descrizione), descrivi la regola.

      Una descrizione significativa ti aiuta a ricordare cosa fa questa regola e perché l'hai creata. La descrizione può essere lunga quanto necessario, quindi sii il più dettagliato possibile.

  4. In Rule query statement (Istruzione query regola) di Create a rule (Crea una regola):

    1. In Utilizzo della SQL versione, seleziona 2016-03-23.

    2. Nella casella di modifica Rule query statement (Istruzione query regola), inserisci l'istruzione:

      SELECT topic(2) as device_id, temperature as reported_temperature, 30 as max_temperature FROM 'device/+/data' WHERE temperature > 30

      Questa istruzione:

      • Ascolta i MQTT messaggi con un argomento che corrisponde al filtro degli device/+/data argomenti e che hanno un temperature valore maggiore di 30.

      • Seleziona il secondo elemento dalla stringa dell'argomento e lo assegna al campo device_id.

      • Seleziona il valore del campo temperature dal payload del messaggio e lo assegna al campo reported_temperature.

      • Crea un valore costante 30 per rappresentare il valore limite e lo assegna al campo max_temperature.

  5. Per aprire l'elenco delle azioni della regola per questa regola, in Set one or more actions (Imposta una o più azioni), scegli Add action (Aggiungi operazione).

  6. In Seleziona un'azione, scegli Invia un messaggio come notifica SNS push.

  7. Per aprire la pagina di configurazione dell'operazione selezionata, nella parte inferiore dell'elenco delle operazioni, scegli Configure action (Configura operazione).

  8. In Configure action (Configura operazione):

    1. In SNStarget, scegli Seleziona, trova l'SNSargomento denominato high_temp_notice e scegli Seleziona.

    2. In Formato messaggio, scegli. RAW

    3. In Scegli o crea un ruolo a cui concedere AWS IoT l'accesso per eseguire questa azione, scegli Crea ruolo.

    4. In Create a new role (Crea un nuovo ruolo), in Name (Nome), inserisci un nome univoco per il nuovo ruolo. Ai fini di questo tutorial, utilizza sns_rule_role.

    5. Scegliere Crea ruolo.

    Se si ripete questo tutorial o si riutilizza un ruolo esistente, scegli Update role (Aggiorna ruolo) prima di continuare. Ciò aggiorna il documento politico del ruolo in modo che funzioni con l'SNSobiettivo.

  9. Scegli Add action (Aggiungi operazione) e torna alla pagina Create a rule (Crea una regola).

    Nel riquadro della nuova azione, sotto Invia un messaggio come notifica SNS push, puoi vedere l'SNSargomento che verrà richiamato dalla tua regola.

    Questa è l'unica operazione della regola che aggiungerai a questa regola.

  10. Per creare la regola e completare questo passaggio, in Create a rule (Crea una regola), scorri verso il basso e scegli Create a rule (Crea una regola).

Passaggio 3: verifica la AWS IoT regola e la SNS notifica Amazon

Per testare la nuova regola, utilizzerai il MQTT client per pubblicare e sottoscrivere i MQTT messaggi utilizzati da questa regola.

Apri il MQTTclient nella AWS IoT console in una nuova finestra. Ciò ti consentirà di modificare la regola senza perdere la configurazione del tuo MQTT client. Se lasci che il MQTT client acceda a un'altra pagina della console, non conserverà alcun abbonamento o registro dei messaggi.

Per utilizzare il MQTT client per testare la regola
  1. Nel MQTT client della AWS IoT console, iscriviti agli argomenti di input, in questo caso,device/+/data.

    1. Nel MQTT client, in Abbonamenti, scegli Sottoscrivi a un argomento.

    2. In Subscription topic (Argomento sottoscrizione), inserisci l'argomento del filtro dell’argomento di input, device/+/data.

    3. Lascia gli altri campi ai valori predefiniti.

    4. Scegli Subscribe to topic (Effettua sottoscrizione all'argomento).

      Nella colonna Subscriptions (Sottoscrizioni), sotto Publish to a topic (Pubblica un argomento), device/+/data viene visualizzato.

  2. Pubblicazione di un messaggio nell'argomento di input con un ID dispositivo specifico, device/32/data. Non puoi pubblicare MQTT su argomenti che contengono caratteri jolly.

    1. Nel MQTT client, in Abbonamenti, scegli Pubblica su argomento.

    2. Nel campo Publish (Pubblica), inserisci il nome dell'argomento di input, device/32/data.

    3. Copia i dati di esempio mostrati qui e, nella casella di modifica sotto il nome dell'argomento, incolla i dati di esempio.

      { "temperature": 38, "humidity": 80, "barometer": 1013, "wind": { "velocity": 22, "bearing": 255 } }
    4. Scegli Pubblica su argomento per pubblicare il tuo MQTT messaggio.

  3. Conferma che il messaggio di testo è stato inviato.

    1. Nel MQTT client, sotto Abbonamenti, c'è un punto verde accanto all'argomento a cui ti sei iscritto in precedenza.

      I punti verdi indicano che uno o più nuovi messaggi sono stati ricevuti dall'ultima volta che li hai visualizzati.

    2. Sotto Subscriptions (Sottoscrizioni), scegli device/+/data (dispositivo/+/dati) per verificare che il payload del messaggio corrisponda a quello che hai appena pubblicato e assomigli a questo:

      { "temperature": 38, "humidity": 80, "barometer": 1013, "wind": { "velocity": 22, "bearing": 255 } }
    3. Controlla che il telefono che hai usato per iscriverti all'SNSargomento e conferma che il contenuto del payload del messaggio abbia questo aspetto:

      {"device_id":"32","reported_temperature":38,"max_temperature":30}

      Nota che il valore device_id è una stringa tra virgolette e il valore temperature è numerico. Questo perché la funzione topic() ha estratto la stringa dal nome dell'argomento del messaggio di input mentre il valore temperature utilizza il valore numerico dal payload del messaggio di input.

      Se desideri rendere il valore device_id un valore numerico, sostituisci topic(2) nell'istruzione query della regola con:

      cast(topic(2) AS DECIMAL)

      Nota che la trasformazione del valore topic(2) in un valore numerico DECIMAL funzionerà solo se quella parte dell'argomento contiene solo caratteri numerici.

  4. Prova a inviare un MQTT messaggio in cui la temperatura non superi il limite.

    1. Nel MQTT client, in Abbonamenti, scegli Pubblica su argomento.

    2. Nel campo Publish (Pubblica), inserisci il nome dell'argomento di input, device/33/data.

    3. Copia i dati di esempio mostrati qui e, nella casella di modifica sotto il nome dell'argomento, incolla i dati di esempio.

      { "temperature": 28, "humidity": 80, "barometer": 1013, "wind": { "velocity": 22, "bearing": 255 } }
    4. Per inviare il MQTT messaggio, scegli Pubblica su argomento.

    Dovrebbe essere visualizzato il messaggio inviato nella sottoscrizione device/+/data. Tuttavia, poiché il valore della temperatura è inferiore alla temperatura massima nell'istruzione di query della regola, non si dovrebbe ricevere un messaggio di testo.

    Se il comportamento non viene visualizzato correttamente, controlla i suggerimenti per la risoluzione dei problemi.

Risoluzione dei problemi relativi alla regola dei SNS messaggi

Ecco alcune cose da controllare nel caso in cui non stai vedendo i risultati che ti aspetti.

  • Hai un banner di errore

    Se viene visualizzato un errore quando è stato pubblicato il messaggio di input, correggilo prima. I seguenti passaggi potrebbero aiutarti a correggere l'errore.

  • Non vedi il messaggio di input nel MQTT client

    Ogni volta che pubblichi il messaggio di input device/22/data sull'argomento, tale messaggio dovrebbe apparire nel MQTT client, se hai sottoscritto il filtro degli device/+/data argomenti come descritto nella procedura.

    Controlli
    • Controlla il filtro degli argomenti a cui hai effettuato la sottoscrizione

      Se hai effettuato la sottoscrizione all'argomento del messaggio di input come descritto nella procedura, visualizzerai una copia del messaggio di input ogni volta che lo pubblichi.

      Se il messaggio non viene visualizzato, controlla il nome dell'argomento sottoscritto e confrontalo con l'argomento in cui è stato pubblicato. I nomi degli argomenti fanno distinzione tra maiuscole e minuscole e l'argomento a cui è stato sottoscritto deve essere identico all'argomento in cui hai pubblicato il payload dei messaggi.

    • Controlla la funzione di pubblicazione dei messaggi

      Nel MQTT client, in Abbonamenti, scegli device/+/data, controlla l'argomento del messaggio di pubblicazione, quindi scegli Pubblica sull'argomento. Dovresti vedere il payload del messaggio dalla casella di modifica sotto l'argomento visualizzato nell'elenco dei messaggi.

  • Non ricevi alcun messaggio SMS

    Affinché la regola funzioni, deve avere la politica corretta che la autorizza a ricevere un messaggio e inviare una SNS notifica, e deve inoltre ricevere il messaggio.

    Controlli
    • Controlla il Regione AWS tuo MQTT cliente e la regola che hai creato

      La console su cui esegui il MQTT client deve trovarsi nella stessa AWS regione della regola che hai creato.

    • Verifica che il valore della temperatura nel payload del messaggio superi la soglia di prova

      Se il valore della temperatura è minore o uguale a 30, come definito nell'istruzione query della regola, la regola non eseguirà alcuna delle operazioni.

    • Controlla l'argomento del messaggio di input nell'istruzione query della regola

      Affinché la regola funzioni, deve ricevere un messaggio con il nome dell'argomento che corrisponde al filtro dell'argomento nella FROM clausola dell'istruzione di interrogazione della regola.

      Controlla l'ortografia del filtro dell'argomento nell'istruzione di interrogazione delle regole con quella dell'argomento nel MQTT client. I nomi degli argomenti fanno distinzione tra maiuscole e minuscole e l'argomento del messaggio deve corrispondere al filtro argomento nell'istruzione query della regola.

    • Controllare il contenuto del payload del messaggio di input

      Affinché la regola funzioni, deve trovare il campo dati nel payload del messaggio dichiarato nell'SELECTistruzione.

      Controlla l'ortografia del temperature campo nell'istruzione Rule Query con quella del payload del messaggio nel client. MQTT I nomi dei campi fanno distinzione tra maiuscole e minuscole e il campo temperaturenell'istruzione query della regola deve essere identico a quello del campo temperature nel payload del messaggio.

      Assicurati che il JSON documento nel payload del messaggio sia formattato correttamente. Se JSON contiene errori, ad esempio una virgola mancante, la regola non sarà in grado di leggerlo.

    • Controlla l'argomento del messaggio ripubblicato nell'operazione della regola

      L'argomento a cui l'azione della regola Ripubblica pubblica il nuovo messaggio deve corrispondere all'argomento a cui ti sei iscritto nel client. MQTT

      Apri la regola creata nella console e controlla l'argomento in cui l'operazione della regola ripubblicherà il messaggio.

    • Controlla il ruolo utilizzato dalla regola

      L'operazione della regola deve disporre dell'autorizzazione per ricevere l'argomento originale e pubblicare il nuovo argomento.

      Le policy che autorizzano la regola a ricevere i dati dei messaggi e a ripubblicarli sono specifiche degli argomenti utilizzati. Se si modifica l'argomento utilizzato per ripubblicare i dati del messaggio, è necessario aggiornare il ruolo dell'operazione della regola per aggiornare la policy in modo che corrisponda all'argomento corrente.

      Se si sospetta che questo sia il problema, modificare l'operazione Ripubblica regola e creare un nuovo ruolo. I nuovi ruoli creati dall'operazione della regola ricevono le autorizzazioni necessarie per eseguire queste operazioni.

Fase 4: Esamina i risultati e i passaggi successivi

In questo tutorial:
  • Hai creato e testato un argomento di SNS notifica e un abbonamento Amazon.

  • Hai utilizzato una semplice SQL query e le funzioni di un'istruzione Rule Query per creare un nuovo messaggio per la notifica.

  • Hai creato una AWS IoT regola per inviare una SNS notifica Amazon che utilizza il tuo payload di messaggi personalizzato.

  • Hai usato il MQTT client per testare la tua AWS IoT regola.

Passaggi successivi

Dopo aver inviato alcuni messaggi di testo con questa regola, prova a sperimentarla per vedere come la modifica di alcuni aspetti del tutorial influisce sul messaggio e quando viene inviato. Ecco alcune idee per iniziare.

  • Cambia il device_id nell'argomento del messaggio di input e osserva l'effetto nel contenuto del messaggio di testo.

  • Modifica i campi selezionati nell'istruzione query della regola e osserva l'effetto nel contenuto del messaggio di testo.

  • Modifica il test nell'istruzione query della regola per verificare una temperatura minima anziché una temperatura massima. Ricordati di cambiare il nome di max_temperature!

  • Aggiungi un'azione della regola di ripubblicazione per inviare un MQTT messaggio quando viene inviata una SNS notifica.

  • Prova il prossimo tutorial di questa serie e scopri come Tutorial: Archiviazione dei dati del dispositivo in una tabella DynamoDB.