MQTT & community meshes

Observing beyond radio range

Why MQTT exists in a radio hobby

Your radio hears a few kilometers. Your community's mesh spans a metro. Bridging nodes uplink their traffic to a shared MQTT broker, and Coop's observer can subscribe to that broker — so Perch shows the whole city's mesh even when RF only delivers the neighborhood. Observed packets flow through the same decrypt/decode/capture pipeline and are tagged via mqtt so you always know what arrived by radio versus internet.

Turning it on

MESH_MQTT_ENABLED=1 \
MESH_MQTT_HOST=mqtt.example.org  MESH_MQTT_PORT=1883 \
MESH_MQTT_USER=community  MESH_MQTT_PASS=… \
MESH_MQTT_ROOT=msh/US/YourMesh \
coop
VariableDefaultMeaning
MESH_MQTT_ENABLEDoff1 starts the observer.
MESH_MQTT_HOST / _PORTCommunity broker address.
MESH_MQTT_USER / _PASSemptyBroker credentials (most community brokers publish read creds).
MESH_MQTT_ROOTRoot topic, e.g. msh/US/MeshSTL.
MESH_MQTT_CLIENT_IDperch-observerHow you appear to the broker.
MESH_MQTT_DEFAULT_PSKAQ==Key tried for unnamed/default-key traffic.
MESH_MQTT_CHANNEL_KEYSJSON of extra keys: {"MyGroup":"base64psk="} — lets the observer decrypt private channels you belong to.

Health and counters (received / decoded / decrypt-failed) show on Coop's status page and in GET /api/mqtt.

Clubs — switching communities in one click

A "club" bundles a broker + root topic + keys. GET /api/clubs lists known ones; POST /api/clubs/join re-points the observer live. It's how one Perch install follows whichever community you're visiting.

Etiquette & privacy notes