Tabla de contenido:

Cómo trabajar con JSON en Node-RED: 13 pasos
Cómo trabajar con JSON en Node-RED: 13 pasos

Video: Cómo trabajar con JSON en Node-RED: 13 pasos

Video: Cómo trabajar con JSON en Node-RED: 13 pasos
Video: Node-RED - Práctica: Nodo JSON 2024, Noviembre
Anonim
Cómo trabajar con JSON en Node-RED
Cómo trabajar con JSON en Node-RED

Este instructivo le enseñará cómo trabajar con JSON en node-RED. Le mostraré cómo controlar las tomas de corriente en red con la transferencia de archivos json a través de http get and post. Y puede utilizar este conocimiento más adelante para controlar cualquier dispositivo que admita el protocolo JSON.

Con fines didácticos, utilizaré NETIO 4 Todas las tomas de corriente en red, pero no se preocupe, no es necesario que compre nada. NETIO tiene una increíble demostración en línea de 4All que puedes usar.

Suministros

NETIO 4Todos los tomacorrientes en red o 4All demostración en línea:

Nodo-RED

Paso 1: Protocolo REST JSON Http (s)

Protocolo REST JSON Http (s)
Protocolo REST JSON Http (s)

Esta parte es un poco técnica, pero tengan paciencia conmigo. Si no explico esta parte, entonces tendrías problemas para entender los valores en los archivos json que enviaremos en node-RED.

Acciones aplicables a cada salida (toma de corriente):

En todos los protocolos M2M, las tomas de corriente NETIO utilizan las mismas acciones que se pueden aplicar a salidas individuales. Por ejemplo, una acción Alternar o Cortar apagado se puede escribir en cualquier salida.

Sin embargo, la variable Acción solo se puede usar para escribir valores, no se puede usar para leer el estado actual de la salida.

Estas son acciones que puede aplicar a cada salida:

0 = Salida desconectada (Off)

1 = Salida activada (On)

2 = Salida desconectada brevemente (desconexión breve)

3 = Salida encendida por un tiempo corto (encendido corto)

4 = Salida conmutada de un estado a otro (alternar)

5 = Estado de salida sin cambios (sin cambios)

6 = ignorado

Ejemplo: archivo JSON para alternar el número de salida. 1:

{

"Salidas": [{

"ID": 1, "Acción": 4

}]

}

ID: este número indica qué salida usaremos

Acción: esta parte es la acción que realizará la salida (por ejemplo, 1 (Activar la salida))

Paso 2: Flujo

Fluir
Fluir

Y ahora la parte principal. Así es como se ve el entorno de node-RED.

Hemos importado el flujo de API de URL (el proyecto que ves. Más adelante te mostraré cómo importar flujos y este proyecto) Este proyecto consta de dos partes:

  1. Flujo NETIO AN30 (JSON REST API)
  2. Panel de control (interfaz gráfica mediante la cual puede operar su programa)

Paso 3: Panel de control

Tablero
Tablero

Así es como se ve el tablero en node-RED para este instructable. Puedes personalizarlo si quieres que se adapte a tu gusto.

El tablero de este proyecto se divide en 4 partes:

  1. Estado del dispositivo: muestra información del dispositivo, como el modelo, la dirección mac o la versión de firmware.
  2. (POST) Salida de control 1: contiene 5 botones que controlan la salida 1. Cada botón ejecuta una acción diferente
  3. (OBTENER) O1 - O4 Estados de salida: esta parte muestra el estado actual de cada salida de su dispositivo.
  4. Administración de dispositivos: en esta parte puede encontrar todo tipo de gráficos y medidores que muestran los valores medidos actuales del dispositivo NETIO 4Aall

Paso 4: Importar flujo (proyecto, script, etc.)

Importar flujo (proyecto, script, etc.)
Importar flujo (proyecto, script, etc.)

En el menú (esquina superior derecha) seleccione Importar y luego Portapapeles.

Luego, copie el texto a continuación en el campo indicado y haga clic en Importar.

Instalación de nodos faltantes

