Une carte de tous les nœuds de maillage entendus via MQTT.
Ma version de la carte est disponible sur https://meshtastic.liamcottle.net
Consultez mon nouveau client Web Meshtastic: Meshtxt

mqtt.meshtastic.org et abonné au sujet msh/# .AQ== par défaut.ServiceEnvelope , il est ignoré.NODEINFO_APP ajoutent un nœud à la base de données.POSITION_APP mettent à jour la position d'un nœud dans la base de données.NEIGHBORINFO_APP Les voisins de journal entendu par un nœud à la base de données.TELEMETRY_APP mettent à jour la batterie et les métriques de tension pour un nœud dans la base de données.TRACEROUTE_APP log tous les routes de trace effectuées par un nœud à la base de données.MAP_REPORT_APP sont stockés dans la base de données, mais ne sont pas largement adoptés, ils ne sont donc pas encore utilisés.TEXT_MESSAGE_APP au fur et à mesure qu'ils arrivent. NEIGHBORINFO_APP .Clone le repo du projet.
git clone https://github.com/liamcottle/meshtastic-map
cd meshtastic-map
Installez les dépendances NodeJS
npm install
Créez un fichier d'environnement .env .
touch .env
Ajoutez une chaîne de connexion de base de données pour le fichier PRISMA au fichier .env .
DATABASE_URL="mysql://root@localhost:3306/meshtastic-map?connection_limit=100"
Remarque: Certaines requêtes sont spécifiques à MySQL. D'autres fournisseurs de base de données n'ont pas été testés.
Migrer la base de données.
npx prisma migrate dev
Exécutez l'écouteur MQTT, pour enregistrer des paquets dans la base de données.
node src/mqtt.js
Exécutez le serveur express, pour servir l'interface utilisateur /api et MAP.
node src/index.js
# Server running at http://127.0.0.1:8080
Remarque: vous pouvez également utiliser un port personnalisé avec
--port 8123
Exécutez les commandes suivantes à l'intérieur du répo meshtastic-map .
# update repo
git fetch && git pull
# migrate database
npx prisma migrate dev
Vous devrez maintenant redémarrer les scripts index.js et mqtt.js
Par défaut, le collectionneur MQTT se connecte au serveur MQTT MESHTATIQUE public. Alternativement, vous pouvez fournir les options pertinentes indiquées dans la section d'aide ci-dessous pour vous connecter à votre propre serveur MQTT ainsi que vos propres clés de décryptage.
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.
Pour vous connecter à votre propre serveur MQTT, vous pouvez faire quelque chose comme ce qui suit;
node src/mqtt.js --mqtt-broker-url mqtt://mqtt.example.com --mqtt-username username --mqtt-password password --decryption-keys 1PG7OiApB1nwvP+rz05pAQ==
TODO: Mettez à jour cette section car ces informations sont désormais obsolètes. Le statut MQTT est déterminé en fonction d'un horodatage que nous mettons à jour lorsqu'un paquet est fermé à MQTT par ce nœud.
La carte montre une icône de couleur différente pour les nœuds en fonction de leur état de connexion à MQTT.
Green : en ligne (connecté à MQTT)Blue : hors ligne (déconnecté de MQTT) Cela fonctionne en écoutant les sujets /stat/!ID Sur le serveur MQTT.
Lorsqu'un nœud se connecte à MQTT, il publie online sur le sujet, et lorsque le serveur MQTT détecte, le client a déconnecté (via un LWT), il publie offline au sujet.
Le firmware Meshtastic configure un LWT (dernier testament et testament), que le serveur MQTT publie sur le client déconnectait.
Une fois qu'un nœud a augmenté, il y a un délai d'environ 30 secondes avant la publication de l'état online . Une fois qu'un nœud se déconnecte de MQTT, il y a un délai de ~ 30 secondes avant la publication de l'état offline .
Cela fonctionne bien lorsque votre nœud se connecte à MQTT via WiFi, cependant, lorsque vous utilisez la fonction MQTT Client Proxy , votre nœud envoie / reçoit des paquets vers / de votre appareil Android / iOS, puis votre appareil se connecte à MQTT et proxy les messages.
Meshtastic Node <-> Android/iOS <-> MQTT
Malheureusement, lorsque vous utilisez cette fonctionnalité, vos états online / offline ne fonctionneront pas comme prévu.
Au moment de la rédaction de ces documents, les appareils mobiles ne configurent pas correctement le LWT pour le nœud proxyé et ne publient donc pas l'état offline pour le nœud, vous ne pouvez donc pas détecter si votre nœud a déconnecté de MQTT.
Votre nœud restera "coincé" à l'état online du serveur MQTT.
Un docker-compose.yml est disponible. Vous pouvez exécuter la commande suivante pour tout lancer;
docker compose up
Ce sera:
Pour exécuter des tests unitaires, exécutez ce qui suit;
npm run test
Si vous avez une demande de fonctionnalité ou trouvez un bogue, veuillez ouvrir un problème ici sur GitHub.
Mit
Ce projet n'est pas affilié ou approuvé par le projet Meshtastic.
Le logo Meshtastic est la marque de fabrique de Meshtastic LLC.