Índice:

Como trabalhar com JSON no Node-RED: 13 etapas
Como trabalhar com JSON no Node-RED: 13 etapas

Vídeo: Como trabalhar com JSON no Node-RED: 13 etapas

Vídeo: Como trabalhar com JSON no Node-RED: 13 etapas
Vídeo: API Retornando JSON, nó json #P5 [Node-Red] - Curso de Node - Aula 18 2024, Julho
Anonim
Como trabalhar com JSON no Node-RED
Como trabalhar com JSON no Node-RED

Este instrutível irá ensiná-lo a trabalhar com JSON no node-RED. Mostrarei como controlar os soquetes de energia em rede com a transferência de arquivos json via http get e post. E você pode usar esse conhecimento posteriormente para controlar qualquer dispositivo que suporte o protocolo JSON.

Para fins de ensino, usarei o soquete NETIO 4All em rede, mas não se preocupe, você não precisa comprar nada. NETIO tem uma demonstração online 4All incrível que você pode usar.

Suprimentos

NETIO 4All networked powersocket ou 4All online demo:

Node-RED

Etapa 1: protocolo REST JSON Http (s)

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

Esta parte é um pouco técnica, mas por favor, tenha paciência comigo. Se eu não explicasse esta parte você teria problemas em entender os valores nos arquivos json que estaremos enviando no node-RED.

Ações aplicáveis a cada saída (tomada elétrica):

Em todos os protocolos M2M, os soquetes de energia NETIO usam as mesmas ações que podem ser aplicadas a saídas individuais. Por exemplo, uma ação Alternar ou Desligar curto pode ser gravada em qualquer saída.

No entanto, a variável Action só pode ser usada para escrever valores, ela não pode ser usada para ler o estado atual da tomada.

Estas são as ações que você pode aplicar a cada saída:

0 = Saída desligada (desligada)

1 = Saída ligada (On)

2 = Saída desligada por um curto período de tempo (curto desligado)

3 = Saída ligada por um curto período de tempo (curto ligado)

4 = Saída comutada de um estado para outro (alternar)

5 = Estado de saída inalterado (sem alteração)

6 = Ignorado

Exemplo - arquivo JSON para alternar o número de saída. 1:

{

"Saídas": [{

"ID": 1, "Ação": 4

}]

}

ID - este número indica qual saída usaremos

Ação - esta parte, é a ação que a saída fará (por exemplo, 1 (Ativar saída))

Etapa 2: Fluxo

Fluxo
Fluxo

E agora a parte principal. É assim que o ambiente node-RED se parece.

Importamos o fluxo de API de URL (O projeto que você vê. Mais tarde, mostrarei como importar fluxos e este projeto). Este projeto consiste em duas partes:

  1. Fluxo NETIO AN30 (API JSON REST)
  2. Dashboard (interface gráfica pela qual você pode operar seu programa)

Etapa 3: Painel

Painel
Painel

Esta é a aparência do painel no node-RED para este instrutível. Você pode personalizá-lo se quiser.

O painel para este projeto é dividido em 4 partes:

  1. Status do dispositivo - mostra as informações do dispositivo, como modelo, endereço mac ou versão do firmware.
  2. (POST) Saída de controle 1 - contém 5 botões que controlam a saída 1. Cada botão executa uma ação diferente
  3. (GET) O1 - O4 Output States - Esta parte mostra o estado atual de cada saída do seu dispositivo.
  4. Gerenciamento de dispositivos - nesta parte você pode encontrar todos os tipos de gráficos e medidores que mostram os valores medidos atuais do dispositivo NETIO 4Aall

Etapa 4: Fluxo de importação (projeto, script, etc.)

Fluxo de importação (projeto, script, etc.)
Fluxo de importação (projeto, script, etc.)

No menu (canto superior direito) selecione Importar e depois Área de Transferência.

Em seguida, copie o texto abaixo para o campo indicado e clique em Importar.

Instalando nós ausentes

Os nós são carregados no fluxo selecionado. É possível que uma mensagem de erro seja exibida com uma lista de nós que estão sendo importados, mas ainda não foram instalados no Node-RED. Nesse caso, os nós ausentes precisam ser instalados.

Se houver nós ausentes, selecione Gerenciar paleta no menu, clique em Instalar e encontre e instale os nós ausentes.

Texto de importação:

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

Etapa 5: Como tudo funciona junto

Como tudo funciona junto
Como tudo funciona junto

O fluxo é basicamente dividido em duas partes: POST e GET.

POST: Escrevendo para O1

  • Cinco botões criados no Dashboard no Flow são exibidos no Dashboard.
  • Depois de clicar no botão Output 1 = ON no Dashboard, a carga útil é definida para o arquivo netio.json que especifica a saída e a ação (definida para cada um dos botões).
  • O bloco HTTP Request (POST) envia o arquivo netio.json como uma solicitação para um endereço IP.
  • A resposta do servidor (status) é retornada como saída.
  • O bloco Msg.payload exibe o resultado da Solicitação HTTP (POST).

OBTER: Leitura de O1 - O4

  • O bloco de repetição de 1 segundo ativa, com um período de um segundo, o bloco de solicitação HTTP (GET), que por sua vez envia netio.json como uma solicitação GET e retorna um arquivo JSON completo com o status do soquete como recebido do servidor.
  • O bloco JSON Parse transforma o arquivo JSON do bloco HTTP Request (GET) em um objeto JSON para que seja possível manipular as propriedades no arquivo JSON.
  • O bloco de funções pega partes individuais do objeto JSON e as transforma em propriedades de um objeto msg para uso posterior.
  • O bloco Current Chart define msg.payload como a propriedade msg. TotalCurrent do objeto msg, porque o bloco Current Chart (Device) subsequente pode exibir apenas o valor msg.payload.
  • Em seguida, vários nós de saída seguem para exibir as propriedades selecionadas do objeto msg, conforme retiradas do objeto JSON, no painel.

