Skip to content

Latest commit

 

History

History
370 lines (277 loc) · 18.4 KB

File metadata and controls

370 lines (277 loc) · 18.4 KB

hardware LoRa de Meshtastic

MeshClaw

Lleva la IA a la mesh — sin Internet

versión en npm licencia estrellas en GitHub último commit compatibilidad con OpenClaw

English | 中文 | 日本語 | Français | Português | Español

MeshClaw es un plugin de canal para OpenClaw que conecta agentes de IA con redes mesh LoRa de Meshtastic. Envía y recibe mensajes potenciados por IA vía radio — desde la montaña, el océano o cualquier lugar donde no llega la red.

flowchart LR
    subgraph mesh ["📻 LoRa Mesh Network"]
        N["Meshtastic Nodes"]
    end
    subgraph gw ["⚙️ OpenClaw Gateway"]
        P["Meshtastic Plugin"]
        AI["AI Agent"]
    end
    subgraph llm ["🧠 AI Backend"]
        CLOUD["Cloud (OpenAI, Anthropic, …)"]
        LOCAL["Local (Ollama, llama.cpp, …)"]
    end
    N -- "Serial (USB)" --> P
    N -- "HTTP (WiFi)" --> P
    N -. "MQTT (Broker)" .-> P
    P <--> AI
    AI -- "Cloud API" --> CLOUD
    AI -. "Private" .-> LOCAL
Loading

Documentación · Guía de hardware · Reportar bug · Solicitar funcionalidad

Tabla de contenidos

Características

  • Integración con AI Agent — Conecta AI Agents de OpenClaw con redes mesh LoRa de Meshtastic. Funciona con IA en la nube desde el primer momento; opcionalmente, todo local (ver Hardware).
  • DM y canales de grupo con control de acceso — Soporta ambos modos de conversación con listas de permitidos para DM, reglas de respuesta por canal y filtrado por @mention
  • Soporte multicuenta — Ejecuta múltiples conexiones independientes a la vez
  • Comunicación mesh resiliente — Reconexión automática con reintentos configurables. Tolera caídas de conexión sin romperse.

Inicio rápido

Requisitos previos: Una instancia de OpenClaw en ejecución (Node.js 22+).

# 1. Install plugin
openclaw plugins install @seeed-studio/meshtastic

# 2. Guided setup — walks you through transport, region, and access policy
openclaw onboard

# 3. Verify
openclaw channels status --probe

Tres comandos. Tu IA ya está en la mesh.

Asistente de configuración de OpenClaw

Casos de uso

  • Investigación de campo — Científicos y equipos de prospección consultan bases de conocimiento de IA desde zonas remotas sin cobertura celular
  • Respuesta a desastres — Brigadas de emergencia reciben apoyo a la decisión con IA cuando la infraestructura está caída
  • Marítimo y aviación — Embarcaciones y aeronaves mantienen interacción con IA lejos de la costa o estaciones terrestres
  • Comunidades fuera de la red — Poblaciones rurales o de frontera acceden a herramientas de IA vía redes mesh comunitarias
  • Operaciones con privacidad primero — Empareja con un LLM local para despliegues aislados (air-gapped) donde la soberanía del dato importa
  • Puente entre canales — Envía desde LoRa fuera de la red y recibe la respuesta de la IA en Telegram, Discord o cualquier canal de OpenClaw

Demo

demo.mp4

Alternativa: media/demo.mp4

Consultar información sin conexión    Puente entre canales

Izquierda: consultas a conocimiento de IA sin conexión vía LoRa · Derecha: puente entre canales — envías desde la mesh, recibes en Telegram

Hardware recomendado

Dispositivo Meshtastic con módulo Seeed XIAO

Dispositivo Ideal para Enlace
XIAO ESP32S3 + Wio-SX1262 kit Desarrollo de entrada Comprar
Wio Tracker L1 Pro Gateway de campo portátil Comprar
SenseCAP Card Tracker T1000-E Rastreador compacto Comprar

Host de gateway: reComputer R1024 — No necesitas un Mac Mini. El reComputer R1024 (~$189, ~5 W) es un ordenador edge industrial sin ventilador que ejecuta OpenClaw 24/7. Alimentado por PoE, montable en riel DIN, con doble Ethernet y módulos opcionales LoRa/4G — ideal como gateway siempre encendido en el campo. Guía de inicio →

