Диагностика Meshtastic
Команды диагностики
# Список узлов с SNR и RSSI
meshtastic --port $PORT --nodes
# Маршрут пакета + SNR каждого хопа
meshtastic --port $PORT --traceroute '!<nodeId>'
# Live мониторинг входящих пакетов
meshtastic --port $PORT --listen
# Запрос телеметрии с удалённого узла
meshtastic --port $PORT --request-telemetry --dest '!<nodeId>'Веб-мониторинг
MeshMonitor — веб-дашборд, подключается к ноде по IP. Показывает статус нод, позиции, телеметрию. Деплой через Docker.
Интерпретация SNR
| SNR | RSSI | Качество |
|---|---|---|
| >= -7 дБ | >= -115 дБм | хорошее |
| >= -15 дБ | >= -126 дБм | удовлетворительное |
| < -15 дБ | < -126 дБм | слабое, нужны изменения |
Если связь слабая — сменить пресет на более медленный (см. LoRa радио Meshtastic), заменить антенну, поднять выше.
Дополнительные модули
- Range Test — одноразовый замер дальности. Один узел шлёт маячки, другой пишет CSV с SNR и координатами (можно загрузить в Google Maps).
- Neighbor Info — периодически отправляет список прямых соседей (0 hop) с SNR. Полезно для визуализации топологии.
- External Notification — мигание встроенного LED при входящих сообщениях. На Heltec V4 два LED рядом:
- Левый (белый) — GPIO 35, управляемый, используется для уведомлений
- Правый (красный) — индикатор заряда батареи, неуправляемый (аппаратный)
meshtastic --port $PORT \
--set external_notification.enabled true \
--set external_notification.output 35 \
--set external_notification.active true \
--set external_notification.alert_message true \
--set external_notification.output_ms 3000active true — LED выключен по умолчанию, загорается на 3 секунды при входящем сообщении. Обязательно device.led_heartbeat_disabled true, иначе LED мигает постоянно (heartbeat использует тот же GPIO 35). После настройки перезагрузить ноду (--reboot).
На T114 (nRF52840) LED инвертирован — active false:
meshtastic --port $PORT \\
--set external_notification.enabled true \\
--set external_notification.output 35 \\
--set external_notification.active false \\
--set external_notification.alert_message true \\
--set external_notification.output_ms 3000active false потому что LED_STATE_ON = 0 в variant.h (LED включается низким уровнем). Если поставить active true — LED будет гореть постоянно и гаснуть при сообщении.
- Store & Forward — хранение сообщений для офлайн-узлов. Работает только на ESP32 с PSRAM.
- Traceroute — встроен, не требует модуля.
Известные баги с трафиком
NodeInfo не масштабируется (#6369, firmware ≤2.7.15)
nodeInfoBroadcastSecs задаёт базовый интервал, но firmware не масштабирует его по количеству нод в базе. При 200+ нодах в nodeDB каждая нода отправляет NodeInfo каждые 5-7 минут вместо настроенных 3 часов. Исправлено в v2.7.19 (PR #9364 — graduated scaling). В v2.7.18 этого фикса нет.
Broadcast storm (#9162, firmware ≤2.7.15)
Дедупликация пакетов сломана — одинаковые пакеты ретранслируются повторно. Исправлено в v2.7.18.
Рекомендации при высоком chUtil
- Проверить
hopLimit— значение 7 (макс) значительно усиливает трафик. Для большинства сетей достаточно 3-4. - Проверить
nodeInfoBroadcastSecs— на firmware <2.7.18 значение не масштабируется автоматически. airUtilTxпоказывает вклад твоей ноды. Если chUtil высокий, а airUtilTx низкий — проблема в чужих нодах.
NodeDB перегрузка WiFi на ESP32
При >100 нодах в nodeDB WiFi на ESP32 деградирует: packet loss до 80%, RTT 2-3 секунды. На Heltec V4 (16MB Flash) firmware автоматически выставляет MAX_NUM_NODES=250, что приводит к crash loop — нода перезагружается каждые 5-6 минут, каждый раз отправляя POSITION + NodeInfo broadcast. Внешне это выглядит как «спам NodeInfo».
Диагностика: в Malla пакеты POSITION и NODEINFO от ноды идут парами с дельтой 10-25 секунд, повторяясь каждые 5-8 минут — признак crash loop (Position отправляется при старте, NodeInfo через ~20 сек по setStartDelay()).
Решение: добавить -D MAX_NUM_NODES=80 в build flags прошивки (variants/esp32s3/heltec_v4/platformio.ini). Это ограничивает NodeDB до 80 записей, экономя ~34KB heap. Старые неактивные ноды вытесняются автоматически. Graduated scaling из v2.7.19 (#9364) при этом продолжает работать.
Workaround (без пересборки): ежедневный ребут по cron.
Борьба со спамом
В каналах нет модерации. Спамеров и токсиков добавлять в игнор — их сообщения не будут отображаться и не будут ретранслироваться через вашу ноду.
Защита от MQTT-утечек
meshtastic --port $PORT \
--set lora.ignore_mqtt true \
--set lora.config_ok_to_mqtt falseignore_mqtt true— игнорировать пакеты, пришедшие из интернета через чужой MQTT-шлюзconfig_ok_to_mqtt false— запретить чужим узлам пересылать твои пакеты в MQTT