Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Tutorial: Envío de una notificación de Amazon SNS
En este tutorial se muestra cómo crear una regla AWS IoT que envíe datos de mensajes MQTT a un tema de Amazon SNS para que puedan enviarse como un mensaje de texto SMS.
En este tutorial, creará una regla que envíe datos de mensajes de un sensor meteorológico a todos los suscriptores de un tema SNS de Amazon, siempre que la temperatura supere el valor establecido en la regla. La regla detecta si la temperatura notificada supera el valor establecido por la regla y, a continuación, crea una nueva carga de mensajes que incluye únicamente el identificador del dispositivo, la temperatura notificada y el límite de temperatura que se ha superado. La regla envía la carga útil del mensaje nuevo como un documento JSON a un tema de SNS, que notifica a todos los suscriptores del tema de SNS.
Lo que aprenderá en este tutorial:
-
Cómo crear y probar una notificación de Amazon SNS
-
Cómo llamar a una notificación de Amazon SNS desde una regla AWS IoT
-
Cómo utilizar consultas y funciones SQL sencillas en una declaración de consulta de reglas
-
Puede utilizar el cliente MQTT de AWS IoT para probar una regla .
Para completar este tutorial se necesitan aproximadamente 30 minutos.
En este tutorial, podrá:
Antes de empezar este tutorial, asegúrese de que tiene:
-
Configurar Cuenta de AWS
Necesitará su Cuenta de AWS y la consola de AWS IoT para completar este tutorial.
-
Vea los mensajes MQTT con el cliente AWS IoT MQTT revisado
Asegúrese de poder utilizar el cliente MQTT para suscribirse a un tema y publicar en él. En este procedimiento, utilizará el cliente MQTT para probar la nueva regla.
-
Revisado el Amazon Simple Notification Service
Si no ha utilizado Amazon SNS anteriormente, consulte Configuración del acceso a Amazon SNS. Si ya ha completado otros tutoriales AWS IoT, su Cuenta de AWS ya debería estar configurado correctamente.
Paso 1: crear un tema de Amazon SNS que envía un mensaje de texto SMS
Este procedimiento explica cómo crear el tema de Amazon SNS al que su sensor meteorológico puede enviar datos de mensajes. A continuación, el tema de Amazon SNS notificará a todos sus suscriptores mediante un mensaje de texto SMS el límite de temperatura que se ha superado.
Paso 1: Crear un tema de Amazon SNS que envía un mensaje de texto SMS
-
Cree un tema de Amazon SNS.
-
Inicie sesión en la consola de Amazon SNS
. -
En el panel de navegación izquierdo, elija Topics (Temas).
-
En la página Temas, elija Crear tema.
-
En Detalles, elija el tipo Estándar. De forma predeterminada, la consola crea un tema FIFO.
-
En Nombre, introduzca el nombre del tema de SNS. En este tutorial, escriba
high_temp_notice
. -
Desplácese hasta el final de la página y elija Crear tema.
En la consola se abre la página Details (Detalles) del nuevo tema.
-
-
Crear un una suscripción de Amazon SNS.
nota
Es posible que el número de teléfono que utilice en esta suscripción conlleve cargos por mensajería de texto debido a los mensajes que envíe en este tutorial.
-
En la página de detalles del tema high_temp_notice, seleccione Crear suscripción.
-
En Crear suscripción, en la sección Detalles, en la lista de protocolos, selecciona SMS.
-
En punto de conexión, introduzca el número de teléfono que puede recibir mensajes de texto. Asegúrese de escribirlo de forma que comience con
+
, incluya el código de país y área y no incluya ningún otro carácter de puntuación. -
Seleccione Crear una suscripción.
-
-
Pruebe la notificación de Amazon SNS.
-
En la consola de Amazon SNS
, en el panel de navegación izquierdo, seleccione Temas. -
Para abrir la página de detalles del tema, en Temas, en la lista de temas, elija high_temp_notice.
-
Para abrir la página Publicar mensaje en un tema, en la página de detalles de high_temp_notice, seleccione Publicar mensaje.
-
En Publicar mensaje en un tema, en la sección Cuerpo del mensaje, en Cuerpo del mensaje para enviar al punto de conexión, introduzca un mensaje corto.
-
Desplácese a la parte inferior de la página y seleccione Publicar mensaje.
-
En el teléfono con el número que utilizó anteriormente al crear la suscripción, confirme que ha recibido el mensaje.
Si no ha recibido el mensaje de prueba, vuelva a comprobar el número de teléfono y la configuración de su teléfono.
Asegúrese de poder publicar los mensajes de prueba desde la consola de Amazon SNS
antes de continuar con el tutorial. -
Paso 2: Crear una regla AWS IoT para enviar el mensaje de texto
La regla AWS IoT que creará en este tutorial se suscribe a los temas de MQTT device/
donde device_id
/data
es el ID del dispositivo que envió el mensaje. Estos temas se describen mediante un filtro de temas como device_id
device/+/data
, donde +
es un carácter comodín que coincide con cualquier cadena entre los dos caracteres de barra diagonal. Esta regla también comprueba el valor del campo temperature
en la carga útil del mensaje.
Cuando la regla recibe un mensaje de un tema coincidente, toma el
del nombre del tema, el valor device_id
temperature
de la carga útil del mensaje y añade un valor constante para el límite que está probando, y envía estos valores como un documento JSON a un tema de notificación de Amazon SNS.
Por ejemplo, un mensaje MQTT del dispositivo sensor meteorológico número 32 utiliza el tema device/32/data
y tiene una carga útil de mensajes similar a la siguiente:
{ "temperature": 38, "humidity": 80, "barometer": 1013, "wind": { "velocity": 22, "bearing": 255 } }
La declaración de consulta de reglas de la regla toma el valor temperature
de la carga útil del mensaje, el
del nombre del tema, y añade el valor device_id
max_temperature
constante para enviar una carga útil de mensajes similar a la siguiente al tema de Amazon SNS:
{ "device_id": "32", "reported_temperature": 38, "max_temperature": 30 }
Para crear una regla AWS IoT que detecte un valor de temperatura superior al límite y crear los datos para enviarlos al tema Amazon SNS
-
Si esta es su primera regla, elija Crear o Crear una regla.
-
En Crear una regla:
-
En Name (Nombre), escriba
temp_limit_notify
.Recuerde que el nombre de una regla debe ser único en su Cuenta de AWS y región, y no puede tener espacios. Hemos utilizado un carácter de subrayado en este nombre para separar las dos palabras del nombre de la regla.
-
En Descripción, describa la regla.
Una descripción significativa hace que sea más fácil recordar lo que hace esta regla y por qué la creó. La descripción puede ser tan larga como sea necesario, por lo que debe ser lo más detallada posible.
-
-
En Declaración de consulta de la regla de Crear una regla:
-
En la versión Uso de SQL, seleccione 2016-03-23.
-
En el cuadro de edición de la declaración de consulta de reglas, introduzca la siguiente declaración:
SELECT topic(2) as device_id, temperature as reported_temperature, 30 as max_temperature FROM 'device/+/data' WHERE temperature > 30
Esta declaración:
-
Escucha los mensajes MQTT con un tema que coincida con el filtro de temas
device/+/data
y que tengan un valortemperature
superior a 30. -
Selecciona el segundo elemento de la cadena de temas y lo asigna al campo
device_id
. -
Selecciona el campo
temperature
de valor de la carga útil del mensaje y lo asigna al camporeported_temperature
. -
Crea un valor constante
30
para representar el valor límite y lo asigna al campomax_temperature
.
-
-
-
Para abrir la lista de acciones de la regla para esta regla, en Establecer una o más acciones, seleccione Añadir acción.
-
En Seleccionar una acción, elija Enviar un mensaje como una notificación push SNS.
-
Para abrir la página de configuración de la acción seleccionada, en la parte inferior de la lista de acciones, seleccione Configurar acción.
-
En Acciones de configuración:
-
En el objetivo SNS, elija Seleccionar, busque su tema SNS llamado high_temp_notice y elija Seleccionar.
-
En Formato del mensaje, elija RAW.
-
En Elija o cree un rol para conceder acceso a AWS IoT para que realice esta acción, elija Crear rol.
-
En Crear un nuevo rol, en Nombre, escriba un nombre único para el nuevo rol. Para este tutorial, escriba
sns_rule_role
. -
Elija Crear rol.
Si va a repetir este tutorial o a reutilizar un rol existente, elija Actualizar rol antes de continuar. Esto actualiza el documento de política del rol para que funcione con el objetivo de SNS.
-
-
Seleccione Añadir acción y vuelva a la página Crear una regla.
En el icono de la nueva acción, debajo de Enviar un mensaje como notificación push de SNS, puede ver el tema de SNS al que se referirá su regla.
Esta es la única acción de regla que añadirá a esta regla.
-
Para crear la regla y completar este paso, en Crear una regla, desplácese hasta la parte inferior y seleccione Crear regla.
Paso 3: Probar la regla AWS IoT y la notificación de Amazon SNS
Para probar la nueva regla, utilizará el cliente MQTT para publicar y suscribirse a los mensajes MQTT utilizados por esta regla.
Abra el cliente MQTT de la consola AWS IoT
Para utilizar el cliente MQTT para probar su regla
-
En el cliente MQTT de la consola de AWS IoT
, suscríbase a los temas de entrada, en este caso, device/+/data
.-
En el cliente MQTT, en Suscripciones, seleccione Suscribirse a un tema.
-
En el tema de suscripción, introduzca el tema del filtro de temas de entrada,
device/+/data
. -
No cambie el resto de los valores predeterminados de los demás ajustes.
-
Elija Suscribirse al tema.
En la columna Suscripciones, aparece
device/+/data
en Publicar en un tema.
-
-
Publique un mensaje en el tema de entrada con un identificador de dispositivo específico,
device/32/data
No puede publicar en MQTT temas que contengan caracteres comodín.-
En el cliente MQTT, en Suscripciones, seleccione Publicar en tema.
-
En el campo Publicar, introduzca el nombre del tema de entrada,.
device/32/data
-
Copie los datos de ejemplo que se muestran aquí y, en el cuadro de edición situado debajo del nombre del tema, péguelos.
{ "temperature": 38, "humidity": 80, "barometer": 1013, "wind": { "velocity": 22, "bearing": 255 } }
-
Elija Publicar en tema para publicar su mensaje MQTT.
-
-
Confirme que se envió el mensaje de texto.
-
En el cliente de MQTT, en Suscripciones, hay un punto verde junto al tema al que se ha suscrito anteriormente.
El punto verdes indica que se han recibido uno o más mensajes nuevos desde la última vez que los consultó.
-
En Suscripciones, seleccione device/+/data para comprobar que la carga útil de los mensajes coincide con la que acaba de publicar y tiene este aspecto:
{ "temperature": 38, "humidity": 80, "barometer": 1013, "wind": { "velocity": 22, "bearing": 255 } }
-
Compruebe el teléfono que utilizó para suscribirse al tema SNS y confirme que el contenido de la carga útil del mensaje tiene este aspecto:
{"device_id":"32","reported_temperature":38,"max_temperature":30}
Observe que el valor
device_id
es una cadena entre comillas y el valortemperature
es numérico. Esto se debe a que la funcióntopic()
extrajo la cadena del nombre del tema del mensaje de entrada, mientras que el valortemperature
utiliza el valor numérico de la carga útil del mensaje de entrada.Si desea convertir el valor
device_id
en un valor numérico, sustituyatopic(2)
en la declaración de consulta de reglas por:cast(topic(2) AS DECIMAL)
Tenga en cuenta que la conversión del valor
topic(2)
a un valor numéricoDECIMAL
solo funcionará si esa parte del tema sólo contiene caracteres numéricos.
-
-
Intente enviar un mensaje MQTT en el que la temperatura no supere el límite.
-
En el cliente MQTT, en Suscripciones, seleccione Publicar en tema.
-
En el campo Publicar, introduzca el nombre del tema de entrada,.
device/33/data
-
Copie los datos de ejemplo que se muestran aquí y, en el cuadro de edición situado debajo del nombre del tema, péguelos.
{ "temperature": 28, "humidity": 80, "barometer": 1013, "wind": { "velocity": 22, "bearing": 255 } }
-
Para enviar su mensaje MQTT, seleccione Publicar en tema.
Debería ver el mensaje que envió en la suscripción
device/+/data
. Sin embargo, como el valor de la temperatura está por debajo de la temperatura máxima en la sentencia de consulta de la regla, no debería recibir un mensaje de texto.Si no observa el comportamiento correcto, consulte los consejos para la solución de problemas.
-
Solución de problemas con la regla de volver a publicar mensajes
He aquí algunas cosas que debe comprobar, en caso de que no esté viendo los resultados que espera.
-
¿Tiene un mensaje de error
Si apareció un error al publicar el mensaje de entrada, corrija primero ese error. Los siguientes pasos pueden ayudarle a corregir ese error.
-
No ve el mensaje de entrada en el cliente MQTT
Cada vez que publique su mensaje de entrada en el tema
device/22/data
, dicho mensaje debería aparecer en el cliente MQTT si se ha suscrito al filtro de temasdevice/+/data
tal y como se describe en el procedimiento.Cosas que debe comprobar
-
Compruebe el filtro de temas al que se ha suscrito
Si se ha suscrito al tema del mensaje de entrada como se describe en el procedimiento, debería ver una copia del mensaje de entrada cada vez que lo publique.
Si no ve el mensaje, compruebe el nombre del tema al que se suscribió y compárelo con el tema en el que lo publicó. Los nombres de los temas distinguen entre mayúsculas y minúsculas y el tema al que te suscribiste debe ser idéntico al tema en el que publicaste la carga útil del mensaje.
-
Compruebe la función de publicación de mensajes
En el cliente MQTT, en Suscripciones, elija device/+/data, marque el tema del mensaje de publicación y, a continuación, elija Publicar en tema. Debería ver la carga útil del mensaje en el cuadro de edición situado debajo del tema en la lista de mensajes.
-
-
Si no recibe el mensaje SMS:
Para que su regla funcione, debe tener la política correcta que la autorice a recibir un mensaje y enviar una notificación SNS, y debe recibir el mensaje.
Cosas que debe comprobar
-
Compruebe la Región de AWS de su cliente MQTT y la regla que ha creado
La consola en la que ejecuta el cliente MQTT debe estar en la misma región AWS que la regla que creó.
-
Compruebe que el valor de temperatura de la carga útil del mensaje supera el umbral de prueba
Si el valor de temperatura es inferior o igual a 30, tal como se define en la sentencia de consulta de la regla, la regla no realizará ninguna de sus acciones.
-
Compruebe el tema del mensaje de entrada en la declaración de consulta de la regla
Para que la regla funcione, debe recibir un mensaje con el nombre del tema que coincida con el filtro de tema de la cláusula FROM de la declaración de consulta de la regla.
Compruebe la ortografía del filtro de temas de la declaración de consulta de reglas con la del tema en el cliente MQTT. Los nombres de los temas distinguen mayúsculas de minúsculas y el tema del mensaje debe coincidir con el filtro de tema de la declaración de consulta de reglas.
-
Compruebe el contenido de la carga útil del mensaje de entrada
Para que la regla funcione, debe encontrar el campo de datos en la carga útil del mensaje que se declara en la sentencia SELECT.
Compruebe la ortografía del campo
temperature
en la declaración de consulta de la regla con la de la carga útil del mensaje en el cliente MQTT. Los nombres de los campos distinguen mayúsculas de minúsculas y el campotemperature
de la declaración de consulta de la regla debe ser idéntico al campotemperature
de la carga útil del mensaje.Asegúrese de que el documento JSON de la carga útil del mensaje tenga el formato correcto. Si el JSON contiene algún error, como la falta de una coma, la regla no podrá leerlo.
-
Compruebe el tema del mensaje que se ha vuelto a publicar en la acción de la regla
El tema en el que la acción de volver a publicar la regla publica el nuevo mensaje debe coincidir con el tema al que se suscribió en el cliente MQTT.
Abra la regla que creó en la consola y seleccione el tema en el que la acción de la regla volverá a publicar el mensaje.
-
Compruebe el rol que utiliza la regla
La acción de la regla debe tener permiso para recibir el tema original y publicar el tema nuevo.
Las políticas que autorizan a la regla a recibir datos de los mensajes y volver a publicarlos son específicas de los temas utilizados. Si cambia el tema utilizado para volver a publicar los datos del mensaje, debe actualizar la función de la acción de regla para actualizar su política y que coincida con el tema actual.
Si sospecha que este es el problema, edite la acción Volver a publicar la regla y cree un nuevo rol. Los nuevos roles creados por la acción de regla reciben las autorizaciones necesarias para realizar estas acciones.
-
Paso 4: Revisar los resultados y los siguientes pasos
En este tutorial:
-
Creó y probó una suscripción y un tema de notificación de Amazon SNS.
-
Utilizó una consulta SQL sencilla y funciones en una declaración de consulta de reglas para crear un mensaje nuevo para su notificación.
-
Ha creado una regla AWS IoT para enviar una notificación de Amazon SNS que utiliza su carga útil de mensaje personalizada.
-
Ha utilizado el cliente MQTT para probar su regla AWS IoT.
Siguientes pasos
Después de enviar unos cuantos mensajes de texto con esta regla, pruebe a experimentar con ella para ver cómo el cambio de algunos aspectos del tutorial afecta al mensaje y al momento en que se envía. He aquí algunos ejemplos para empezar.
-
Cambie el
device_id
en el tema del mensaje de entrada y observe el efecto en los contenidos del mensaje de texto. -
Cambie los campos seleccionados en la sentencia de consulta de la regla y observe el efecto en el contenido del mensaje de texto.
-
Cambie la prueba en la declaración de consulta de reglas para probar una temperatura mínima en lugar de una temperatura máxima. ¡Recuerde cambiar el nombre de
max_temperature
! -
Añada una acción de regla de republicación para enviar un mensaje MQTT cuando se envíe una notificación SNS.
-
Pruebe el siguiente tutorial de esta serie y aprenda cómo Tutorial: Almacenamiento de datos de dispositivos en una tabla de DynamoDB.