خريطة لجميع العقد meshtastic سمعت عبر MQTT.
نسختي من الخريطة متوفرة على https://meshtastic.liamcottle.net
تحقق من عميل الويب الخاص بي الجديد: meshtxt

mqtt.meshtastic.org ويشترك في موضوع msh/# .AQ== الافتراضي.ServiceEnvelope ، فسيتم تجاهلها.NODEINFO_APP عقدة إلى قاعدة البيانات.POSITION_APP تحديث موضع العقدة في قاعدة البيانات.NEIGHBORINFO_APP تسجيل الجيران التي سمعها عقدة إلى قاعدة البيانات.TELEMETRY_APP بطارية ومقاييس الجهد لعقدة في قاعدة البيانات.TRACEROUTE_APP Packets قم بتسجيل جميع طرق التتبع التي يتم تنفيذها بواسطة عقدة إلى قاعدة البيانات.MAP_REPORT_APP في قاعدة البيانات ، ولكن لم يتم اعتمادها على نطاق واسع ، لذلك لم يتم استخدامها بعد.TEXT_MESSAGE_APP عند وصولها. NEIGHBORINFO_APP .استنساخ المشروع repo.
git clone https://github.com/liamcottle/meshtastic-map
cd meshtastic-map
تثبيت التبعيات NodeJS
npm install
إنشاء ملف بيئي .env .
touch .env
إضافة سلسلة اتصال قاعدة بيانات لـ PRISMA إلى ملف .env .
DATABASE_URL="mysql://root@localhost:3306/meshtastic-map?connection_limit=100"
ملاحظة: بعض الاستفسارات هي MySQL محددة. لم يتم اختبار مزودي DB الآخرين.
ترحيل قاعدة البيانات.
npx prisma migrate dev
قم بتشغيل مستمع MQTT ، لحفظ الحزم إلى قاعدة البيانات.
node src/mqtt.js
قم بتشغيل خادم Express ، لخدمة /api و Map UI.
node src/index.js
# Server running at http://127.0.0.1:8080
ملاحظة: يمكنك أيضًا استخدام منفذ مخصص مع
--port 8123
قم بتشغيل الأوامر التالية من داخل repo meshtastic-map .
# update repo
git fetch && git pull
# migrate database
npx prisma migrate dev
ستحتاج الآن إلى إعادة تشغيل البرامج النصية index.js و mqtt.js
بشكل افتراضي ، يتصل جامع MQTT بخادم Meshtastic MQTT العام. بدلاً من ذلك ، يمكنك تقديم الخيارات ذات الصلة الموضحة في قسم المساعدة أدناه للاتصال بخادم MQTT الخاص بك إلى جانب مفاتيح فك التشفير الخاصة بك.
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.
للاتصال بخادم MQTT الخاص بك ، يمكنك أن تفعل شيئًا مثل ما يلي ؛
node src/mqtt.js --mqtt-broker-url mqtt://mqtt.example.com --mqtt-username username --mqtt-password password --decryption-keys 1PG7OiApB1nwvP+rz05pAQ==
TODO: قم بتحديث هذا القسم لأن هذه المعلومات قديمة الآن. يتم تحديد حالة MQTT استنادًا إلى طابع زمني نقوم بتحديثه عندما يتم وضع حزمة إلى MQTT بواسطة تلك العقدة.
تعرض الخريطة أيقونة ملونة مختلفة للعقد بناءً على حالة اتصالها إلى MQTT.
Green : عبر الإنترنت (متصل بـ MQTT)Blue : غير متصل (غير متصل عن MQTT) هذا يعمل من خلال الاستماع إلى مواضيع /stat/!ID على خادم MQTT.
عندما تتصل العقدة بـ MQTT ، فإنها تنشر online بالموضوع ، وعندما يكتشف خادم MQTT أن العميل قد تم فصله (عبر LWT) ، فإنه ينشر offline بالموضوع.
تقوم البرامج الثابتة Meshtastic بتكوين LWT (الإرادة الأخيرة والعهد) ، والتي ينشرها خادم MQTT عند فصل العميل.
بعد حذاء العقدة ، هناك تأخير حوالي 30 ثانية قبل نشر الحالة online . بعد فصل العقدة عن MQTT ، هناك تأخير حوالي 30 ثانية قبل نشر الحالة offline .
يعمل هذا بشكل جيد عندما تتصل العقدة الخاصة بك بـ MQTT عبر WiFi ، ومع ذلك ، عند استخدام ميزة MQTT Client Proxy ، ترسل العقدة/تستقبل الحزم إلى/من جهاز Android/iOS ، ثم يتصل جهازك بـ MQTT والوكلاء الرسائل.
Meshtastic Node <-> Android/iOS <-> MQTT
لسوء الحظ ، عند استخدام هذه الميزة لن تعمل حالتك online / offline كما هو متوقع.
اعتبارًا من وقت كتابة هذه المستندات ، لا تقوم الأجهزة المحمولة بتكوين LWT بشكل صحيح للعقدة التي يتم تنفيذه ، وبالتالي لا تنشر الحالة offline بالعقدة ، لذلك لا يمكنك اكتشاف ما إذا كانت العقدة غير متصلة من MQTT.
ستبقى العقدة "عالقة" في الحالة online في خادم MQTT.
يتوفر Docker-corm.yml. يمكنك تشغيل الأمر التالي لإطلاق كل شيء ؛
docker compose up
هذا سوف:
لتنفيذ اختبارات الوحدة ، قم بتشغيل ما يلي ؛
npm run test
إذا كان لديك طلب ميزة ، أو ابحث عن خطأ ، فيرجى فتح مشكلة هنا على Github.
معهد ماساتشوستس للتكنولوجيا
هذا المشروع لا ينتم أو يؤيده بواسطة مشروع Meshtastic.
شعار Meshtastic هو العلامة التجارية لـ Meshtastic LLC.