0% encontró este documento útil (0 votos)
186 vistas12 páginas

Guía de Integración Node-RED y APIs

Este documento proporciona información sobre cómo integrar Node-RED con APIs REST utilizando solicitudes HTTP. Explica cómo utilizar el nodo HTTP Request de Node-RED para realizar solicitudes GET, establecer encabezados y parámetros de consulta. También incluye ejemplos de integración con APIs como USGS, AEMET, 2N y Twilio para enviar SMS.

Cargado por

Alejo Boc Ho
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
186 vistas12 páginas

Guía de Integración Node-RED y APIs

Este documento proporciona información sobre cómo integrar Node-RED con APIs REST utilizando solicitudes HTTP. Explica cómo utilizar el nodo HTTP Request de Node-RED para realizar solicitudes GET, establecer encabezados y parámetros de consulta. También incluye ejemplos de integración con APIs como USGS, AEMET, 2N y Twilio para enviar SMS.

Cargado por

Alejo Boc Ho
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Integración con API REST

Para integrar Node-Red con APIs que utilizan el protocolo HTTP demos usar las HTTP
requests de Node-RED. HTTP recipes en Node-RED: [Link]

Nodo HTTP request: [Link]

NOTA: antes de usar el nodo de HTTP request para acceder a una API pública buscar
en [Link] si ya de ha publicado el nod que lo haga. Por
ejemplo [Link]

HTTP requests

 Simple GET request


 Set the url of a request
 Set the url of a request using a template
 Set query string parameters
 Get a parsed JSON response
 Get a binary response
 Set a request header

HTTP request para novatos: [Link]


node-beginners/

El nodo de solicitud http se mejoró enormemente en Node-RED versión 0.20 con la adición
de los modos de autenticación Bearer y Digest. Además, se agregó una nueva opción para
permitir la creación de una cadena de consulta de [Link].

El nodo de solicitud HTTP opcionalmente puede codificar automáticamente [Link]


como parámetros de cadena de consulta para una solicitud GET.

Por ejemplo:
Ejemplo Básico
Ejemplo sencillo de recopilación de datos regularmente de una web de
terremotos [Link] convertir los datos y generar una alerta si el
terremoto tiene un valor mayor o igual que 7.
Obtengo los terremotos significativos de los últimos 30
días: [Link]
%22%2C%22search%22%3Anull%2C%22listFormat%22%3A%22default%22%2C%22sort
%22%3A%22newest%22%2C%22basemap%22%3A%22terrain%22%2C%22autoUpdate
%22%3Atrue%2C%22restrictListToMap%22%3Afalse%2C%22timeZone%22%3A%22utc
%22%2C%22mapposition%22%3A%5B%5B-78.49055166160312%2C74.8828125%5D%2C
%5B78.42019327591201%2C325.1953125%5D%5D%2C%22overlays%22%3A%7B
%22plates%22%3Atrue%7D%2C%22viewModes%22%3A%7B%22map%22%3Atrue%2C
%22list%22%3Atrue%2C%22settings%22%3Afalse%2C%22help%22%3Afalse%7D%7D
Tutorial: [Link]
Ejemplo AEMET

Ejemplo más complejo donde se deben realizar varios pasos para obtener los datos de la
AEMET.

Ejemplos: [Link]
%20REST
Ejemplo de integración con API de lectores 2N
Es posible integrar Node-RED con los lectores de tarjetas de 2N. Card readers
AccessUnit: [Link]
Manual API: [Link]

Si quiero abrir remotamente el switch mediante Node-RED, me conecto a las APIs:

 La API la pruebo conectándome a [Link]


 Conocer estado del switch: [Link]
 Cambiar el estado del switch: [Link]

Usa digest authentication:

 [Link]
 [Link]
 Diferencia con basic auth: [Link]
digest-authentication

Envío de Emails
Nodo para envío de emails: [Link]
npm: [Link]

Si está accediendo a GMail, es posible que necesites habilitar una contraseña de


aplicación o habilitar un acceso menos seguro a través de la configuración de su cuenta
de Google.
Si inicias directamente no deja hacerlo google
porque: [Link]
p=lsa_blocked&hl=es&visit_id=637210948261881071-1978480038&rd=1

