Skip to content

# Meshtastic Terminal Chat .A lightweight, interactive terminal client for [Meshtastic](https://meshtastic.org/) devices with auto-completion, ACK tracking, and auto-replies.

License

Notifications You must be signed in to change notification settings

mrSatang/meshtastic_monkey

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 

Repository files navigation

📄 Описание проекта

Этот скрипт (meshtastic_monkey.py) представляет собой интерактивный терминальный клиент для Meshtastic, предназначенный для работы с радиоустройством (нодой), подключённым к Linux-ПК. Он позволяет отправлять и получать текстовые сообщения через mesh-сеть Meshtastic, отслеживать подтверждения доставки (ACK), автоматически отвечать на тестовые запросы и использовать удобные функции командной строки: автодополнение имён узлов, историю ввода, подсчёт длины сообщения.

Проект изначально создавался как вынужденная мера — когда использование портативного Meshtastic-устройства в зоне плохой радиосвязи невозможно, но есть возможность разместить ноду на возвышенности и управлять ею удалённо по SSH с другого компьютера. Это превращает стационарную ноду в «шлюз» или «ретранслятор» с удобным CLI-интерфейсом.

изображение

⚙️ Логика работы

Основные компоненты:

  1. Основной поток ввода
    Использует prompt_toolkit для интерактивного ввода команд. Поддерживает:

    • Автодополнение имён узлов по Tab (@NodeName)
    • Историю сообщений (~/.meshtastic_history)
    • Отображение количества символов и байтов в реальном времени
  2. Очередь отправки (send_queue)
    Все исходящие сообщения помещаются в очередь, чтобы не блокировать UI и избежать перегрузки радиоинтерфейса.

  3. Поток отправки (sender_thread)
    Обрабатывает очередь с задержкой SEND_DELAY = 1.5 сек между сообщениями (для стабильности). При желании (wantAck=True) сохраняет ID пакета в pending_acks для отслеживания подтверждений.

  4. Обработчик входящих сообщений (on_receive)
    Подписан через pubsub на события meshtastic.receive. Различает:

    • Публичные сообщения (PUB)
    • Приватные сообщения (PM)
    • Подтверждения доставки (ROUTING_APP → ACK)
    • Автоматически отвечает на ключевые слова: ping, test, тест, testa
  5. Наблюдатель за тайм-аутами (ack_watcher)
    Каждую секунду проверяет, не истекло ли время ожидания ACK (ACK_TIMEOUT = 30 сек). Если да — выводит предупреждение.

  6. Кэш имён узлов (name_cache)
    Кэширует короткие имена (shortName) узлов для быстрого отображения и разрешения псевдонимов.


🧾 Команды и синтаксис

Отправка сообщений:

  • Публичное сообщение: просто введите текст

    Привет всем!
    
  • Приватное сообщение: начните с @ИмяУзла

    @ALFA Привет, как связь?
    

Имя может быть:

  • shortName (например, ALFA)
  • шестнадцатеричным ID (например, !1234abcd)

Если имя не найдено — выводится ошибка.


📦 Зависимости

Установите через pip:

pip install meshtastic prompt_toolkit pubsub

Или используйте requirements.txt:

meshtastic>=2.5.0
prompt_toolkit>=3.0
pubsub>=0.1.2

Убедитесь, что у вас установлены права на доступ к последовательному порту (обычно через группу dialout).


▶️ Порядок использования

  1. Подключите Meshtastic-устройство к Linux-ПК (по USB).
  2. Убедитесь, что устройство определяется (например, как /dev/ttyACM0).
  3. Запустите скрипт:
    python3 meshtastic_monkey_0.8fl.py
  4. Работайте в терминале:
    • Вводите сообщения
    • Используйте Tab для автодополнения имён
    • Наблюдайте за входящими сообщениями и ACK
  5. Для выхода: нажмите Ctrl+C

💡 При использовании по SSH рекомендуется запускать скрипт внутри tmux или screen, чтобы сессия не прерывалась при разрыве соединения.


📡 Особенности эксплуатации в условиях плохой видимости

  • Скрипт не требует GUI — идеален для headless-сервера на возвышенности.
  • Благодаря задержке между отправками и очереди, он минимизирует риск перегрузки эфира.
  • Автоматический ответ на ping помогает оперативно оценить качество канала.
  • Все метаданные (RSSI, SNR, hops) отображаются — полезно для диагностики.

Такой подход превращает обычную Meshtastic-ноду в удалённо управляемый ретранслятор с человеко-читаемым интерфейсом, что особенно ценно в полевых условиях или при развёртывании сети в труднодоступных районах.

About

# Meshtastic Terminal Chat .A lightweight, interactive terminal client for [Meshtastic](https://meshtastic.org/) devices with auto-completion, ACK tracking, and auto-replies.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages