Migrate from Node.js meshcore-decoder CLI to native Python meshcoredecoder library

Replace subprocess-based packet decoding with native Python meshcoredecoder>=0.3.2.
The decoder is now always enabled (no toggle), removing ENABLED/COMMAND/TIMEOUT
config vars. Adds _enrich_payload_decoded() to compensate for payload classes that
lack to_dict() overrides in the library. Removes Node.js/npm from Dockerfile and
deletes the patches/ directory. Adds parenthesized exception rule to AGENTS.md.
This commit is contained in:
Louis King
2026-04-12 18:03:20 +01:00
parent 8b54228c94
commit bf6b86696c
14 changed files with 856 additions and 307 deletions
+1 -10
View File
@@ -163,13 +163,7 @@ PACKETCAPTURE_EXIT_ON_RECONNECT_FAIL=true
# The collector subscribes to MQTT events and stores them in the database
# LetsMesh decoder support
# Set to false to disable external packet decoding
COLLECTOR_LETSMESH_DECODER_ENABLED=true
# Decoder command (must be available in container PATH)
# Examples: meshcore-decoder, /usr/local/bin/meshcore-decoder, npx meshcore-decoder
COLLECTOR_LETSMESH_DECODER_COMMAND=meshcore-decoder
# The native Python decoder is always enabled.
# Optional: channel secret keys (comma or space separated) used to decrypt GroupText
# packets. This supports unlimited keys.
# Note: Public + #test keys are built into the collector code by default.
@@ -177,9 +171,6 @@ COLLECTOR_LETSMESH_DECODER_COMMAND=meshcore-decoder
# Without keys, encrypted packets cannot be shown as plaintext.
# COLLECTOR_LETSMESH_DECODER_KEYS=
# Timeout in seconds per decode invocation
COLLECTOR_LETSMESH_DECODER_TIMEOUT_SECONDS=2.0
# -------------------
# Webhook Settings
# -------------------