Изначально я хотел написать про настройку моста между APRS и Telegram с помощью aprsd — это стало бы логичным продолжением темы интернет-шлюзов в APRS. Но, честно говоря, сам я не использую aprsd и вообще предпочитаю более универсальные инструменты.
Например, когда я только-только осваивал APRS, то пересылку сообщений в Telegam я сделал через систему умного дома Home Assistant. Просто потому что Home Assistant уже был под рукой и в принципе его можно использовать и для этой задачи тоже. Но я не буду вам рекомендовать ставить Home Assistant, ибо для радиолюбительской автоматизации это не самый подходящий инструмент.
Но есть похожая система, которая называется Node-RED. Изначально Node-RED тоже создавался для домашней автоматизации, но он получился более универсальным, поэтому многие радиолюбители взяли Node-RED себе на вооружение.
Если говорить просто, то Node-RED — это инструмент для визуального программирования, который позволяет создавать автоматизации и скрипты без написания кода. Можно просто «рисовать» логику работы, перетаскивая и соединяя блоки в интерфейсе.
Практические сценарии
В отличие от aprsd, Node-RED можно использовать не только для работы с APRS, но и для других задач. Например, с его помощью можно удалённо выключить радиоаппаратуру через умную розетку, если надвигается гроза.
Но в этой статье я сосредоточусь всего на нескольких практических сценариях:
- Пересылка текстовых сообщений из APRS в Telegram — полезно в качестве альтернативного способа связи с близкими в местах без сотового покрытия.
- Пересылка сообщений из чата Meshtastic в Telegram — если вам надоело постоянно подключаться к ноде, чтобы проверить новые сообщения.
- Обработка DTMF-кодов и отправка шаблонных сообщений в Telegram. Что-то похожее я уже делал некоторое время назад, но на этот раз вместо удаленного управления решил настроить отправку заготовленных сообщений в Telegram.
Готовые потоки для Node-RED
Если хотите сразу приступить к делу, то для всех описанных сценариев уже есть готовые, протестированные потоки, которые мы создавали в прямом эфире на YouTube. Все наработки, включая сами потоки и инструкции, вы найдёте в man yaml-haus — можете просто импортировать их и адаптировать под свои нужды.
Ниже я постараюсь обобщить всё то, чем мы занимались на стриме, а также схематично расскажу, как всё работает, что с чем связано и как настроить Node-RED для решения радиолюбительских задач.
Подготовка
Но прежде чем погрузиться в настройку потоков, нужно определиться с железом и подготовить окружение.
Какое железо понадобится
В качестве сервера подойдёт практически что угодно, куда можно установить Linux:
- Старый ноутбук, пылящийся на полке;
- Raspberry Pi или другой одноплатник (какой-нибудь такой);
- ТВ-приставка;
- VPS, если хочется сделать всё в «облаке».
Но у разных сценариев есть свои особенности. Подробнее про них я расскажу ниже, но в общих чертах:
- Для сценария с DTMF нужно чтобы вы могли разместить сервер там же, где и сам радиоприёмник с антенной — приёмник должен быть подключён к серверу напрямую.
- В случае с Meshtastic желательно, чтобы вы могли физически подключить сервер к ноде по USB. Но вообще вместо USB можно настроить подключение по локальной сети.
- А для пересылки сообщений из APRS вообще не нужен физический доступ к приёмнику. Node-RED будет забирать данные с серверов APRS-IS, которые попадают туда благодаря интернет-шлюзам. Поэтому Node-RED можно установить даже на виртуальный сервер (в «облаке»).
Установка Node-RED
В статье я буду описывать установку Node-RED на примере DietPi. DietPi — это легкий дистрибутив Linux, идеально подходящий для одноплатников. Но если вы используете другой дистр, то загляните в официальную документацию Node-RED — там есть инструкции для всех популярных систем.
Предполагается, что DietPi у вас уже установлен и у вас есть к нему доступ по SSH (например, через PuTTY). Тогда, чтобы установить сам Node-RED, выполните следующую команду:
dietpi-software install 122
Чтобы запустить Node-RED и добавить его в автозагрузку выполните:
systemctl enable --now node-red
Готово 🙂. Веб-интерфейс Node-RED теперь доступен по адресу: http://<IP-адрес_одноплатника>:1880
.
Интеграция с Telegram
Чтобы Node-RED мог отправлять сообщения в Telegram, понадобится плагин node-red-contrib-telegrambot
. Для его установки:
- Откройте веб-интерфейс Node-RED (
http://<IP-адрес>:1880
); - В правом верхнем углу нажмите на кнопку меню и выберите Управление палитрой;
- Перейдите на вкладку Установить;
- В поиске введите
node-red-contrib-telegrambot
и установите плагин.
Ещё понадобится создать бота, от имени которого будут отправляться сообщения:
- В Telegram найдите @BotFather;
- Отправьте ему команду
/newbot
; - Дальше следуйте инструкциям: придумайте имя и уникальный username, заканчивающийся на «bot»;
- В конце BotFather пришлёт вам токен, который потом нужно будет подставить в настройки плагина для Node-RED. Пока достаточно его просто сохранить.
Чтобы новенький бот мог отправлять вам сообщения, начните с ним чат: просто отправьте ему команду /start
. Это свяжет бота с вашим аккаунтом, и он сможет отправлять вам уведомления.
Так же понадобится узнать свой ID в Telegram: для этого отправьте команду /getid
вот этому боту. Идентификатор пользователя потом понадобится указать в качестве адресата.
Если вдруг возникнут трудности с регистрацией бота, то вот тут я подготовил чуть более подробную инструкцию.
Установка MQTT-брокера
Помимо прочего, для сценария с APRS и Meshtastic ещё понадобится установить брокер сообщений Mosquitto. На DietPi это делается следующей командой:
dietpi-software install 123
Мост из APRS в Telegram
Для чего нужен такой мост? Например, чтобы оставаться на связи в местах без сотового покрытия.
Справедливости ради, если где-то нет сотовой связи, то там и APRS-шлюзов тоже не будет 🙂. Но если вы увлекаетесь яхтингом или любите ходить в походы, то по воде или с горы можно связаться даже с удаленными интернет-шлюзами. А если вы, например, собираетесь за грибами, то можно оставить в машине включённый диджипитер и тогда у вас будет связь даже глубоко в лесу.
Лично я задумался о настройке APRS-шлюза, когда мой смартфон внезапно сломался. Несколько дней без связи — не катастрофа, но всё равно как-то спокойнее, когда есть резервный канал.
Как настроить такой резервный канал? Сейчас расскажу.
Получение сообщений из APRS-IS
Чтобы ваше сообщение попало в Node-RED, оно сначала должно оказаться на серверах APRS-IS. А для этого нужно, чтобы рядом с вами был хотя бы один интернет-шлюз (IGate): можете поискать ближайший на карте или даже поднять свой.

