通過MQTT聽到的所有網格節點的地圖。
我的地圖版本可在https://meshtastic.liamcottle.net上找到
查看我的新網格網絡客戶端:meshtxt

mqtt.meshtastic.org ,並訂閱了msh/#主題。AQ==鍵解密。ServiceEnvelope ,則將被忽略。NODEINFO_APP數據包在數據庫中添加一個節點。POSITION_APP數據包更新數據庫中節點的位置。NEIGHBORINFO_APP數據包記錄數據庫的節點聽到的鄰居。TELEMETRY_APP數據包更新數據庫中節點的電池和電壓指標。TRACEROUTE_APP數據包記錄一個節點對數據庫執行的所有跟踪路由。MAP_REPORT_APP數據包存儲在數據庫中,但並未被廣泛採用,因此尚未使用。TEXT_MESSAGE_APP數據包。 NEIGHBORINFO_APP 。克隆項目倉庫。
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的。其他數據庫提供商尚未進行測試。
遷移數據庫。
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的自定義端口
從meshtastic-map存儲庫中運行以下命令。
# update repo
git fetch && git pull
# migrate database
npx prisma migrate dev
現在,您需要重新啟動index.js和mqtt.js腳本。
默認情況下,MQTT Collector連接到公共網狀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斷開)這是通過在MQTT服務器上收聽/stat/!ID主題來工作的。
當節點連接到MQTT時,它將online發佈到該主題,當MQTT服務器檢測客戶端已斷開連接時(通過LWT)將其offline發佈到該主題。
網格固件配置了LWT(最後的遺囑和遺囑),MQTT服務器在客戶端斷開時發布。
節點啟動後,在發布online狀態之前有一個〜30秒的延遲。節點與MQTT斷開連接後,在發布offline狀態之前有〜30秒的延遲。
但是,當您的節點通過WiFi連接到MQTT時,這很好,但是,當使用MQTT Client Proxy功能時,您的節點將發送/接收數據包訪問/從Android/ios設備發送,然後您的設備連接到MQTT並將消息定位到消息。
Meshtastic Node <-> Android/iOS <-> MQTT
不幸的是,當使用該功能時,您的online / offline狀態將無法正常工作。
截至編寫這些文檔時,移動設備無法正確配置代理節點的LWT,因此不會發布節點的offline狀態,因此您無法檢測到節點是否從MQTT斷開連接。
您的節點將保持在MQTT服務器中的online狀態中。
可以使用Docker-compose.yml。您可以運行以下命令來啟動所有內容;
docker compose up
這將:
要執行單元測試,請運行以下內容;
npm run test
如果您有功能請求或找到錯誤,請在GitHub上在Github上打開問題。
麻省理工學院
該項目不隸屬於或隸屬於網狀項目。
網狀徽標是Meshtastic LLC的商標。