Node-RED: Primeiros passos
Como começar com o Node-RED
👋 Bem-vindo à documentação da Stackhero!
A Stackhero oferece uma solução Node-RED cloud pronta a usar que proporciona uma série de benefícios, incluindo:
- Servidor MQTT incluído (Mosquitto).
- Acesso completo à interface de administração do Node-RED.
- Dashboard do Node-RED incluído.
- Servidor de email SMTP ilimitado e dedicado incluído.
- Atualizações sem esforço com apenas um clique.
- Nome de domínio personalizável seguro com HTTPS (por exemplo, https://node-red.sua-empresa.com).
- Desempenho ótimo e segurança robusta alimentados por uma VM privada e dedicada.
Poupe tempo e simplifique a sua vida: leva apenas 5 minutos para experimentar a solução de hospedagem em cloud Node-RED da Stackhero!
Como enviar notificações por email
Cada instância do Node-RED na Stackhero vem com seu próprio servidor de email dedicado. Este servidor permite enviar notificações por email ilimitadas com apenas alguns cliques.
Para começar a enviar emails a partir da sua instância do Node-RED, adicione um nó "email" ao seu fluxo. Notará dois nós de email na lista de nós. Escolha aquele com o ícone de correio à direita. Uma vez adicionado, o nó será automaticamente nomeado "Stackhero integrated email server" e vem pré-configurado.
Dê um duplo clique no nó de email e insira o seu endereço de email no campo "To:". É melhor deixar o resto das configurações inalteradas.
Em seguida, adicione um nó "inject" ao seu fluxo e conecte-o ao nó de email. Dê um duplo clique no nó inject (nomeado "timestamp" por padrão), selecione "string" como tipo de payload, e insira "This is an email from Node-RED" como payload.
Revise as suas configurações de nós, implemente o seu fluxo, e clique no ícone de ação no nó inject. Depois, verifique a sua caixa de entrada para ver o email enviado do Node-RED!
Dica: Pode enviar emails para vários destinatários separando cada email com um ponto e vírgula no campo "To:".
Como requerer módulos nativos do Node.js
Nas funções do Node-RED, tentar requerer um módulo nativo do Node.js diretamente resulta no erro ReferenceError: require is not defined. Isto ocorre porque o Node-RED não permite requerer um módulo do Node.js diretamente dentro de uma função.
Para resolver isto, estes módulos foram integrados no contexto global do Node-RED. Pode aceder a eles usando context.global.
Por exemplo, se precisar do módulo crypto, declare-o assim:
const { crypto } = context.global;
Os seguintes módulos do Node.js estão disponíveis: util, buffer, child_process, crypto, fs, os, http, http2, https, e zlib.
Conectar a uma base de dados MySQL ou MariaDB
Desenvolvemos um nó para conectar a um servidor MySQL que é totalmente compatível com o novo sistema de autenticação do MySQL 8, "Caching SHA2 Password", bem como com o MariaDB.
Nó MySQL/MariaDB
Para mais detalhes, visite o repositório oficial. Para instalar este nó na sua instância do Node-RED, basta procurar por stackhero na seção Gerir paleta do seu painel do Node-RED.
Conectar a uma base de dados InfluxDB v2
Oferecemos um nó projetado para conectar a uma base de dados InfluxDB v2. Este nó permite escrever dados e realizar consultas usando a linguagem Flux.
Nó InfluxDb-v2
Informações adicionais estão disponíveis no repositório oficial. Para adicioná-lo à sua instância do Node-RED, procure por stackhero na seção Gerir paleta.
Como capturar e registar erros dos nós do Node-RED
Às vezes, os nós podem gerar erros. Uma solução prática é configurar um fluxo "catch all debug" para monitorizar esses erros.
Exemplo de fluxo de captura de erros do Node-RED
Para configurar isto, adicione um nó catch e conecte-o a um nó debug. Configure o nó debug para exibir o objeto msg completo. Esta configuração regista cada erro gerado no fluxo na janela de debug do Node-RED.
Exemplo de erro de nó do Node-RED capturado
Um nó
catché apenas acionado por erros de nós dentro do mesmo fluxo. Se usar múltiplos fluxos (ou abas), precisará adicionar os nóscatchedebuga cada fluxo.
Armazenar dados no sistema de ficheiros
A Stackhero para Node-RED oferece armazenamento local onde os seus nós podem armazenar ficheiros. Este armazenamento está localizado no diretório /persistent/storage/.
alerta Nunca use outro destino para o seu armazenamento local além de um subdiretório de
/persistent/storage/. Se usar outro diretório, perderá os seus dados ao aplicar uma atualização do Node-RED!
Configuração do nó para armazenar dados locais
Neste exemplo, usaremos o nó node-red-node-sqlite. Este nó requer um diretório para armazenar os seus dados.
Precisará definir um ficheiro no diretório /persistent/storage/, por exemplo, /persistent/storage/myDatabase.sqlite.
Exemplo de configuração SQLite no Node-RED
Armazenar ficheiros
Se precisar armazenar dados localmente, pode escrever ficheiros no diretório /persistent/storage/. Alguns dados do Node-RED podem já estar presentes neste diretório. Para evitar conflitos, é recomendado usar subdiretórios, por exemplo, /persistent/storage/myFlowData, para armazenar os seus ficheiros.
Para criar este diretório usando Node.js, execute o seguinte código no seu nó:
fs.mkdirSync('/persistent/storage/myFlowData', { recursive: true });
aviso Se planeia armazenar mais do que alguns ficheiros, recomendamos usar um servidor de armazenamento de objetos. Servidores de armazenamento de objetos facilitam a gestão, partilha e acesso a ficheiros via uma API, como com o protocolo S3. Considere o serviço MinIO disponível na Stackhero para este propósito, que lhe oferece um servidor de armazenamento de objetos compatível com S3 em apenas 2 minutos.
Usar um nó HTTP com um iFrame
Ao usar um iFrame para solicitar conteúdo via um nó HTTP, o cabeçalho padrão X-Frame-Options: SAMEORIGIN pode impedir a exibição da página. A partir da versão 1.2.2-0 do Node-RED, pode substituir este cabeçalho padrão.
Para fazer isso, defina o cabeçalho X-Frame-Options como null no seu nó de resposta HTTP. Por exemplo:
msg.headers = { "X-Frame-Options": null };
Exemplo de um nó definindo o cabeçalho X-Frame-Options
Pode baixar este exemplo de fluxo e importá-lo na sua instância do Node-RED para testar a funcionalidade.
Note que também pode restringir os domínios permitidos usando os cabeçalhos Content-Security-Policy: frame-ancestors <source> ou X-Frame-Options: ALLOW-FROM <source>.
Modo seguro: resolver erros de fluxos do Node-RED (erro 502)
Se encontrar um erro 502 ao aceder ao seu painel de administração, comece por verificar os logs da sua instância. Pode encontrar estes logs no painel da Stackhero sob a aba "Logs" após selecionar o seu serviço Node-RED.
Os logs podem conter erros do Node-RED que o impedem de iniciar corretamente. Recolha o máximo de informações possível para ajudar a depurar os seus fluxos.
Após rever os seus logs, vá à configuração do seu serviço no painel da Stackhero e ative a opção "Modo seguro". No modo seguro, o Node-RED reiniciará sem iniciar automaticamente os seus fluxos.
Isto permite-lhe aceder ao painel de administração, corrigir os seus erros de fluxo e implementar as suas alterações. Uma vez que tudo esteja a funcionar corretamente, não se esqueça de desativar o modo seguro na configuração do seu serviço para que os seus fluxos iniciem automaticamente ao reiniciar o Node-RED.
Versão do nó no gestor de paleta é mais antiga em comparação com a do NPM
Se tentar instalar um nó usando o Gestor de Paleta mas notar que a versão é mais antiga do que a do NPM, provavelmente significa que o criador do nó não atualizou a versão no site do Node-RED.
Anteriormente, as versões dos nós eram automaticamente atualizadas para refletir a versão publicada no NPM. Isto já não é o caso.
A boa notícia é que pode solicitar ao site do Node-RED que atualize a versão. Basta ir a https://flows.nodered.org/add/node, inserir o nome do módulo NPM (por exemplo, node-red-contrib-xxx), e clicar no botão "Add". Uma vez concluído, volte ao seu painel do Node-RED e abra o Gestor de Paleta. A versão atualizada deve agora estar visível e pronta para instalação.
Lidar com o erro "SSL routines:ssl3_get_record:wrong version number:../deps/openssl/openssl/ssl/record/ssl3_record.c"
Se vir este erro ao enviar um email, é provável que tenha selecionado a opção "Use secure connection" na configuração do seu nó de email.
Como o servidor de email da Stackhero e o servidor do Node-RED funcionam na mesma instância, eles comunicam localmente, por isso não precisa usar encriptação TLS (SSL). Ativar a opção de conexão segura faz com que o Node-RED use TLS para comunicar com o servidor de email, levando ao erro SSL sobre um "wrong version number".
Por favor, note que se o servidor destinatário suportar encriptação, o email será automaticamente encriptado com TLS. Isto foi pré-configurado para si.