Replace native interface with external packet capture and rename receiver to observer

Remove the meshcore_interface component in favor of external
meshcore-packet-capture for data ingestion. Rename receiver_node_id
to observer_node_id across all models, schemas, handlers, and API
routes. Add Alembic migration for the column/table renames. Fix
frontend JS property name mismatch that prevented the Receiver column
from displaying observer data.
This commit is contained in:
Louis King committed 2026-04-12 14:07:14 +01:00
1 parent c7655b5242
commit 58499c420b
61 files changed
+577 -6106

No files matched your search

+12 -51
View File
@@ -4,15 +4,15 @@
# Configuration is grouped by service. Most deployments only need:
# - Common Settings (always required)
# - MQTT Settings (always required)
# - Interface Settings (for receiver/sender services)
# - Packet Capture Settings (for observer nodes)
#
# The Collector, API, and Web services typically run as a combined "core"
# profile and share the same data directory.
#
# -----------------------------------------------------------------------------
# QUICK START: Receiver/Sender Only
# QUICK START: Observer Node
# -----------------------------------------------------------------------------
# For a minimal receiver or sender setup, you only need these settings:
# For an observer node capturing mesh traffic, you need:
#
# MQTT_HOST=your-mqtt-broker.example.com
# MQTT_PORT=1883
@@ -59,7 +59,7 @@ SEED_HOME=./seed
# =============================================================================
# MQTT SETTINGS
# =============================================================================
# MQTT broker connection settings for interface, collector, and API services
# MQTT broker connection settings for collector and API services
# MQTT Broker host
# When using the local MQTT broker (--profile mqtt), use "mqtt"
@@ -92,54 +92,21 @@ MQTT_WS_PATH=/mqtt
MQTT_EXTERNAL_PORT=1883
MQTT_WS_PORT=9001
# =============================================================================
# INTERFACE SETTINGS (Receiver/Sender)
# =============================================================================
# Settings for the MeshCore device interface services
# Serial port for receiver device
SERIAL_PORT=/dev/ttyUSB0
# Serial port for sender device (if using separate device)
SERIAL_PORT_SENDER=/dev/ttyUSB1
# Baud rate for serial communication
SERIAL_BAUD=115200
# Optional device/node name to set on startup
# This name is broadcast to the mesh network in advertisements
MESHCORE_DEVICE_NAME=
# Optional node address override (64-char hex string)
# Only set if you need to override the device's public key
NODE_ADDRESS=
NODE_ADDRESS_SENDER=
# -------------------
# Contact Cleanup Settings (RECEIVER mode only)
# -------------------
# Automatic removal of stale contacts from the MeshCore companion node
# Enable automatic removal of stale contacts from companion node
CONTACT_CLEANUP_ENABLED=true
# Remove contacts not advertised for this many days
CONTACT_CLEANUP_DAYS=7
# =============================================================================
# PACKET CAPTURE SETTINGS
# =============================================================================
# External packet capture service (ghcr.io/agessaman/meshcore-packet-capture)
# Replaces the native interface-receiver. Uses the "receiver" compose profile.
# See https://github.com/agessaman/meshcore-packet-capture for documentation.
# Uses the "receiver" compose profile.
# Publishes captured packets to MQTT in LetsMesh upload format, ingested by
# the collector with COLLECTOR_INGEST_MODE=letsmesh_upload.
# the collector.
# Serial port for the packet capture device
SERIAL_PORT=/dev/ttyUSB0
# Docker image version tag for the packet capture image
PACKETCAPTURE_IMAGE_VERSION=latest
# Serial port for the packet capture device (reuses SERIAL_PORT by default)
# PACKETCAPTURE_SERIAL_PORT=/dev/ttyUSB0
# Connection timeout and retry settings
PACKETCAPTURE_TIMEOUT=30
PACKETCAPTURE_MAX_CONNECTION_RETRIES=5
@@ -195,13 +162,7 @@ PACKETCAPTURE_EXIT_ON_RECONNECT_FAIL=true
# =============================================================================
# The collector subscribes to MQTT events and stores them in the database
# Collector MQTT ingest mode
# - native: expects <prefix>/<pubkey>/event/<event_name> topics (native interface-receiver)
# - letsmesh_upload: expects LetsMesh observer uploads on
# <prefix>/<pubkey>/(packets|status|internal)
COLLECTOR_INGEST_MODE=letsmesh_upload
# LetsMesh decoder support (used only when COLLECTOR_INGEST_MODE=letsmesh_upload)
# LetsMesh decoder support
# Set to false to disable external packet decoding
COLLECTOR_LETSMESH_DECODER_ENABLED=true
@@ -275,7 +236,7 @@ NODE_CLEANUP_DAYS=7
# =============================================================================
# API SETTINGS
# =============================================================================
# REST API for querying data and sending commands
# REST API for querying data
# External API port
API_PORT=8000