Tabla de contenido:

UCL-IIOT - Sistema de alarma con base de datos y Node-red: 7 pasos
UCL-IIOT - Sistema de alarma con base de datos y Node-red: 7 pasos

Video: UCL-IIOT - Sistema de alarma con base de datos y Node-red: 7 pasos

Video: UCL-IIOT - Sistema de alarma con base de datos y Node-red: 7 pasos
Video: IoT#1 - Alarma Puerta Abierta + Mandar E-Mail | ESP8266 2024, Mayo
Anonim
UCL-IIOT - Sistema de alarma con base de datos y Node-red
UCL-IIOT - Sistema de alarma con base de datos y Node-red
UCL-IIOT - Sistema de alarma con base de datos y Node-red
UCL-IIOT - Sistema de alarma con base de datos y Node-red

El propósito de esta compilación es enseñar a conectar Arduino con Node-red y una base de datos, para que pueda registrar datos y también recopilarlos para su uso posterior.

Para esta construcción, utilizo un sistema de alarma arduino simple que genera 5 números de datos, cada uno separado con una coma.

No es necesario tener esa cantidad exacta de datos y el programa podría ser cualquier cosa.

La parte importante es que los datos están separados por comas como se ve en esta captura de pantalla.

La salida, por ejemplo, podría verse así: "324, 0, 0, 1, 1"

(la programación terminada y las instrucciones para la creación del arduino están vinculadas al final de este tutorial)

Paso 1: Introducción a Node-red

Introducción a Node-red
Introducción a Node-red

Para este tutorial asumimos que ya ha instalado Node-red, pero hay algunas paletas adicionales que se utilizan para este proyecto que necesitamos para que funcione.

Busque el botón "Administrar paleta" e instale las siguientes paletas.

  • nodo-tablero-rojo
  • nodo-rojo-nodo-mysql
  • nodo-rojo-nodo-arduino
  • nodo-puerto-serie-nodo-rojo

Debería mostrar algunas paletas nuevas en el lateral del menú del botón Node-red.

Paso 2: dividir datos en Node-red

División de datos en Node-red
División de datos en Node-red

Ahora que Node-red está listo para funcionar, debemos comenzar dividiendo nuestros datos en partes separadas.

Es por eso que nos aseguramos de separarlos con comas dentro del código Arduino.

Primero comencemos colocando el nodo de entrada de Arduino, que se encuentra en el panel lateral izquierdo.

Debe asegurarse de que tenga el puerto serial correcto (el mío usa COM4) y la velocidad en baudios (en mi programa utilizo la velocidad en baudios de 9600)

Si está configurado correctamente, debería decir que está conectado.

A continuación creamos un bloque de funciones de Javascript y lo conectamos después del nodo de entrada de Arduino, este bloque nos permite programar en Javascript, y aquí escribimos un código que puede dividir nuestros datos por cada coma.

En este bloque de funciones, divido mis 5 datos usando el siguiente código:

var m1 = {tema: "light1", carga útil: msg.payload.split (",") [0]}; var m2 = {tema: "light2", payload: msg.payload.split (",") [1]}; var m3 = {tema: "light3", carga útil: msg.payload.split (",") [2]}; var m4 = {tema: "millis", carga útil: msg.payload.split (",") [3]}; var m5 = {tema: "onoff", payload: msg.payload.split (",") [4]}; return [m1, m2, m3, m4, m5];

(cambie el código según sea necesario)

Asegúrese de que el nodo esté configurado en 5 salidas (o su equivalente)

Como se ve en la captura de pantalla, ahora tenemos 5 salidas que cada uno vincula a un nodo de depuración y un nodo de panel de texto. Esto será útil para cuando necesitemos verlo en la interfaz de usuario.

Paso 3: base de datos con Wampserver

Base de datos con Wampserver
Base de datos con Wampserver

Para que nuestra base de datos funcione, debe tener Wampserver instalado. Después de que se instale y se muestre como un ícono verde (después de haber iniciado todos los servicios), debe abrir "phpMyAdmin", que debe llevarlo a una pantalla de inicio de sesión. lo cambió anteriormente, simplemente ingrese "root" en el nombre de usuario e inicie sesión.

Presione el botón phpmyadmin debajo de herramientas en la barra izquierda y debería abrir el menú de la base de datos, que se parece a lo que se muestra en la imagen de arriba.

Cree una nueva base de datos y asígnele un nombre relacionado con su proyecto, el mío se llama "sistema de alarma" (estos nombres distinguen entre mayúsculas y minúsculas)

Debajo de esa base de datos, cree una nueva tabla y asígnele un nombre, la mía se llama "alarmdata"

