Índice:

UCL-IIOT - Sistema de Alarme com Banco de Dados e Node-red: 7 Passos
UCL-IIOT - Sistema de Alarme com Banco de Dados e Node-red: 7 Passos

Vídeo: UCL-IIOT - Sistema de Alarme com Banco de Dados e Node-red: 7 Passos

Vídeo: UCL-IIOT - Sistema de Alarme com Banco de Dados e Node-red: 7 Passos
Vídeo: Webinar Conecte seus processos com OPC UA 2024, Julho
Anonim
UCL-IIOT - Sistema de Alarme com Banco de Dados e Node-red
UCL-IIOT - Sistema de Alarme com Banco de Dados e Node-red
UCL-IIOT - Sistema de Alarme com Banco de Dados e Node-red
UCL-IIOT - Sistema de Alarme com Banco de Dados e Node-red

O objetivo desta construção é ensinar como conectar o Arduino com o Node-red e um banco de dados, para que você possa registrar dados e também coletá-los para uso posterior.

Para esta compilação, uso um sistema de alarme Arduino simples que gera 5 números de dados, cada um separado por uma vírgula.

Não é necessário ter essa quantidade exata de dados e o programa pode ser qualquer coisa.

A parte importante é que os dados são separados por vírgulas, como visto nesta captura de tela.

A saída poderia ser, por exemplo: "324, 0, 0, 1, 1"

(a programação finalizada e as instruções para a criação do arduino estão vinculadas na parte inferior deste tutorial)

Etapa 1: Introdução ao Node-red

Introdução ao Node-red
Introdução ao Node-red

Para este tutorial, presumimos que você já tenha instalado o Node-red, mas existem algumas paletas extras que são usadas neste projeto que precisamos para que funcione

Encontre o botão "Gerenciar paleta" e instale as seguintes paletas.

  • node-red-dashboard
  • node-red-node-mysql
  • node-red-node-arduino
  • node-red-node-serialport

Ele deve mostrar algumas novas paletas ao lado do menu do botão Node-red.

Etapa 2: divisão de dados em nó vermelho

Dividindo Dados em Node-red
Dividindo Dados em Node-red

Agora que o Node-red está pronto, precisamos começar dividindo nossos dados em partes separadas.

É por isso que nos certificamos de separá-los com vírgulas dentro do código do Arduino.

Primeiro, vamos começar colocando o nó de entrada do Arduino, localizado no painel esquerdo.

Você precisa ter certeza de que tem a porta serial correta (o meu usa COM4) e a taxa de transmissão (no meu programa eu uso a taxa de transmissão de 9600)

Se configurado corretamente, deve dizer que está conectado.

Em seguida, criamos um bloco de função Javascript e o conectamos após o nó de entrada do Arduino. Esse bloco nos permite programar em Javascript, e aqui escrevemos um código que pode dividir nossos dados para cada vírgula.

Neste bloco de funções, divido meus 5 dados usando o seguinte código:

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

(altere o código conforme necessário)

Certifique-se de que o nó esteja definido para 5 saídas (ou o seu equivalente)

Conforme visto na captura de tela, agora temos 5 saídas que cada um de nós vincula a um nó de depuração e um nó de painel de texto. Isso será útil quando precisarmos vê-lo na IU.

Etapa 3: Banco de dados com Wampserver

Banco de dados com Wampserver
Banco de dados com Wampserver

Para que nosso banco de dados funcione, você precisa ter o Wampserver instalado. Depois de instalado e mostrado como um ícone verde (depois de iniciar todos os serviços), você deve abrir o "phpMyAdmin" que o levará a uma tela de login. alterou-o anteriormente, simplesmente insira "root" no nome de usuário e faça o login.

Pressione o botão phpmyadmin abaixo de ferramentas na barra esquerda e deve abrir o menu do banco de dados, que se parece com o mostrado na imagem acima.

Crie um novo banco de dados e nomeie-o com algo relacionado ao seu projeto, o meu se chama "sistema de alarmes" (esses nomes diferenciam maiúsculas de minúsculas)

