Изначально ни о каких роутерах я конечно не думал. Интересно было попробовать узнать, а что там в течение дня показывают в статус баре телефона, сколько палочек и какое поколение G. Чтоб товарищ успокоился немного. Без сложностей вроде dBi, RSSI и геолокации, для этого есть инженерные приложения. У меня просто, только уровень сигнала и тип сети. Зато в течение суток, если повезёт :).
Сделал приложение для Android:
фоновый сервис с постоянным уведомлением
слушатель состояния телефона
То есть функционал такой: фоновый сервис работает в телефоне пока вы его не остановите. Например, на трёх моих андроидах сервис работает сутками, а на четвёртом андроиде вообще не работает, если экран погасить, хоть тресни.
Но там где работает, сервис раз в минуту пишет в текстовый файлик текущее значение сигнала и типа интернета для каждой симки в телефоне, и после остановки такого мониторинга, приложение, из этого файлика рисует суточный график. Вот такой:

Как видно из названия файла на картинке, график-то не от симки смартфона, а от роутера MikroTik, того самого что шлёт мне смски по email. У меня в роутере есть встроенный LTE модем, почему бы не отмониторить и его тоже, подумал я и сделал скрипт. Скрипт повторяет функционал приложения, и присылает в полночь файл с данными за сутки, из которого рисуется такой же график как и для симок в телефоне. Надо только файлик положить в папку приложения.
Но микротик сложный и дорогой, им мало пользуются. Что там у установщиков интернета в почёте сейчас, кинетик, хуавей? Была не была, купил на авито и тот и другой, и tp-link и cudy. Но эти ребята сами себя мониторить не умеют, как дорогой и сложный, их надо опрашивать по сети. Так же как симку в телефоне, раз в минуту: запрос параметров и запись в файл. И весь зоопарк ответов от разных моделей приводить к единому формату. К уже работающему в приложении. Потому что уже человек двадцать в Турции целый год пользуются приложением. Комьюнити :)
Формат сигнала выбрал такой, если есть RSRP или RSSI в роутере, их значения привожу к простым палочкам. RSRP в приоритете. Если нет, забираю то что есть в роутере, original палочки.
RSRP > -80dBm или RSSI > -65dBm = 5 палочек сигнала
RSRP > -90dBm или RSSI > -75dBm = 4 палочки сигнала
RSRP > -100dBm или RSSI > -85dBm = 3 палочки сигнала
RSRP > -110dBm или RSSI > -95dBm = 2 палочки сигнала
RSRP > -120dBm или RSSI > -120dBm = 1 палочка сигнала
Тип интернета разбиваю по поколениям индивидуально для каждого роутера, там кошмар вообще. Не показать для всех роутеров, хотя..., не никак, например вот модемчик Huawei E3372H-320 поддерживает 51 тип интернета, здорово да? Ну ладно не поддерживает, но в прошивке имеет все эти типы.
Скрытый текст
var MACRO_NET_WORK_TYPE_GPRS = '2';
var MACRO_NET_WORK_TYPE_EDGE = '3';
var MACRO_NET_WORK_TYPE_WCDMA = '4';
var MACRO_NET_WORK_TYPE_HSDPA = '5';
var MACRO_NET_WORK_TYPE_HSUPA = '6';
var MACRO_NET_WORK_TYPE_HSPA = '7';
var MACRO_NET_WORK_TYPE_TDSCDMA = '8';
var MACRO_NET_WORK_TYPE_HSPA_PLUS = '9';
var MACRO_NET_WORK_TYPE_EVDO_REV_0 = '10';
var MACRO_NET_WORK_TYPE_EVDO_REV_A = '11';
var MACRO_NET_WORK_TYPE_EVDO_REV_B = '12';
var MACRO_NET_WORK_TYPE_1XRTT = '13';
var MACRO_NET_WORK_TYPE_UMB = '14';
var MACRO_NET_WORK_TYPE_1XEVDV = '15';
var MACRO_NET_WORK_TYPE_3XRTT = '16';
var MACRO_NET_WORK_TYPE_HSPA_PLUS_64QAM = '17';
var MACRO_NET_WORK_TYPE_HSPA_PLUS_MIMO = '18';
var MACRO_NET_WORK_TYPE_LTE = '19';
var MACRO_NET_WORK_TYPE_LTE_NR = '20';
var MACRO_NET_WORK_TYPE_EX_NOSERVICE = '0';
var MACRO_NET_WORK_TYPE_EX_GSM = '1';
var MACRO_NET_WORK_TYPE_EX_GPRS = '2';
var MACRO_NET_WORK_TYPE_EX_EDGE = '3';
var MACRO_NET_WORK_TYPE_EX_IS95A = '21';
var MACRO_NET_WORK_TYPE_EX_IS95B = '22';
var MACRO_NET_WORK_TYPE_EX_CDMA_1X = '23';
var MACRO_NET_WORK_TYPE_EX_EVDO_REV_0 = '24';
var MACRO_NET_WORK_TYPE_EX_EVDO_REV_A = '25';
var MACRO_NET_WORK_TYPE_EX_EVDO_REV_B = '26';
var MACRO_NET_WORK_TYPE_EX_HYBRID_CDMA_1X = '27';
var MACRO_NET_WORK_TYPE_EX_HYBRID_EVDO_REV_0 = '28';
var MACRO_NET_WORK_TYPE_EX_HYBRID_EVDO_REV_A = '29';
var MACRO_NET_WORK_TYPE_EX_HYBRID_EVDO_REV_B = '30';
var MACRO_NET_WORK_TYPE_EX_EHRPD_REL_0 = '31';
var MACRO_NET_WORK_TYPE_EX_EHRPD_REL_A = '32';
var MACRO_NET_WORK_TYPE_EX_EHRPD_REL_B = '33';
var MACRO_NET_WORK_TYPE_EX_HYBRID_EHRPD_REL_0 = '34';
var MACRO_NET_WORK_TYPE_EX_HYBRID_EHRPD_REL_A = '35';
var MACRO_NET_WORK_TYPE_EX_HYBRID_EHRPD_REL_B = '36';
var MACRO_NET_WORK_TYPE_EX_WCDMA = '41';
var MACRO_NET_WORK_TYPE_EX_HSDPA = '42';
var MACRO_NET_WORK_TYPE_EX_HSUPA = '43';
var MACRO_NET_WORK_TYPE_EX_HSPA = '44';
var MACRO_NET_WORK_TYPE_EX_HSPA_PLUS = '45';
var MACRO_NET_WORK_TYPE_EX_DC_HSPA_PLUS = '46';
var MACRO_NET_WORK_TYPE_EX_TD_SCDMA = '61';
var MACRO_NET_WORK_TYPE_EX_TD_HSDPA = '62';
var MACRO_NET_WORK_TYPE_EX_TD_HSUPA = '63';
var MACRO_NET_WORK_TYPE_EX_TD_HSPA = '64';
var MACRO_NET_WORK_TYPE_EX_TD_HSPA_PLUS = '65';
var MACRO_NET_WORK_TYPE_EX_802_16E = '81';
var MACRO_NET_WORK_TYPE_EX_LTE = '101';
var MACRO_NET_WORK_TYPE_EX_LTE_PLUS = '1011';
var MACRO_NET_WORK_TYPE_EX_NR = '111';
И тоже привожу к единому формату
5G
4G
3G
2G
xG это когда нет интернета
Легче всего было с кинетиками, готовый API нашёлся быстро, хоть и не на Java, но мы с ИИ его просто переписали. Спасибо автору.
Там просто, запрос данных на роутер. если код ответа 200, парси данные из ответа, если ответ 401 значит надо снова авторизоваться. Запрос на авторизацию, ответ с "солью" для шифрования логина и пароля, шифруем и авторизуемся.
Кинетик знает такие типы интернета
Скрытый текст
5G
4G+
4G
3G WCDMA
3G HSPA+
3G HSPA
3G DC-HSPA+
2G EDGE
2G GPRS
Cudy, почти аналогично, запрос токена, шифрование логина и пароля с помощью токена, авторизация и запрос параметров. Для Cudy добавил такие типы, но тут на глазок.
Скрытый текст
NR5G, 5G, NR, 5G NSA, 5G SA
LTE, LTE-A, LTE CA, E-UTRAN, Evolved 3G (LTE) и все вариации CA
3G, WCDMA, UTRAN, HSPA, HSPA+, HSUPA, HSDPA
"2G, GSM, GPRS, EDGE, EGPRS
оба хуавея что были у меня, и модем и роутер, вообще не требовали авторизации, в модеме даже пароля нет, красота. Да тп линк?
TP-Link который у меня был: TL- MR150. Он считает что поддерживает такие типы
"GSM","WCDMA","4G LTE","TD-SCDMA","CDMA 1x","CDMA 1x Ev-Do","4G+ LTE"
запрос для него выглядит так
"1&1\r\n[WAN_LTE_LINK_CFG#2,1,0,0,0,0#0,0,0,0,0,0]0,0\r\n[LTE_NET_STATUS#2,1,0,0,0,0#0,0,0,0,0,0]1,0\r\n";
Вы наверно подумали как круто, единицы и нолики, уже всё безопасно и зашифровано, да? Не, не зашифровано, но будет, 4 раза будет зашифровано перед отправкой запроса, да тп линк? четыре?
Параллельно с добавлением новых моделей в приложение, я пробовал мониторить несколько роутеров сразу. Несколько это 2, так как симки у меня всего две. Но зато фейковых роутеров я мог добавить в приложение сколько угодно и проверить как оно будет справляться с оффлайн железками.

Общий таймаут на каждый запрос к роутеру поставил 12 секунд. Мой фоновый сервис, может работать в 30 потоков максимум, поэтому 60 / 12 * 30 если не уверены в провайдере или локалке, больше 150 роутеров одновременно одной мобилкой не мониторьте. Оффлайн роутеры будут мешать онлайн железкам. Если у вас с линками нет проблем можете смело мониторить до 800 роутеров включительно.
Что получилось
Приложение умеет мониторить тип интернета и уровень сигнала в смартфонах и некоторых роутерах поддерживающих LTE модемы. Только в локальной сети, если очень хочется извне, делайте тоннель и всё равно по локалке мониторьте. В планах добавить Huawei b535-232a, когда он скинет в цене немного. Вроде он попсовый тоже из бюджетных.
Пока список поддерживаемых роутеров такой:
Mikrotik — все модели с LTE-интерфейсом, самостоятельно скриптом.
Keenetic (Netcraze) — модели с LTE и USB-модемами
Cudy — LT500 V2.0
TP-Link — TL-MR150 v2
Huawei — CPE B593s-22
Huawei E3372h-320
Как я уже писал, фоновый сервис может не работать на некоторых устройствах, у меня не работает на планшете Honor, а планшет Huawei и Xiaomi мобилки работают бесперебойно сутками. Если есть старая мобилка , Android 10+, можно запустить на ней, не выключая экран. Так будет работать вечно :)
Приложение есть на Google Play
Для кинетика, так как он единственный из поддерживаемых с USB портом, а значит может иметь несколько модемов одновременно, есть видеоинструкция.
Если у вас есть идеи по поводу какие ещё модели стоит добавить, пишите, про дорогие модели не пишите :). Я давно не в теме, там какие то кроксы, вертелы, олаксы и ещё много всяких видел.
Если кто то хочет посмотреть в глаза тп линку, его код есть на гитхабе, там же где и скрипт для микротика.
Спасибо за внимание.
