Карта всех мештастичных узлов, услышанных через 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 Environment.
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 Server, чтобы обслуживать UI /api и MAP.
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 подключается к общедоступному мештастическому серверу 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 по теме.
Миштастичная прошивка настраивает LWT (последняя воля и Завет), которую сервер MQTT публикует при отключении клиента.
После того, как узел загрузился, существует ~ 30 -секундная задержка до публикации online -состояния. После отключения узла от MQTT существует ~ 30 -секундная задержка, прежде чем опубликовано offline состояние.
Это хорошо работает, когда ваш узел подключается к MQTT через Wi -Fi, однако при использовании функции 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 LLC.