Node-RED умеет получать сообщения из APRS-IS через плагин node-red-contrib-aprs
, но он нам не подойдет:
- Этому плагину нужна поддержка веб-сокетов со стороны сервера, а таких серверов очень мало.
- Также сервер должен поддерживать фильтр
g/call1/call1/...
, а таких серверов ещё меньше. - Плагин редко обновляется и не работает с последней версией Node-RED.
Поэтому для получения сообщений из сети APRS я предлагаю использовать mqtt-aprs — мост из APRS-IS в MQTT. Да, схема немного удлиняется и появляется промежуточное звено, но зато мы сможем нормально подключаться к любым APRS-серверам.

В этой обзорной статье я не буду детально разбирать установку mqtt-aprs, чтобы не уйти в дебри. Но все шаги подробно описаны в документации и вот в этой инструкции.
Собственный бот в сети APRS
После настройки mqtt-aprs у вас появится свой бот в сети APRS, готовый принимать сообщения. Любое сообщение адресованное N0CALL-1
будет декодировано mqtt-aprs и отправлено в нужный MQTT-топик.
У меня, кстати, уже есть такой бот: он пересылает сообщения из APRS в Telegram-канал. Если захотите вживую «пощупать» как всё работает, то отправьте текстовое сообщение на UB0JBX-2
и оно появится в канале @mansmarthome_aprs.
Пересылка сообщений в Telegram
Теперь к главному — настройке потока в Node-RED. Я уже всё подготовил, вам остаётся только импортировать готовый поток:
- Откройте веб-интерфейс Node-RED (
http://<IP-адрес>:1880
); - В правом верхнем углу нажмите на кнопку меню и выберите Импорт;
- Скопируйте JSON потока из man yaml-haus (кнопка копирования справа);
- Вставьте JSON в Node-RED, выберите импортировать в новый поток и нажмите Импорт;
- Откройте список потоков, нажав Ctrl+Shift+F, и выберите импортированный поток.
Должно получиться вот так:

После импорта подставьте свои данные:
- Нажмите кнопку меню и выберите Параметры;
- Откройте вкладку Environment и заполните переменные:
APRS_BOT_CALLSIGN_AND_SSID
— позывной вашего APRS-бота;TELEGRAM_ACCESS_TOKEN
— токен, который вы получили от BotFather;TELEGRAM_ADRESSEE_ID
— ваш ID в Telegram;MQTT_USERNAME
иMQTT_PASSWORD
— логин и пароль от MQTT сервера (по умолчаниюmosquitto
/dietpi
);
- Нажмите Развернуть и проверьте, всё ли работает.
Считайте этот поток заготовкой — смело адаптируйте его под свои нужды. А если что-то будет непонятно, то на стриме я подробно показывал как собирать свои потоки шаг за шагом. Надеюсь будет полезно:

Мост из Meshtastic в Telegram
Я держу свою ноду включённой 24/7, но вот приложение на телефоне практически никогда не открываю. Из-за этого неясно, есть ли вообще хоть какая-то активность в чате: вдруг мне кто-то пишет? Бегать каждый раз к ноде и смотреть что там на экранчике тоже неудобно. В итоге именно так у меня родилась идея моста из Meshtastic в Telegram.
С этим мостом можно легко следить за чатом и, если нужно, быстро подключиться к ноде, чтобы ответить на сообщение. Вообще Node-RED позволяет даже создать полноценного бота с обратной связью — я, например, делал такого для управления своим умным домом. Но в этой статье я сфокусируюсь на простой пересылке сообщений из чата Meshtastic в Telegram.

