Un invernadero en el fondo del campo, una bodega al otro lado del predio, una casa de veraneo donde el wifi no llega ni con repetidor. Son los lugares donde más te interesa saber si va a helar o si la humedad se disparó, y justo ahí no hay red. Un nodo Meshtastic resuelve la mitad del problema: mide temperatura y humedad y manda el dato por radio LoRa, sin wifi ni plan de datos, a varios cientos de metros (o kilómetros, con buena línea de vista). La otra mitad es que ese dato termine en Home Assistant, con historial, gráficos y alertas al celular.

En esta guía vas a armar ese puente. Un Raspberry Pi con radio LoRa queda en tu casa conectado a la red, escucha todo lo que circula por el mesh y se lo entrega a Home Assistant. Hay dos caminos para hacerlo y los vas a ver los dos: la integración de Meshtastic vía HACS, que crea los sensores sola, y el camino por MQTT, que usa solo lo que Home Assistant trae de fábrica. Al final vas a tener la temperatura y la humedad de un sensor remoto en tu panel, y mensajes de texto que viajan en ambas direcciones: del mesh a una notificación en tu celular y de una automatización de Home Assistant de vuelta al mesh.

Cómo viaja el dato: del sensor al panel

Antes de tocar configuraciones conviene tener claro el recorrido, porque casi todos los errores de este montaje salen de confundir quién hace qué.

  1. El nodo sensor (el que dejas en el invernadero) mide y transmite por LoRa en el canal por defecto del mesh. No sabe nada de redes, de MQTT ni de Home Assistant.
  2. El nodo puente (el Raspberry Pi con su HAT LoRa y meshtasticd) recibe ese paquete como recibe cualquier otro del mesh.
  3. El puente lo entrega a Home Assistant: o bien Home Assistant se conecta directo a él por TCP (camino de la integración), o bien el puente publica cada paquete en el broker MQTT (camino MQTT).
  4. Home Assistant saca de cada paquete el valor que le interesa y lo guarda como entidad.

Diagrama del recorrido de los datos: el sensor transmite por LoRa al Raspberry Pi, que los pasa por MQTT a Home Assistant, con camino de vuelta para los mensajes

De ahí salen dos ideas que te van a ahorrar tiempo. La primera: el nodo sensor no necesita ninguna configuración de red, solo estar al alcance de radio del puente (directo o saltando por otros nodos). La segunda: el puente trabaja para todo el mesh, no solo para tu sensor. Si hay otros nodos en la zona, sus paquetes también van a llegar a Home Assistant, cada uno con su número de origen, y vas a tener que filtrar.

El hardware

El montaje del tutorial original, hecho por raspberry.tips con equipos de RAKwireless, tiene dos piezas:

  • El puente: un Raspberry Pi 5 con su fuente oficial de 27 W, un HAT LoRa (WisMesh Pi HAT RAK6421 con el módulo de radio RAK13300, basado en el chip SX1262) y meshtasticd, la versión de Meshtastic que corre como servicio en Linux. Si todavía no lo tienes andando, primero instala meshtasticd y deja el nodo emparejado con la app.
  • El nodo sensor: un WisMesh RAK4631 Starter Kit (microcontrolador nRF52840 con radio SX1262) con el sensor RAK1901 de temperatura y humedad, emparejado con la app de Meshtastic en el celular.

Además necesitas Home Assistant funcionando y, según el camino que elijas, HACS o la aplicación "Mosquitto broker" (antes se llamaba add on) con la integración MQTT. Para el camino MQTT conviene tener también MQTT Explorer en el computador, para ver qué está llegando al broker.

Frecuencia: en Chile no es 868 MHz

