Страница 1 из 1

Парсер уровней сигнала для модема Huawei (Vodafone) k5161h

Добавлено: 15 ноя 2022, 11:02
demonlibra
Довелось мне бороться с антенной для интернета через сотовую связь.

Написал сценарий на python, который непрерывно обновляет и считывает данные со страницы Информация об устройстве.
Строятся графики уровней RSRP, RSRQ, SINR и RSSI с указанием номера базовой станции.

GitHub


Парсер уровней сигнала для модема Huawei (Vodafone) k5161h

Добавлено: 10 дек 2022, 02:10
demonlibra
Благодаря видео Python парсинг динамических страниц сайтов с JavaScript Ajax обнаружил API для сбора данных с модема по ссылке http://192.168.9.1/api/device/signal

Дописал сценарии сбора данных через API.
GitHub

Парсер уровней сигнала для модема Huawei (Vodafone) k5161h

Добавлено: 11 дек 2022, 20:37
Damian
Не по теме
demonlibra, случайно не знаешь есть для usb-модемов какая-нибудь программа которая отображает техническую информацию,modem manager gui как-то бедноват чего нибудь такого оригинального нет чтоб там графики,вышки интересное в общем было,пардон если не в тему :sry:

Парсер уровней сигнала для модема Huawei (Vodafone) k5161h

Добавлено: 11 дек 2022, 22:38
demonlibra
Я не искал.
Мне было интересно с Python`ом повозиться после прочтения книги Простой Python Bill Lubanovic

Парсер уровней сигнала для модема Huawei (Vodafone) k5161h

Добавлено: 14 дек 2022, 00:22
demonlibra
Используя API можно получать данные через bash.

Код: Выделить всё

curl -s 192.168.9.1/api/device/signal
while [ abc ]; do curl -s 192.168.9.1/api/device/signal | grep 'cell_id' | grep -o -G "[0-9]*"; sleep 5; done
while [ abc ]; do curl -s 192.168.9.1/api/device/signal | grep 'rsrp' | grep -o -P "(\-?)([0-9]*)dBm"; sleep 5; done
Эти команды можно использовать для вывода данных через апплет Датчики Bash (bash-sensors@pkkk)

Код: Выделить всё

curl -s 192.168.9.1/api/device/signal | grep 'cell_id' | grep -o -G "[0-9]*"
curl -s 192.168.9.1/api/device/signal | grep 'rsrp' | grep -o -P "(\-?)([0-9]*)dBm"
изображение_2022-12-13_233613489.png

Парсер уровней сигнала для модема Huawei (Vodafone) k5161h

Добавлено: 14 дек 2022, 21:24
Damian
demonlibra писал(а):
11 дек 2022, 22:38
Простой Python Bill Lubanovic
Спасибо давно хотелось с чем-то подобным познакомиться.

Парсер уровней сигнала для модема Huawei (Vodafone) k5161h

Добавлено: 14 дек 2022, 22:19
demonlibra
Тогда вдогонку,
Начинаем программировать на Python (5-е изд) 2022 Tony Gaddis
книги друг друга хорошо дополняют

Парсер уровней сигнала для модема Huawei (Vodafone) k5161h

Добавлено: 14 дек 2022, 22:30
rogoznik
demonlibra писал(а):
11 дек 2022, 22:38
Простой Python
Да да, он "очень простой"

Код: Выделить всё

data = [i * j for i in range(0, 3) for j in range(0, 3)]
:crazy:

Парсер уровней сигнала для модема Huawei (Vodafone) k5161h

Добавлено: 14 дек 2022, 22:51
demonlibra
После прочтения книжек стало чуть проще ))

Парсер уровней сигнала для модема Huawei (Vodafone) k5161h

Добавлено: 14 дек 2022, 23:49
WWolf
rogoznik, фигасе перегруз семантики...

Парсер уровней сигнала для модема Huawei (Vodafone) k5161h

Добавлено: 15 дек 2022, 18:01
slant
rogoznik писал(а):
14 дек 2022, 22:30
Да да, он "очень простой"
Ну, если специально не лезть в логические извращения и библиотеки глубоко - то весьма прост. Во всяком случае - всяких подводных камней и скрытых нюансов поменьше чем если сложный скрипт на BASH писать. :) А уж если с perl сравнивать, который эту нишу до него занимал... :)

По моему впечатлению - python сразу либо нравится своим синтаксисом, либо сразу становится ненавидимым - именно за него же. :)
Лично я оценил то, что скрипт на нем либо сразу написан читабельно, либо просто не будет работать. Как меня в свое время достало в проекте с другим языком: 4 человека в команде, у трех собственная привычка к форматированию кода, а четвертый считает что форматирование - пофиг и дело десятое. Лишь бы код работал. Справедливости ради - именно у него он всегда работал. :) Но блин... И разогнать их было невозможно.

Парсер уровней сигнала для модема Huawei (Vodafone) k5161h

Добавлено: 15 дек 2022, 23:03
Ара Магеддон
Да уж, синтаксис там своеобразен. В каком-нибудь VB/VBA или 1С привыкаешь к тому, что на каждый if должен приходиться end if, а на каждый for - своей next. Потом без закрывающих операторов чувствуешь себя как китаец на стеклянном полу - как будто какой-то опоры не хватет. Но привыкнуть можно, со временем начинаешь воспринимать синтаксис как должное.
https://www.youtube.com/watch?v=PPDDQ5l0JsU

Парсер уровней сигнала для модема Huawei (Vodafone) k5161h

Добавлено: 08 фев 2023, 14:49
demonlibra
При выводе данных через bash-sensors необходимо позаботиться о том, чтобы запросы были ограничены по времени.

Вывод номера станции:

Код: Выделить всё

cell=`curl -s --max-time 3 192.168.9.1/api/device/signal | grep 'cell_id' | grep -o -G "[0-9]*"`; if [ $cell ]; then echo $cell; else echo 'no signal'; fi
Вывод основных данных:

Код: Выделить всё

data=`curl -s --max-time 3 192.168.9.1/api/device/signal | grep 'rsrq\|rsrp\|rssi\|sinr' | grep -o -E "(\-?)[0-9]*(\.[0-9])?"`; array=($(echo $data | tr ' ' "\n")); echo "RSRQ = ${array[0]} dB | RSRP = ${array[1]} dBm | RSSI = ${array[2]} dBm | SINR = ${array[3]} dB"
Вывод времени получения эха сервера:

Код: Выделить всё

ping -w 5 -qc1 google.com 2>&1 | awk -F/ '/^rtt/ { printf "%.0f мс", $5; ok = 1 } END { if (!ok) print "FAIL" }'
bash-sensors.png