Para resolverlo:

 Poner una password de aplicación para Node-RED si se usa autenticación en dos


pasos: [Link]
 Deshabilitar el acceso
seguro: [Link]

Solucionar problemas si no puedes loguearte con tu cuenta de


gmail: [Link]
3645915622&rd=2#cantsignin

Input: Repetidamente recibe correos electrónicos de un servidor IMAP o POP3 y los


reenvía como mensajes si aún no los ha visto. El asunto se carga en [Link] y
[Link] es el cuerpo del texto sin formato. Si hay texto / html, se devuelve en
[Link]. [Link] y [Link] también se establecen si los necesita.

Además, [Link] contiene el objeto de encabezado completo que incluye a, cc y otras


propiedades potencialmente útiles.

Output: Envía [Link] como un correo electrónico, con un asunto de [Link]. El


destinatario predeterminado del mensaje se puede configurar en el nodo; si se deja en
blanco, se debe configurar con la propiedad [Link] del mensaje entrante.

Opcionalmente, puede anular la dirección de correo electrónico desde configurando


[Link], de lo contrario, el nodo utilizará la configuración de ID de usuario desde la
conexión del servidor.
El payload puede tener formato html. Si payload es un búfer binario, se convertirá en un
archivo adjunto. El nombre del archivo debe establecerse usando [Link].
Opcionalmente, se puede agregar [Link] para el texto del cuerpo.

Alternativamente, puede proporcionar [Link] que deben contener una matriz de


uno o más archivos adjuntos en formato nodemailer.

Estos nodos utilizan el módulo npm imap y nodemailer.

 [Link]
 [Link]

Ejemplos:

 [Link]
node-red-43723f
 [Link]

Otros relativos a email:

 mail parser: [Link]


 adaptación de nodemailer: [Link]
nodemailer-adapter
 simple sendmail: [Link]
 formateo de emails recibidos: [Link]
email

Envio SMS
Mandar SMSs usando el servicio de Twilio: [Link]
Pricing: [Link]
Free account: [Link]
account
Trial de Twilio: [Link]
Free-Trial-work-
Limitaciones de la cuenta
gratuita: [Link]
Limitations
TwiML: [Link]
Nodo: [Link]

Envía un mensaje SMS o realiza una llamada de voz utilizando el servicio Twilio. El nodo
de salida Twilio está configurado para enviar SMS o hacer llamadas, dependiendo de la
opción seleccionada ingrese el número de teléfono o número de teléfono y una URL para
crear el archivo de respuesta TWiML.

[Link] se usa como el cuerpo del mensaje. El nodo se puede configurar con el
número al que enviar el mensaje. Alternativamente, si el número se deja en blanco, se
puede configurar usando [Link]. La carga útil también puede ser la URL para crear el
archivo de respuesta TWiML.

Debe tener una cuenta con Twilio para usar este nodo.

Aquí hay un ejemplo del uso de este nodo para crear un IVR
simple: [Link]
SMS con Node-RED USANDO UN PINCHO 3G: [Link]
to-make-an-sms-app-for-raspberry-pi-with-node-red
Telegram

Este paquete contiene un receptor y un nodo emisor que actúan como un bot de Telegram.
Lo único que se requiere es el token que puede recuperar el bot de telegram @botfather.

Bots en Telgram: [Link]


API Telegram: [Link]
Nodo: [Link]
Basado en [Link]
El nodo de entrada recibe mensajes del bot y envía un objeto de mensaje con el siguiente
layout:

 [Link] contiene los detalles del mensaje


 chatId: la identificación única del chat. Este valor debe pasarse al nodo de salida al
responder al mismo chat.
 type: el tipo de mensaje recibido: mensaje, foto, audio, ubicación, video, animación,
voz, contacto
 content: contenido del mensaje recibido: cadena o id_archivo, u objeto con datos
completos (ubicación, contacto)
 [Link] contiene el objeto de mensaje original de la
librería [Link]

El nodo de salida envía el contenido a un chat específico. Un flujo de eco simple se ve


así:
Nodo de Configuración

