
Всем привет! Меня зовут Александр, это моя первая статья, хочу поделиться с вами историей создания программно-аппаратного 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, максимально просто для старта.
Кому может пригодиться?
Адаптируя под свои нужды, может пригодиться в обычной жизни:
-
Управление умным домом;
-
Уведомления, возможность просто задать вопрос, когда ты, например, на даче, а там плохая связь;
-
Тем, у кого кнопочный телефон;
-
Авторизация и уведомление сотрудников предприятий;
-
Работа в местах с ограничениями связи;
-
Использование как резервного канала связи для управления сервером.
Я, как начинающий разработчик, буду рад звездам, пул-реквестам и конструктивной критике 🙂
Если у кого-то есть вопросы — помогу разобраться.
ссылка на оригинал статьи https://habr.com/ru/articles/1028892/