El original usa hardware de 868 MHz, que es la banda europea. En Chile se usan los equipos de 915 MHz, y al configurar el nodo en la app tienes que elegir la región que cubre esa banda (en Meshtastic, US cubre 902 a 928 MHz y ANZ cubre 915 a 928 MHz). Todos los nodos de un mismo mesh deben tener la misma región, así que si vas a sumarte a una red que ya existe, pregunta cuál usa la comunidad de tu zona. Este detalle cambia algo más adelante: el tema raíz de MQTT que trae el nodo por defecto lleva el nombre de la región. Donde los ejemplos dicen msh/EU_868, en tu caso va a decir algo como msh/US o msh/ANZ.

¿Y el DHT22?

Si pensabas reciclar un DHT22 que tienes en un cajón, aquí hay una trampa: el firmware de Meshtastic lee la telemetría ambiental solo de sensores I2C que reconoce en el arranque (BME280, BME680, BMP280, SHTC3, SHT31, AHT10, entre otros). El DHT22 usa un protocolo propio de un cable, Meshtastic no lo lee, y el nodo simplemente no va a reportar nada. Para un nodo propio con una placa ESP32 LoRa, el BME280 es la opción más directa: va al bus I2C (SDA, SCL, 3,3 V y GND), el firmware lo detecta solo y además entrega presión atmosférica, útil para anticipar cambios de tiempo.

El sensor va en el nodo remoto, no en el Pi

Parece obvio, pero vale la pena decirlo con números. En la prueba original, el RAK1901 montado en el HAT del Pi 5 marcaba entre 34 y 36 °C; el mismo sensor en la placa del Starter Kit, en la misma pieza, marcaba 23 °C. El calor del procesador contamina cualquier lectura que se haga a centímetros de él. Además, la gracia del proyecto es que el sensor esté donde quieres medir.

Con el nodo apagado, el sensor se inserta en un conector libre por la parte de abajo de la placa base y se atornilla (en el original quedó en el slot D).

Parte inferior de la placa base del RAK4631 Starter Kit con el módulo sensor RAK1901 atornillado

Activar la telemetría en la app

El sensor no transmite nada hasta que lo habilitas. Conecta la app de Meshtastic al nodo sensor (no al Pi) y en Configuración → Telemetría activa dos interruptores:

  • Métricas ambientales: envía temperatura y humedad.
  • Métricas del dispositivo: envía nivel de batería y voltaje al mesh. Solo tiene sentido si el nodo funciona con batería; sin este interruptor, el nivel de batería lo ve únicamente la app conectada, no Home Assistant.

App de Meshtastic con los ajustes de telemetría: métricas del dispositivo y métricas ambientales activadas, con intervalo de treinta minutos

Un dato práctico: en la app de iOS el intervalo de las métricas ambientales no bajó de treinta minutos. Vas a tener dos lecturas por hora, que sobran para vigilar heladas o el clima de una bodega, pero no sirven para un control rápido. Para comprobar que el sensor quedó reconocido, entra al detalle del nodo y abre el registro de mediciones ambientales; en la lista general de nodos esos valores no aparecen.

App de Meshtastic con el registro de mediciones ambientales: 23 °C y entre 54 y 60 % de humedad

¿Integración o MQTT? Cómo elegir

Los dos caminos parten del mismo montaje (sensor remoto más puente). Cambia cómo llegan los datos del Pi a Home Assistant y cuánto tienes que configurar.

Integración (HACS) MQTT
Requisito HACS y el nodo accesible por red, Bluetooth o USB Broker MQTT en Home Assistant
Ajustes en el nodo Ninguno Módulo MQTT, uplink y reinicio
Entidades Se crean solas Un formulario con plantilla por cada valor
Enviar al mesh Acción notify.send_message Canal mqtt con downlink y JSON
Recibir del mesh Automatización con disparador de evento Automatización con disparador MQTT y condición
Datos para otros programas No Sí, todo queda en el broker
Mantenimiento Proyecto externo; último release de abril de 2025 y advertencias para Home Assistant 2027.7 y 2027.8 Herramientas nativas de Home Assistant
Limitación Ocupa la única conexión de ese tipo que acepta el nodo Los paquetes quedan sin cifrar en el broker