Los nodos se cargan en el flujo seleccionado. Es posible que se muestre un mensaje de error con una lista de nodos que se están importando pero que aún no están instalados en Node-RED. En este caso, es necesario instalar los nodos que faltan.

Si faltan nodos, seleccione Administrar paleta en el menú, haga clic en Instalar y busque e instale los nodos que faltan.

Importar texto:

[{"id": "56b9510c.98c6f", "type": "tab", "label": "NETIO AN30 (REST JSON)", "disabled": false, "info": ""}, {"id ":" 6a66b637.da1558 "," tipo ":" solicitud http "," z ":" 56b9510c.98c6f "," nombre ":" Solicitud HTTP (POST) "," método ":" POST "," ret ": "txt", "url": "https://netio-4All.netio-products.com:8080/netio.json", "tls": "", "x": 430, "y": 100, "cables":

Paso 5: cómo funciona todo junto

Cómo funciona todo junto
Cómo funciona todo junto

El flujo se divide básicamente en dos partes: POST y GET.

POST: Escribiendo a O1

  • Los cinco botones creados en el Tablero en el flujo se muestran en el Tablero.
  • Después de hacer clic en el botón Salida 1 = ENCENDIDO en el Tablero, la carga útil se establece en el archivo netio.json que especifica la salida y la acción (definida para cada uno de los botones).
  • El bloque HTTP Request (POST) envía el archivo netio.json como una solicitud a una dirección IP.
  • La respuesta del servidor (estado) se devuelve como salida.
  • El bloque Msg.payload muestra el resultado de la solicitud HTTP (POST).

OBTENER: Lectura de O1 - O4

  • El bloque de repetición de 1 segundo activa, con un período de un segundo, el bloque de solicitud HTTP (GET), que a su vez envía netio.json como una solicitud GET y devuelve un archivo JSON completo con el estado del socket tal como se recibió del servidor.
  • El bloque JSON Parse transforma el archivo JSON del bloque HTTP Request (GET) en un objeto JSON para que sea posible manipular las propiedades en el archivo JSON.
  • El bloque de funciones toma partes individuales del objeto JSON y las transforma en propiedades de un objeto msg para su uso posterior.
  • El bloque Gráfico actual establece msg.payload en la propiedad msg. TotalCurrent del objeto msg, porque el bloque Gráfico actual (dispositivo) subsiguiente solo puede mostrar el valor msg.payload.
  • Luego, siguen varios nodos de salida para mostrar las propiedades seleccionadas del objeto msg, como se tomaron del objeto JSON, en el Tablero.

El objeto msg y msg.payload

Para obtener una explicación simple y concisa, consulte aquí:

www.steves-internet-guide.com/node-red-mess…

Paso 6: HTTP POST y GET

HTTP POST y GET
HTTP POST y GET
HTTP POST y GET
HTTP POST y GET

Solicitud HTTP (POST)

Este nodo envía un archivo de comando netio.json como una solicitud HTTP (POST) para controlar el dispositivo NETIO 4All.

Solicitud HTTP (GET)

Este nodo envía una solicitud HTTP (GET) y devuelve la respuesta de estado.

La dirección precargada apunta a la demostración en línea de NETIO 4All, donde puede probar la conexión sin tener un dispositivo NETIO en su escritorio.

netio-4all.netio-products.com

Es posible configurar su propia dirección IP en estos nodos; sin embargo, la IP debe cambiarse en los nodos de solicitud HTTP, POST y GET.

Paso 7: Nodos de botones

Nodos de botón
Nodos de botón
Nodos de botón
Nodos de botón

Al hacer clic en el nodo del botón, se genera un mensaje que contiene un archivo netio.json (imagen de la derecha) que luego se envía a través del nodo de publicación http a la toma de corriente inteligente netio.

Paso 8: Nodo de función

Nodo de función
Nodo de función
Nodo de función
Nodo de función

Un nodo de función es un nodo especial que permite escribir una función de JavaScript personalizada.

En este instructable, la función selecciona valores del archivo JSON analizado (ahora un objeto JSON) y los asigna a las propiedades del objeto msg.

El código se divide en cuatro secciones:

  1. Asignar valores del objeto JSON a las propiedades individuales del objeto msg
  2. Manejo de errores en caso de que la toma de corriente en red no admita mediciones globales

    Si la toma de corriente en red no admite la medición de valores globales, Node-RED mostraría errores porque esta función no encontraría la propiedad respectiva, p. Ej. msg.payload. GlobalMeasure. Voltage, ya que no estaría presente en el objeto JSON. En este caso, la propiedad del objeto msg, p. Ej. msg. Voltage, se establece en 0 y el error se detecta y se maneja.

  3. Asignar valores de estado de salida
  4. Configuración de los colores de los valores de estado de salida mostrados de acuerdo con los estados de salida

Paso 9: nodo JSON e inyectar nodo

Nodo JSON y nodo de inyección
Nodo JSON y nodo de inyección
Nodo JSON y nodo de inyección
Nodo JSON y nodo de inyección

Nodo JSON

El nodo JSON analiza el archivo JSON y lo transforma en un objeto JSON.

Como respuesta del servidor a la solicitud GET, el nodo de solicitud HTTP devuelve un archivo JSON que contiene el estado actual del dispositivo NETIO 4x, pero es simplemente un archivo de texto, por lo que para trabajar con los datos, el archivo JSON necesita para ser analizado en un objeto JSON.

Inyectar nodo

Cada segundo, este nodo activa el nodo Solicitud HTTP que envía una solicitud GET.

Como resultado, los valores en el Tablero se actualizan con un período de un segundo

Paso 10: nodo de texto y nodo de depuración

Nodo de texto y nodo de depuración
Nodo de texto y nodo de depuración
Nodo de texto y nodo de depuración
Nodo de texto y nodo de depuración

Nodo de texto

Muestra un campo de texto en el panel. En este instructable, los nodos de texto muestran la corriente, voltaje, modelo, versión de firmware o versión JSON.

La Etiqueta se muestra en el Tablero y el Nombre es el nombre del nodo que se muestra en el flujo en Node-RED.

Nodo de depuración

Muestra el mensaje msg.payload.

Paso 11: nodo de gráfico

Nodo de gráfico
Nodo de gráfico
Nodo de gráfico
Nodo de gráfico

Este nodo traza el gráfico actual en el tablero de acuerdo con el valor de carga útil.

Este nodo solo puede trazar gráficos de acuerdo con el valor de carga útil.

Por esta razón, se utiliza un nodo de función para establecer msg.payload en el valor que debe mostrarse.

msg.payload = msg. TotalCurrent;

Paso 12: Nodo de calibre y nodos de enlace

Nodo de calibre y nodos de enlace
Nodo de calibre y nodos de enlace
Nodo de calibre y nodos de enlace
Nodo de calibre y nodos de enlace

Nodo de calibre

Este nodo agrega un widget de indicador al tablero.

En este instructable, cada medidor visualiza una propiedad del objeto de mensaje: voltaje [V], corriente [A], frecuencia [Hz] y el factor de potencia real (TPF) general.

Nodos de enlace

Los nodos de enlace y enlace funcionan como un túnel. Msg.payload llega al enlace en el nodo y sale del enlace de salida del nodo.

Lo usé para que el flujo sea un poco más claro y fácil de leer.

Paso 13: Gracias por leer mi Instructable

Espero que hayas disfrutado de mi instructable y espero que hayas aprendido algo nuevo.

Este instructivo es solo una versión abreviada de una guía diferente que hice

La guía original es más larga y está mucho más detallada y, en general, está mejor estructurada. Si no entendiste algo o crees que me perdí o no expliqué lo suficiente, definitivamente puedes encontrarlo allí.

Te prometo que no te decepcionará

Original:

También hay guías similares sobre varios usos denode-RED, por lo que si está interesado, no dude en explorar:

Trabajar con la API de URL REST en node-RED

www.netio-products.com/en/application-notes/an29-node-red-example-of-url-api-communication-with-netio-4x

Trabajando con REST XML en node-RED

www.netio-products.com/en/application-notes/an31-node-red-example-of-rest-xml-communication-with-netio-4x

Trabajando con TCP / Modbus en node-RED

Viene muy pronto:)

Recomendado: