VolSignal
Приложение для мониторинга уровня сигнала с SIM-карты строится вокруг простой цепочки. Мобильный клиент на Android через TelephonyManager получает параметры сигнала — уровень в dBm, тип сети, идентификатор соты, оператор, а также координаты устройства. Эти данные метятся временем и анонимным идентификатором устройства. Для оптимизации они буферизуются и отправляются на сервер пакетами, чтобы не тратить батарею и сеть понапрасну. На iOS аналогичный сбор данных сильно ограничен, поэтому MVP обычно запускают только на Android.
Сервер принимает пакеты через REST API, иногда через WebSocket или MQTT для потокового режима. Валидация данных защищает от мусора и фальсификаций. После этого записи попадают в базу данных. Для простоты выбирается PostgreSQL с расширением PostGIS, так как там удобно хранить координаты и делать пространственные запросы. Для высокой нагрузки и длинной истории можно добавить ClickHouse или InfluxDB. В базе создаются две основные таблицы: сырые записи и агрегированные данные для ускорения визуализации.
Веб-панель работает через React и карту Mapbox, Google Maps или Leaflet. Данные с сервера отдаются в виде слоёв, например тепловая карта интенсивности сигнала или кластерные точки. Пользователь может фильтровать по оператору, типу сети и времени, а также смотреть анимацию изменения качества связи. Для режима реального времени клиент может подписываться на WebSocket и сразу видеть новые точки на карте.
Важный блок — приватность. Не хранятся реальные идентификаторы SIM и устройства, вместо них используется случайный UUID. Пользователь должен дать согласие на сбор и иметь возможность удалить данные. Передача всегда идёт по TLS.
Для MVP достаточно: Android-приложения, которое собирает координаты и уровень сигнала и отправляет на сервер; API на сервере с базой Postgres и PostGIS; веб-панели, которая строит тепловую карту и список последних точек. Дальнейшее развитие может включать поддержку iOS, предсказание слабых зон с помощью ML, API для внешних партнёров и собственный тайловый серер карт.
