แผนที่ของโหนด meshtastic ทั้งหมดที่ได้ยินผ่าน MQTT
แผนที่เวอร์ชันของฉันมีอยู่ที่ https://meshtastic.liamcottle.net
ตรวจสอบ Meshtastic Web Client ใหม่ของฉัน: 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 Listener เพื่อบันทึกแพ็กเก็ตลงในฐานข้อมูล
node src/mqtt.js
เรียกใช้เซิร์ฟเวอร์ด่วนเพื่อให้บริการ /api และแผนที่ 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 Collector เชื่อมต่อกับเซิร์ฟเวอร์ 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 ถูกกำหนดตามการประทับเวลาที่เราอัปเดตเมื่อแพ็คเก็ตถูก gated to 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-compose.yml คุณสามารถเรียกใช้คำสั่งต่อไปนี้เพื่อเรียกใช้ทุกอย่าง
docker compose up
สิ่งนี้จะ:
ในการดำเนินการทดสอบหน่วยให้เรียกใช้สิ่งต่อไปนี้;
npm run test
หากคุณมีคำขอคุณสมบัติหรือค้นหาข้อผิดพลาดโปรดเปิดปัญหาที่นี่ใน GitHub
มิกซ์
โครงการนี้ไม่ได้เป็นพันธมิตรหรือรับรองโดยโครงการ Meshtastic
โลโก้ Meshtastic เป็นเครื่องหมายการค้าของ Meshtastic LLC