La recomendación corta: si ya usas HACS, la integración llega más rápido y te entrega más datos, a cambio de depender de que alguien la siga manteniendo. MQTT conviene si no quieres integraciones extra o si los datos también los va a leer otro programa, como Node RED o una base de datos de series de tiempo. No son excluyentes: en la prueba original corrieron los dos a la vez y mostraron los mismos valores.

Camino 1: la integración de Meshtastic desde HACS

La integración conecta Home Assistant directo al nodo puente, sin broker, sin plantillas y sin tocar la configuración del nodo. Es el repositorio meshtastic/home-assistant del propio proyecto Meshtastic. Se probó la versión 0.6.1, el release vigente al momento de la prueba (abril de 2025), sobre Home Assistant 2026.9.4. Funcionó, pero dejó varias advertencias en el registro: usa funciones que Home Assistant elimina en las versiones 2027.7 y 2027.8, así que si el proyecto no se actualiza, es esperable que deje de andar entonces.

Instalarla

En el catálogo por defecto de HACS no aparece (buscar "Meshtastic" devuelve otro proyecto), así que se agrega como repositorio propio:

  1. En HACS, menú de tres puntos → Repositorios personalizados. Escribe https://github.com/meshtastic/home-assistant y elige el tipo Integración.
  2. Abre el repositorio "Meshtastic" en HACS y pulsa Descargar.
  3. Reinicia Home Assistant.

Página del repositorio de la integración Meshtastic en HACS, release v0.6.1, con el botón Descargar

Conectarla al Pi

Después del reinicio, en Configuración → Dispositivos y servicios → Agregar integración, busca "Meshtastic". Los diálogos están en inglés. Lo primero que pregunta es el tipo de conexión: TCP/IP, Bluetooth o Serial. Para un Pi con meshtasticd, es TCP/IP.

Diálogo de la integración Meshtastic en Home Assistant con los tipos de conexión TCP/IP, Bluetooth y Serial

Como host va la IP del Pi; el puerto 4403 viene puesto. Es la misma interfaz que usa la línea de comandos de Meshtastic para hablar con el nodo.

Diálogo Connect via TCP/IP con el host 10.42.0.1 y el puerto 4403

Luego eliges qué nodos se convierten en dispositivos de Home Assistant. La lista trae todos los que conoce el Pi, pero se elige uno por vez: marcando Add another Node, la selección aparece de nuevo. Agrega primero el puente y después tu sensor.

En el diálogo siguiente se definen los destinos de notificación: uno por canal y, según lo que elijas, uno por nodo para mensajes directos. En un mesh grande, la opción All known and newly discovered Nodes genera decenas de entidades (el mismo diálogo lo advierte). Quédate con Only the selected Nodes.

Hay dos diálogos más, que ofrecen un cliente web integrado y un proxy TCP, ambos marcados como experimentales. Déjalos desactivados: según la descripción del proyecto, ese cliente web queda accesible sin login para cualquiera que llegue a la dirección de tu Home Assistant. Al final puedes nombrar los dispositivos y asignarlos a un área.

Lo que aparece solo

Recién configurada, la integración creó dos dispositivos con 37 entidades: 21 del puente (contadores de paquetes enviados y recibidos, número de nodos conocidos, etc.), 12 del Starter Kit y cuatro más, entre ellas los destinos de notificación.

Página de la integración Meshtastic 0.6.1 en Home Assistant con dos dispositivos y 37 entidades

Temperatura y humedad no están desde el principio: aparecen cuando llega el primer paquete de mediciones después de conectar, o sea, hasta treinta minutos con el intervalo de la app. Después, el nodo sensor muestra temperatura, humedad, relación señal/ruido, Battery Level, Voltage, Uptime, Channel Utilization, Airtime, Hops away y Last Heard.

Página del dispositivo Starter Kit en la integración, con humedad de 49,89 %, temperatura de 25,0 °C y otros sensores

