Categoría: IoT

  • Node-RED en Raspberry Pi

    ¿Qué es Node-RED?

    Node-RED es una herramienta de código abierto para la programación visual que permite crear aplicaciones de Internet de las cosas (IoT).

    Node-RED se ejecuta en el navegador web y utiliza una programación visual que le permite conectar bloques de código, conocidos como nodos, para realizar una tarea. Los nodos cuando se conectan entre sí se denominan flujos.

    Características:

    • Es accesible a una gama más amplia de usuarios.
    • Permite ahorrar tiempo, pues no se escribe código (… ¿Tu qué opinas?)
    • Es código abierto y desarrollado por IBM,
    • Raspberry Pi puede ejecutar Node-RED,

    ¿Qué se puede hacer con Node RED?

    Node-RED permite:

    • Acceder a los GPIO;
    • Establecer una conexión MQTT con otros dispositivos (Usando Arduino IDE, ESP8266, ESP32, etc.);
    • Cree una interfaz gráfica de usuario receptiva para sus proyectos;
    • Comunicarse con servicios de terceros (IFTTT.com, Adafruit.io, ThingSpeak, Home Assistant, InfluxDB etc);
    • Recuperar datos de la web (pronóstico del clima, precios de acciones, correos electrónicos, etc.);
    • Crear eventos activados por tiempo;
    • Almacenar y recuperar datos de una base de datos.

    Instalando Node RED en Raspberry Pi

    bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
    

    Link Oficial: Running on Raspberry Pi : Node-RED (nodered.org)

    Preguntará si se quiere instalar Node Red, luego preguntará: “Would you like to install Pi-specific nodes?” Presionar Y, luego Enter.

    Tomará unos minutos instalar Node-RED. Al final, debería recibir un mensaje similar en la ventana de Terminal:

    Configurar Node-RED Settings

    Después de la instalación, se recomienda configurar las opciones y configuraciones iniciales.

    Ejecución del siguiente comando:

    node-red admin init
    
    • Press Enter to create a Node-RED Settings file on /home/pi/.node-red/settings.js
    • Do you want to set up user security? Yes.
    • Enter a username -> Luego presionar Enter  (admin).
    • Enter a password -> Luego presionar Enter (adminadmin).
    • Luego, debe definir los permisos de usuario. Configuraremos el acceso completo, nos aseguraremos de que la opción de acceso completo esté resaltada en azul y presione Enter.
    • Se pueden agregar otros usuarios con diferentes permisos. Solo se creará un usuario por ahora. Se puden agregar otros usuarios más luego.
    • Do you want to enable the Projects feature? No.
    • Enter a name for your flows file. (Presionar Enter para seleccionar el nombre por defecto flows.json).
    • Provide a passphrase to encrypt your credentials file. (huecat) Aprende más sobre qué es una passphrase.
    • Select a theme for the editor. Presionar Enter para seleccionar por default.
    • Press Enter again to select the default text editor.
    • Allow Function nodes to load external modules? Yes.

    La configuración de Node-RED fue exitosa. Todos los ajustes se guardan en settings.js.

    Iniciar Node-RED

    Correr el siguiente comando para iniciar Node-RED:

    node-red-start
    

    Debería verse algo así en la Terminal:

    Auto-Inicio / Autostart Node-RED

    Para ejecutar Node-RED automáticamente cuando se inicia el Pi, debe ingresar el siguiente comando. Esto significa que mientras su Raspberry Pi esté encendida, Node-RED estará funcionando.

    sudo systemctl enable nodered.service
    

    Ahora, reinicie su Pi para que el inicio automático surta efecto. La próxima vez que se reinicie la Raspberry Pi, Node-RED ya se estará ejecutando.

    sudo reboot
    

    If, later on, you want to disable autostart on boot, you can run:

    sudo systemctl disable nodered.service
    

    Para obtener más información sobre el proceso de instalación, consulte la official documentation.

    Access Node-RED

    Node-RED se ejecuta en el puerto 1880. Para acceder a Node-RED, abra un navegador y escriba la dirección IP de Raspberry Pi seguida de: 1880. Por ejemplo:

    192.168.1.102:1880
    

    Para obtener su dirección IP de Raspberry Pi, puede ejecutar el siguiente comando:

    hostname -I
    

    Después de ingresar la dirección IP de Raspberry Pi seguida de: 1880 en el navegador web, obtendrá acceso a la página de inicio de sesión de Node-RED. Inicie sesión con el nombre de usuario y la contraseña que configuró anteriormente.

    Ya se tiene el acceso a Node-RED. Ahora se puede comenzar a construir sus flujos.

    Descripción General Node-RED

    Echemos un vistazo a la interfaz visual de Node-RED.

    Secciones principales de la interfaz Node-RED

    La siguiente imagen muestra las secciones principales de Node-RED etiquetadas.

    Nodes / Nodos

    En la barra lateral izquierda, puede ver una lista con un montón de bloques. Estos bloques se denominan nodos y están separados por su funcionalidad. Si se selecciona un nodo, se puede ver cómo funciona en la pestaña de documentación de los nodos.

    Los nodos tienen puertos de entrada y/o salida para recibir y enviar información a otros nodos. Por ejemplo, un nodo recibe una entrada de un nodo anterior, procesa esa información y envía un mensaje diferente a otro nodo que hará algo con esa información. La información que se pasa entre los nodos se denomina mensaje.

    Flow

    Los nodos son los componentes básicos de un flujo. Conecta los nodos para crear un flujo que realizará una determinada tarea. Un Flujo también es una pestaña en el espacio de trabajo donde coloca y organiza los nodos.

    En el centro, tienes el Flujo y aquí es donde colocas los nodos.

    Barra lateral derecha

    La barra lateral a la derecha tiene varias herramientas.

    • Información: muestra información sobre los flujos;
    • Ayuda: muestra la documentación de los nodos;
    • Debug/Depurar: el icono de error abre una ventana de depuración que muestra los mensajes pasados a los nodos de depuración; es útil para fines de depuración;
    • Config nodes/Nodos de configuración: el icono de engranaje muestra información sobre los nodos de configuración. Los nodos de configuración no aparecen en el espacio de trabajo principal y son nodos especiales que contienen configuraciones reutilizables que pueden compartir varios nodos en un flujo.

    Implementación

    El botón de implementación guarda todos los cambios realizados en el flujo y comienza a ejecutar el flujo.

    Creando un flujo simple

    Para que se acostumbre a la interfaz de Node-RED, creemos un flujo simple. El flujo que crearemos, simplemente imprime un mensaje en la consola de depuración, cuando se activa.

    Arrastre un nodo de inyección y un nodo de depuración a su flujo y conéctelos.

    Ahora, editemos el nodo de inyección. Haga doble clic en el nodo. En la figura a continuación, puede ver las diferentes configuraciones que puede cambiar.

    En el campo msg.payload , seleccione una cadena y escriba Hola. Luego, haz clic en Listo.

    Messages (msg) in Node-RED are javascript objects that can have multiple properties. The payload is the default property most nodes work with. You can think of it as the main content of the message you want to send to the next node. In our case, we’re simply sending a text message.

    We won’t edit the debug node, but you can double-click on it to check its properties.

    ////////////////////////////////////////////////////////// HASTA ACA

    You can select the output of the debug node, which is msg.payload and where we want to send that output. In our case, we want to send it to the debug window.

    To save your application, you need to click the Deploy button in the top right corner.

    Node-RED deploy button

    Your application is saved.

    Testing the flow

    Let’s test our simple flow. Open the debug window and click the inject node to trigger the flow.

    Node-RED Hello World Example

    As you can see, our message is printed in the debug window when you trigger the inject node. This is a very basic example and it doesn’t do anything useful. However, the purpose of this post is to get you familiar with the Node-RED interface. In no time, you’ll start creating your own flows.

    Exporting and Importing Nodes

    In this section, you’ll learn how to save your nodes. This is useful if you need to:

    • Backup your Node-RED flow
    • Move your flow to another Raspberry Pi (or machine)
    • Share your Node-RED project with others

    Open the main menu, and select the Export option.

    Node-RED export nodes

    A new window opens. You can select if you want to save the selected nodes, the current flow, or all flows. You can also download the nodes as a JSON file or copy the JSON to the clipboard.

    Node-RED export nodes window

    To show you how it works, click on Download for the selected nodes. It will download a JSON file called flows.json.

    You can import those nodes later to another Raspberry Pi or another machine with Node-RED installed, by going to the main menu and selecting the Import option.

    On the Import nodes window, you can upload a JSON file or paste raw JSON.

    Import flow Node-RED

    Installing Pallete Nodes

    As we’ve seen previously, Node-RED comes with a bunch of pre-installed nodes on the Pallete (left sidebar). There are many more nodes available that you can install and use for your projects. You can find them in the Node-RED library. If you need some specific task for your project, there’s probably already a node for that.

    For example, if you need to add the feature to send an email to your flow, you can google something like this: “send email node-red node”. One of the first search results is this page with the node-red-node-email. It comes with some nodes to send and receive emails.

    If you want to install those nodes (or any other nodes) so that you can use them on your flow, go to the main menu and select the option Manage palette.

    Node-RED manage palette

    The following window will open. Select the install tab and search for the nodes you want to install, for example, node-red-node-email.

    Install Node-RED Nodes

    Node-RED Dashboard

    Node-RED Dashboard is a module that provides a set of nodes in Node-RED to quickly create a live data dashboard. You can install those nodes using the Menu Manage Palette. Then, search for node-red-dashboard and install it.

    Install Node-RED dashboard palette

    After installing, the dashboard nodes will show up on the palette.

    Node-RED dashboard nodes

    Nodes from the dashboard section provide widgets that show up in your application user interface (UI). The user interface is accessible on the following URL:

    http://Your_RPi_IP_address:1880/ui
    
    

    For example, in my case:

    http://192.168.1.106:1880/ui
    
    welcome node-red dashboard
  • SIM900: Enviar datos a ThingSpeak

    ThingSpeak es un plataforma Broker MQTT que permite recoger y almacenar datos de sensores en la nube y desarrollar aplicaciones IoT

    ThingSpeak también ofrece aplicaciones que permiten analizar y visualizar tus datos en MATLAB y actuar sobre los mismos

  • La Internet de las Cosas (IoT)

    Internet de las cosas es un concepto que se refiere a la interconexión digital de objetos cotidianos con Internet

  • ¿Cómo funciona el wifiManager? para ESP32/ESP8266

    La librería WiFiManager simplifica el proceso de configuración y gestión de conexiones WiFi en los módulos ESP32 y ESP8266. Proporciona una forma fácil de configurar y almacenar las credenciales de red WiFi, permitiendo que los dispositivos se conecten a las redes de manera autónoma y se recuperen de forma automática en caso de desconexiones.

    El “WiFiManager” es una biblioteca diseñada para facilitar la configuración y administración del Wi-Fi en dispositivos IoT basados en los microcontroladores ESP32 y ESP8266. Esta biblioteca ofrece una forma conveniente de crear un portal de configuración basado en la web, lo que permite a los usuarios ingresar las credenciales de Wi-Fi sin necesidad de cargar un nuevo código en el dispositivo.

    El proceso de funcionamiento del WiFiManager se puede describir en los siguientes pasos:

    1. Inclusión de la biblioteca: En primer lugar, es necesario incluir la biblioteca WiFiManager en el proyecto. Esto se puede realizar descargando e instalando la biblioteca desde el administrador de bibliotecas de Arduino IDE o mediante el uso de un gestor de paquetes como PlatformIO.
    2. Creación de una instancia del WiFiManager: Se crea una instancia del objeto WiFiManager en el código del proyecto.
    #include <WiFiManager.h>
    
    WiFiManager wifiManager;
    
    

    Inicialización y conexión:

    Antes de utilizar el WiFiManager, es necesario inicializarlo y conectarlo al punto de acceso Wi-Fi existente. Si se encuentran credenciales de Wi-Fi almacenadas previamente, el dispositivo se conectará automáticamente. En caso contrario, se iniciará el portal de configuración.

    void setup() {
      // Inicializar el WiFiManager
      wifiManager.autoConnect("MiDispositivo");
    
      // Resto del código de configuración o funcionalidad
    }
    

    En el ejemplo anterior, “MiDispositivo” es el nombre del punto de acceso que se creará si no se encuentran credenciales de Wi-Fi almacenadas. Este nombre puede modificarse según las preferencias del usuario.

    Portal de configuración:

    Si no se encuentran credenciales de Wi-Fi almacenadas, el WiFiManager iniciará un portal de configuración. Esto implica que el ESP32/ESP8266 actuará como un punto de acceso Wi-Fi al cual es posible conectarse desde un dispositivo móvil o una computadora.

    Al conectarse a este punto de acceso, se abrirá automáticamente una página de configuración basada en la web, donde los usuarios pueden ingresar las credenciales de su red Wi-Fi. Una vez que las credenciales se ingresen y envíen, el ESP32/ESP8266 se conectará a la red Wi-Fi especificada y recordará estas credenciales para futuros usos.

    Almacenamiento de la configuración:

    Después de que el WiFiManager se conecte exitosamente a la red Wi-Fi especificada, almacenará las credenciales en la memoria no volátil del dispositivo (por ejemplo, en el ESP32/ESP8266). Esto permite que las credenciales se utilicen en las próximas ejecuciones, sin necesidad de ingresarlas nuevamente cada vez que se reinicie el dispositivo.

  • El protocolo MQTT

    MQTT es un protocolo de mensajería estándar para Internet de las cosas (IoT). Está diseñado como un transporte de mensajería de publicación / suscripción extremadamente liviano que es ideal para conectar dispositivos remotos con una huella de código pequeña y un ancho de banda de red mínimo.

  • Enviar información a ThingSpeak desde ESP32/ESP8266

    Este fantástico módulo que cuesta menos que una hamburguesa en España, no solo tiene bluetooth, dos núcleos y sensores touch… sino que también tiene Wi-Fi!

    Así que aprovecharemos esta funcionalidad para enviar datos a la nube, a un broker Mqtt. Mqtt es un estándar de comunicaciones muy eficientes originalmente de la industria del petróleo, ahora Liberado y disponible para para casas, industrias, y millones de proyectos IoT

    Asegúrate de tener instalado el CORE del ESP32/ESP8266

  • Conectar placa SIM GSM900 con Arduino

    El módulo “GPRS Shield Arduino Uno” cuenta con un microcontrolador SIM900 en una placa de desarrollo, Al igual que el Arduino que es otra placa de desarrollo.

    Tener un dispositivo con una tarjeta SIM puede ser muy útil, por ejemplo, para una estación meteorológica IoT

  • ESP32 / ESP8266 Escribir en una Base de datos MySQL usando PHP y Arduino IDE

    Este artículo pretende explicar cómo conectar un módulo con un ESP32/ESP8266 a un servidor WEB que reciba los datos.

    El microcontrolador será el cliente de una “página WEB”, accederá con información a un vínculo para insertar información en una Base de Datos

    Actualizado: 2/7/2025

    CONTEXTO

    Insertar datos directamente en una base MySQL desde un microcontrolador resulta sencillo, pero puede presentar riesgos de seguridad y escalabilidad. Como alternativa, se puede usar una API REST o un broker MQTT. Este artículo muestra un enfoque con PHP y HTTP, con medidas básicas de protección.