Eine Karte aller meshtastischen Knoten, die über MQTT zu hören sind.
Meine Version der Karte ist unter https://meshtastic.liamcottle.net verfügbar
Schauen Sie sich meinen neuen Meshtastic -Web -Client an: meshtxt

mqtt.meshtastic.org verbunden und dem Thema msh/# abonniert.AQ== zu entschlüsseln.ServiceEnvelope dekodiert werden kann, wird es ignoriert.NODEINFO_APP -Pakete fügen der Datenbank einen Knoten hinzu.POSITION_APP -Pakete aktualisieren die Position eines Knotens in der Datenbank.NEIGHBORINFO_APP -Pakete protokollieren Nachbarn, die von einem Knoten zur Datenbank gehört werden.TELEMETRY_APP -Pakete aktualisieren Batterie- und Spannungsmetriken für einen Knoten in der Datenbank.TRACEROUTE_APP -Pakete protokollieren alle Trace -Routen, die von einem Knoten an die Datenbank durchgeführt werden.MAP_REPORT_APP -Pakete werden in der Datenbank gespeichert, jedoch nicht weit verbreitet, also werden dies also noch nicht verwendet.TEXT_MESSAGE_APP -Paketen, wenn sie hereinkommen. NEIGHBORINFO_APP .Klonen Sie das Projektrepo.
git clone https://github.com/liamcottle/meshtastic-map
cd meshtastic-map
Installieren Sie NodeJS -Abhängigkeiten
npm install
Erstellen Sie eine .env -Umgebungsdatei.
touch .env
Fügen Sie eine Datenbankverbindungszeichenfolge für Prisma zur .env -Datei hinzu.
DATABASE_URL="mysql://root@localhost:3306/meshtastic-map?connection_limit=100"
Hinweis: Einige Abfragen sind mySQL -spezifisch. Andere DB -Anbieter wurden nicht getestet.
Migrieren Sie die Datenbank.
npx prisma migrate dev
Führen Sie den MQTT -Listener aus, um Pakete in der Datenbank zu speichern.
node src/mqtt.js
Führen Sie den Express -Server aus, um die /api und die MAP -Benutzeroberfläche zu bedienen.
node src/index.js
# Server running at http://127.0.0.1:8080
Hinweis: Sie können auch einen benutzerdefinierten Port mit
--port 8123verwenden
Führen Sie die folgenden Befehle aus dem meshtastic-map Repo aus.
# update repo
git fetch && git pull
# migrate database
npx prisma migrate dev
Sie müssen nun die Skripte index.js und mqtt.js neu starten.
Standardmäßig stellt der MQTT -Kollektor mit dem öffentlichen Meshtastic MQTT -Server eine Verbindung her. Alternativ können Sie die relevanten Optionen im Abschnitt "Hilfesabschnitt unten" angeben, um eine Verbindung zu Ihrem eigenen MQTT -Server zusammen mit Ihren eigenen Entschlüsselungsschlüssel herzustellen.
node src/mqtt.js --help
Meshtastic MQTT Collector
Collects and processes service envelopes from a Meshtastic MQTT server.
Options
-h, --help Display this usage guide.
--mqtt-broker-url string MQTT Broker URL (e.g: mqtt://mqtt.meshtastic.org)
--mqtt-username string MQTT Username (e.g: meshdev)
--mqtt-password string MQTT Password (e.g: large4cats)
--mqtt-topic MQTT Topic to subscribe to (e.g: msh/#)
--collect-service-envelopes This option will save all received service envelopes to the database.
--collect-text-messages This option will save all received text messages to the database.
--collect-waypoints This option will save all received waypoints to the database.
--collect-neighbour-info This option will save all received neighbour infos to the database.
--collect-map-reports This option will save all received map reports to the database.
--decryption-keys <base64DecryptionKey> ... Decryption keys encoded in base64 to use when decrypting service envelopes.
--purge-interval-seconds number How long to wait between each automatic database purge.
--purge-nodes-unheard-for-seconds number Nodes that haven't been heard from in this many seconds will be purged from the database.
Um eine Verbindung zu Ihrem eigenen MQTT -Server herzustellen, können Sie so etwas wie das Folgende tun.
node src/mqtt.js --mqtt-broker-url mqtt://mqtt.example.com --mqtt-username username --mqtt-password password --decryption-keys 1PG7OiApB1nwvP+rz05pAQ==
TODO: Aktualisieren Sie diesen Abschnitt, da diese Informationen jetzt veraltet sind. Der MQTT -Status wird basierend auf einem Zeitstempel ermittelt, den wir aktualisieren, wenn ein Paket von diesem Knoten zu MQTT gespielt wird.
Die Karte zeigt ein anderes farbiges Symbol für Knoten basierend auf ihrem Verbindungszustand als MQTT.
Green : online (mit MQTT verbunden)Blue : Offline (von MQTT getrennt) Dies funktioniert, indem Sie /stat/!ID -Themen auf dem MQTT -Server anhören.
Wenn ein Knoten eine Verbindung zu MQTT herstellt, veröffentlicht er online mit dem Thema, und wenn der MQTT -Server erfasst, hat der Client (über ein LWT) den Client getrennt, offline zum Thema.
Die Meshtastic Firmware konfiguriert einen LWT (Last Will and Testament), den der MQTT -Server beim Client -Trennen veröffentlicht.
Nachdem ein Knoten aufstieg, gibt es eine Verzögerung von 30 Sekunden, bevor der online -Staat veröffentlicht wird. Nachdem ein Knoten von MQTT abgenommen hat, gibt es eine Verzögerung von ~ 30 Sekunden, bevor der offline -Status veröffentlicht wird.
Dies funktioniert gut, wenn Ihr Knoten über WLI eine Verbindung zu MQTT herstellt. Wenn Sie jedoch die MQTT Client Proxy -Funktion verwenden, sendet Ihr Knoten Pakete an/von Ihrem Android/iOS -Gerät, und Ihr Gerät stellt eine Verbindung zu MQTT und Proxies her.
Meshtastic Node <-> Android/iOS <-> MQTT
Wenn Sie diese Funktion verwenden, funktionieren Ihre online / offline -Staaten leider nicht wie erwartet.
Zum Zeitpunkt des Schreibens dieser Dokumente konfigurieren die mobilen Geräte den LWT nicht korrekt für den gewissen Knoten und veröffentlichen daher den offline -Status für den Knoten nicht, sodass Sie nicht erkennen können, ob Ihr Knoten von MQTT getrennt ist.
Ihr Knoten bleibt im online -Status im MQTT -Server "festgefahren".
Ein Docker-compose.yml ist verfügbar. Sie können den folgenden Befehl ausführen, um alles zu starten.
docker compose up
Dies wird:
Führen Sie Folgendes aus, um Unit -Tests auszuführen.
npm run test
Wenn Sie eine Feature -Anfrage haben oder einen Fehler finden, öffnen Sie hier auf GitHub ein Problem.
MIT
Dieses Projekt ist nicht mit dem Meshtastic -Projekt verbunden oder unterstützt.
Das Meshtastic -Logo ist die Marke von Meshtastic LLC.