Lo único que se debe ingresar aquí es el token que recibió de @botfather al crear un nuevo
bot. El nodo contiene dos propiedades opcionales: users y chatids. Puede ingresar una
lista de nombres y/o chatids que estén autorizados para usar este bot.

Receiver Node

Este nodo recibe todos los mensajes de un chat. Simplemente invita al bot a un chat.
Puede controlar si el bot recibe todos los mensajes llamando / setprivacy @botfather.

El mensaje original de la biblioteca de nodos subyacente se almacena en


[Link].

[Link] contiene los datos más importantes como chatId, tipo y contenido. El
contenido depende del tipo de mensaje. Si recibe un mensaje, el contenido es una cadena.
Si recibe una ubicación, el contenido es un objeto que contiene latitud y longitud.

La segunda salida se activa cuando se aplica seguridad y el usuario no está autorizado


para acceder al bot.

Cuando el nodo receptor recibe datos como videos, documentos, etc., el archivo se
descarga automáticamente al disco duro local cuando saveDataDir se configura en el
nodo de configuración. El directorio también forma parte de la carga útil del mensaje:
[Link]. Además, el mensaje contiene el enlace de descarga directa en la carga
útil: [Link]

Los siguientes tipos pueden ser recibidos:

 message – content is text


 photo – content is the file_id of the photo with the highest resolution (all photos are
stored in the photos property of the output object)
 audio – content is the file_id of the audio file
 document – content is the file_id of the document
 sticker – content is the file_id of the sticker
 animation – content is the file_id of the animation file
 video – content is the file_id of the video file
 video_note – content is the file_id of the video note file
 voice – content is the file_id of the voice file
 location – content is an object with latitude and longitude
 venue – content is the venue object
 contact – content is the contact information object Note that media groups are
received not as group, but as separate messages of type photo and video.

Sender Node

Este nodo envía la carga útil al chat. La carga útil debe contener los siguientes campos:

 [Link] – chatId o una matriz de chatIds si desea enviar el mismo


mensaje a muchos chats
 [Link], p.e. “message»
 [Link] – su mensaje de texto
 [Link] – se establece cuando ocurre una excepción
Junto al envío de contenido, el nodo remitente se puede utilizar para enviar comandos
directos a la API. [Link] debe establecerse en uno de los
siguientes, [Link] contiene los argumentos necesarios, mientras se pasan
argumentos adicionales en [Link]:

 editMessageCaption
 editMessageText
 editMessageReplyMarkup
 deleteMessage
 editMessageLiveLocation
 stopMessageLiveLocation
 callback_query
 inline_query
 action
 leaveChat
 kickChatMember
 unbanChatMember
 restrictChatMember
 promoteChatMember
 exportChatInviteLink
 setChatPhoto
 deleteChatPhoto
 setChatTitle
 setChatDescription
 pinChatMessage
 unpinChatMessage
 getChatAdministrators
 getChatMembersCount
 getChat
 getChatMember

Command Node

El nodo de comando se puede usar para activar un mensaje cuando se recibe un comando
específico: p. help.

Tiene dos salidas

1. se activa cuando se recibe el comando


2. se activa cuando no se recibe el comando

El segundo es útil cuando quieres usar un teclado. Los comandos generalmente


comienzan con /. De acuerdo con la documentación de la API de Telegram, el comando
debe emitirse siguiendo el nombre del bot como /foo@YourBot. Esto es importante cuando
agrega varios bots diferentes a un solo chat grupal. Para evitar que el bot maneje
comandos que no se le envían directamente usando la notación larga, puede establecer el
modo “estricto» en las opciones del nodo de comando. En este caso, el bot solo acepta la
notación de comando completo en los chats grupales.

Event Node

El nodo recibe eventos del bot como:

 callback_query de teclados en línea.


 inline_query
 edited_message que se activa cuando alguien modifica un mensaje ya enviado.
 edited_message_text que se activa cuando alguien modifica un mensaje de texto ya
enviado.
 edited_message_caption que se activa cuando alguien modifica un caption ya
enviado, p.e. una foto
 channel_post que se activa cuando el bot es miembro de un canal público
(/setprivacy to disabled).
 edited_channel_post, que se activa cuando alguien modifica un mensaje ya enviado
