MQTT를 통해 들리는 모든 메쉬 타스틱 노드의 맵.
내 맵 버전은 https://meshtastic.liamcottle.net에서 사용할 수 있습니다
내 새로운 meshtastic 웹 클라이언트 : 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에 따라 다릅니다. 다른 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과 함께 사용자 정의 포트를 사용할 수도 있습니다.
meshtastic-map Repo 내부에서 다음 명령을 실행하십시오.
# 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에서 분리) 이것은 MQTT 서버에서 /stat/!ID 주제를 듣고 작동합니다.
노드가 MQTT에 연결되면 online 주제에 게시되며 MQTT 서버가 클라이언트가 LWT를 통해 연결 해제를 감지하면 주제에 offline 게시합니다.
Meshtastic 펌웨어는 MQTT 서버가 클라이언트 단절시 게시하는 LWT (마지막 의지 및 성경)를 구성합니다.
노드 부팅 후 online 상태가 게시되기 전에 ~ 30 초 지연이 있습니다. MQTT에서 노드가 분리 된 후 offline 상태가 게시되기 전에 ~ 30 초 지연이 있습니다.
이는 노드가 Wi -Fi를 통해 MQTT에 연결할 때 잘 작동하지만 MQTT Client Proxy 기능을 사용할 때는 Node가 Android/iOS 장치로/패킷을 보내거나 수신 한 다음 장치를 MQTT에 연결하고 메시지를 프록시합니다.
Meshtastic Node <-> Android/iOS <-> MQTT
불행히도, 해당 기능을 사용하면 online / offline 상태는 예상대로 작동하지 않습니다.
이러한 문서를 작성하는 시점에서 모바일 장치는 노드가 프록시 된 LWT를 올바르게 구성하지 않으므로 노드의 offline 상태를 게시하지 않으므로 노드가 MQTT에서 분리 된 경우 감지 할 수 없습니다.
노드는 MQTT 서버의 online 상태에 "고정"상태를 유지합니다.
docker-compose.yml을 사용할 수 있습니다. 다음 명령을 실행하여 모든 것을 시작할 수 있습니다.
docker compose up
이것은 :
단위 테스트를 실행하려면 다음을 실행하십시오.
npm run test
기능 요청이 있거나 버그를 찾으면 여기에서 문제를 열어주십시오.
MIT
이 프로젝트는 Meshtastic 프로젝트와 제휴하거나 승인하지 않습니다.
Meshtastic 로고는 Meshtastic LLC의 상표입니다.