Новый дачный сезон с Java, управлением сервера без интернета и AI моделью

от автора

Всем привет! Меня зовут Александр, это моя первая статья, хочу поделиться с вами историей создания программно-аппаратного 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/