Feature: MeshCore Companion-Port als eigenständiger Bereich im Dashboard #20
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Feature Request: MeshCore Companion-Port Integration
Motivation
Neben dem primären Meshtastic-Node soll ein MeshCore Companion-Radio als zweite, vollständig getrennte Datenquelle ins Dashboard eingebunden werden. MeshCore ist eine eigenständige LoRa-Mesh-Firmware und kein Meshtastic – die beiden Systeme sind protokollinkompatibel.
Designentscheidung: Meshtastic- und MeshCore-Daten werden nicht zusammengeführt. Nodes, Nachrichten, Kanäle und Karten beider Systeme werden auf getrennten Unterseiten dargestellt. Die bestehenden Seiten bleiben unverändert.
Protokollunterschiede: Meshtastic vs. MeshCore
meshtastic(TCPInterface)meshcore(asyncio, PyPI)!hexKontakttypen und ihre Darstellung
Neue Seiten im Webinterface (Übersicht)
/meshcore/meshcore/nodes/meshcore/map/meshcore/messages/meshcore/channels/meshcore/channels/{key}/meshcore/rf-stats/meshcore/trace/meshcore/config/meshcore/scheduler/meshcore/nina/meshcore/trafficRadio-Konfiguration (
/meshcore/config) – Kernelement dieses FeaturesWichtiger Unterschied zu Meshtastic
MeshCore hat keine Region-Enum (kein
EU_868,USetc.). Regionen sind in MeshCore nutzerdefinierte Flood-Scope-Strings (z.B.#europe,#us-ca). Die Funkparameter werden direkt als Frequenz/BW/SF/CR gesetzt. Das Dashboard bietet dafür Preset-Buttons nach Community-Standard:Radio-Parameter (direkt editierbar)
mc.commands.set_radio(freq=...)mc.commands.set_radio(bw=...)mc.commands.set_radio(sf=...)mc.commands.set_radio(cr=...)mc.commands.set_radio(tx=...)set af <n>via CLImc.commands.set_name()mc.commands.set_coords()RESP_CODE_BATT_AND_STORAGEPath Hash Mode
Path Hash Mode steuert die Größe des Pfad-Hashes in Repeater-Broadcasts und beeinflusst damit Routing-Kapazität und maximale Hop-Anzahl.
Hinweis: Ab Firmware v1.14.0 leiten alle Repeater 1-, 2- und 3-Byte-Pakete weiter, unabhängig von ihrer eigenen Einstellung. Ältere Firmware ignoriert 2- und 3-Byte-Pakete.
Einstellung im Dashboard
Global (Radio-Config-Seite
/meshcore/config):mc.commands.set_path_hash_mode(0|1|2)(Protokoll-Byte:0x3D)path_hash_mode_supported(aus Device-Query, fw_ver >= 10)Per-Kanal-Override (Kanal-Verwaltung
/meshcore/channels):mc_channels.path_hash_mode_override(NULL = kein Override)PUT /api/meshcore/channels/{key}/path-hash-modeFlood Scope
Flood Scope begrenzt die regionale Ausbreitung von Flood-Paketen. Repeater mit Regions-Konfiguration leiten nur Pakete mit passendem Scope weiter.
Werte
""/"*"/"0""#RegionName"Der
#-Präfix wird automatisch ergänzt. Der Scope-Key wird wie Kanal-Keys als SHA-256-Hash (erste 16 Bytes) des Namens abgeleitet.Einstellung im Dashboard
Global (Radio-Config-Seite
/meshcore/config):CommandType.SET_FLOOD_SCOPE(0x36), Key = SHA-256(scope)[0:16]*= Scope deaktivierenPer-Kanal-Override (Kanal-Verwaltung
/meshcore/channels):mc_channels.flood_scope_override(NULL = kein Override)PUT /api/meshcore/channels/{key}/flood-scopeLoop Detection
Repeater-Einstellung (ab v1.14.0), die Routing-Schleifen erkennt und unterbricht.
offminimalmoderatestrictAuf der Radio-Config-Seite als Dropdown anzeigen und setzbar machen (nur wenn Firmware >= 1.14.0).
Kanal-Verwaltung (
/meshcore/channels) – vollständiges DatenmodellJeder Kanal hat folgende einstellbare Parameter:
namekeyis_hashtag#on_radioflood_scope_overridepath_hash_mode_overridefavoritelast_activemsg_countKanal-Datenmodell
Key-Ableitung
SHA-256-Hash des Kanalnamens, erste 16 Bytes = 32-stelliger Hex-Key. Hashtag-Kanäle (
#name) werden automatisch abgeleitet. Der "Public"-Kanal hat einen festen kanonischen Key.on_radio-Flag
Kanäle können im Dashboard verfolgt werden, ohne im Radio geladen zu sein.
on_radioist ein separates DB-Feld.Nachrichten-Format in Kanälen
Kanalnachrichten betten den Absender als
"Name: Text"ein. Das Frontend parst den Absender vor dem ersten:(max. 50 Zeichen).Datenbank (meshbot/database.py)
Neue Tabellen (kein Eingriff in bestehende Tabellen):
Neues Modul meshbot/meshcore_client.py
Klasse
MeshCoreClient:await MeshCore.create_tcp(host, port)mc_statusCMD_GET_CONTACTS,CMD_GET_STATS)send_to_channel(text, channel_name)als Callback für Bot-DiensteWeb-API – neue Endpunkte
/api/meshcore/status/api/meshcore/contacts/api/meshcore/messages/api/meshcore/channels/api/meshcore/channels/api/meshcore/channels/{key}/api/meshcore/channels/{key}/messages/api/meshcore/channels/{key}/send/api/meshcore/channels/{key}/flood-scope/api/meshcore/channels/{key}/path-hash-mode/api/meshcore/rf-stats/api/meshcore/trace/api/meshcore/trace/{contact_key}/api/meshcore/config/api/meshcore/config/api/meshcore/config/preset/{name}Erweiterung der bestehenden Bot-Dienste
Alle drei Dienste nutzen intern
send_callback(text, channel). Diese wird um einen optionalenmc_send_callback(text, channel_name)ergänzt.NINA → MeshCore (
/meshcore/nina)Erweiterung
nina.yamlpro Schweregrad um optionalenmeshcore:-Block:Traffic → MeshCore (
/meshcore/traffic)Erweiterung
config.yaml:Scheduler → MeshCore (
/meshcore/scheduler)Erweiterung
scheduler.yamlpro Job:Neue Konfiguration (config.yaml)
Neue Abhängigkeiten (requirements.txt)
Offene Fragen
/meshcore/scheduleroder erweiterte gemeinsame/scheduler-Seite mit optionaler MeshCore-Spalte?Betroffene / neue Dateien
Backend:
meshbot/meshcore_client.py– neumeshbot/database.py– neue mc_*-Tabellenmeshbot/webserver.py– neue/api/meshcore/*-Endpunktemeshbot/nina.py+meshbot/traffic.py+meshbot/scheduler.py– mc_send_callbackconfig/config.yaml,config/nina.yaml,config/scheduler.yamlrequirements.txt,main.pyFrontend (alle neu):
static/meshcore.html/js,meshcore-nodes.html/js,meshcore-map.html/jsstatic/meshcore-messages.html/js,meshcore-channels.html/js,meshcore-channel.html/jsstatic/meshcore-rf-stats.html/js,meshcore-trace.html/jsstatic/meshcore-config.html/js(inkl. Preset-Buttons, Path Hash Mode, Flood Scope, Loop Detection)static/meshcore-scheduler.html/js,meshcore-nina.html/js,meshcore-traffic.html/jsstatic/js/app.js– Sidebar-ErweiterungReferenzen
feat: Support for a second MeshCore companion port (multi-interface)to Feature: Unterstützung eines zweiten MeshCore-Companion-Ports (Multi-Interface)Feature: Unterstützung eines zweiten MeshCore-Companion-Ports (Multi-Interface)to Feature: MeshCore Companion-Port als zweite Datenquelle im DashboardFeature: MeshCore Companion-Port als zweite Datenquelle im Dashboardto Feature: MeshCore Companion-Port als eigenständiger Bereich im Dashboard