Nesse banco de dados, crie uma nova tabela e nomeie-a, a minha é chamada de "alarmdata"

ele perguntará se você deseja usar "latin1_swedish_ci" e nós apenas o manteremos assim.

Agora você cria 6 tabelas (1 a mais do que os dados que temos)

A primeira tabela precisa usar o tipo de dados "texto longo"

e o resto do conjunto de dados usa "texto médio"

Certifique-se de nomeá-los. (o primeiro conjunto de dados deve ser denominado "tempo"

Etapa 4: Banco de dados

Base de dados
Base de dados

O conjunto de dados Wampserver deve ser parecido com isso.

(mas sem os dados reais, já que não chegamos a isso ainda)

Etapa 5: Node-red para Wampserver

Node-red para Wampserver
Node-red para Wampserver

Agora queremos que os dados que estamos emitindo de nosso arduino vão para nosso Wampserver.

Comece criando outro bloco de função Javascript e conecte-o ao nosso nó de entrada Arduino.

Neste bloco de script, mais uma vez dividimos nossos dados, mas também os inserimos em nosso banco de dados.

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

Observe que eu insiro "INSERT INTO alarmsystem.alarmdata", este é o nome que demos ao nosso banco de dados e tabela, certifique-se de escrever o nome exato que você deu ao seu banco de dados.

Agora conecte o bloco Javascript a um nó de depuração e também a um nó "mysql" encontrado na paleta de armazenamento no lado esquerdo.

no bloco mysql, você o nomeia da mesma forma que seu banco de dados "sistema de alarmes"

mude o usuário para "root" (o nome que usamos para fazer login em nosso servidor)

host, porta e banco de dados já devem ser preenchidos com:

Host: 127.0.0.1

Porta: 3306

Banco de dados: sistema de alarmes

Se tudo for feito corretamente, ele deve ser conectado depois de implementar suas alterações.

Você também deve ser capaz de ver que o banco de dados agora registra seus dados diretamente do Arduino.

Etapa 6: usando dados de Wampserver para Node-red

Usando dados de Wampserver para Node-red
Usando dados de Wampserver para Node-red
Usando dados de Wampserver para Node-red
Usando dados de Wampserver para Node-red

Para a reta final, queremos ver se podemos pegar os dados que salvamos e colocá-los de volta em nosso Node-red e, com sorte, exibi-los.

Comece colocando um nó "injetar"

No tópico deste nó, colocamos o código: SELECT * FROM alarmsystem.alarmdata

Isso será capaz de encontrar nosso banco de dados quando pressioná-lo.

Conecte o nó de injeção a um novo nó "mysql" configurado exatamente como o que fizemos na etapa anterior.

Conecte o nó mysql a um nó de depuração e um nó de modelo encontrado no painel.

O nó do modelo será nossa tabela que podemos atualizar para mostrar os dados do banco de dados à medida que são produzidos.

Insira o código mostrado na captura de tela acima (altere conforme necessário) e agora deve mostrar uma tabela de dados em nossa IU em Node-red.

Também podemos adicionar um botão de painel para atualizar a tabela da própria IU.

Comece criando um nó de botão.

conecte o nó do botão a um bloco de funções Javascript.

no bloco de funções, inserimos o seguinte código.

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

(Green1 sendo a primeira variável de dados na tabela)

este bloco de função então precisa ser conectado à entrada de nosso nó mysql que fizemos anteriormente nesta etapa.

Etapa 7: Finalizando

Finalizando
Finalizando

Agora nossa IU deve incluir uma atualização ao vivo de nossos dados e uma tabela com dados de nosso próprio servidor.

Isso significa que criamos uma conexão entre o Arduino, um programa baseado em IU e um banco de dados.

Se você estiver interessado em como meu sistema de alarme Arduino funciona, adicionei um documento que explica como ele é programado e configurado.

Bem como uma exportação completa da programação de nó vermelho.

Recomendado: