Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Integración Con API REST
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: https://cookbook.nodered.org/http/
NOTA: antes de usar el nodo de HTTP request para acceder a una API pública buscar
en https://flows.nodered.org/ si ya de ha publicado el nod que lo haga. Por
ejemplo https://flows.nodered.org/node/node-red-node-openweathermap
HTTP requests
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 msg.payload.
Por ejemplo:
Ejemplo Básico
Ejemplo sencillo de recopilación de datos regularmente de una web de
terremotos https://earthquake.usgs.gov/, 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: https://earthquake.usgs.gov/earthquakes/map/#%7B%22feed%22%3A%2230day_sig
%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: https://nodered.org/docs/tutorials/second-flow
Ejemplo AEMET
Ejemplo más complejo donde se deben realizar varios pasos para obtener los datos de la
AEMET.
Ejemplos: https://github.com/jecrespo/Curso-Node-RED/tree/master/01-REQUEST%20API
%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: https://www.2n.cz/en_GB/products/ip-access-control
Manual API: https://wiki.2n.cz/hip/hapi/latest/en
https://en.wikipedia.org/wiki/Digest_access_authentication
https://diego.com.es/autenticacion-http
Diferencia con basic auth: https://stackoverflow.com/questions/2384230/what-is-
digest-authentication
Envío de Emails
Nodo para envío de emails: https://flows.nodered.org/node/node-red-node-email
npm: https://www.npmjs.com/package/node-red-node-email
Para resolverlo:
https://www.npmjs.com/package/imap
https://www.npmjs.com/package/nodemailer
Ejemplos:
https://www.hackster.io/Punch-Through/email-temperature-warning-system-using-
node-red-43723f
https://www.hackster.io/rjrajbir/email-alert-with-node-red-f3826e
Envio SMS
Mandar SMSs usando el servicio de Twilio: https://www.twilio.com/
Pricing: https://www.twilio.com/pricing
Free account: https://www.twilio.com/docs/usage/tutorials/how-to-use-your-free-trial-
account
Trial de Twilio: https://support.twilio.com/hc/en-us/articles/223136107-How-does-Twilio-s-
Free-Trial-work-
Limitaciones de la cuenta
gratuita: https://support.twilio.com/hc/en-us/articles/360036052753-Twilio-Free-Trial-
Limitations
TwiML: https://www.twilio.com/docs/voice/twiml
Nodo: https://flows.nodered.org/node/node-red-node-twilio
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.
msg.payload 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 msg.topic. 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: https://flows.nodered.org/flow/637b5f6128a8d423503f
SMS con Node-RED USANDO UN PINCHO 3G: https://maker.pro/raspberry-pi/tutorial/how-
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.
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.
msg.payload 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.
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:
msg.payload.path. Además, el mensaje contiene el enlace de descarga directa en la carga
útil: msg.payload.weblink
Sender Node
Este nodo envía la carga útil al chat. La carga útil debe contener los siguientes campos:
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.
Event Node
Reply Node
El nodo de respuesta espera una respuesta a un mensaje específico. Debe usarse junto
con el nodo emisor.
Ejemplos
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: https://flows.nodered.org/node/node-red-contrib-telegrambot
Twitter
Nodo: https://flows.nodered.org/node/node-red-node-twitter
Es necesario darse de alta como developer en
Twitter: https://developer.twitter.com/en/apps
Proporciona dos nodos: uno para recibir mensajes y otro para enviar.
Para enviar un mensaje directo (DM), use una carga útil como:
D {username} {message}
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.
Nodo: https://flows.nodered.org/node/node-red-node-openweathermap
Módulo de Python: https://pypi.org/project/openweathermap-cli/
Se requiere una clave API para usar estos nodos. Para obtener una clave API, vaya a
OpenWeatherMap.
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.
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
Ejemplos:
http://developers.sensetecnic.com/article/a-node-red-flow-to-monitor-the-weather/
dashboard: https://gist.github.com/djiwondee/
b5b7d5da14d24e71de447e6aa290937e
Otro dashboard: https://community.openenergymonitor.org/t/node-red-weather-
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:
Ejemplos:
https://flows.nodered.org/flow/f8bda419efca37dc0366c47cdadf40ad