Dos datos no calzaron con el hardware real. La integración nombra el modelo como "RAK WisMesh Repeater Mini V2 (RAK4631)", aunque es el Starter Kit (ambos usan el mismo módulo de radio). Y "Battery Level" marca 100 % sin batería conectada; el sensor confiable ahí es "Powered", que indica "Encendido". Si tu nodo va con batería, revisa ese valor contra el voltaje antes de armar alertas.

Enviar mensajes al mesh

Cada nodo y canal seleccionado tiene una entidad de tipo notificación. Un mensaje directo al nodo sensor es una acción común y corriente, que puedes lanzar desde Herramientas para desarrolladores o desde una automatización:

YAML
action: notify.send_message
target:
  entity_id: notify.mesh_node_meshtastic_d5d4
data:
  message: Hallo per HACS-Integration

La entidad sigue el patrón notify.mesh_node_ más el nombre del nodo, y el texto de message lo cambias por el que quieras. En la prueba original el mensaje llegó al Starter Kit y dos segundos después el registro del Pi mostró el acuse de recibo.

Recibir mensajes del mesh en el celular

Por cada mensaje de texto recibido, la integración dispara el evento meshtastic_api_text_message. Una automatización lo convierte en notificación de la app de Home Assistant. En Configuración → Automatizaciones y escenas, crea una nueva, pasa a Editar en YAML desde el menú de tres puntos y pega:

YAML
alias: Meshtastic-Nachricht aufs Handy
description: Textnachrichten aus dem Mesh als Mitteilung weiterreichen
triggers:
  - trigger: event
    event_type: meshtastic_api_text_message
actions:
  - action: notify.mobile_app_dein_handy
    data:
      title: Meshtastic
      message: "{{ trigger.event.data.data.message }}"
mode: queued

Lo único que tienes que cambiar es el nombre de tu acción de notificación (notify.mobile_app_...). Avisa tanto de mensajes directos al puente como de mensajes en el canal. El evento trae además remitente, destinatario y canal, por si quieres filtrar.

Una sola conexión a la vez. El nodo Meshtastic acepta una única conexión TCP de este tipo. Mientras Home Assistant esté conectado, cualquier otro acceso por el mismo puerto (por ejemplo meshtastic --host localhost en el propio Pi) lo saca de la línea. Si administras el nodo por consola, piensa en eso antes de culpar a la integración.

Camino 2: Meshtastic por MQTT

Aquí hay más pasos, pero no dependes de ningún proyecto externo, y todos los paquetes quedan en el broker para cualquier programa que los quiera leer.

Un detalle de compatibilidad: según la documentación de Meshtastic, los nodos con chip nRF52 (como el Starter Kit) no pueden publicar en formato JSON. Eso solo importa para el nodo conectado al broker; el Pi con meshtasticd entregó JSON sin problema, incluidos los paquetes del Starter Kit. Si tu puente fuera una placa ESP32 LoRa, también entrega JSON.

Broker propio, no el servidor público

Si no le indicas un servidor, el módulo MQTT se conecta al broker público del proyecto Meshtastic. Para Home Assistant no sirve: tus mediciones quedarían sin cifrar en un servidor ajeno y el puente dependería de internet. Por eso se configura el broker de tu red local.

Ojo con lo siguiente: la documentación desaconseja usar el canal por defecto con un broker privado. El servidor público evita que los paquetes que vienen de internet se retransmitan por radio; un broker privado no hace ese filtro, y los nodos que aceptan paquetes del broker podrían inundar el canal público. Eso afecta solo a la dirección broker → mesh, el downlink. Para las mediciones basta el uplink (mesh → broker), así que en el canal por defecto el downlink se queda apagado.

Paso 1: un usuario para el nodo en Home Assistant

