↓ Ir para o conteúdo principal
  1. Postagens/

Integração do Meshtastic para Node-RED

·
Tabela de conteúdos
Node-RED Meshtastic
Node-RED Meshtastic

Este node permite enviar e receber pacotes de/para uma rede Meshtastic utilizando um dispositivo conectado através de HTTP(S) ou porta serial. É baseado na biblioteca Meshtastic Web.

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 Web (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
  • Permite conectar-se a múltiplos rádios Meshtastic simultaneamente

Limitações
#

  • Conectar através de servidor MQTT: esta função não é suportada pela biblioteca Meshtastic Web
  • Conectar ao dispositivo através de porta Bluetooth: função ainda não implementada pela biblioteca Meshtastic Web

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

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

Problemas conhecidos
#

  • Dispositivo conecta, envia mensangens mas não recebe: Este problema está no dispositivo Meshtastic que possívelvelmente está sobrecarregado:
    • Reiniciar o dispositivo
    • Desligar o TLS
    • Desligar o MQTT
    • Certificar que nenhum outro equipamento está conectado ao radio (app do celular, por exemplo)
    • Desligar o Bluetooth
    • Tentar conectar usando o IP ao invés do hostname
    • Desligar outros módulos que não estão sendo usados
    • Conectar via serial

Exemplos
#

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

Bonus
#

O arquivo fundamentals_meshtastic_web.mjsilustra como usar a biblioteca Meshtastic Web 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.


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
  • msg.text (string): 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
#

  • Connection mode: Selecionar o tipo de conexão. Padrão é http.
  • IP, hostname or device (string) : Endereço IP address ou hostname do dispositivo Meshtastic a ser conectado. Exemplos: 192.168.0.15, meshtastic.local ou /dev/ttyUSB0
  • Fetch interval (integer): Intervalo para atualização do dispositivo. Padrão é 5000ms.
  • Log level (integer): Nível de detalhe do log de informações. Padrão é 3, para produção melhor mudar para 5.

Downloads
#

Galeria
#