segunda-feira, 19 de outubro de 2015

Portando o NET-SNMP do Tiaguinho para o PCDuino

Inicialmente busquei seguir os passos que o Tiago fez para um projeto anterior ao qual ele criou uma MIB específica para medição de grandezas elétricas e instalou o NET-SNMP na plataforma de microcontroladores da Digi International.
Para iniciar, o Thiago me passou a sua Máquina Virtual Linux Ubuntu que ele utilizou para fazer o projeto do SMNP com suporte a mib ENTITY-SENSOR-MIB na plataforma da Digi.

Primeiramente o Thiago baixou a versão os arquivos fontes do net-smnp no site: http://www.net-snmp.org/
A versão que ele utilizou na época foi: net-snmp-5.7.1

Depois disso, ele baixou a versão 2 da ENTITY-SENSOR-MIB no site: http://tools.cisco.com/Support/SNMP/do/BrowseMIB.do?local=en&step=2&mibName=ENTITY-SENSOR-MIB


Compilando o NET-SNMP com a ENTITY-SENSOR-MIB

O próximo passo foi executar a compilação da net-snmp-5.7.1 carregando a ENTITY-SENSOR-MIB através dos passos a seguir:

1) Descompacte o arquivo "net-snmp-5.7.1.tar.gz" baixado no site do NET-SMNP.

2) A partir da MIB que o Tiago baixou, ele gerou arquivos .c e .h. Esse processo ainda está meio obscuro na minha cabeça e o Tiago não soube explicar com clareza. Portanto, deixarei para detalhar esse processo depois, quando tiver bem compreendido. Por agora, o que precisarei modificar para nossa aplicação será apenas um arquivo desses gerados. Os arquivos estão na pasta "inserirMIB". O arquivo modificado pelo Tiago para o projeto passado (e que terei que alterar para o projeto atual...) foi o "entPhySensorTable_data_access.c". Em outros posts detalharei essas alterações.

3) Com esses arquivos gerados da ENTITY-SENSOR-MIB, os mesmos devem ser copiados para as subpastas do net-snmp-5.7.1 da seguinte forma:

  • Coloque os arquivos pasta "net-snmp-5.7.1/mibs/":
    • ENTITY-MIB.txt
    • ENTITY-SENSOR-MIB.txt
  • Coloque esses arquivos na pasta "net-snmp-5.7.1/agent/mibgroup/ENTITY-SENSOR-MIB/entPhySensorTable/": 
    • entPhySensorTable.c
    • entPhySensorTable_data_get.c
    • entPhySensorTable_data_set.h
    • entPhySensorTable_interface.c
    • entPhySensorTable_subagent.c
    • entPhySensorTable_data_access.c
    • entPhySensorTable_data_get.h
    • entPhySensorTable_enums.h
    • entPhySensorTable_interface.h
    • entPhySensorTable_data_access.h
    • entPhySensorTable_data_set.c
    • entPhySensorTable.h
    • entPhySensorTable_oids.h
  • [CORREÇÃO] Crie um arquivo chamado "entPhySensorTable.h" na pasta "net-snmp-5.7.1/agent/mibgroup/" com as linhas:
    • config_require(ENTITY-SENSOR-MIB/entPhySensorTable/entPhySensorTable)
    • config_add_mib(ENTITY-SENSOR-MIB)
  • [DESNECESSÁRIO] Coloque os arquivos abaixo na pasta "net-snmp-5.7.1/agent/mibgroup/": 
    • entPhySensorTable.h
    • entPhySensorTable_data_set.h
    • entPhySensorTable_data_get.h
    • entPhySensorTable_enums.h
    • entPhySensorTable_interface.h
    • entPhySensorTable_data_access.h
    • entPhySensorTable_oids.h

4) Na raiz da pasta "net-snmp-5.7.1/" crie uma subpasta (exemplo, "net-snmp-5.7.1/saida/");

5) Na raiz da pasta "net-snmp-5.7.1/" execute os comandos a seguir:
  • ./configure --prefix=/<caminho absoluto>/net-snmp-5.7.1/saida --disable-embedded-perl --with-mib-modules="entPhySensorTable" --with-mibs="ENTITY-MIB"
  • Em seguida: make
  • Depois: sudo make install
Obs1: O comando "--with-mib-modules="entPhySensorTable" da sequência acima é relacionado em chamar o arquivo criado na etapa 3, localizado na pasta "net-snmp-5.7.1/agent/mibgroup/".

Executando o NET-SNMP e testando o funcionamento da ENTITY-SENSOR-MIB

Acesse a pasta de saída: "net-snmp-5.7.1/saida/" e execute os seguintes comandos:
  • Execute o comando "./bin/snmpconf -i -g basic_setup" para criar o arquivo de configuração "snmpd.conf" na raiz da pasta "saída". Se preferir e não souber configurar manualmente, crie esse arquivo e edite com a seguinte informação:
      • rwcommunity public
    • Execute este comando para rodar o SNMP: 
      • sudo ./sbin/snmpd -f -M ./share/snmp/mibs -Lf snmpd.log -c snmpd.conf <numero de ip>:<porta> (ex., 127.0.0.1:161)
    • Em outra janela do terminal, execute o seguinte comando para testar a MIB já adaptada para o projeto anterior do Tiago (alterei algumas coisas no arquivo citado anteriormente para fazer os testes):
      • ./bin/snmpwalk -v1 -c public <numero de ip>:<porta> ENTITY-SENSOR-MIB::entPhySensorValue

    O próximo passo é instalar uma versão mais recente do NET-SNMP e fazer o mesmo porte da ENTITY-SENSOR-MIB. Aguardem os próximos posts!!!






    terça-feira, 13 de outubro de 2015

    Apresentação

    Boa Tarde pessoal,

    Este blog foi criado para relatar os avanços do projeto intitulado "SMART GRID CEBRA: Gerenciamento Remoto de Conversores Estáticos Empregando Protocolo SNMP e Serviços Web para Empresa CEBRA LTDA" e submetido a chamada "Chamada CNPq-SETEC/MEC N º 17/2014 - Apoio a Projetos Cooperativos de Pesquisa Aplicada e de Extensão Tecnológica", tendo como coordenador o professor Roberto Alexandre Dias. A instituição executora do projeto é o Instituto Federal de Educação Ciência e Tecnologia de SC - IFSC e a instituição parceira é a empresa Conversores Estáticos Brasileiros LTDA - CEBRA.

    O documento de submissão do projeto pode ser baixado clicando aqui.