El broker Mosquitto de Home Assistant acepta los usuarios creados en Home Assistant. Dale uno propio al nodo: en Configuración → Personas, agrega una persona, activa Permitir inicio de sesión, define usuario y contraseña y activa Solo acceso local. No necesita permisos de administrador. Usa una contraseña que no ocupes en ningún otro lado (más abajo verás por qué).

Paso 2: activar MQTT en el nodo puente

Abre el cliente web del Pi en https://IP-DEL-PI:9443 y ve a Configuración → Configuración de módulos → MQTT:

Campo Valor
Activado sí
Dirección del servidor MQTT IP de Home Assistant
Usuario / contraseña MQTT el usuario del paso 1
Cifrado activado no
JSON activado sí
TLS activado no
Tema raíz msh/EU_868 en el original; en Chile, el que trae tu nodo según la región
Proxy de cliente MQTT activado no

Cliente web de Meshtastic, ajustes del módulo MQTT con el módulo activado, dirección del servidor, usuario y contraseña oculta

Cliente web de Meshtastic, ajustes MQTT con cifrado desactivado, JSON activado y tema raíz msh/EU_868

Cifrado y TLS van apagados para que Home Assistant pueda leer los paquetes. El campo del tema raíz no puede quedar vacío o el cliente web no guarda; deja el valor que viene, porque es el inicio de todos los temas en que publica el nodo. Al guardar, el nodo se reinicia. Si el aviso de "cambios sin guardar" sigue ahí, recarga la página: los valores sí quedaron.

Paso 3: uplink en el canal principal y reinicio

Qué canales se reenvían al broker se define canal por canal. En Configuración → Channel Config → Primario, activa Uplink, deja Downlink apagado y guarda.

Cliente web de Meshtastic, configuración del canal primario con el uplink activado

Ahora reinicia el nodo a mano. Sin este reinicio el nodo de la prueba no se conectó al broker; lo más probable es que el módulo MQTT revise solo al arrancar si algún canal tiene uplink o downlink. El reinicio está en el menú de comandos de la barra lateral, sección "Contextual", como "Reiniciar dispositivo"; por consola es sudo systemctl restart meshtasticd.

Para confirmar que se conectó, revisa el registro del servicio por SSH en el Pi. Si aparece una línea con "MQTT connected", listo; si no sale nada, ve a la sección de problemas más abajo.

Bash
journalctl -u meshtasticd -b --no-pager | grep "MQTT connected"

Lo que queda expuesto. Sin cifrado y con JSON, todos los paquetes quedan legibles en el broker: quien tenga acceso al broker lee todo. Eso incluye los mensajes directos al puente, que por radio sí van cifrados; en la prueba original su texto apareció en claro bajo un tema propio. Además, meshtasticd escribe el usuario y la contraseña del broker en texto plano en su registro al conectarse. Nunca compartas salidas de journalctl sin revisarlas, y usa para el nodo una contraseña exclusiva.

Paso 4: ver qué llega con MQTT Explorer

Conecta MQTT Explorer al broker (IP de Home Assistant, puerto 1883, usuario del paso 1) y déjalo abierto. El broker no guarda los paquetes de Meshtastic, así que la rama msh aparece recién cuando llega un paquete después de conectar. Con un sensor cada media hora puede tardar; un mensaje de texto desde el nodo sensor al canal por defecto genera un paquete al tiro.

MQTT Explorer con el tema msh/EU_868/2/json/LongFast/!9eabc180 y un paquete JSON con temperature y relative_humidity

Bajo msh/EU_868/2 hay dos ramas: e con los datos crudos y json con la versión legible. El tema completo en la prueba fue msh/EU_868/2/json/LongFast/!9eabc180: LongFast es el nombre del canal por defecto y !9eabc180 el identificador del puente (no del sensor). Un paquete de mediciones se ve así:

JSON
{
  "channel": 0,
  "from": 523294164,
  "payload": {
    "relative_humidity": 56.7,
    "temperature": 23
  },
  "rssi": -27,
  "sender": "!9eabc180",
  "snr": 7.25,
  "to": 4294967295,
  "type": "telemetry"
}