en un canal público.
 edited_channel_post_text, que se activa cuando alguien modifica un mensaje de
texto ya enviado en un canal público.
 edited_channel_post_caption que se activa cuando alguien altera un caption ya
enviado de p.e. una foto en un canal público.

Reply Node

El nodo de respuesta espera una respuesta a un mensaje específico. Debe usarse junto
con el nodo emisor.

Ejemplos

Implementar un comando help:


Implementar un teclado:

La respuesta es enviada a la segunda salida que activa el flujo inferior. Los datos se pasan
a través de propiedades globales aquí.
Ver más ejemplos en: [Link]
Twitter

Nodos para usar twitter con Node-RED

Nodo: [Link]
Es necesario darse de alta como developer en
Twitter: [Link]

Proporciona dos nodos: uno para recibir mensajes y otro para enviar.

Nodo de entrada de Twitter. Se puede usar para buscar:

 el público o la transmisión de un usuario para tweets que contienen el término de


búsqueda configurado
 todos los tweets de usuarios específicos
 mensajes directos recibidos por el usuario autenticado

El nodo de salida de Twitter tuitea [Link].

Para enviar un mensaje directo (DM), use una carga útil como:
 D {username} {message}

Consumir streaming data de


Twitter: [Link]
Open Weather Map
Obtener datos climatológicos: [Link]

Se podría usar la API y hacer una integración similar a la vista en el apartado de API REST,
pero en este caso al haber un nodo, se simplifica todo.

Y ver openweathermap y la API: [Link]

Open Weather Map:

 Nodo: [Link]
 Módulo de Python: [Link]

Un nodo de Nodo-RED que obtiene el informe meteorológico y el pronóstico de


OpenWeatherMap.

Dos nodos que obtienen el informe meteorológico y el pronóstico de OpenWeatherMap.

Se requiere una clave API para usar estos nodos. Para obtener una clave API, vaya a
OpenWeatherMap.

Input Node: Obtiene el clima actual o el pronóstico de 5 días en una ubicación


especificada por ciudad y país o latitud y longitud cada 10 minutos, y genera un mensaje
si algo ha cambiado.

Query Node: Acepta una entrada para activar la obtención del clima actual, ya sea desde
una ciudad y país específicos o latitud y longitud.

Resultados de clima actual:

 description – a brief verbal description of the current weather for human reading.
 weather – a very short description of the current weather.
 icon – the weather icon code for the current conditions.
 id – the id given to the current weather by OpenWeatherMap
 tempc – the current ground temperature at that location in Celsius.
 tempk – the current ground temperature at that location in Kelvin.
 humidity – the current relative humidity at the location in percent.
 windspeed – the current wind speed at the location in metres per second.
 winddirection – the current wind direction at the location in meteorological degrees.
 location – the name of the location from which the data was sourced.

Pronóstico de 5 días:
 dt – epoch timestamp
 pressure – in hPa
 humidity – in %
 speed – wind speed in metres per second
 deg – wind direction in degrees
 clouds – cloudiness in %
 temp – an object with various temperatures in degC,
 day, min, max, night, eve, morn
 weather – an object with some misc. data,
 description, icon, main, id

Más información en: [Link]

Ejemplos:

 [Link]
 dashboard: [Link]
b5b7d5da14d24e71de447e6aa290937e
 Otro dashboard: [Link]
services-and-dashboards/2841/9

IFTTT

Cualquiera puede pensar que node-red es un superconjunto de IFTTT y que todo lo que
puede hacer con IFTTT debe poder hacerlo con node-red. Pero en algunos casos nos
puede ser útil y más rápido hacerlo con IFTTT.

Tres librerías:

 Un nodo para conectarse al canal ifttt Maker: [Link]


red-contrib-ifttt
 Otras similar: [Link]

Es necesaria la API key de IFTTT.

Maker Webhooks: [Link]

Me permite hacer llamadas a webhooks que se integran con herramientas de terceros.

Publica [Link].value1, 2 y 3 en el canal Maker en IFTTT en el canal especificado.

Creo el evento “nodered” para mandar datos al webhook.

Otra librería más avanzada pero en un estado de desarrollo temprano


es: [Link]

Ejemplos:

 [Link]

También podría gustarte