Sign in

This bot can transmit on your mesh.

MeshCore observer

…

Live traffic

Channel messages your node hears. Bars show the path: one bar per hop, short amber bars mean the sender uses 1-byte path hashes.

Triggers

Each trigger watches for an event, checks its conditions and then runs its actions. Triggers are checked from top to bottom; one marked "stops here" ends the list when it matches. Test any trigger before enabling it — tests never transmit.

Send a message

Sends right away through the send queue, even in dry run.

Ask a repeater

Requests status or telemetry from a repeater in your contacts. The bot logs in first, as guest if you leave the password empty. Use this to find out why a trigger gets no response.

Channels

Channels stored on your companion node. The bot hears, decodes and answers only in these.

SlotNameTypeUsed by triggers

Join a channel

Nodes

Contacts stored on your companion. Star the repeaters you use often: they stay on top and are suggested first everywhere.

NameTypePath (from your node)Last advertKey

Path

Discover asks the node for a fresh route and saves it. Reset makes your node flood the next message and learn the path again from the reply.

Set path by hand

Trigger log

Everything triggers did or would have done. Dry-run entries were not transmitted.

TimeTriggerActionResult

Network analytics

Built from every packet the observers report (MQTT read topic) plus this bot's own radio.

Data sources where the data comes from, and what to fix

Recommendations

Repeaters
RepeaterFwd/dayDuty cycleHeard byAvg SNRLinksNeeded forNo-region fwdLast seen

Packets

Every packet the observers heard, one row per packet. "Origin" estimates where it came from: adverts by the sender's GPS, other floods by the first repeater of every copy. If a sender is heard directly by repeaters on both sides of the border, the origin is "border". Click a row for all copies and the full path.

TimeTypeRegionOriginSent by / entered viaHopsHeard byContent

Packet

Network map

Repeaters with a GPS position, the links between them seen in packet paths, the main routes and where traffic enters the network. Only flood packets are counted.

Weather per channel

Pick a city for each channel. Weather in that channel's triggers and scheduled posts then comes from there. Channels you don't customise use the default row.

Use in templates: {arso_now} current conditions from the station, {arso_today} {arso_tomorrow} {arso_3d} ARSO forecast for the region, {weather} {weather_today} {weather_tomorrow} Open-Meteo forecast for the exact location, {place} city name.

MQTT uplink

Read topics feed the Analytics page. Use one per region code, e.g. meshcore/LJU/+/+, meshcore/MBX/+/+ (the last + gives packets and observer status). Find region codes lists the codes in use on a broker.

Sends every packet your node hears to MQTT brokers, in the same format as meshcore-packet-capture, so analyzers such as LetsMesh accept it. Token login is signed by your node, so its firmware must support on-device signing.

Brokers

Settings

Saved to the database in the data volume. Changing host or port reconnects.

Public read-only view

Shows only Analytics, Packets and Map (plus the printable report) without a password, either to everyone (open landing page) or only to people with a secret link. No triggers, sending, channels, contacts or settings. Decrypted message contents are never shown, only "channel message". Results come from the cache, so visitors can't load the server.

"New link" makes the old secret link stop working immediately (the open landing page is not affected). For admins outside your home network, the bot must be reachable from the internet (port forwarding, a reverse proxy with HTTPS, or a tunnel such as Cloudflare Tunnel or Tailscale Funnel); share only the /s/… link, keep WEB_PASSWORD set for the rest.

Trigger

Template variables: {path_names} (repeaters the message came through) {path} {problems} (what matched: e.g. "path hash 1B, no region") {sender} {text} {arg} (text after the first word) {channel_name} {hops} {hash_size} {region} {snr} {rssi} {time} {date} {me} {place} {weather} {weather_today} {weather_tomorrow} {arso_now} {arso_station} {arso_today} {arso_tomorrow} {arso_3d} {arso_area} (city per channel on the Weather page; or fixed, e.g. {arso_now:IDRIJA_CISTI-NAP}) {status} {telemetry} {rpt_name} {bat} {bat_pct} {temp} {hum} {press} {sensors} {uptime} {noise} {rx} {tx}

Test with a sample message