Anota tres cosas: el tema, el número que aparece en from y el número del puente. from identifica al nodo que midió (aquí, el Starter Kit). sender nombra al puente, pero como identificador hexadecimal. Su número es ese mismo identificador sin el signo de exclamación, pasado de hexadecimal a decimal: !9eabc180 es 2662056320. Lo puedes convertir con la calculadora en modo programador o en el Pi con:

Bash
printf "%d\n" 0x9eabc180

Si te preguntas por qué to vale 4294967295: es 0xFFFFFFFF, la dirección de difusión de Meshtastic, o sea "para todos los nodos". Como todos los paquetes de todos los nodos pasan por el mismo tema, el campo from es lo que le permite a Home Assistant distinguir de quién es cada dato. Batería y voltaje llegan en un paquete aparte, menos frecuente, con los campos battery_level y voltage.

Paso 5: crear el sensor como dispositivo MQTT

Los dispositivos MQTT se crean desde la interfaz; no hace falta tocar configuration.yaml. El dispositivo es el nodo sensor completo, y cada entidad es una medición: vas a crear un dispositivo con dos entidades, no dos dispositivos.

  1. En Configuración → Dispositivos y servicios → MQTT, pulsa Agregar dispositivo MQTT y ponle nombre, por ejemplo "Meshtastic Invernadero". Elígelo con cuidado: en la prueba original no se pudo cambiar después desde este diálogo. El resto de los campos puede quedar vacío.
  2. Como tipo de entidad elige Sensor y como nombre la medición, "Temperatura". Home Assistant antepone solo el nombre del dispositivo.
  3. Clase de dispositivo, clase de estado Medición y unidad según la tabla de abajo.
  4. Como tema de estado, el de tu paso 4, y la plantilla de valor que corresponda.
  5. Para la humedad, en la integración MQTT pulsa el engranaje junto al dispositivo, elige Agregar otra entidad a… y repite los puntos 2 a 4. Cierra con Guardar cambios en ese mismo menú.

Home Assistant, detalles del sensor con clase de dispositivo humedad, clase de estado medición y unidad porcentaje

Entidad Clase de dispositivo Unidad
Temperatura Temperatura °C
Humedad Humedad %

Plantilla para la temperatura:

Jinja
{% if value_json.from == 523294164 and value_json.payload.temperature is defined %}{{ value_json.payload.temperature | float | round(1) }}{% endif %}

Para la humedad:

Jinja
{% if value_json.from == 523294164 and value_json.payload.relative_humidity is defined %}{{ value_json.payload.relative_humidity | float | round(1) }}{% endif %}

Si tu nodo va con batería, agrega una tercera entidad (clase Batería, unidad %):

Jinja
{% if value_json.from == 523294164 and value_json.payload.battery_level is defined %}{{ [value_json.payload.battery_level | int, 100] | min }}{% endif %}

En todas, reemplaza 523294164 por el número from de tu nodo sensor. La plantilla revisa primero si el paquete es de ese nodo y si trae el valor buscado; con cualquier otro paquete no devuelve nada y la entidad conserva su último valor. Ese filtro es lo que evita que la temperatura salte a cero cada vez que llega un mensaje de texto o el paquete de otro nodo. La de batería se limita a 100 porque el Starter Kit, alimentado por USB-C y sin batería, reporta 101 %; en la prueba los datos del dispositivo llegaron cada dos horas, menos seguido que los ambientales.

Las entidades nuevas aparecen como "Desconocido" hasta el próximo paquete del sensor, o sea, hasta media hora. Reiniciar el nodo sensor no lo acelera: solo manda información del nodo, no mediciones. Lo mismo pasa cada vez que editas o borras un dispositivo MQTT: Home Assistant recarga la integración y, como el broker no guarda los paquetes, todas las entidades de Meshtastic vuelven a "Desconocido" hasta el siguiente.

Mensajes del mesh al celular

Los mensajes de texto viajan por el mismo camino que las mediciones y llevan "type": "text". Crea una automatización nueva en YAML con este bloque:

YAML
alias: Meshtastic-Nachricht aufs Handy
description: Textnachrichten aus dem Mesh als Mitteilung weiterreichen
triggers:
  - trigger: mqtt
    topic: msh/EU_868/2/json/+/!9eabc180
    value_template: "{{ value_json.type }}"
    payload: text
conditions:
  - condition: template
    value_template: "{{ trigger.payload_json['from'] != 2662056320 }}"
actions:
  - action: notify.mobile_app_dein_handy
    data:
      title: Meshtastic
      message: "{{ trigger.payload_json.payload.text }}"
mode: queued

Cambia tres cosas: el identificador de tu puente en el tema (y la región, si no es EU_868), su número decimal en la condición y el nombre de tu acción de notificación. El + del tema acepta cualquier nombre de canal: los mensajes del canal llegan bajo LongFast y los directos al puente bajo PKI. La condición descarta los textos que envió el propio puente; sin ella, cada mensaje que mandes desde Home Assistant te volvería como notificación.

Mensajes de Home Assistant al mesh

Para el camino de vuelta, Meshtastic reserva un canal que tiene que llamarse exactamente mqtt. Créalo en el cliente web, en Configuración → Channel Config, en la siguiente pestaña libre: nombre mqtt en minúsculas, Downlink activado y Uplink apagado. El canal por defecto no se toca y su downlink sigue apagado. El rol del canal se deja como venga (en la prueba quedó en "DESACTIVADO" y funcionó). Reinicia el nodo otra vez.

Las mayúsculas importan: el nombre del canal pasa tal cual al tema. Si lo llamas MQTT, el nodo escucha en msh/EU_868/2/json/MQTT/ y el ejemplo no hace nada. Para probar, abre Herramientas para desarrolladores → Acciones, pasa a modo YAML y pega:

YAML
action: mqtt.publish
data:
  topic: msh/EU_868/2/json/mqtt/!9eabc180
  payload: '{"from": 2662056320, "to": 523294164, "type": "sendtext", "payload": "Hallo aus Home Assistant"}'

El canal mqtt es solo la entrada de estas órdenes de envío: el puente toma la orden del broker y transmite el texto por radio. from es el número del puente y to el del destinatario; con to sale como mensaje directo, y si lo omites el puente lo manda al canal por defecto, donde lo lee cualquier nodo al alcance. La documentación recomienda no pasar de 190 caracteres.

Esa misma acción la puedes meter en cualquier automatización: un aviso al mesh cuando se corta la luz en la casa, cuando salta una alarma o, en el caso del invernadero, cuando el pronóstico anuncia helada y quieres que lo lea quien está en el campo con su nodo en el bolsillo.

Si algo no funciona

Síntoma Causa probable Qué hacer
El cliente web no guarda los ajustes MQTT El tema raíz quedó vacío Escribir el tema raíz de tu región
"Cambios sin guardar" no desaparece El nodo se reinició y la página no se enteró Recargar la página
El registro no muestra intento de conexión al broker El uplink se activó después del último arranque Reiniciar el nodo
Failed to connect to MQTT server, y not authorised en Mosquitto Usuario o contraseña incorrectos Compararlos con el usuario creado en Home Assistant
MQTT Explorer no muestra la rama msh No ha llegado ningún paquete desde que conectaste Esperar o mandar un mensaje de texto
La entidad sigue en "Desconocido" Aún no llega un paquete que calce Esperar hasta 30 minutos; si no, revisar tema y número from
Todas las entidades vuelven a "Desconocido" de golpe Se editó o borró un dispositivo MQTT y la integración se recargó Esperar el siguiente paquete
La integración no muestra temperatura del nodo sensor Aún no llega un paquete de mediciones Esperar hasta 30 minutos
not a valid option at 'sequence[0].payload' al ejecutar mqtt.publish topic y payload no están bajo data: o el payload no va entre comillas Pegar el bloque tal como está arriba, con el payload entre comillas simples
El mensaje de Home Assistant no llega al mesh El canal no se llama exactamente mqtt o no reiniciaste el nodo Igualar nombre y tema, reiniciar
El nodo sensor no reporta temperatura aunque tiene un sensor conectado El sensor no es I2C compatible (por ejemplo, un DHT22) Cambiarlo por un BME280, SHTC3 o similar

Dos preguntas que salen siempre. ¿El nodo sensor necesita wifi o internet? No: solo transmite por LoRa. Red y MQTT los necesita únicamente el puente. ¿Otros pueden leer mis mediciones? Por radio sí, si el sensor transmite en el canal por defecto, porque su clave es pública y cualquier nodo Meshtastic al alcance la conoce. Si no quieres eso, crea un canal secundario con clave propia en ambos nodos y activa el uplink en ese canal en lugar del primario.

Variantes y mejoras

  • Un nodo propio con ESP32 LoRa y BME280 para el invernadero. En lugar del Starter Kit, una placa ESP32 con radio SX1262 de 915 MHz (tipo Heltec WiFi LoRa 32 V3) con el firmware Meshtastic flasheado desde el navegador y un BME280 en los pines I2C hace el mismo trabajo. Alimentada con una batería 18650 y un panel solar pequeño, puede quedar sola en el invernadero toda la temporada; en ese caso activa las métricas del dispositivo para vigilar la batería desde Home Assistant.
  • Alerta de helada en el celular. Con la temperatura ya como entidad, una automatización que avise cuando baje de 2 °C entre las 3 y las 8 de la mañana te da tiempo para encender un calefactor o cubrir las plantas. Combínala con la acción mqtt.publish del camino 2 y el aviso llega también al mesh, para quien no tiene datos en el campo.
  • Historial largo en InfluxDB o Grafana. Como en el camino MQTT todo queda en el broker, Node RED o Telegraf pueden suscribirse a msh/+/2/json/# y guardar cada paquete de todos los nodos, con RSSI y SNR incluidos. Así puedes ver cómo cambia la cobertura del mesh a lo largo del día, no solo la temperatura.
  • Puente sin Raspberry Pi. Según la documentación de Meshtastic, cualquier nodo con wifi o Ethernet puede usar el módulo MQTT, y todas las plataformas menos nRF52 publican en JSON. Una placa ESP32 LoRa conectada a tu wifi podría reemplazar al Pi como puente para el camino MQTT (el original solo lo probó con el Pi).

Personalización para Chile

En Chile consigues buena parte de este montaje en MechatronicStore. Busca en el catálogo:

  • Raspberry Pi 5: el nodo puente que corre meshtasticd y queda conectado a tu red.
  • Fuente USB-C de 27 W para Raspberry Pi 5: la oficial evita los avisos de bajo voltaje cuando el HAT LoRa está transmitiendo.
  • Tarjeta microSD de 32 GB o más para el sistema del Pi.
  • Placa ESP32 LoRa con SX1262 de 915 MHz: para armar tu propio nodo sensor (o un puente sin Pi), en lugar del RAK4631 Starter Kit del original.
  • Sensor BME280 I2C: temperatura, humedad y presión, leído directamente por el firmware de Meshtastic. Reemplaza al RAK1901; evita el DHT22, que Meshtastic no lee.
  • Batería 18650 con su portapilas si el nodo sensor va a quedar lejos de un enchufe.

Si en el tutorial original usan el WisMesh Pi HAT con el RAK13300, cualquier HAT LoRa con chip SX1262 compatible con meshtasticd cumple la misma función; revisa que sea de la banda de 915 MHz y que su pinout esté entre los soportados por el archivo de configuración de meshtasticd.

Recursos

Versión chilena con componentes en stock local en MechatronicStore.