Opcional: pila de IA totalmente offline — ¿Quieres cero dependencia de la nube? Añade un reComputer serie J ejecutando un LLM local (via Ollama, llama.cpp, etc.) y toda la cadena — radio, gateway e inferencia — queda en tu propio hardware. Sin API keys, ningún dato sale de tu red.

¿Sin hardware? El transporte MQTT conecta vía broker — no necesitas un dispositivo local.

Cualquier dispositivo compatible con Meshtastic funciona.

Asistente de configuración

Ejecutar openclaw onboard abre un asistente interactivo que te guía por cada paso de configuración. Abajo verás qué significa cada paso y cómo elegir.

1. Transporte

Cómo se conecta el gateway a la mesh de Meshtastic:

Opción Descripción Requiere
Serial (USB) Conexión USB directa a un dispositivo local. Detecta puertos disponibles automáticamente. Dispositivo Meshtastic conectado por USB
HTTP (WiFi) Conecta a un dispositivo por red local. IP o nombre de host del dispositivo (p. ej. meshtastic.local)
MQTT (broker) Conecta a la mesh vía un broker MQTT — no necesitas hardware local. Dirección del broker, credenciales y topic de suscripción

2. Región LoRa

Solo Serial y HTTP. En MQTT la región se deduce del topic de suscripción.

Configura la región de frecuencias de radio en el dispositivo. Debe cumplir la normativa local y coincidir con los otros nodos de la mesh. Opciones comunes:

Región Frecuencia
US 902–928 MHz
EU_868 869 MHz
CN 470–510 MHz
JP 920 MHz
UNSET Mantener valor por defecto del dispositivo

Consulta la documentación de regiones de Meshtastic para la lista completa.

3. Nombre de nodo

El nombre visible del dispositivo en la mesh. También se usa como disparador de @mention en canales de grupo — otros usuarios envían @OpenClaw para hablar con tu bot.

  • Serial / HTTP: opcional — si lo dejas vacío, se detecta automáticamente del dispositivo conectado.
  • MQTT: obligatorio — no hay un dispositivo físico del cual leer el nombre.

4. Acceso a canales (groupPolicy)

Controla si (y cómo) el bot responde en canales de grupo de la mesh (p. ej. LongFast, Emergency):

Política Comportamiento
disabled (por defecto) Ignora todos los mensajes de canales de grupo. Solo se procesan DMs.
open Responde en todos los canales de la mesh.
allowlist Responde solo en los canales listados. Se te pedirá ingresar nombres de canal (separados por comas, p. ej. LongFast, Emergency). Usa * como comodín para coincidir con todos.

5. Requerir @mention

Solo aparece cuando el acceso a canales está habilitado (no disabled).

Si está activado (predeterminado: sí), el bot solo responde en canales de grupo cuando alguien menciona su nombre de nodo (p. ej. @OpenClaw ¿cómo está el clima?). Esto evita que el bot responda a cada mensaje del canal.

Si está desactivado, el bot responde a todos los mensajes en los canales permitidos.

6. Política de acceso a mensajes directos (DM) (dmPolicy)

Controla quién puede enviar mensajes directos al bot:

Política Comportamiento
pairing (por defecto) Nuevos remitentes disparan una solicitud de emparejamiento que debe aprobarse antes de chatear.
open Cualquiera en la mesh puede enviar DMs al bot libremente.
allowlist Solo los nodos listados en allowFrom pueden enviar DMs. El resto se ignora.

7. Lista de permitidos de DM (allowFrom)

Solo aparece cuando dmPolicy es allowlist, o cuando el asistente determina que hace falta.

Una lista de IDs de usuario de Meshtastic permitidos para enviar mensajes directos. Formato: !aabbccdd (ID de usuario en hex). Varias entradas separadas por comas.

8. Nombres visibles de cuentas

Solo aparece en configuraciones multicuenta. Opcional.

Asigna nombres legibles a tus cuentas. Por ejemplo, una cuenta con ID home podría mostrarse como "Home Station". Si lo omites, se usa el ID de cuenta tal cual. Es puramente cosmético y no afecta la funcionalidad.

Configuración

El asistente (openclaw onboard) cubre todo lo de abajo. Para configurar manualmente, edita con openclaw config edit.

Serial (USB)

channels:
  meshtastic:
    transport: serial
    serialPort: /dev/ttyUSB0
    nodeName: OpenClaw

