// ДОКУМЕНТАЦИЯ

TMesh — мост
Meshtastic ↔ Telegram

Двусторонняя передача сообщений, геопозиции и телеметрии между сетью Meshtastic и группами Telegram — без регистрации собственного бота или MQTT-сервера.

Несколько сетей Открытый исходный код Telegram Bot API Meshtastic C# · .NET 8

Что такое TMesh

TMesh — сервис интеграции Meshtastic с Telegram. Бот @tmesh_spb_bot и виртуальный узел TMesh Bot (!000007c1) обеспечивают прозрачную ретрансляцию сообщений между обеими платформами.

TMesh поддерживает работу с несколькими независимыми сетями в рамках одного бота. Каждая сеть — это отдельное географическое сообщество (например, разные города). Список доступных сетей и их публичных каналов показывает команда /list_networks.

Регистрация устройства

Связь один-к-одному. Сообщения шифруются публичным ключом устройства (PKI). Поддерживает статусы доставки.

Регистрация канала

Связь один-ко-многим. Все устройства приватного канала получают сообщения из Telegram. Шифрование по ключу канала (PSK).

Требования к устройству

Для работы с TMesh в настройках LoRa вашего устройства необходимо разрешить передачу пакетов через MQTT:

  • Игнорировать MQTTНет
  • OK в MQTTДа
ℹ️ Если вы настроили устройство по рекомендациям со страницы вашего сообщества — дополнительная настройка не требуется.

Доступные сети

Перед регистрацией устройства или канала убедитесь, что в вашем городе развёрнута сеть TMesh. Используйте команду /list_networks — бот покажет все активные сети и публичные каналы каждой из них.

⚠️ Если вашего города нет в списке — напишите администратору TMesh в Telegram: @alex_shakhov_dev. Подробнее: «TMesh в вашем городе».

Регистрация устройства

Перед добавлением устройства в Telegram-группу рекомендуется сначала протестировать связь напрямую с ботом.

Шаг 0 — Проверка связи

Отправьте личное сообщение узлу TMesh Bot в сети Meshtastic с текстом /ping. При наличии связи вы получите ответ pong.

Регистрация

  1. Начните чат с ботом @tmesh_spb_bot в Telegram.
  2. Отправьте команду /add_device (или /add_device !ваш_id напрямую).
  3. Бот попросит ID вашего устройства. Найдите его в приложении Meshtastic: откройте информацию об устройстве и долгим нажатием скопируйте Номер узла. Формат: !abcdef0 или десятичное число.
  4. Если TMesh Bot видел ваше устройство в сети, он отправит на него 6-значный код подтверждения.
  5. Введите полученный код в Telegram. Регистрация завершена.
  6. Напишите тестовое сообщение — оно будет доставлено на устройство Meshtastic.

Что делать, если код не приходит?

Нет связи с TMesh Bot

Возможно, вы находитесь вне зоны покрытия шлюзов TMesh. Попробуйте физически приблизить устройство к одному из шлюзов — их идентификаторы видны в выводе команды /list_networks, а местоположение можно найти на карте map.onemesh.ru. Если это не помогло — свяжитесь с местным сообществом Meshtastic.

Бот не отправляет код

TMesh Bot ещё не «слышал» ваше устройство. Проверьте командой /list_networks, что ваш город поддерживается и вы используете правильный публичный канал. Затем в приложении Meshtastic найдите узел TMesh Bot и выполните «Обменять информацию пользователя». Подождите несколько секунд и повторите попытку.

Регистрация приватного канала

Регистрация канала позволяет связать с Telegram сразу несколько устройств Meshtastic — всех, кто находится на одном приватном канале. Публичные каналы (LongFast, Services) регистрировать нельзя.

  1. Начните чат с ботом @tmesh_spb_bot.
  2. Отправьте команду /add_channel.
  3. Бот покажет список доступных сетей — введите ID нужной сети (например, 1). Узнать сети заранее: /list_networks.
  4. Введите имя канала (например: SpasTeam). Максимум 12 байт.
  5. Введите ключ канала (PSK) в формате base64. Поддерживаются ключи 16 и 32 байта. Пустой ключ не поддерживается.
  6. Если канал регистрируется впервые, бот спросит тип использования:
    • single — одно устройство. Используется оптимизированная маршрутизация через последний известный шлюз.
    • multiple — несколько устройств. Сообщения рассылаются через все шлюзы.
  7. Бот отправит в канал код подтверждения. Введите его в Telegram.
  8. Регистрация завершена.
💡 Все параметры можно передать сразу: /add_channel 1 SpasTeam ZGeG...U= single

Добавление бота в Telegram-группу

  1. Создайте новую группу в Telegram или используйте существующую.
  2. Добавьте бота @tmesh_spb_bot в группу.
  3. Дайте боту права администратора — это необходимо для чтения и пересылки сообщений. Настройки по умолчанию подходят, ничего дополнительно включать не нужно.
  4. Готово. Теперь в группе отправьте /add_device или /add_channel для связи Meshtastic-устройств с этой группой.
ℹ️ Неограниченное количество устройств и каналов можно добавить в одну группу. Каждый участник группы может управлять регистрациями.

Обмен сообщениями

  • Сообщения из Telegram отправляются на устройства как личные сообщения от TMesh Bot, а на каналы — напрямую в приватный канал.
  • Сообщения из Meshtastic появляются в Telegram-группе от имени бота в формате Имяузла: текст.
  • Работает функция «Ответить»: ответ в Telegram доставляется в Meshtastic как reply, и наоборот.
  • Максимальный размер сообщения: ~230 латинских символов, ~115 кириллических, ~57 эмодзи.
  • Устройства Meshtastic не ретранслируют сообщения друг другу через интернет — это намеренно, чтобы сохранить автономность сети.

Статусы доставки из Telegram

После каждого сообщения из Telegram бот ставит реакцию-эмодзи, отражающую актуальный статус доставки. Если получателей несколько, бот отправляет отдельное сообщение с набором эмодзи — по одному на каждого получателя.

✍️ Создано Сообщение зарегистрировано системой.
👀 В очереди Добавлено в очередь на отправку в Meshtastic.
🕊️ Отправлено Передано на MQTT-сервер. Для каналов — финальный статус (Meshtastic не подтверждает доставку в канал).
👌 Доставлено Устройство-адресат подтвердило получение сообщения.
🤷 Неизвестно Прошло более 2 минут без подтверждения. Возможно, доставлено.
👎 Ошибка Произошла ошибка, сообщение не доставлено.
ℹ️ Если очередь сообщений загружена и ожидание превышает 2 секунды — бот сообщит об ожидаемой задержке.

Статусы из Meshtastic

В приложении Meshtastic при отправке сообщений узлу TMesh Bot отображаются стандартные статусы Meshtastic:

  • Облако ↑ — в очереди на отправку
  • Облако без галочки — отправлено
  • Облако с галочкой — получено промежуточным узлом
  • Перечёркнутое облако — ошибка доставки
  • Силуэт с галочкой — доставлено до TMesh Bot

Подтверждение ✓ для приватных каналов

Когда TMesh получает сообщение из приватного канала и успешно доставляет его в Telegram, он автоматически отвечает в канал символом . Это позволяет убедиться в доставке, даже если приложение Meshtastic не показывает статус для канальных сообщений.

💡 Подтверждение ✓ не отправляется при высокой нагрузке очереди — это намеренно, чтобы не перегружать сеть.

Геопозиция

Устройство может отправить GPS-позицию прямым сообщением узлу TMesh Bot — бот опубликует карту в Telegram-группе.

TMesh также сохраняет пакеты с геопозицией из публичных и зарегистрированных приватных каналов. Последние известные позиции всех устройств доступны командой /position.

Трейс и проверка связи

TMesh Bot отвечает на запросы traceroute. Входящий маршрут отображается в Telegram — вы видите, через какие узлы прошёл пакет.

Бот также слушает каналы LongFast, Services и все зарегистрированные приватные каналы. Отправьте ping или пинг — получите личное сообщение pong от TMesh Bot. Также работает команда /ping в личном сообщении узлу.

Команды бота

Устройства

/add_device [ID] Зарегистрировать устройство. Пример: /add_device !75bcd15 или без параметров для пошаговой регистрации.
/remove_device [ID] Удалить устройство из текущей группы.
/remove_device_from_all_chats [ID] Удалить устройство из всех групп, где вы его регистрировали.

Каналы

/add_channel [net] [имя] [ключ] [тип] Зарегистрировать приватный канал. Первый параметр — ID сети (/list_networks). Тип: single или multiple. Пример: /add_channel 1 SpasTeam ZGeG...U= single
/remove_channel [ID] Удалить канал из текущей группы. ID канала — из /status.
/remove_channel_from_all_chats [ID] Удалить канал из всех групп, где вы его регистрировали.

Информация

/list_networks Показать все доступные сети TMesh и их публичные каналы.
/status [фильтр] Список зарегистрированных устройств и каналов с указанием сети. Пример: /status MyDevice
/position [фильтр] Показать последние известные позиции устройств на карте.
/promote_to_gateway [ID] Сделать устройство шлюзом TMesh. Требует прошивку TMesh.
/demote_from_gateway [ID] Снять статус шлюза с устройства.

Зачем становиться шлюзом

Шлюзы — основа сервиса TMesh. Именно через них проходят все сообщения между Meshtastic и Telegram. Чем больше шлюзов и чем шире их охват, тем стабильнее работает сервис для всех.

Шлюз также участвует в сборе аналитики качества сети и транслирует пакеты на карту Onemesh.

Что нужно для шлюза
  • Стационарное размещение с хорошим радиопокрытием (крыша, высокая точка)
  • Стабильное электропитание
  • Постоянный доступ к интернету
  • Устройство заранее зарегистрировано через /add_device
  • Установлена прошивка TMesh

Настройка шлюза

  1. Зарегистрируйте устройство командой /add_device, если ещё не сделали этого.
  2. Прошейте устройство специальной прошивкой TMesh через веб-флешер flasher.tmesh.ru. Прошивка добавляет поддержку кириллицы, авторизацию на MQTT-сервере TMesh и передачу телеметрии.
  3. Выполните /promote_to_gateway !ваш_id. Бот спросит, установлена ли прошивка TMesh. После подтверждения — вышлет готовые настройки MQTT.
  4. Настройте MQTT в приложении Meshtastic → Config → Network → MQTT:
ПараметрЗначение
Server addressиз сообщения бота
Username!ваш_hex_id
Passwordиз сообщения бота (уникальный)
Root topicиз сообщения бота
Encryption enabled✅ Включено
JSON output enabled❌ Выключено
TLS enabled❌ Выключено
Map reporting✅ Включено
⚠️ Пароль MQTT работает только с прошивкой TMesh. На стандартной прошивке Meshtastic подключение намеренно заблокировано.

После сохранения настроек устройство подключится к MQTT-серверу. При получении первого пакета бот отправит уведомление в Telegram-чат.

Снятие статуса шлюза

Для снятия статуса шлюза выполните /demote_from_gateway !ваш_id. Не забудьте очистить настройки MQTT на самом устройстве. Если шлюз долго неактивен — он будет снят автоматически, бот отправит уведомление.

Ограничения

  • TMesh отправляет не более 30 пакетов в минуту на каждую сеть (город) — примерно 15 сообщений в минуту для всех пользователей одной сети.
  • Очередь сообщений работает по приоритетам: подтверждения получения — высокий, текстовые — нормальный, служебные — низкий.
  • Для каналов типа single и устройств используется направленная маршрутизация — сообщение уходит через шлюз, который последним «слышал» устройство. Это экономит пропускную способность.
  • Для каналов типа multiple сообщения рассылаются через все шлюзы.
  • TMesh зависит от интернета и Telegram. При недоступности сервисов передача через TMesh невозможна, но это не влияет на маршрутизацию пакетов в самой сети Meshtastic.

Рекомендации

  • Используйте короткие сообщения — это повышает надёжность доставки. Максимум: ~230 ASCII, ~115 кириллических символов, ~57 эмодзи.
  • Не используйте TMesh там, где достаточно обычного Telegram.
  • Старайтесь не регистрировать одно устройство в нескольких группах — это может запутать получателей, так как сообщения пойдут во все группы одновременно.
  • Если вы ответили на сообщение из Meshtastic в приложении — ответ уйдёт именно в ту Telegram-группу, из которой пришло исходное сообщение.