Describe the bug
Messages sent through MQTT channels are not being received by my node/application as expected.
MQTT messages only appear to come through when another Meshtastic node is physically nearby over LoRa and that nearby node is also connected to the internet/MQTT through the default Meshtastic app.
In other words, it appears that MQTT messages are not being received directly through the configured MQTT connection. They only become available when a nearby LoRa node that is online through the official Meshtastic app acts as a bridge.
To Reproduce
- Connect the node/application normally with MQTT enabled.
- Configure the same Meshtastic MQTT channel/topic used by other nodes.
- Send a message to that channel from a remote node over MQTT.
- Confirm that there is no nearby LoRa node connected to MQTT through the official Meshtastic app.
- Observe that the MQTT message is not received.
- Bring another Meshtastic node nearby over LoRa.
- Connect that nearby node to the internet/MQTT using the default Meshtastic app.
- Send another message through the same MQTT channel.
- Observe that the message is now received over LoRa from the nearby internet-connected node.
Expected behavior
Messages sent through the configured MQTT channel should be received directly through MQTT regardless of whether another Meshtastic node is nearby over LoRa.
A nearby node connected to the internet through the official Meshtastic app should not be required for MQTT channel messages to be received.
The expected path should be:
Remote Node -> MQTT Broker -> Application/Connected Node
Currently, the behavior appears to require:
Remote Node -> MQTT Broker -> Nearby Meshtastic Node using Official App -> LoRa -> Application/Connected Node
Screenshots
I can provide screenshots, MQTT configuration, logs, or packet examples if needed.
Environment
-
Host OS: [Linux / Mac / Windows]
-
Deployment type: [Docker / Mac App / Windows App / Baremetal / NPM]
- Container version: [if applicable]
- App host OS: [if applicable]
- NPM commit: [if applicable]
-
Networking customizations: [None / Reverse Proxy / Cloudflare Tunnel / Tailscale / Other]
-
Database backend: [SQLite / PostgreSQL / MySQL]
-
Node type: [Heltec V4 / Station G2 / meshtastid / Pi Hat / Other]
-
Node Connection Type: [WiFi / Serial Bridge / BLE Bridge / Other]
-
VirtualNode client: [iOS Meshtastic App / Android Meshtastic App / Home Assistant / Other / N/A]
Additional context
The important part of the issue is that MQTT itself does not appear to be delivering channel messages directly.
I can reproduce the issue by having no nearby internet-connected Meshtastic nodes. Messages sent through MQTT do not arrive.
As soon as another node is nearby over LoRa and that node is connected to MQTT/internet using the default Meshtastic app, messages begin coming through.
This makes it appear that the application/node is receiving the messages over LoRa from the nearby node, rather than receiving them directly from MQTT.
The MQTT configuration/channel works because the nearby node using the official Meshtastic app is able to receive the MQTT traffic and retransmit it over LoRa.
This may indicate an issue with MQTT subscription, topic/channel handling, message decoding, or forwarding of MQTT-originated packets.
Describe the bug
Messages sent through MQTT channels are not being received by my node/application as expected.
MQTT messages only appear to come through when another Meshtastic node is physically nearby over LoRa and that nearby node is also connected to the internet/MQTT through the default Meshtastic app.
In other words, it appears that MQTT messages are not being received directly through the configured MQTT connection. They only become available when a nearby LoRa node that is online through the official Meshtastic app acts as a bridge.
To Reproduce
Expected behavior
Messages sent through the configured MQTT channel should be received directly through MQTT regardless of whether another Meshtastic node is nearby over LoRa.
A nearby node connected to the internet through the official Meshtastic app should not be required for MQTT channel messages to be received.
The expected path should be:
Remote Node -> MQTT Broker -> Application/Connected NodeCurrently, the behavior appears to require:
Remote Node -> MQTT Broker -> Nearby Meshtastic Node using Official App -> LoRa -> Application/Connected NodeScreenshots
I can provide screenshots, MQTT configuration, logs, or packet examples if needed.
Environment
Host OS: [Linux / Mac / Windows]
Deployment type: [Docker / Mac App / Windows App / Baremetal / NPM]
Networking customizations: [None / Reverse Proxy / Cloudflare Tunnel / Tailscale / Other]
Database backend: [SQLite / PostgreSQL / MySQL]
Node type: [Heltec V4 / Station G2 / meshtastid / Pi Hat / Other]
Node Connection Type: [WiFi / Serial Bridge / BLE Bridge / Other]
VirtualNode client: [iOS Meshtastic App / Android Meshtastic App / Home Assistant / Other / N/A]
Additional context
The important part of the issue is that MQTT itself does not appear to be delivering channel messages directly.
I can reproduce the issue by having no nearby internet-connected Meshtastic nodes. Messages sent through MQTT do not arrive.
As soon as another node is nearby over LoRa and that node is connected to MQTT/internet using the default Meshtastic app, messages begin coming through.
This makes it appear that the application/node is receiving the messages over LoRa from the nearby node, rather than receiving them directly from MQTT.
The MQTT configuration/channel works because the nearby node using the official Meshtastic app is able to receive the MQTT traffic and retransmit it over LoRa.
This may indicate an issue with MQTT subscription, topic/channel handling, message decoding, or forwarding of MQTT-originated packets.