No description
- Python 98.9%
- Makefile 0.7%
- Dockerfile 0.4%
| src | ||
| tests | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| docker-compose.yml | ||
| Dockerfile | ||
| LICENSE | ||
| Makefile | ||
| pytest.ini | ||
| README.md | ||
| requirements.txt | ||
Meshcore-Meshtastic MQTT Bridge
Bidirectional channel message bridge between Meshcore and Meshtastic LoRa mesh networks via MQTT.
What It Does
Messages sent on mapped channels are automatically forwarded between Meshcore and Meshtastic networks with sender attribution ([MC] or [MT] prefix).
This is a channel-only bridge - it does not support direct messages.
Quick Start
cp .env.example .env
# Edit .env with your settings
docker compose build
docker-compose up -d
Configuration
All settings are in .env. See .env.example for documentation.
Required settings:
MQTT_BROKER_HOST- Your MQTT brokerMESHTASTIC_BRIDGE_NODE_ID- Your Meshtastic node's hex ID (e.g.,!9eed111c)CHANNEL_MAPPING- JSON mapping channels with encryption keys
Channel Mapping Example
# Single channel with default LongFast key
CHANNEL_MAPPING='{"0": {"channel": "0", "name": "LongFast", "key": "AQ=="}}'
# Multiple channels
CHANNEL_MAPPING='{"0": {"channel": "0", "name": "LongFast", "key": "AQ=="}, "1": {"channel": "1", "name": "Private", "key": "YourBase64KeyHere=="}}'
The key is your Meshtastic channel's base64-encoded encryption key. AQ== is the public default key.
Message Format
[MT] TLora Pager [LILY]: Hello from Meshtastic!
[MC] MeshPocket: Hello from Meshcore!
Dry Run Mode
Set DRY_RUN=true to test without sending messages. The bridge will log what it would send.
Development
pip install -r requirements.txt
python -m src.main
# Run tests
pytest tests/ -v
Prerequisites
- Meshcore node running meshcore-mqtt
- Meshtastic node with MQTT enabled (JSON output + downlink on bridged channels)
- MQTT broker accessible to both
License
MIT