436 lines
15 KiB
HTML
436 lines
15 KiB
HTML
<%+header%>
|
||
<%
|
||
local fs = require "nixio.fs"
|
||
local uci = luci.model.uci.cursor()
|
||
|
||
nosms = 1
|
||
if not fs.stat("/etc/nosim") then
|
||
nosms = 0
|
||
end
|
||
havegps = 0
|
||
if fs.stat("/etc/havegps") then
|
||
havegps = 1
|
||
end
|
||
|
||
-- 获取模组的备注
|
||
-- @Param network 移动网络
|
||
function getModemRemarks(network)
|
||
local remarks=""
|
||
uci:foreach("modem", "config", function (config)
|
||
---配置启用,且备注存在
|
||
if network == config["network"] and config["enable"] == "1" then
|
||
if config["remarks"] then
|
||
remarks=" ("..config["remarks"]..")" --" (备注)"
|
||
return true --跳出循环
|
||
end
|
||
end
|
||
end)
|
||
return remarks
|
||
end
|
||
|
||
-- 获取AT串口
|
||
function getATPort()
|
||
local at_ports={}
|
||
uci:foreach("modem", "modem-device", function (modem_device)
|
||
--获取模块的备注
|
||
local network=modem_device["network"]
|
||
local remarks=getModemRemarks(network)
|
||
|
||
local name=modem_device["name"]:upper()..remarks
|
||
local at_port = modem_device["at_port"]
|
||
at_ports[at_port]=name
|
||
end)
|
||
return at_ports
|
||
end
|
||
%>
|
||
<style>g {color:grey; font-size:75%; vertical-align: super;}</style>
|
||
<script type="text/javascript" src="<%=resource%>/xhr.js?v=git-23.159.15540-7154b89"></script>
|
||
<script type="text/javascript">//<![CDATA[
|
||
|
||
window.onload=function()
|
||
{
|
||
//获取模块选择框元素
|
||
var modem_select = document.getElementById('modem_select');
|
||
|
||
// 更换模组(AT串口)时触发
|
||
modem_select.addEventListener('change', function() {
|
||
// 更新数据
|
||
update();
|
||
});
|
||
|
||
//更新模组数据
|
||
// XHR.poll(5, '<%=luci.dispatcher.build_url("admin", "network", "modem", "get_modem_info")%>', {"port":at_port},
|
||
// function(x, modem_info)
|
||
// {
|
||
// console.log(modem_info);
|
||
|
||
// // 基本信息
|
||
// // document.getElementById('modem').innerHTML=modem_info.modem;
|
||
// document.getElementById('manufacturer').innerHTML=modem_info.manufacturer;
|
||
// document.getElementById('at_port').innerHTML=modem_info.at_port;
|
||
// document.getElementById('mode').innerHTML=modem_info.mode;
|
||
// document.getElementById('temperature').innerHTML=modem_info.temperature;
|
||
// document.getElementById('date').innerHTML=modem_info.date;
|
||
|
||
// //SIM卡信息
|
||
// document.getElementById('csq').innerHTML=modem_info.csq;
|
||
// document.getElementById('per').innerHTML=modem_info.per;
|
||
// document.getElementById('rssi').innerHTML=modem_info.rssi;
|
||
// document.getElementById('cops').innerHTML=modem_info.cops;
|
||
// document.getElementById('net_type').innerHTML=modem_info.net_type;
|
||
// document.getElementById('lac').innerHTML=modem_info.lac;
|
||
// document.getElementById('cid').innerHTML=modem_info.cid;
|
||
// document.getElementById('lacn').innerHTML=modem_info.lacn;
|
||
// document.getElementById('cidn').innerHTML=modem_info.cidn;
|
||
// document.getElementById('mcc').innerHTML=modem_info.mcc;
|
||
// document.getElementById('mnc').innerHTML=modem_info.mnc;
|
||
// document.getElementById('rnc').innerHTML=modem_info.rnc;
|
||
// document.getElementById('rncn').innerHTML=modem_info.rncn;
|
||
// document.getElementById('down').innerHTML=modem_info.down;
|
||
// document.getElementById('up').innerHTML=modem_info.up;
|
||
// document.getElementById('ecio').innerHTML=modem_info.ecio;
|
||
// document.getElementById('rscp').innerHTML=modem_info.rscp;
|
||
// document.getElementById('ecio1').innerHTML=modem_info.ecio1;
|
||
// document.getElementById('rscp1').innerHTML=modem_info.rscp1;
|
||
// document.getElementById('chan').innerHTML=modem_info.channel;
|
||
// document.getElementById('lband').innerHTML=modem_info.lband;
|
||
// document.getElementById('conmon').innerHTML=modem_info.netmode;
|
||
// document.getElementById('tempur').innerHTML=modem_info.tempur;
|
||
|
||
// document.getElementById('pci').innerHTML=modem_info.pci;
|
||
// document.getElementById('sinr').innerHTML=modem_info.sinr;
|
||
|
||
// document.getElementById('imei').innerHTML=modem_info.imei;
|
||
// document.getElementById('imsi').innerHTML=modem_info.imsi;
|
||
// document.getElementById('iccid').innerHTML=modem_info.iccid;
|
||
// document.getElementById('phone').innerHTML=modem_info.phone;
|
||
|
||
|
||
// <% if havegps == 1 then %>
|
||
// document.getElementById('lat').innerHTML=modem_info.lat;
|
||
// document.getElementById('long').innerHTML=modem_info.long;
|
||
// <% end %>
|
||
// // document.getElementById('idvp').innerHTML=modem_info.modid;
|
||
// // document.getElementById('proto').innerHTML=modem_info.proto;
|
||
// // document.getElementById('port').innerHTML=modem_info.port;
|
||
|
||
// // document.getElementById('crate').innerHTML=modem_info.crate;
|
||
// // if (phonenx == "")
|
||
// // {
|
||
// // document.getElementById('phone').value=modem_info.phone;
|
||
// // document.getElementById('phonen').value=modem_info.phonen;
|
||
// // phonenx = document.getElementById('phone').value;
|
||
// // document.getElementById("phone").disabled=false;
|
||
// // document.getElementById("phonen").disabled=false;
|
||
// // document.getElementById("pho").disabled=false;
|
||
// // }
|
||
|
||
// // if (modem_info.phone == "-")
|
||
// // {
|
||
// // document.getElementById('phone').value="-";
|
||
// // document.getElementById('phonen').value="-";
|
||
// // document.getElementById("pho").disabled=true;
|
||
// // document.getElementById("phone").disabled=true;
|
||
// // document.getElementById("phonen").disabled=true;
|
||
// // phonenx = "";
|
||
// // }
|
||
|
||
// // simerr = modem_info.simerr;
|
||
// // if (simerr == "0")
|
||
// // {
|
||
// // document.getElementById("simwarn").style.display="none";
|
||
// // }
|
||
// // else
|
||
// // {
|
||
// // document.getElementById("simwarn").style.display="block";
|
||
// // document.getElementById("simsg").style.color = "red";
|
||
// // if (simerr == "1")
|
||
// // {
|
||
// // document.getElementById("simsg").innerHTML = "<%:SIM卡已锁定,个人资料中未输入SIM Pin!!%>";
|
||
// // }
|
||
// // else
|
||
// // {
|
||
// // if (simerr == "2")
|
||
// // {
|
||
// // document.getElementById("simsg").innerHTML = "<%:解锁SIM卡的Pin不正确%>";
|
||
// // }
|
||
// // else
|
||
// // {
|
||
// // if (simerr == "3")
|
||
// // {
|
||
// // document.getElementById("simsg").innerHTML = "<%:无效SIM卡%>";
|
||
// // } else
|
||
// // {
|
||
// // document.getElementById("simsg").innerHTML = "<%:SIM卡未锁定.错误的SIM卡%>";
|
||
// // }
|
||
// // }
|
||
// // }
|
||
// // }
|
||
|
||
|
||
// // reslt=modem_info.result
|
||
|
||
// // portx=modem_info.port
|
||
// // if (portx == "-" )
|
||
// // {
|
||
// // document.getElementById('inc1').style.display="none";
|
||
// // document.getElementById('dec1').style.display="none";
|
||
// // }
|
||
// // else
|
||
// // {
|
||
// // document.getElementById('inc1').style.display="block";
|
||
// // document.getElementById('dec1').style.display="block";
|
||
// // }
|
||
|
||
// // host = modem_info.host;
|
||
// // if(host == "1")
|
||
// // {
|
||
// // document.getElementById("pho").disabled=true;
|
||
// // }
|
||
// }
|
||
// );
|
||
|
||
}
|
||
|
||
// 更新模组数据
|
||
function update()
|
||
{
|
||
var at_port="";
|
||
if (modem_select.options.length!=0) {
|
||
at_port=modem_select.options[modem_select.selectedIndex].value;
|
||
}
|
||
else {
|
||
return
|
||
}
|
||
|
||
XHR.get('<%=luci.dispatcher.build_url("admin", "network", "modem", "get_modem_info")%>', {"port":at_port},
|
||
function(x, modem_info)
|
||
{
|
||
console.log(modem_info);
|
||
|
||
var base_info=modem_info["base_info"];
|
||
for (var key in base_info)
|
||
{
|
||
var base_info_Element=document.getElementById(key);
|
||
if (base_info_Element!=null)
|
||
{
|
||
base_info_Element.innerHTML=base_info[key];
|
||
}
|
||
}
|
||
|
||
var more_info=modem_info["more_info"];
|
||
for (var key in more_info)
|
||
{
|
||
var more_info_Element=document.getElementById(key);
|
||
if (more_info_Element!=null)
|
||
{
|
||
more_info_Element.innerHTML=more_info[key];
|
||
}
|
||
}
|
||
}
|
||
);
|
||
}
|
||
|
||
// 定时触发更新AT串口和模组数据
|
||
XHR.poll(5,'<%=luci.dispatcher.build_url("admin", "network", "modem", "get_at_port")%>', null,
|
||
function(x, port)
|
||
{
|
||
//获取模块选择框元素
|
||
var modem_select = document.getElementById('modem_select');
|
||
// 记录所选
|
||
var selected=modem_select.value;
|
||
// 删除原来的选项
|
||
modem_select.options.length=0;
|
||
// 更新(key:AT串口,value:模块名称)
|
||
for (var key in port)
|
||
{
|
||
var option = document.createElement('option');
|
||
option.text = port[key].trim();
|
||
option.value = key;
|
||
modem_select.appendChild(option);
|
||
}
|
||
// 恢复原来的选择
|
||
for (let i = 0; i < modem_select.options.length; i++)
|
||
{
|
||
if(modem_select.options[i].value == selected)
|
||
{
|
||
modem_select.selectedIndex=i;
|
||
break;
|
||
}
|
||
}
|
||
update();
|
||
}
|
||
);
|
||
|
||
modemtype=0;
|
||
cell=0;
|
||
portx="-";
|
||
phonenx = "";
|
||
hided = 0;
|
||
|
||
function clear_data()
|
||
{
|
||
document.getElementById('port').innerHTML="<%:Changing Port%>";
|
||
document.getElementById('csq').innerHTML="-";
|
||
document.getElementById('per').innerHTML="-";
|
||
document.getElementById('rssi').innerHTML="-";
|
||
// document.getElementById('modem').innerHTML="-";
|
||
document.getElementById('cops').innerHTML="-";
|
||
document.getElementById('net_type').innerHTML="-";
|
||
document.getElementById('lac').innerHTML="-";
|
||
document.getElementById('cid').innerHTML="-";
|
||
document.getElementById('lacn').innerHTML="-";
|
||
document.getElementById('cidn').innerHTML="-";
|
||
document.getElementById('mcc').innerHTML="-";
|
||
document.getElementById('mnc').innerHTML="-";
|
||
document.getElementById('rnc').innerHTML="-";
|
||
document.getElementById('rncn').innerHTML="-";
|
||
document.getElementById('down').innerHTML="-";
|
||
document.getElementById('up').innerHTML="-";
|
||
document.getElementById('ecio').innerHTML="-";
|
||
document.getElementById('rscp').innerHTML="-";
|
||
document.getElementById('ecio1').innerHTML="-";
|
||
document.getElementById('rscp1').innerHTML="-";
|
||
document.getElementById('netmode').innerHTML="-";
|
||
document.getElementById('manufacturer').innerHTML=" ";
|
||
document.getElementById('chan').innerHTML=" ";
|
||
document.getElementById('conmon').innerHTML="-";
|
||
document.getElementById('phone').value="-";
|
||
|
||
|
||
document.getElementById('imei').innerHTML="-";
|
||
document.getElementById('imsi').innerHTML="-";
|
||
document.getElementById('iccid').innerHTML="-";
|
||
document.getElementById('lband').innerHTML="-";
|
||
document.getElementById('pci').innerHTML="-";
|
||
<% if havegps == 1 then %>
|
||
document.getElementById('lat').innerHTML="-";
|
||
document.getElementById('long').innerHTML="-";
|
||
<% end %>
|
||
|
||
// document.getElementById('idvp').innerHTML="-";
|
||
// document.getElementById('phonen').value="-";
|
||
}
|
||
//]]>
|
||
</script>
|
||
|
||
<div class="cbi-map" id="cbi-modem">
|
||
<h2 name="content"><%:Modem Info%></h2>
|
||
<div class="cbi-map-descr"><%:%></div>
|
||
|
||
<fieldset class="cbi-section" id="simwarn" style="display:none;">
|
||
<legend><%:SIM警告%></legend>
|
||
<table width="550" border="0">
|
||
<tr>
|
||
<td width="10%"></td>
|
||
<td width="60%"><div align="left" id="simsg" style="font-size:1.875em"><strong></strong></div></td>
|
||
<td width="30%"></td>
|
||
</tr>
|
||
</table>
|
||
</fieldset>
|
||
|
||
<% at_ports = getATPort() %>
|
||
<% if next(at_ports) == nil then %>
|
||
|
||
<fieldset class="cbi-section" id="info">
|
||
<h3><%:信息%></h3>
|
||
<table width="550" border="0">
|
||
<tr>
|
||
<td width="10%"></td>
|
||
<td width="60%"><div align="left" id="simsg" style="font-size:1.875em"><strong><%:No modems found%></strong></div></td>
|
||
<td width="30%"></td>
|
||
</tr>
|
||
</table>
|
||
</fieldset>
|
||
|
||
<% else %>
|
||
<fieldset class="cbi-section" id="cbi-baseinfo">
|
||
<h3><%:基本信息%></h3>
|
||
<table width="100%" cellspacing="10">
|
||
<tr><td width="20%"><%:模组 :%></td><td id="modem_name">
|
||
<select name="modem_select" id="modem_select">
|
||
<% at_ports = getATPort() %>
|
||
<% for key in pairs(at_ports) do %>
|
||
<option value="<%= key %>"><%= at_ports[key] %></option>
|
||
<% end %>
|
||
</select>
|
||
</td><td></td></tr>
|
||
<tr><td width="20%"><%:制造商 :%></td><td id="manufacturer"></td><td></td></tr>
|
||
<tr><td width="20%"><%:固件版本 :%></td><td id="revision"></td><td></td></tr>
|
||
<tr><td width="20%"><%:数据接口 : %></td><td id="data_interface"></td><td></td></tr>
|
||
<tr><td width="20%"><%:拨号模式 : %></td><td id="mode"></td><td></td></tr>
|
||
<tr><td width="20%"><%:AT串口 : %></td><td id="at_port"></td><td></td></tr>
|
||
<tr><td width="20%"><%:移动网络 : %></td><td id="network"></td><td></td></tr>
|
||
<tr><td width="20%"><%:温度 : %></td><td id="temperature"></td><td></td></tr>
|
||
<tr><td width="20%"><%:更新时间 : %></td><td id="update_time"></td><td></td></tr>
|
||
</table>
|
||
</fieldset>
|
||
|
||
<% if nosms == 0 then %>
|
||
<% end %>
|
||
|
||
<fieldset class="cbi-section" id="cbi-siminfo">
|
||
<h3><%:SIM卡信息%></h3>
|
||
<table width="100%" cellspacing="10">
|
||
<tr><td width="20%"><%:运营商 : %></td><td id="isp"></td><td></td></tr>
|
||
<tr><td width="20%"><%:IMEI :%></td><td id="imei"></td><td></td></tr>
|
||
<tr><td width="20%"><%:IMSI : %></td><td id="imsi"></td><td></td></tr>
|
||
<tr><td width="20%"><%:ICCID : %></td><td id="iccid"></td><td></td></tr>
|
||
<tr><td width="20%"><%:SIM卡号码 : %></td><td id="phone"></td><td></td></tr>
|
||
</table>
|
||
</fieldset>
|
||
|
||
<fieldset class="cbi-section" id="cbi-networkinfo">
|
||
<h3><%:网络信息%></h3>
|
||
<table width="100%" cellspacing="10">
|
||
<tr><td width="20%"><%:网络类型 :%></td><td id="net_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-sig">
|
||
<h3><%:基站信息%></h3>
|
||
<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%"><%:eNB ID : %></td><td><ul><span id="rnc" class="r"></span><span id="rncn" class="r"></span></ul></td><td></td></tr>
|
||
<tr><td width="20%"><%:TAC : %></td><td><ul><span id="lac" class="r"></span><span id="lacn" class="r"></span></ul></td><td></td></tr>
|
||
<tr><td width="20%"><%:Cell ID : %></td><td><ul><span id="cid" class="r"></span><span id="cidn" class="r"></span></ul></td><td></td></tr>
|
||
<tr><td width="20%"><%:频段 Band : %></td><td id="lband"></td><td></td></tr>
|
||
<tr><td width="20%"><%:频点 Channel : %></td><td id="chan"></td><td></td></tr>
|
||
<tr><td width="20%"><%:物理小区标识 PCI : %></td><td id="pci"></td><td></td></tr>
|
||
<tr><td width="20%"><%:最大Qos级别 Maximum Qos : %></td><td><ul><span id="down" class="r"></span><span id="up" class="r"></span></ul></td><td></td></tr>
|
||
|
||
</table>
|
||
</fieldset>
|
||
|
||
<% if havegps == 1 then %>
|
||
<fieldset class="cbi-section" id="cbi-gpsinfo">
|
||
<h3><%:GPS 定位%></h3>
|
||
<table width="550" border="0">
|
||
<tr>
|
||
<td width="30%"><div align="right"><%:纬度 :%></div></td>
|
||
<td><ul id="lat"></ul></td>
|
||
<td width="1%"> </td>
|
||
</tr>
|
||
<tr>
|
||
<td><div align="right"><%:经度 :%></div></td>
|
||
<td><ul id="long"></ul></td>
|
||
<td> </td>
|
||
</tr>
|
||
</table>
|
||
</fieldset>
|
||
<% end %>
|
||
|
||
<% end %>
|
||
|
||
</div>
|
||
<%+footer%>
|
||
|