+ Responder ao Tópico



  1. Olá pessoal

    Estou publicando um medidor de sinal que pode ser muito útil pra quem programa em PHP e deseja este recurso em seus sistemas, é 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 (um tanto lento) então a internet precisa estar disponível no servidor linux onde estiver rodando a aplicação.

    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.


    Clique na imagem para uma versão maior

Nome:	         snr_86.png
Visualizações:	122
Tamanho: 	4,0 KB
ID:      	16746
    MAC:00:XX:XX:XX:XX:XX SIGNAL:-86 SN: 14%


    Clique na imagem para uma versão maior

Nome:	         snr_76.png
Visualizações:	106
Tamanho: 	4,0 KB
ID:      	16750
    MAC:00:XX:XX:XX:XX:XX SIGNAL:-76 SN: 24%

    Clique na imagem para uma versão maior

Nome:	         snr_66.png
Visualizações:	104
Tamanho: 	3,9 KB
ID:      	16748
    MAC:00:XX:XX:XX:XX:XX SIGNAL:-66 SN: 34%


    Clique na imagem para uma versão maior

Nome:	         snr_46.png
Visualizações:	101
Tamanho: 	3,7 KB
ID:      	16747
    MAC:00:XX:XX:XX:XX:XX SIGNAL:-46 SN: 54%


    Código PHP:
    <?php
    #============ MEDIDOR DE SINAL VIA SNMP PARA MIKROTIK ==============#
    ##-------------------==== COMPILADO POR: ====----------------------##
    ##------------- LUCIANO RAMPANELLI - M4D3@HOTMAIL.COM -------------##
    #------------------------ www.pcram.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: '260x50',
              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 "%"?>
    Abraço a todos

  2. Parabéns pela seu contribuição, muito bom.



  3. parabens luciano, mostre que nosso mato grosso tem pessoas qualificadas. rsrs

  4. Muito bom Luciano!!!!






Tópicos Similares

  1. Exemplo de script para alterarção de arq de conf em php
    Por Germano_Silva no fórum Linguagens de Programação
    Respostas: 0
    Último Post: 09-10-2004, 21:39
  2. Formulario de cadastro em PHP
    Por no fórum Linguagens de Programação
    Respostas: 4
    Último Post: 03-05-2004, 23:52
  3. medidor de sinal for linux
    Por lestat no fórum Redes
    Respostas: 3
    Último Post: 03-07-2003, 08:17
  4. Controle de estoque em PHP
    Por cantisan no fórum Linguagens de Programação
    Respostas: 4
    Último Post: 16-02-2003, 22:14
  5. Controle de estoque em PHP
    Por cantisan no fórum Linguagens de Programação
    Respostas: 0
    Último Post: 13-02-2003, 12:00

Visite: BR-Linux ·  VivaOLinux ·  Dicas-L