Meshtastic во многом похож на APRS, и даже поток для Node-RED выглядит почти так же. Отличие только в том, как мы будем забирать сообщения из радиоэфира.

Meshtastic Bridge
В Meshtastic есть поддержка протокола MQTT — мы могли бы его использовать для интеграции с Node-RED. Но не будем 🙂. Потому что у встроенного MQTT есть пара проблем:
- В JSON-режиме не поддерживается кириллица, поэтому сообщения на русском не прочитать.
- В бинарном режиме нужно заморачиваться с декодированием protobuf.
- Плюс дополнительно придётся вести таблицу соответствия ID нод и их имён — иначе неясно, от кого пришло сообщение.
Если эти проблемы вас не смущают, то можете сразу переходить к мануалу на сайте Meshtastic. Мне же было удобнее настроить Meshtastic Bridge — мост из Meshtastic в MQTT, APRS, Owntracks и не только.
В итоге получается примерно такая схема:

Ноду Meshtastic проще всего подключить к серверу по USB, но можно использовать и Wi-Fi. Установка и настройка Meshtastic Bridge описаны в README проекта и в моей подробной инструкции, так что здесь повторяться не буду.
Поток для Node-RED
Для пересылки сообщений из эфирного чата в Telegram просто импортируйте готовый поток:
- Откройте веб-интерфейс Node-RED (
http://<IP-адрес>:1880
). - В меню выберите Импорт и вставьте JSON потока из man yaml-haus.
- Перейдите в Параметры → Environment и укажите:
TELEGRAM_ACCESS_TOKEN
— токен от BotFather;TELEGRAM_ADRESSEE_ID
— ваш ID в Telegram;MQTT_USERNAME
иMQTT_PASSWORD
— логин и пароль MQTT сервера (mosquitto
/dietpi
).
- Нажмите Развернуть и проверьте, всё ли работает.
Как и в случае с APRS, считайте этот поток просто черновиком — его можно бесконечно дополнять и улучшать. Что ещё можно было бы прикрутить?
- Например, можно добавить отправку сообщений в эфирный чат. Для этого достаточно отправить в топик
meshtastic/in
сообщение вида{"to": "^all", "decoded": {"text": "привет"}}
. - Ещё можно вывести карту нод через
node-red-contrib-web-worldmap
. - А ещё Node-RED поддерживает и другие мессенджеры помимо Telegram. То есть можно настроить мост в Matrix, IRC или даже Slack.
В общем, экспериментируйте 🙂
Кстати про Telegram. Мой канал доступен по ссылке выше 😉
Приём и декодирование DTMF кодов
Для APRS или Meshtastic нужно специальное оборудование, а DTMF-коды умеют отправлять даже самые простые Баофенги. Так что DTMF — это неплохой способ отправить команду или сообщение, когда у вас под рукой только обычная рация.
Я уже как-то рассказывал про DTMF и управление умным домом — тогда для декодирования тонов я использовал multimon-ng
. Но в этот раз я решил попробовать Direwolf, который уже использую для APRS. Да, тот самый Direwolf отлично справляется и с DTMF тоже.
Как всё работает?
В Meshtastic есть фича, которая называется canned messages. Её суть в том, чтобы заранее заготовить шаблонные сообщения и потом отправлять их нажатием физической кнопки на ноде. И вот что-то похожее можно повторить, используя обычный Баофенг:
- Передаёте DTMF-код со своей радиостанции (например,
091#
). - Приёмник, подключённый к серверу, принимает сигнал.
- Direwolf декодирует DTMF-коды и записывает их в лог-файл.
- Node-RED следит за логом, парсит коды и отправляет в Telegram заранее заготовленные сообщения, которые соответствуют отправленному коду.
Настройка Direwolf и Node-RED
Чтобы мост заработал, нужно включить декодирование DTMF в Direwolf и настроить Node-RED для чтения логов. Я не буду углубляться в детали — всё пошагово описано вот этой инструкции. Но если коротко:
- Настройте Direwolf, чтобы он декодировал DTMF и писал коды в лог.
- Импортируйте в Node-RED поток, который читает лог, парсит коды и отправляет сообщения в Telegram.

Где искать ответы на вопросы
Node-RED поначалу может озадачить, но если что-то не клеится, то вот где можно найти помощь:
- Google или Яндекс: по Node-RED в интернете куча уроков, форумов, блогов и разных готовых потоков на любой вкус.
- DeepSeek, Grok, ChatGPT, GigaChat или YandexGPT тоже часто выручают. Готовые потоки они генерируют так себе, но пошаговые инструкции получаются подробные и понятные.
- Так же можете посмотреть запись стрима, где я в прямом эфире создавал потоки из этой статьи.
Главное не бояться экспериментировать. APRS — это не только про координаты, а Meshtastic — не просто радиочат. С Node-RED можно настроить что угодно, от простого моста и до управления умным домом.
Надеюсь, статья поможет. Удачи в экспериментах, 73!