O objeto msg e msg.payload

Para uma explicação simples e concisa, veja aqui:

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

Etapa 6: HTTP POST e GET

HTTP POST e GET
HTTP POST e GET
HTTP POST e GET
HTTP POST e GET

Solicitação HTTP (POST)

Este nó envia um arquivo de comando netio.json como uma Solicitação HTTP (POST) para controlar o dispositivo NETIO 4All.

Solicitação HTTP (GET)

Este nó envia uma solicitação HTTP (GET) e retorna a resposta de status.

O endereço pré-preenchido aponta para a demonstração online do NETIO 4All, onde você pode testar a conexão sem ter um dispositivo NETIO em sua mesa.

netio-4all.netio-products.com

É possível definir seu próprio endereço IP nesses nós; no entanto, o IP precisa ser alterado em ambos os nós de solicitação HTTP, POST e GET.

Etapa 7: nós de botão

Nós de botão
Nós de botão
Nós de botão
Nós de botão

Clicar no nó do botão gera uma mensagem contendo um arquivo netio.json (imagem à direita) que é então enviado via nó de postagem http para a tomada netio smart power.

Etapa 8: Nó de Função

Nó de Função
Nó de Função
Nó de Função
Nó de Função

Um nó de função é um nó especial que permite escrever uma função JavaScript customizada.

Neste instrutível, a função escolhe valores do arquivo JSON analisado (agora um objeto JSON) e os atribui às propriedades do objeto msg.

O código é dividido em quatro seções:

  1. Atribuição de valores do objeto JSON às propriedades individuais do objeto msg
  2. Tratamento de erros caso a tomada de rede não suporte medições globais

    Se a tomada de energia em rede não suporta a medição de valores globais, o Node-RED exibiria erros porque esta função não encontraria a respectiva propriedade, por exemplo, msg.payload. GlobalMeasure. Voltage, uma vez que não estaria presente no objeto JSON. Nesse caso, a propriedade do objeto msg, por exemplo, msg. Voltage, é definido como 0 e o erro é detectado e tratado.

  3. Atribuição de valores de estado de saída
  4. Definir as cores dos valores de estado de saída exibidos de acordo com os estados de saída

Etapa 9: Nó JSON e Nó Injetar

Nó JSON e Nó Injetar
Nó JSON e Nó Injetar
Nó JSON e Nó Injetar
Nó JSON e Nó Injetar

Nó JSON

O nó JSON analisa o arquivo JSON e o transforma em um objeto JSON.

Como uma resposta do servidor à solicitação GET, o nó Solicitação HTTP retorna um arquivo JSON contendo o status atual do dispositivo NETIO 4x, mas é simplesmente um arquivo de texto, portanto, para trabalhar com os dados, o arquivo JSON precisa para ser analisado em um objeto JSON.

Nó de injeção

A cada segundo, este nó ativa o nó Solicitação HTTP que envia uma solicitação GET.

Como resultado, os valores no painel são atualizados com um período de um segundo

Etapa 10: Nó de Texto e Nó de Depuração

Nó de texto e nó de depuração
Nó de texto e nó de depuração
Nó de texto e nó de depuração
Nó de texto e nó de depuração

Nó de texto

Exibe um campo de texto no painel. Neste instrutível, os nós de texto exibem a corrente, tensão, modelo, versão do firmware ou versão JSON.

O rótulo é exibido no painel e o nome é o nome do nó exibido no fluxo no Node-RED.

Nó de depuração

Exibe o msg.payload.

Etapa 11: Nó do gráfico

Nó do gráfico
Nó do gráfico
Nó do gráfico
Nó do gráfico

Este nó plota o gráfico atual no painel de acordo com o valor da carga útil.

Este nó só pode traçar gráficos de acordo com o valor da carga útil.

Por esse motivo, um nó de função é usado para definir msg.payload para o valor que precisa ser exibido.

msg.payload = msg. TotalCurrent;

Etapa 12: Gauge Node e Link Nodes

Gauge Node e Link Nodes
Gauge Node e Link Nodes
Gauge Node e Link Nodes
Gauge Node e Link Nodes

Nó de medição

Este nó adiciona um widget de medidor ao painel.

Neste instrutível, cada medidor visualiza uma propriedade do objeto msg: tensão [V], corrente [A], frequência [Hz] e o fator de potência real geral (TPF).

Nós de ligação

Os nós de entrada e saída de link funcionam como um túnel. O msg.payload chega ao nó do link no nó e sai do nó de saída do link.

Usei-o para tornar o fluxo um pouco mais claro e fácil de ler.

Etapa 13: Obrigado por ler meu instrutível

Espero que você tenha gostado do meu instrutível e espero que tenha aprendido algo novo.

Este instrutível é apenas uma versão abreviada de um guia diferente que fiz

O guia original é mais longo e muito mais detalhado e geralmente melhor estruturado. Se você não entendeu algo ou acha que perdi ou não expliquei algo o suficiente, então você definitivamente pode encontrar lá.

Eu prometo que você não ficará desapontado

Original:

Além disso, existem guias semelhantes sobre os vários usos do nó-RED, então, se você estiver interessado, sinta-se à vontade para explorar:

Trabalhando com REST URL API em node-RED

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

Trabalhando com REST XML em node-RED

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

Trabalhando com TCP / Modbus em node-RED

Em breve:)

Recomendado: