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

TMesh — мост
Meshtastic ↔ Telegram

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

Чат-сессии без регистрации Несколько сетей Открытый исходный код Telegram Bot API Meshtastic C# · .NET 8

Что такое TMesh

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

⚠️ В боте нет сквозного шифрования, на сервере TMesh все сообщения расшифровываются для отправки в Telegram. Администратор сервера имеет доступ к сообщениям и контактным данным в незашифрованном виде. Сервер находится в России, его защита реализована на уровне хобби-проекта. Не используйте бота для передачи персональной, конфиденциальной и секретной информации! Подробнее →

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

Чат-сессии (быстрый старт)

Начните общение без предварительной регистрации устройств. Из Telegram: /chat !deviceId. Из Meshtastic: /chat @username.

Постоянная регистрация

Для продвинутых пользователей: /add_device и /add_channel для автоматической двусторонней связи без ручного начала чата.

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

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

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

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

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

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

Быстрый старт — чат-сессии

Самый простой способ начать использовать TMesh — это чат-сессии. Они не требуют предварительной регистрации устройств или каналов. Достаточно знать ID устройства или Telegram-имя пользователя.

💡 Проверьте связь перед началом: отправьте /ping узлу TMesh Bot в сети Meshtastic. При наличии связи получите ответ pong.

Из Telegram на устройство Meshtastic

  1. Начните чат с ботом @tmesh_spb_bot в Telegram.
  2. Отправьте /chat !<ID устройства>, например: /chat !75bcd15. Позже, после первой успешной чат-сессии можно искать по имени среди одобренных/зарегистрированных устройств: /chat MyNode.
  3. Бот отправит на устройство запрос на начало чата с 6-значным кодом.
  4. Владелец устройства увидит запрос и должен ответить кодом в чат с TMesh Bot.
  5. После подтверждения начинается двусторонний обмен сообщениями.
  6. Используйте /end_chat для завершения сессии.
ℹ️ После первого одобрения запроса от устройства, последующие чат-сессии с ним начинаются автоматически — без повторного подтверждения.

Из Meshtastic в Telegram

  1. Пользователь Telegram должен выполнить /start в боте @tmesh_spb_bot. Для личных чатов регистрация происходит автоматически по @username. Для групп бот попросит указать имя.
  2. Устройство Meshtastic отправляет в чат с узлом TMesh Bot (личное сообщение) команду /chat @<telegram_username>, например: /chat @alex_dev. Для групп: /chat имя_группы.
  3. TMesh Bot отправит пользователю Telegram запрос с 6-значным кодом подтверждения.
  4. Пользователь отправляет код в чат с ботом — начинается двусторонний обмен.
  5. Для завершения сессии устройство или пользователь Telegram может использовать команду /end_chat.
💡 Команда /chat также работает на приватных каналах, зарегистрированных в TMesh через /add_channel.

Из Telegram на приватный канал

Если приватный канал Meshtastic уже зарегистрирован в TMesh (через /add_channel), можно начать чат-сессию:

  1. Отправьте /chat_channel ИмяКанала:ID, например: /chat_channel SpasTeam:5. ID канала — из команды /status. Если канал одобрен или зарегистрирован, можно искать по имени: /chat_channel SpasTeam.
  2. Бот отправит в канал Meshtastic запрос с 6-значным кодом.
  3. Любое устройство на канале может ответить кодом для подтверждения.
  4. После подтверждения начинается двусторонний обмен.

Управление чат-сессиями

/end_chat Завершить активную чат-сессию. Работает и в Telegram, и на устройстве Meshtastic.
/disable Отключить приём новых запросов от неизвестных устройств и каналов в чате Telegram. Одобренные и зарегистрированные — по-прежнему могут начинать чат.
/start Зарегистрировать чат Telegram в TMesh. Также заново включает приём запросов обратно после команды /disable.
/kill Полный сброс чата Telegram: удалить все регистрации, одобрения, отключить приём запросов.
/status Показать статус чата Telegram, активную сессию, зарегистрированные и одобренные устройства и каналы.
ℹ️ Если один раз одобрить запрос на чат, последующие запросы от этого устройства/канала одобряются автоматически. Используйте /remove_device или /remove_channel чтобы отозвать разрешение.

Регистрация устройства (расширенная)

Регистрация устройства создаёт постоянную привязку между устройством Meshtastic и Telegram-чатом. Сообщения шифруются публичным ключом устройства (PKI). Это для пользователей, которым нужна постоянная автоматическая связь — без ручного начала чат-сессии каждый раз.

Шаг 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. Выполните /start — бот попросит указать имя для группы. После этого устройства Meshtastic смогут связываться с группой через /chat <имя_группы>.
  5. При необходимости используйте /add_device или /add_channel для постоянной регистрации устройств/каналов в этой группе.
ℹ️ Неограниченное количество устройств и каналов можно добавить в одну группу. Каждый участник группы может управлять регистрациями.

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

  • Сообщения из 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, MediumFast) и все зарегистрированные приватные каналы. Отправьте ping или пинг — получите личное сообщение pong от TMesh Bot со ссылкой на сайт сообщества. Также работает команда /ping в личном сообщении узлу.

Команды Telegram-бота

Чат-сессии

/start Зарегистрировать чат в TMesh. Для личных чатов — по @username. Для групп — бот попросит указать имя. Позволяет устройствам Meshtastic начинать чат-сессии.
/chat [ID или имя] Начать чат-сессию с устройством. Примеры: /chat !75bcd15, /chat MyDevice (поиск по имени среди одобренных/зарегистрированных).
/chat_channel [Имя:ID] Начать чат-сессию с приватным каналом. Примеры: /chat_channel SpasTeam:5, /chat_channel SpasTeam (поиск по имени).
/end_chat Завершить активную чат-сессию.
/disable Отключить приём запросов от неизвестных устройств/каналов. Одобренные и зарегистрированные — по-прежнему могут начинать чат.
/kill Полный сброс: удалить все регистрации, одобрения, отключить приём новых запросов.

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

/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] Снять статус шлюза с устройства.

Команды Meshtastic (узел TMesh Bot)

Эти команды отправляются в личном сообщении узлу TMesh Bot или на приватном канале, зарегистрированном в TMesh:

/chat @<username> Начать чат с пользователем Telegram (должен предварительно выполнить /start в боте). Пример: /chat @alex_dev. Для групп: /chat имя_группы.
/end_chat Завершить активную чат-сессию со стороны устройства Meshtastic.
/ping Проверка связи. Бот ответит pong.
/help Показать справку по доступным командам Meshtastic.

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

Шлюзы — основа сервиса 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 в надёжном месте — он уникален для вашего устройства.

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

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

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

Ограничения

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

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

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