HTTP (WiFi)

channels:
  meshtastic:
    transport: http
    httpAddress: meshtastic.local
    nodeName: OpenClaw

MQTT (broker)

channels:
  meshtastic:
    transport: mqtt
    nodeName: OpenClaw
    mqtt:
      broker: mqtt.meshtastic.org
      username: meshdev
      password: large4cats
      topic: "msh/US/2/json/#"

Multicuenta

channels:
  meshtastic:
    accounts:
      home:
        transport: serial
        serialPort: /dev/ttyUSB0
      remote:
        transport: mqtt
        mqtt:
          broker: mqtt.meshtastic.org
          topic: "msh/US/2/json/#"
Referencia de todas las opciones
Clave Tipo Predeterminado Notas
transport serial | http | mqtt serial
serialPort string Requerido para serial
httpAddress string meshtastic.local Requerido para HTTP
httpTls boolean false
mqtt.broker string mqtt.meshtastic.org
mqtt.port number 1883
mqtt.username string meshdev
mqtt.password string large4cats
mqtt.topic string msh/US/2/json/# Topic de suscripción
mqtt.publishTopic string derived
mqtt.tls boolean false
region enum UNSET US, EU_868, CN, JP, ANZ, KR, TW, RU, IN, NZ_865, TH, EU_433, UA_433, UA_868, MY_433, MY_919, SG_923, LORA_24. Solo Serial/HTTP.
nodeName string auto-detect Nombre visible y disparador de @mention. Requerido para MQTT.
dmPolicy open | pairing | allowlist pairing Quién puede enviar mensajes directos. Ver Política de acceso a mensajes directos (DM).
allowFrom string[] IDs de nodo para la lista de permitidos de DM, p. ej. ["!aabbccdd"]
groupPolicy open | allowlist | disabled disabled Política de respuesta en canales de grupo. Ver Acceso a canales.
channels Record<string, object> Configuración por canal: requireMention, allowFrom, tools
Overrides mediante variables de entorno

Estas variables sobrescriben la configuración de la cuenta por defecto (el YAML tiene prioridad para cuentas con nombre):

Variable Clave de configuración equivalente
MESHTASTIC_TRANSPORT transport
MESHTASTIC_SERIAL_PORT serialPort
MESHTASTIC_HTTP_ADDRESS httpAddress
MESHTASTIC_MQTT_BROKER mqtt.broker
MESHTASTIC_MQTT_TOPIC mqtt.topic

Solución de problemas

Síntoma Revisa
Serial no conecta ¿Ruta del dispositivo correcta? ¿El host tiene permisos?
HTTP no conecta ¿httpAddress es alcanzable? ¿httpTls coincide con el dispositivo?
MQTT no recibe nada ¿La región en mqtt.topic es correcta? ¿Credenciales del broker válidas?
No hay respuestas por DM ¿dmPolicy y allowFrom configurados? Ver Política de acceso a mensajes directos (DM).
No hay respuestas en grupo ¿groupPolicy habilitado? ¿El canal está en la lista de permitidos? ¿Requiere @mention? Ver Acceso a canales.

¿Encontraste un bug? Abre una issue con el tipo de transporte, la configuración (sin secretos) y la salida de openclaw channels status --probe.

Hoja de ruta

Planeamos ingerir datos de nodos en tiempo real (ubicación GPS, sensores ambientales, estado del dispositivo) en el contexto de OpenClaw, habilitando que la IA monitoree la salud de la red mesh y emita alertas proactivas — sin esperar a que el usuario pregunte.

Desarrollo

git clone https://github.com/Seeed-Solution/MeshClaw.git
cd MeshClaw
npm install
openclaw plugins install -l ./MeshClaw

Sin paso de build — OpenClaw carga el código TypeScript directamente. Usa openclaw channels status --probe para verificar.

Contribuciones

¡Toda contribución es bienvenida!

  • Reportes de bugs y solicitudes de funcionalidades — Abre una issue
  • Contribuciones de código — Haz fork del repositorio, crea una rama y envía un Pull Request. Mantén el código alineado con las convenciones existentes de TypeScript.
  • Documentación y traducciones — Siempre se agradecen mejoras de docs y nuevas traducciones.

Mira Desarrollo para instrucciones de setup local.


Si MeshClaw te resulta útil, déjanos una estrella ⭐ — ¡ayuda a que más gente descubra el proyecto!