
Всем привет! Меня зовут Александр, это моя первая статья, хочу поделиться с вами историей создания программно-аппаратного open source решения для поддержки и управления сервисами в отсутствии интернета.
Да, может случиться так, что дядя Ваня на тракторе может порвать все провода на даче, да и без этого, например, в деревне у моего бати одна палка связи на всех операторах. Телефон у него кнопочный ортодоксальный, и слова типа VPN или ChatGPT для него не то что не знакомы — он начинает зевать даже при малейшем упоминании любых технологий.
Конечно, сразу с мыслью «просто удивить батю» появилась идея сделать средство, которое сможет стать помощником при плохой связи или отсутствии интернета.
Мне хотелось быть максимально автономным, и я решил создать собственный смс-шлюз.
Железо
Я купил на маркетплейсе китайский «свисток», сделанный на базе распространенного модема E3372-325. Идеально, конечно, было бы напрямую использовать его через COM-порт, но он жестко зашит, да и для простого пользователя проще использовать как есть без «танцев». Поэтому я использовал просто обычный API его интерфейса.
При подключении система пыталась использовать подключение модема для интернета, но настройка приоритета сети исправила ситуацию.
Пришлось, конечно, еще поискать и повозиться с парсингом и обработкой смс — никогда такого не делал, в остальном все было довольно не сложно.

У такой технологии, несомненно, есть недостатки: зависимость от оператора, ограничения количества символов одного сообщения - приходится разбивать ответы сервисов на несколько смс и назначать лимиты. Но для быстрого адаптируемого решения, которое реально может принести пользу, этого достаточно.
Стек технологий был следующий:
Java 21, Spring Boot, Spring Data JPA, MySQL, REST API, Docker
Для AI использовал openrouter и бесплатные модели.
Мониторинг

Чтобы пользователь мог следить за состоянием сервисов, не залезая в логи, сделал простой фронтенд на HTML + JS, который запускается локально на порту шлюза.
Сейчас в проекте доступ к AI модели, управление простым ТГ ботом (получение сообщений), получение последних команд шлюза.
В перспективе можно добавить управление сервером, уведомления (например, в ВК), авторизацию, получение данных с сервера, подключить локальную AI модель.
Проект для простых задач может работать на бесплатных моделях, запущен на любом пк с интернетом автономно.
Упаковано в Docker, максимально просто для старта.
Кому может пригодиться?
Адаптируя под свои нужды, может пригодиться в обычной жизни:
Управление умным домом;
Уведомления, возможность просто задать вопрос, когда ты, например, на даче, а там плохая связь;
Тем, у кого кнопочный телефон;
Авторизация и уведомление сотрудников предприятий;
Работа в местах с ограничениями связи;
Использование как резервного канала связи для управления сервером.
Я, как начинающий разработчик, буду рад звездам, пул-реквестам и конструктивной критике :-)
Если у кого-то есть вопросы — помогу разобраться.
cry_san
Хорошая идея, про использование смс. В таком контексте даже не думал. ))
Кстати, если помните работу модемов и какие они могли издавать звуки при подключении, приеме и передачи данных, - это уже можно будет использовать в звонке с телефона.
Можете адаптировать идею у себя в проекте, вдруг не будет возможности отправить смс, а возможность сделать звонок - будет.
Alex1533 Автор
Со звонком дела обстоят сложнее, передача сигнала усложняется его качеством и шумо-фильтрами оператора, сигнал сильно искажается при передаче..