Comentar

Integração do Meshtastic para Node-RED

Este node permite enviar e receber pacotes de/para uma rede Meshtastic utilizando um dispositivo conectado através de HTTP. É baseado na biblioteca Meshtastic.js .

Destaques

  • Envia e recebe mensagens de/para qualquer dispositivo na Mesh
  • Supervisão e monitoramento do status do dispositivo conectado
  • Assinar e receber qualquer tipo de evento suportado pela biblioteca Meshtastic.js (exemplos: Atak, Posição, Teste de alcance, mapas, armazenar/enviar, etc...)
  • Enviar pacotes para qualquer Meshtastic APP (port num)
  • Plug and Play: não requer servidores adicionais, containers, Python, CLI ou arquivos binários
  • Suporte indireto ao MQTT através de canais uplink/downlink

Limitações

  • Conectar através de servidor MQTT: esta função não é suportada pela biblioteca Meshtastic.js
  • Conectar ao dispositivo através de porta serial (USB) ou Bluetooth: função ainda não implementada

Instalação - processo automático (recommendado)

  • Buscar o pacote @danpeig/node-red-meshtastic-msg na biblioteca comunitária do Node-RED ou no NPM e adicionar.

Instalação manual

  1. Incluir todos os arquivos do projeto em uma pasta chamada node-red-meshtastic-msg dentro do diretório raíz do Node-RED (pasta com o arquivo settings.js)
  2. Executar npm install ./node-red-meshtastic-msg
  3. Editar meshtastic-msg.js e alterar o endereço do Meshtastic.js para a estrutura criada pelo npm. Exemplo: importSync("../node_modules/@meshtastic/js/dist/index.js").

Para desinstalar, executar npm remove @danpeig/node-red-meshtastic-msg a partir do mesmo diretório.

Problemas conhecidos

A biblioteca Meshtastic.js possui bugs e pode travar o servidor Node-RED nos seguintes cenários:

  • Conexão interrompida durante a inicialização pode causar um loop infinito.
  • Enviar um pacote com a propriedade wantResponse definida como true
  • Dependendo do método de instalação, pode ser necessário editar o arquivo meshtastic-msg.js e alterar o endereço na linha ImportSync para apontar para o caminho correto da biblioteca Meshtastic.js. Examplo: importSync("../../@meshtastic/js/dist/index.js").

Exemplos

Um exemplo de todos os flows pode ser encontrado no sub-diretório examples.

Bonus

O arquivo experiments_meshtastic.jsilustra como usar a biblioteca Meshtastic.js a partir de puro Javascript (Sem TypeScript, sem React, sem compilar).

Licença

Este software foi criado por Daniel BP e está disponível segundo a licença MIT.

Histórico de versões

  • 1.3 (30/07/2024)

    • Adicionado o node para log
  • 1.2 (29/07/2024)

    • Melhora na documentação
    • Identidade visual Meshtastic
    • Melhoria das descrições NPM
  • 1.1 (28/07/2024)

    • Corrigido o caminho para a Meshtastic.js quando instalado a partir do NPM
  • 1.0 (28/07/2024)

    • Versão inicial

Guia de referência do node
Esta informação pode ser encontrada nas páginas de ajuda, diretamente a partir da interface do Node-RED.

Node para envio de texto

Envia uma mensagem de texto a partir do dispositivo conectado

Entradas

  • msg.payload (string) : mensagem de texto a ser enviada para a rede
  • [msg.channel] (integer): o canal do dispositivo Meshtastic. Padrão é 0 (primary)
  • [msg.destination] (integer): o número do node de destino, broadcast ou self. Padrão broadcast
  • [msg.wantAck] (boolean): se o dispositivo destino deve reportar o recebimento. Padrão true

[] = campos opcionais

Node para recebimento de texto

Recebe uma mensagem de texto a partir do dispositivo conectado

Saídas

  • msg (json) : objeto com todo o pacote
  • msg.payload (string): texto da mensagem

Node para status

Monitora o código de status do dispositivo Meshtastic

Saídas

  • msg.payload (integer): código de status do dispositivo

Node para recebimento de eventos

Este node vai monitorar um evento pré-definido e encaminhar o pacote recebido
Tipicamente a saída é um campo JSON porém alguns eventos reportam números e outros strings de texto.
A lista de eventos pode ser encontrada em Mesthastic.js Event System Class

Configurações

  • event (string): evento para monitorar

Saídas

  • msg (json): dados do evento

Node para envio de pacote genérico

Envia um pacote genérico ao dispositivo conectado.
O pacote de entrada pode estar na forma de uma string (msg.payload) ou no formato Uint8Array (msg.byteData).

Entradas

  • msg.payload (string): Será convertido automaticamente para Uint8Array e utilizado em caso do byteData não definido. Se byteData estiver definido, é ignorado.
  • [msg.byteData] (json) : Dados codificados no formato Uint8Array. Se definido, será utilizado no lugar do payload. Exemplo [72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100, 33]
  • [msg.portNum] (integer): Número do aplicativo. Padrão 1 (text messsage app).
  • [msg.destination] (integer string): Número do node de destino, broadcast ou self. Padrão: broadcast
  • [msg.channel] (integer): Número do canal, padrão 0 (canal primário)
  • [msg.wantAck] (boolean): Confirmação, padrão true
  • [msg.wantResponse] (boolean): Padrão false
  • [msg.echoResponse] (boolean): Padrão false
  • [msg.replyId] (integer): Padrão null
  • [msg.emoji] (integer): Padrão null

[] = campos opcionais

Node para leitura do log do Meshtastic.js

Exibe o log da biblioteca Mesthastic.js. Útil para identificar erros ou monitorar o status.
Notas: Este não é o log do Node-RED ou do rádio Lora.

Saídas

  • msg (json) : objeto com todas as propriedades da mensagem
  • msg.payload (string): texto contando apenas a descrição (campos [0] e [1] concatenados)

Node para configuração do dispositivo

Este node permite configurar o dispositivo a ser conectado.
O protocolo de conexão é HTTP (ou HTTPS). Serial (USB), Bluetooth ou MQTT não são suportados.

Opções

  • IP or hostname (string) : Endereço IP address ou hostname do dispositivo Meshtastic a ser conectado. Exemplos: 192.168.0.15, meshtastic.local
  • Use TLS (boolean): Se true, a conexão é realizada através de TLS (criptografada). Padrão é false pois a maior parte dos dispositivos não está configurada para este modo.
  • Fetch interval (integer): Intervalo para atualização do dispositivo. Padrão é 5000ms.
Files
Versão
1.3
Plataformas suportadas
Linux, Windows, Mac
Tamanho do arquivo
101 KB
Checksum
SHA256: 9c4bcc20402c080513cb1f03a1cffe84d2ccf6de2e8be02d52bd458d53c99100
Capturas de tela

Categorias

O conteúdo deste campo é privado e não será exibido ao público.
CAPTCHA
7 + 13 =
Resolva este problema matemático simples e digite o resultado. Por exemplo para 1+3, digite 4.
Esta questão é para verificar se você é ou não um visitante humano e prevenir submissões automáticas de spam.
Protected by Spam Master