模组信息页面添加实时速率显示

This commit is contained in:
ling 2024-03-07 18:59:39 +08:00
parent 5bdd98356f
commit 846545fbc9
6 changed files with 259 additions and 126 deletions

View File

@ -188,14 +188,18 @@ function getModemInfo()
end end
--网络信息翻译 --网络信息翻译
if modem_more_info["network_info"] then if modem_more_info["network_info"] then
for key in pairs(modem_more_info["network_info"]) do local network_info=modem_more_info["network_info"]
--翻译键 for i = 1, #network_info do
translation[key]=luci.i18n.translate(key) local info = network_info[i]
-- local value=modem_more_info["network_info"][key] for key in pairs(info) do
-- if hasLetters(value) then --翻译键
-- --翻译值 translation[key]=luci.i18n.translate(key)
-- translation[value]=luci.i18n.translate(value) -- local value=info[key]
-- end -- if hasLetters(value) then
-- --翻译值
-- translation[value]=luci.i18n.translate(value)
-- end
end
end end
end end
--小区信息翻译 --小区信息翻译

View File

@ -52,6 +52,28 @@ end
}); });
} }
//获取SIM卡信息视图
function get_rate_view(rate)
{
const b=parseFloat(rate);
const kb=b/1024;
const mb=kb/1024;
var rate_view;
if (mb>=1) {
console.log(mb);
rate_view=mb.toFixed(2)+" MB/s";
}
else if (kb>=1) {
rate_view=kb.toFixed(2)+" KB/s";
}
else {
rate_view=b+" B/s";
}
return rate_view;
}
//获取SIM卡信息视图 //获取SIM卡信息视图
function get_sim_info_view(sim_info,translation) function get_sim_info_view(sim_info,translation)
{ {
@ -63,6 +85,12 @@ end
//遍历每一条信息里的键 //遍历每一条信息里的键
for (var key in info) for (var key in info)
{ {
//跳过全名
if (key=="full_name")
{
continue;
}
//获取全名 //获取全名
var full_name=info["full_name"]; var full_name=info["full_name"];
if (full_name==null) if (full_name==null)
@ -71,7 +99,7 @@ end
} }
//写入视图(不显示空的信息) //写入视图(不显示空的信息)
var value=info[key]; var value=info[key];
if (key!="full_name"&&value!="-"&&value!=""&&value!="ready") if (value!="-"&&value!=""&&value!="ready")
{ {
// value=translation[value]; //是否翻译 // value=translation[value]; //是否翻译
sim_info_view+='<tr class="tr"><td class="td left" title="'+full_name+'">'+translation[key]+'</td><td class="td left" id="'+key+'">'+value+'</td></tr>'; sim_info_view+='<tr class="tr"><td class="td left" title="'+full_name+'">'+translation[key]+'</td><td class="td left" id="'+key+'">'+value+'</td></tr>';
@ -92,6 +120,60 @@ end
sim_info_Element.innerHTML=sim_info_view; sim_info_Element.innerHTML=sim_info_view;
} }
//获取网络信息视图
function get_network_info_view(network_info,translation)
{
//初始化视图
var network_info_view='';
//遍历每一条信息
for (var info of network_info)
{
//遍历每一条信息里的键
for (var key in info)
{
//跳过全名
if (key=="full_name")
{
continue;
}
//获取全名
var full_name=info["full_name"];
if (full_name==null)
{
full_name='';
}
//写入视图(不显示空的信息)
var value=info[key];
if (value!="-"&&value!="")
{
//添加单位
if (key=="RSSI") {
value=value+" dBm";
}
else if (key=="Tx Rate"||key=="Rx Rate")
{
value=get_rate_view(value);
}
// value=translation[value]; //是否翻译
network_info_view+='<tr class="tr"><td class="td left" title="'+full_name+'">'+translation[key]+'</td><td class="td left" id="'+key+'">'+value+'</td></tr>';
break;
}
}
}
return network_info_view;
}
//设置网络信息
function set_network_info(network_info,translation)
{
//获取网络信息视图
var network_info_view=get_network_info_view(network_info,translation);
//获取网络信息表格
var network_info_Element=document.getElementById("network_info");
network_info_Element.innerHTML=network_info_view;
}
//获取小区信息视图 //获取小区信息视图
function get_cell_info_view(network_mode_info,network_type,translation) function get_cell_info_view(network_mode_info,network_type,translation)
{ {
@ -103,6 +185,12 @@ end
//遍历每一条信息里的键 //遍历每一条信息里的键
for (var key in info) for (var key in info)
{ {
//跳过全名
if (key=="full_name")
{
continue;
}
//获取全名 //获取全名
var full_name=info["full_name"]; var full_name=info["full_name"];
if (full_name==null) if (full_name==null)
@ -111,7 +199,7 @@ end
} }
//写入视图(不显示空的信息) //写入视图(不显示空的信息)
var value=info[key]; var value=info[key];
if (key!="full_name"&&value!="-"&&value!="") if (value!="-"&&value!="")
{ {
//添加单位 //添加单位
if (key=="Band") { if (key=="Band") {
@ -145,7 +233,7 @@ end
return cell_info_view; return cell_info_view;
} }
//获取小区信息 //设置小区信息
function set_cell_info(cell_info,translation) function set_cell_info(cell_info,translation)
{ {
//获取网络模式 //获取网络模式
@ -334,7 +422,7 @@ end
//网络信息 //网络信息
var network_info=more_info["network_info"]; var network_info=more_info["network_info"];
set_info(network_info); set_network_info(network_info,translation);
//小区信息 //小区信息
var cell_info=more_info["cell_info"]; var cell_info=more_info["cell_info"];
@ -486,11 +574,7 @@ end
<fieldset class="cbi-section" id="cbi-networkinfo" style="display: none;"> <fieldset class="cbi-section" id="cbi-networkinfo" style="display: none;">
<div class="cbi-section fade-in"> <div class="cbi-section fade-in">
<h3><%:Network Information%></h3> <h3><%:Network Information%></h3>
<table id="network_info" class="table"> <table id="network_info" class="table"></table>
<tbody>
<tr class="tr"><td class="td left"><%:Network Type%></td><td class="td left" id="network_type"></td></tr>
</tbody>
</table>
</div> </div>
</fieldset> </fieldset>
@ -501,22 +585,7 @@ end
</div> </div>
</fieldset> </fieldset>
<!-- <fieldset class="cbi-section" id="cbi-networkinfo" style="display: none;"> <!-- <fieldset class="cbi-section" id="cbi-stationinfo" style="display: none;">
<h3><%:网络信息%></h3>
<table width="100%" cellspacing="10">
<tr><td width="20%"><%:Network Type 网络类型 %> :</td><td id="network_type"></td><td></td></tr>
<tr><td width="20%"><%:CSQ : %></td><td id="csq"></td><td></td></tr>
<tr><td width="20%"><%:信号强度 : %></td><td id="per"></td><td></td></tr>
<tr><td width="20%"><%:RSSI 信号接收强度 : %></td><td id="rssi"></td><td></td></tr>
<tr><td width="20%"><%:RSRQ 参考信号接收质量 : %></td><td><ul><span id="ecio" class="r"></span><span id="ecio1" class="r"></span></ul></td><td></td></tr>
<tr><td width="20%"><%:RSRP 参考信号接收功率 : %></td><td><ul><span id="rscp" class="r"></span><span id="rscp1" class="r"></span></ul></td><td></td></tr>
<tr><td width="20%"><%:SINR 信噪比 : %></td><td id="sinr"></td><td></td></tr>
<tr><td width="20%"><%:连接状态监控 : %></td><td id="conmon"></td><td></td></tr>
</table>
</fieldset>
<fieldset class="cbi-section" id="cbi-stationinfo" style="display: none;">
<h3><%:基站信息%></h3> <h3><%:基站信息%></h3>
<table width="100%" cellspacing="10"> <table width="100%" cellspacing="10">
<tr><td width="20%"><%:MCC/MNC 国家码/网络码 %> :</td><td id="mcc"></td><td id="mnc"></td></tr> <tr><td width="20%"><%:MCC/MNC 国家码/网络码 %> :</td><td id="mcc"></td><td id="mnc"></td></tr>

View File

@ -274,6 +274,18 @@ msgstr "网络信息"
msgid "Network Type" msgid "Network Type"
msgstr "网络类型" msgstr "网络类型"
msgid "Tx Rate"
msgstr "上传速率"
msgid "Rx Rate"
msgstr "下载速率"
msgid "RSSI"
msgstr "接收信号强度指示"
msgid "BER"
msgstr "信道误码率"
msgid "Cell Information" msgid "Cell Information"
msgstr "小区信息" msgstr "小区信息"

View File

@ -238,15 +238,15 @@ fibocom_base_info()
{ {
debug "Fibocom base info" debug "Fibocom base info"
at_command="ATI"
response=$(sh $current_dir/modem_at.sh $at_port $at_command)
#Name名称 #Name名称
name=$(echo "$response" | sed -n '3p' | sed 's/Model: //g' | sed 's/\r//g') at_command="AT+CGMM"
name=$(sh $current_dir/modem_at.sh $at_port $at_command | sed -n '2p' | sed 's/\r//g')
#Manufacturer制造商 #Manufacturer制造商
manufacturer=$(echo "$response" | sed -n '2p' | sed 's/Manufacturer: //g' | sed 's/\r//g') at_command="AT+CGMI"
manufacturer=$(sh $current_dir/modem_at.sh $at_port $at_command | sed -n '2p' | sed 's/\r//g')
#Revision固件版本 #Revision固件版本
revision=$(echo "$response" | sed -n '4p' | sed 's/Revision: //g' | sed 's/\r//g') at_command="AT+CGMR"
revision=$(sh $current_dir/modem_at.sh $at_port $at_command | sed -n '2p' | sed 's/\r//g')
#Mode拨号模式 #Mode拨号模式
mode=$(get_mode $at_port | tr 'a-z' 'A-Z') mode=$(get_mode $at_port | tr 'a-z' 'A-Z')
@ -259,23 +259,12 @@ fibocom_base_info()
fi fi
} }
#SIM卡信息 #获取SIM卡状态
fibocom_sim_info() # $1:SIM卡状态标志
get_sim_status()
{ {
debug "Fibocom sim info" local sim_status
case $1 in
#SIM SlotSIM卡卡槽
at_command="AT+GTDUALSIM"
sim_slot=$(sh $current_dir/modem_at.sh $at_port $at_command | grep "+GTDUALSIM:" | awk -F'"' '{print $2}' | sed 's/SUB//g')
#IMEI国际移动设备识别码
at_command="AT+CGSN"
imei=$(sh $current_dir/modem_at.sh $at_port $at_command | sed -n '2p' | sed 's/\r//g')
#SIM StatusSIM状态
at_command="AT+CPIN?"
response=$(sh $current_dir/modem_at.sh $at_port $at_command | sed -n '2p')
case "$response" in
*"ERROR"*) sim_status="miss" ;; *"ERROR"*) sim_status="miss" ;;
*"READY"*) sim_status="ready" ;; *"READY"*) sim_status="ready" ;;
*"SIM PIN"*) sim_status="MT is waiting SIM PIN to be given" ;; *"SIM PIN"*) sim_status="MT is waiting SIM PIN to be given" ;;
@ -295,6 +284,26 @@ fibocom_sim_info()
*"PH-CORP PUK"*) sim_status="MT is waiting corporate personalization unblocking password to be given" ;; *"PH-CORP PUK"*) sim_status="MT is waiting corporate personalization unblocking password to be given" ;;
*) sim_status="unknown" ;; *) sim_status="unknown" ;;
esac esac
echo "$sim_status"
}
#SIM卡信息
fibocom_sim_info()
{
debug "Fibocom sim info"
#SIM SlotSIM卡卡槽
at_command="AT+GTDUALSIM"
sim_slot=$(sh $current_dir/modem_at.sh $at_port $at_command | grep "+GTDUALSIM:" | awk -F'"' '{print $2}' | sed 's/SUB//g')
#IMEI国际移动设备识别码
at_command="AT+CGSN"
imei=$(sh $current_dir/modem_at.sh $at_port $at_command | sed -n '2p' | sed 's/\r//g')
#SIM StatusSIM状态
at_command="AT+CPIN?"
sim_status_flag=$(sh $current_dir/modem_at.sh $at_port $at_command | sed -n '2p')
sim_status=$(get_sim_status "$sim_status_flag")
if [ "$sim_status" != "ready" ]; then if [ "$sim_status" != "ready" ]; then
return return
@ -324,6 +333,18 @@ fibocom_sim_info()
iccid=$(sh $current_dir/modem_at.sh $at_port $at_command | grep -o "+ICCID:[ ]*[-0-9]\+" | grep -o "[-0-9]\{1,4\}") iccid=$(sh $current_dir/modem_at.sh $at_port $at_command | grep -o "+ICCID:[ ]*[-0-9]\+" | grep -o "[-0-9]\{1,4\}")
} }
#获取信号强度指示
# $1:信号强度指示数字
get_rssi()
{
local rssi
case $1 in
"99") rssi="unknown" ;;
* ) rssi=$((2 * $1 - 113)) ;;
esac
echo "$rssi"
}
#网络信息 #网络信息
fibocom_network_info() fibocom_network_info()
{ {
@ -339,22 +360,34 @@ fibocom_network_info()
at_command="AT+PSRAT?" at_command="AT+PSRAT?"
network_type=$(sh $current_dir/modem_at.sh $at_port $at_command | grep "+PSRAT:" | sed 's/+PSRAT: //g' | sed 's/\r//g') network_type=$(sh $current_dir/modem_at.sh $at_port $at_command | grep "+PSRAT:" | sed 's/+PSRAT: //g' | sed 's/\r//g')
# #CSQ #设置网络类型为5G时信号强度指示用RSRP代替
# local at_command="AT+CSQ" # at_command="AT+GTCSQNREN=1"
# csq=$(sh $current_dir/modem_at.sh $at_port $at_command | sed -n '2p' | awk -F'[ ,]+' '{print $2}') # sh $current_dir/modem_at.sh $at_port $at_command
# if [ $CSQ = "99" ]; then
# csq="" #CSQ信号强度
# fi at_command="AT+CSQ"
response=$(sh $current_dir/modem_at.sh $at_port $at_command | grep "+CSQ:" | sed 's/+CSQ: //g' | sed 's/\r//g')
#RSSI信号强度指示
rssi_num=$(echo $response | awk -F',' '{print $1}')
rssi=$(get_rssi $rssi_num)
#BER信道误码率
ber=$(echo $response | awk -F',' '{print $2}')
# #PER信号强度 # #PER信号强度
# if [ -n "$csq" ]; then # if [ -n "$csq" ]; then
# per=$(($csq * 100/31))"%" # per=$(($csq * 100/31))"%"
# fi # fi
# #RSSI信号接收强度 #速率统计
# if [ -n "$csq" ]; then at_command="AT+GTSTATIS?"
# rssi=$((2 * $csq - 113))" dBm" response=$(sh $current_dir/modem_at.sh $at_port $at_command | grep "+GTSTATIS:" | sed 's/+GTSTATIS: //g' | sed 's/\r//g')
# fi
#当前上传速率单位Byte/s
tx_rate=$(echo $response | awk -F',' '{print $2}')
#当前下载速率单位Byte/s
rx_rate=$(echo $response | awk -F',' '{print $1}')
} }
#获取频段 #获取频段

View File

@ -28,7 +28,11 @@ init_modem_info()
#网络信息 #网络信息
connect_status="disconnect" #SIM卡状态 connect_status="disconnect" #SIM卡状态
network_type="-" #蜂窝网络类型 network_type="-" #蜂窝网络类型
rssi="" #RSSI
ber="" #BER
tx_rate="-" #上传速率
rx_rate="-" #下载速率
#小区信息 #小区信息
network_mode="-" #网络模式 network_mode="-" #网络模式
@ -109,28 +113,6 @@ init_modem_info()
wcdma_slot='' wcdma_slot=''
wcdma_speech_code='' wcdma_speech_code=''
wcdma_com_mod='' wcdma_com_mod=''
#信号信息
csq="" #CSQ
per="" #信号强度
rssi="" #信号接收强度 RSSI
ecio="-" #参考信号接收质量 RSRQ ecio
ecio1=" " #参考信号接收质量 RSRQ ecio1
RSCP="-" #参考信号接收功率 RSRP rscp0
RSCP1=" " #参考信号接收功率 RSRP rscp1
SINR="-" #信噪比 SINR rv["sinr"]
NETMODE="-" #连接状态监控 rv["netmode"]
#基站信息
mcc="-"
mnc="-"
eNBID=""
TAC=""
cell_id=""
LBAND="-" #频段
channel="-" #频点
PCI="-" #物理小区标识
qos="" #最大Qos级别
} }
#设置基本信息 #设置基本信息
@ -182,9 +164,13 @@ set_sim_info()
#设置网络信息 #设置网络信息
set_network_info() set_network_info()
{ {
network_info="\"network_info\":{ network_info="\"network_info\":[
\"network_type\":\"$network_type\" {\"Network Type\":\"$network_type\", \"full_name\":\"Network Type\"},
}," {\"Tx Rate\":\"$tx_rate\", \"full_name\":\"Transmit Rate\"},
{\"Rx Rate\":\"$rx_rate\", \"full_name\":\"Receive Rate\"},
{\"RSSI\":\"$rssi\", \"full_name\":\"Received Signal Strength Indicator\"},
{\"BER\":\"$ber\", \"full_name\":\"Bit Error Rate\"}
],"
} }
#设置信号信息 #设置信号信息

View File

@ -215,15 +215,15 @@ quectel_base_info()
{ {
debug "Quectel base info" debug "Quectel base info"
at_command="ATI"
response=$(sh $current_dir/modem_at.sh $at_port $at_command)
#Name名称 #Name名称
name=$(echo "$response" | sed -n '3p' | sed 's/\r//g') at_command="AT+CGMM"
name=$(sh $current_dir/modem_at.sh $at_port $at_command | sed -n '2p' | sed 's/\r//g')
#Manufacturer制造商 #Manufacturer制造商
manufacturer=$(echo "$response" | sed -n '2p' | sed 's/\r//g') at_command="AT+CGMI"
manufacturer=$(sh $current_dir/modem_at.sh $at_port $at_command | sed -n '2p' | sed 's/\r//g')
#Revision固件版本 #Revision固件版本
revision=$(echo "$response" | sed -n '4p' | sed 's/Revision: //g' | sed 's/\r//g') at_command="AT+CGMR"
revision=$(sh $current_dir/modem_at.sh $at_port $at_command | sed -n '2p' | sed 's/\r//g')
#Mode拨号模式 #Mode拨号模式
mode=$(get_mode $at_port | tr 'a-z' 'A-Z') mode=$(get_mode $at_port | tr 'a-z' 'A-Z')
@ -250,23 +250,12 @@ quectel_base_info()
# fi # fi
} }
#SIM卡信息 #获取SIM卡状态
quectel_sim_info() # $1:SIM卡状态标志
get_sim_status()
{ {
debug "Quectel sim info" local sim_status
case $1 in
#SIM SlotSIM卡卡槽
at_command="AT+QUIMSLOT?"
sim_slot=$(sh $current_dir/modem_at.sh $at_port $at_command | grep "+QUIMSLOT:" | awk -F' ' '{print $2}' | sed 's/\r//g')
#IMEI国际移动设备识别码
at_command="AT+CGSN"
imei=$(sh $current_dir/modem_at.sh $at_port $at_command | sed -n '2p' | sed 's/\r//g')
#SIM StatusSIM状态
at_command="AT+CPIN?"
response=$(sh $current_dir/modem_at.sh $at_port $at_command | sed -n '2p')
case "$response" in
"") sim_status="miss" ;; "") sim_status="miss" ;;
*"READY"*) sim_status="ready" ;; *"READY"*) sim_status="ready" ;;
*"SIM PIN"*) sim_status="MT is waiting SIM PIN to be given" ;; *"SIM PIN"*) sim_status="MT is waiting SIM PIN to be given" ;;
@ -286,6 +275,26 @@ quectel_sim_info()
*"PH-CORP PUK"*) sim_status="MT is waiting corporate personalization unblocking password to be given" ;; *"PH-CORP PUK"*) sim_status="MT is waiting corporate personalization unblocking password to be given" ;;
*) sim_status="unknown" ;; *) sim_status="unknown" ;;
esac esac
echo "$sim_status"
}
#SIM卡信息
quectel_sim_info()
{
debug "Quectel sim info"
#SIM SlotSIM卡卡槽
at_command="AT+QUIMSLOT?"
sim_slot=$(sh $current_dir/modem_at.sh $at_port $at_command | grep "+QUIMSLOT:" | awk -F' ' '{print $2}' | sed 's/\r//g')
#IMEI国际移动设备识别码
at_command="AT+CGSN"
imei=$(sh $current_dir/modem_at.sh $at_port $at_command | sed -n '2p' | sed 's/\r//g')
#SIM StatusSIM状态
at_command="AT+CPIN?"
sim_status_flag=$(sh $current_dir/modem_at.sh $at_port $at_command | sed -n '2p')
sim_status=$(get_sim_status "$sim_status_flag")
if [ "$sim_status" != "ready" ]; then if [ "$sim_status" != "ready" ]; then
return return
@ -312,11 +321,23 @@ quectel_sim_info()
at_command="AT+CIMI" at_command="AT+CIMI"
imsi=$(sh $current_dir/modem_at.sh $at_port $at_command | sed -n '2p' | sed 's/\r//g') imsi=$(sh $current_dir/modem_at.sh $at_port $at_command | sed -n '2p' | sed 's/\r//g')
#ICCID集成电路卡识别码 #ICCID集成电路卡识别码
at_command="AT+ICCID" at_command="AT+ICCID"
# iccid=$(sh $current_dir/modem_at.sh $at_port $at_command | grep -o "+ICCID:[ ]*[-0-9]\+" | grep -o "[-0-9]\{1,4\}") # iccid=$(sh $current_dir/modem_at.sh $at_port $at_command | grep -o "+ICCID:[ ]*[-0-9]\+" | grep -o "[-0-9]\{1,4\}")
} }
#获取信号强度指示
# $1:信号强度指示数字
get_rssi()
{
local rssi
case $1 in
"99") rssi="unknown" ;;
* ) rssi=$((2 * $1 - 113)) ;;
esac
echo "$rssi"
}
#网络信息 #网络信息
quectel_network_info() quectel_network_info()
{ {
@ -333,22 +354,30 @@ quectel_network_info()
at_command="AT+QNWINFO" at_command="AT+QNWINFO"
network_type=$(sh $current_dir/modem_at.sh $at_port $at_command | grep "+QNWINFO:" | awk -F'"' '{print $2}') network_type=$(sh $current_dir/modem_at.sh $at_port $at_command | grep "+QNWINFO:" | awk -F'"' '{print $2}')
#CSQ #CSQ(信号强度)
at_command="AT+CSQ" at_command="AT+CSQ"
csq=$(sh $current_dir/modem_at.sh $at_port $at_command | sed -n '2p' | awk -F'[ ,]+' '{print $2}') response=$(sh $current_dir/modem_at.sh $at_port $at_command | grep "+CSQ:" | sed 's/+CSQ: //g' | sed 's/\r//g')
if [ $CSQ = "99" ]; then
csq="" #RSSI信号强度指示
fi rssi_num=$(echo $response | awk -F',' '{print $1}')
rssi=$(get_rssi $rssi_num)
#Ber信道误码率
ber=$(echo $response | awk -F',' '{print $2}')
#PER信号强度 #PER信号强度
if [ -n "$csq" ]; then # if [ -n "$csq" ]; then
per=$((csq * 100/31))"%" # per=$((csq * 100/31))"%"
fi # fi
#RSSI信号接收强度 #速率统计
if [ -n "$csq" ]; then at_command='AT+QNWCFG="up/down"'
rssi=$((2 * csq - 113))" dBm" response=$(sh $current_dir/modem_at.sh $at_port $at_command | grep "+QNWCFG:" | sed 's/+QNWCFG: "up/down",//g' | sed 's/\r//g')
fi
#当前上传速率单位Byte/s
tx_rate=$(echo $response | awk -F',' '{print $1}')
#当前下载速率单位Byte/s
rx_rate=$(echo $response | awk -F',' '{print $2}')
} }
#获取频段 #获取频段