mirror of
https://github.com/ipnet-mesh/meshcore-hub.git
synced 2026-06-11 08:44:53 +02:00
2.3 KiB
2.3 KiB
LetsMesh Packet Decoding
The collector subscribes to packets published by meshcore-packet-capture:
<prefix>/+/+/packets<prefix>/+/+/status<prefix>/+/+/internal
Normalization Behavior
statuspackets are stored as informationalletsmesh_statusevents and are not mapped toadvertisementrows.- Decoder payload type
4is mapped toadvertisementwhen node identity metadata is present. - Decoder payload type
11(control discover response) is mapped tocontact. - Decoder payload type
9is mapped totrace_data. - Decoder payload type
8is mapped to informationalpath_updatedevents. - Decoder payload type
1can map to native response events (telemetry_response,battery,path_updated,status_response) when decrypted structured content is available. packet_type=5packets are mapped tochannel_msg_recv.packet_type=1,2, and7packets are mapped tocontact_msg_recvwhen decryptable text is available.
Channel Keys
- For channel packets, if a channel key is available, a channel label is attached (for example
Publicor#test) for UI display. - In the messages feed and dashboard channel sections, known channel indexes are preferred for labels (
17 -> Public,217 -> #test) to avoid stale channel-name mismatches. - Additional channel names are loaded from
COLLECTOR_CHANNEL_KEYSwhen entries are provided aslabel=hex(for examplebot=<key>). - The collector keeps built-in keys for
Publicand#test, and merges any additional keys fromCOLLECTOR_CHANNEL_KEYS.
Location and Messages
- Decoder-advertisement packets with location metadata update node GPS (
lat/lon) for map display. - This keeps advertisement listings focused on node advert traffic only, not observer status telemetry.
- Packets without decryptable message text are kept as informational
letsmesh_packetevents and are not shown in the messages feed; when decode succeeds the decoded JSON is attached to those packet log events. - When decoder output includes a human sender (
payload.decoded.decrypted.sender), message text is normalized toName: Messagebefore storage; receiver/observer names are never used as sender fallback.
Decoder Runtime
- Docker runtime uses the native Python
meshcoredecoderlibrary (no external Node.js dependency).