le preguntará si quiere usar "latin1_swedish_ci" y lo mantenemos así.

Ahora creas 6 tablas (1 más de los datos que tenemos)

La primera tabla debe utilizar el tipo de datos "texto largo".

y el resto del conjunto de datos usa "mediumtext"

Asegúrate de nombrarlos. (el primer conjunto de datos debe llamarse "tiempo"

Paso 4: base de datos

Base de datos
Base de datos

El conjunto de datos de Wampserver debería verse así.

(pero sin los datos reales, ya que aún no hemos llegado a eso)

Paso 5: Node-red a Wampserver

Node-red a Wampserver
Node-red a Wampserver

Ahora queremos que los datos que estamos generando desde nuestro arduino vayan a nuestro Wampserver.

Comience creando otro bloque de funciones de Javascript y conéctelo a nuestro nodo de entrada arduino.

En este bloque de script, una vez más dividimos nuestros datos, pero también los insertamos en nuestra base de datos.

var data = msg.payload.split (","); var Green1 = data [0]; var Green2 = datos [1]; var Alarma = datos [2]; var Millis = datos [3]; var IsActive = datos [4]; var out = "INSERT INTO alarmsystem.alarmdata (Time, Green1, Green2, Alarm, Millis, IsActive) VALUES ('" + new Date (). toISOString (). slice (0, 19).replace (' T ',' ') + "', '" + Verde1 + "', '" + Verde2 + "', '" + Alarma + "', '" + Millis + "', '" + IsActive + "')"; msg.topic = out; return msg;

Note que ingresé "INSERT INTO alarmsystem.alarmdata", este es el nombre que le dimos a nuestra base de datos y tabla, asegúrese de escribir el nombre exacto que le dio a su base de datos en eso.

Ahora conecte el bloque Javascript a un nodo de depuración y también a un nodo "mysql" que se encuentra debajo de la paleta de almacenamiento en el lado izquierdo.

bajo el bloque mysql lo nombra igual que su base de datos "alarmsystem"

cambiar usuario a "root" (el nombre que usamos para iniciar sesión en nuestro servidor)

El host, el puerto y la base de datos ya deben estar completados con:

Anfitrión: 127.0.0.1

Puerto: 3306

Base de datos: sistema de alarmas

Si todo se hace correctamente, debe conectarse después de implementar los cambios.

También debería poder ver que la base de datos ahora registra sus datos directamente desde Arduino.

Paso 6: usar datos de Wampserver a Node-red

Usando datos de Wampserver a Node-red
Usando datos de Wampserver a Node-red
Usando datos de Wampserver a Node-red
Usando datos de Wampserver a Node-red

Para el tramo final, queremos ver si podemos tomar los datos que hemos guardado y volver a colocarlos en nuestro Node-red y, con suerte, mostrarlos.

Comience colocando un nodo "inyectar"

En el tema de este nodo ponemos el código: SELECT * FROM alarmsystem.alarmdata

Este podrá encontrar nuestra base de datos cuando lo presionemos.

Conecte el nodo de inyección a un nuevo nodo "mysql" configurado exactamente como el que hicimos en el paso anterior.

Conecte el nodo mysql a un nodo de depuración y un nodo de plantilla que se encuentran en el panel de control.

El nodo de la plantilla será nuestra tabla que podemos actualizar para mostrar los datos de la base de datos a medida que se producen.

Ingrese el código que se muestra en la captura de pantalla anterior (cambie según sea necesario) y ahora debería mostrar una tabla de datos en nuestra IU Node-red.

También podemos agregar un botón de panel para actualizar la tabla desde la propia interfaz de usuario.

Empiece por crear un nodo de botón.

conecte el nodo del botón a un bloque de funciones de Javascript.

en el bloque de funciones insertamos el siguiente código.

msg.topic = "SELECT * FROM alarmdata ORDER BY Green1 DESC LIMIT 20"; return msg;

(Green1 es la primera variable de datos en la tabla)

este bloque de funciones debe conectarse a la entrada de nuestro nodo mysql que hicimos anteriormente en este paso.

Paso 7: Finalización

Finalizando
Finalizando

Ahora nuestra interfaz de usuario debería incluir una actualización en vivo de nuestros datos y una tabla con datos de nuestro servidor.

Esto significa que hemos creado una conexión entre Arduino, un programa basado en UI y una base de datos.

Si está interesado en cómo funciona mi sistema de alarma Arduino, he agregado un documento que explica cómo está programado y configurado.

Así como una exportación completa de la programación de node-red.

Recomendado: