Estou publicando um medidor de sinal que pode ser muito útil pra quem programa em PHP e deseja este recurso em seu sistema, é necessário apenas repassar o mac do cliente e o ip da torre onde será feita a consulta, o gráfico é gerado apartir do google graphs.
Caso alguém possua habilidades de gerar um gráfico apartir da aplicação seria interessante não ter dependência, um refresh automático a cada 5 segundos seria também bacana, fica a cargo de cada um adaptar a sua necessidade.
Caso façam melhorias no código postem aqui sempre que possível.
[PHP]
<?php
#=========== MEDIDOR DE SINAL VIA SNMP PARA MIKROTIK =========#
##—————–==== COMPILADO POR: ====——————##
##———– LUCIANO RAMPANELLI – M4D3@HOTMAIL.COM ———-##
#———————- www.nimoc.com.br ———————–#
#=================================================#
#
# No linux instale o snmp, o apache e o suporte a php
# No Mikrotik ative snmp read para comunity public
#
#snmpwalk -v 1 IP.DO.MK.TORRE .1.3.6.1.4.1.14988.1.1.1.2.1.3.0 -c public > sinais
#snmpwalk -v 1 IP.DO.MK.TORRE .1.3.6.1.4.1.14988.1.1.1.2.1.1.0 -c public > macs
$oidwireless = ‘.1.3.6.1.4.1.14988′;
$oidsinal = ‘.1.1.1.2.1.3.0′;
$oidmac = ‘.1.1.1.2.1.1.0′;
$comunidade = ‘public’;
$ipmk = ’10.1.10.252′;
$sinal = ‘-99′;
$hexmac = ’00:0E:2E:FB:33:09′; //AQUI ENTRA O MAC DO CLIENTE VIA PHP
$macid0 = exec(‘echo ‘.$hexmac.’ |cut -d “:” -f1′);
$macid1 = exec(‘echo ‘.$hexmac.’ |cut -d “:” -f2′);
$macid2 = exec(‘echo ‘.$hexmac.’ |cut -d “:” -f3′);
$macid3 = exec(‘echo ‘.$hexmac.’ |cut -d “:” -f4′);
$macid4 = exec(‘echo ‘.$hexmac.’ |cut -d “:” -f5′);
$macid5 = exec(‘echo ‘.$hexmac.’ |cut -d “:” -f6′);
$oidcli = hexdec($macid0).”.”.hexdec($macid1).”.”.hexdec($macid2).”.”.hexdec($macid3).”.”.hexdec($macid4).”.”.hexdec($macid5);
$oidcliente = $oidwireless.$oidsinal.$oidcli;
$sinal = exec(‘snmpwalk -v 1 ‘ . $ipmk . ” ” . $oidcliente .’ -c ‘. $comunidade .’ | awk \’{ print $4 }\”);
#$sinal = ‘-79′; //teste de cor das barras
$snr = round((100+$sinal)*1,1);
$cor = ‘FF0000′;
if ( $snr < 100 ) {
$cor = ’00FF00′;
}
if ( $snr < 41 ) {
$cor = ’00FF00′;
}
if ( $snr < 36 ) {
$cor = ’32CD32′;
}
if ( $snr < 31 ) {
$cor = ‘FFD700′;
}
if ( $snr < 26 ) {
$cor = ‘FF8C00′;
}
if ( $snr < 21 ) {
$cor = ‘FF0000′;
}
?>
<html>
<head>
<title> Medidor de Sinal </title>
<script language=”javascript” src=”http://www.google.com/jsapi”></script>
</head>
<body>
<div id=”chart”></div>
<script type=”text/javascript”>
var queryString = ”;
var dataUrl = ”;
function onLoadCallback() {
if (dataUrl.length > 0) {
var query = new google.visualization.Query(dataUrl);
query.setQuery(queryString);
query.send(handleQueryResponse);
} else {
var dataTable = new google.visualization.DataTable();
dataTable.addRows(1);
dataTable.addColumn(‘number’);
dataTable.setValue(0, 0, <? echo $snr ?>);
draw(dataTable);
}
}
function draw(dataTable) {
var vis = new google.visualization.ImageChart(document.getElementById(‘chart’));
var options = {
chf: ‘c,lg,0,FF0100,0,22FF00,50′,
chxl: ”,
chxp: ”,
chxr: ’0,-100,0′,
chxs: ”,
chxtc: ”,
chxt: ‘x’,
chbh: ’14,2,1′,
chs: ’260×50′,
cht: ‘bhs’,
chco: ‘<? echo $cor ?>’,
chds: ’0,100′,
chd: ‘t:<? $snr ?>’,
chg: ’0,5,1,1′,
chma: ’15,15′,
chtt: ‘QUALIDADE DO SINAL’,
chts: ’676767,10.4′
};
vis.draw(dataTable, options);
}
function handleQueryResponse(response) {
if (response.isError()) {
alert(‘Error in query: ‘ + response.getMessage() + ‘ ‘ + response.getDetailedMessage());
return;
}
draw(response.getDataTable());
}
google.load(“visualization”, “1″, {packages:["imagechart"]});
google.setOnLoadCallback(onLoadCallback);
</script>
</body>
</html>
<font size=”1″ face=”Verdana, Arial, Helvetica, sans-serif” >
<? echo ” MAC:” . $hexmac . ” SIGNAL:” . $sinal . ” SN: ” . $snr . “%”; ?>
[/PHP]
================================================
Seria bem interessante se ao acessar o cadastro do cliente o MK-AUTH pudesse mostrar o sinal em forma de gráfico em tempo real, com este script rodando é possível, atualização a cada 1s por snmp, show de bola.
Luciano Rampanelli – M4D3
Fonte: http://mk-auth.com.br/
















