HBME Server — centralized MeshCore packet ingestor, analysis and visualization
  • Python 56.5%
  • HTML 42.8%
  • Mako 0.5%
  • Dockerfile 0.2%
Find a file
ppfeiffer 3372203f28
All checks were successful
Tests / test (push) Successful in 1m9s
docs: CHANGELOG für v0.1.1 und v0.1.2 dokumentiert
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 19:29:10 +02:00
.forgejo/workflows tests: 21 Tests + Forgejo CI-Workflow; Modell-Kompatibilität SQLite 2026-04-16 22:06:02 +02:00
alembic feat: PeerEdge-Topologie, Nachrichten-Seite, Node/Peer-Details und -Löschung 2026-04-17 17:32:13 +02:00
app feat: Dashboard vollständig auf API + WebSocket umgebaut 2026-04-17 19:14:44 +02:00
tests feat: PeerEdge-Topologie, Nachrichten-Seite, Node/Peer-Details und -Löschung 2026-04-17 17:32:13 +02:00
.env.example feat: Admin-Auth, WebSocket Live-Stream, .env ADMIN_KEY 2026-04-16 21:43:59 +02:00
.gitignore feat: decode TXT_MSG text content + Alembic migrations 2026-04-17 12:06:50 +02:00
alembic.ini feat: initiales Projektgerüst 2026-04-16 21:40:31 +02:00
CHANGELOG.md docs: CHANGELOG für v0.1.1 und v0.1.2 dokumentiert 2026-04-17 19:29:10 +02:00
CLAUDE.md feat: PeerEdge-Topologie, Nachrichten-Seite, Node/Peer-Details und -Löschung 2026-04-17 17:32:13 +02:00
docker-compose.yml chore: pre-test fixes — Health-Endpoint, raw_hex-Limit, docker-compose .env, CLAUDE.md 2026-04-17 08:09:01 +02:00
Dockerfile fix: pyproject.toml Build-Backend auf setuptools.build_meta wechseln 2026-04-17 09:39:01 +02:00
LICENSE Initial commit 2026-04-16 21:31:13 +02:00
pyproject.toml fix: pyproject.toml Build-Backend auf setuptools.build_meta wechseln 2026-04-17 09:39:01 +02:00
README.md feat: initiales Projektgerüst 2026-04-16 21:40:31 +02:00

meshcore-meshdd

Centralized MeshCore packet ingestor, analysis and visualization server.

Empfängt Paket-Metadaten von MeshCore-Bots (via POST /api/v1/ingest), speichert sie in PostgreSQL und stellt ein Web-Dashboard sowie eine REST-API bereit.

Stack

  • FastAPI — async REST API + automatische OpenAPI-Docs unter /docs
  • PostgreSQL — persistente Speicherung (Nodes, Pakete, API-Keys)
  • SQLAlchemy async — ORM mit Alembic-Migrations
  • Jinja2 + Bootstrap 5 — Web UI

Schnellstart

# Mit Docker Compose
docker compose up -d

# Manuell
cp .env.example .env
# .env anpassen (DATABASE_URL etc.)
pip install -e .
uvicorn app.main:app --reload

Web UI: http://localhost:8000
API Docs: http://localhost:8000/docs

API

Paket einliefern

POST /api/v1/ingest
X-API-Key: <key>

{
  "route_type": "ROUTE_TYPE_FLOOD",
  "payload_type": "PAYLOAD_TYPE_TXT_MSG",
  "snr": 8.5,
  "rssi": -95,
  "path": "aabbcc",
  "path_len": 2,
  "packet_hash": "abc123...",
  "raw_hex": "..."
}

Node + API-Key anlegen

POST /api/v1/admin/nodes
{"name": "mein-bot", "description": "..."}
→ {"id": 1, "name": "mein-bot", "api_key": "<key>"}

Pakete abfragen

GET /api/v1/packets?limit=50&payload_type=PAYLOAD_TYPE_TXT_MSG
GET /api/v1/nodes

Konfiguration

Alle Einstellungen via Umgebungsvariablen oder .env:

Variable Standard Beschreibung
DATABASE_URL postgresql+asyncpg://meshdd:meshdd@localhost:5432/meshdd PostgreSQL-URL
SECRET_KEY change-me-in-production Secret für interne Signierung
DEBUG false SQL-Logging aktivieren
PACKET_RETENTION_DAYS 90 Paket-Aufbewahrung in Tagen

Verbindung mit meshcore-bot

Im meshcore-bot die [HBMEIngestor]-Konfiguration anpassen:

[HBMEIngestor]
enabled = true
api_url = http://localhost:8000/api/v1/ingest
api_key = <erzeugter-key>
preview_mode = false