Весь рассказ я решил разбить на три небольших поста. Сегодня расскажу, как я вообще докатился до радиолюбительства и как собрал первый прототип петербургского моста из Meshtastic в Telegram. А в следующих частях — о том, чем я заменил этот прототип на базе Home Assistant.
Как я увлёкся радио
Интерес к радио у меня проснулся в конце 2022 года. Мой телефон тогда сломался и я оказался в дурацкой ситуации:
- Есть старый смартфон в качестве запасного, но новые СИМки он отказался принимать.
- Есть плеер, в котором только Wi-Fi и нет сотовой связи.
И вот есть аж 2 устройства, куда можно было бы установить Telegram, но оба бесполезны. В целом, ничего страшного — раньше ведь как-то жили без сотовой связи. 🙂 Однако именно этот случай заставил меня задуматься об альтернативах.
Был у моего радиоувлечения и другой мотив — желание разобраться, как устроены компьютерные сети и системы связи в целом. Например, современный Wi-Fi роутер — это сложный чёрный ящик, который работает каким-то магическим образом, а вот радиолюбительские технологии проще для понимания. И самое главное — собрать свой DIY-роутер или GSM-модем я вряд ли смогу, а построить мост в Telegram на основе любительских технологий — задача вполне выполнимая.
И вот немного углубившись в тему, я наткнулся на APRS. APRS — это «взрослая» радиолюбительская технология для обмена сообщениями и геолокацией. Причём технология настолько взрослая, что она появилась ещё до повсеместного распространения интернета.

Но сегодня пост всё-таки не про мой любимый APRS, а про Meshtastic. Обе технологии очень похожи, но с Meshtastic я познакомился уже после того, как получил радиолюбительский позывной (необходимый для работы с APRS). Возможно, если бы я узнал про Meshtastic раньше, позывной бы и не получал. 🙂
Для моей задачи у Meshtastic было пару необходимых фичей: передача текстовых сообщений по радио и встроенная поддержка MQTT. Я планировал отправлять сообщения на домашнюю ноду по радио, чтобы та через MQTT перенаправляла их в Home Assistant, где у меня уже настроен Telegram-бот.

Первые проблемы с Meshtastic
К моменту, когда я получил свои первые Meshtastic-ноды, в Санкт-Петербурге уже была развитая mesh-сеть.
Тем не менее с Мештастиком не обошлось без трудностей. Главной проблемой стала поддержка кириллицы: в MQTT поддерживалась только латиница, что сразу похоронило мои первоначальные планы. Но были и другие ограничения:
- Автономных девайсов тогда не существовало, так что читать и отправлять сообщения можно было только со смартфона, подключённого по Bluetooth.
- Было невозможно прочитать сообщение, если оно приходило в момент, когда телефон был отключён от ноды. В новых версиях история сохраняется, но тогда такого функционала не было.
- Теоретически, сообщения можно смотреть на экранчике самой ноды, но там кириллица тоже не поддерживается (нужно пересобирать прошивку).
В итоге нода у меня стояла на подоконнике, исправно «собирала» сообщения из эфира, а прочесть их было невозможно. А ведь интересно же, чего там пишут! Так я начал искать альтернативные решения.

Решение нашлось быстро — Meshtastic Bridge. Эта утилита умеет подключаться к ноде через стандартный API Meshtastic, в котором нет проблем с кириллицей. Сначала я настроил простой мост из Meshtastic Bridge в MQTT, а потом уже добавил пересылку сообщений в Telegram. Получилась такая схема:

И вот пока настраивал пересылку в Telegram, я подумал: а почему бы не отправлять сообщения в общий канал, а не себе в личку? Так в СПб появился публичный мост из Meshtastic в Telegram, который позволял удобно мониторить эфирный чатик:

Следующие пару лет система работала на связке Meshtastic Bridge + Home Assistant, а потом я задумал «расширяться». 🙂 Дело в том, что моя нода видела далеко не все сообщения — всё-таки радиосвязь штука не надёжная. И я подумал, что было бы неплохо с кем-нибудь скооперироваться и настроить сбор данных с других нод в разных частях города.
Но старая архитектура не позволяла масштабироваться, поэтому в итоге я решил переписать всё на базе Tarantool:

Взять Tarantool меня вдохновила статья про его использование в облаке умного дома REDMOND — мне сразу захотелось пощупать, что же это за СУБД такая. Причём получилась некоторая преемственность: я начал с умного дома на Home Assistant, а к Tarantool пришёл через статью про умный дом Ready4Sky. 🙂
И вот о том, как я переписывал мост на Tarantool и с какими проблемами столкнулся — в следующей части.
