Suporte a SNMP

O protocolo SNMP (Simple Network Management Protocol) é utilizado para gerenciar redes, monitorando e administrando dispositivos conectados por meio de seus endereços IP. Ele permite a observação do desempenho da rede, identificação de erros, e coleta de informações para análise.

Um dispositivo habilitado para SNMP é chamado de agente, e ele contém informações sobre seu status, chamadas de objetos. Cada um desses objetos tem um identificador exclusivo chamado OID (Object Identifier), que segue uma hierarquia numérica, organizada de forma semelhante à estrutura de um endereço IP, mas com uma função diferente. Os OIDs e suas descrições estão armazenados em um arquivo MIB (Management Information Base), que define os objetos que podem ser gerenciados via SNMP.

MIB file

As informações dos identificadores OID (Object Identifier) a serem coletados de um equipamento são descritas de forma hierárquica dentro de um MIB file. Essa hierarquia é representada por uma sequência de números, onde cada ponto (.) separa os diferentes níveis da estrutura hierárquica, e cada número identifica uma ramificação ou nó específico.

Por padrão SNMP, o OID segue a estrutura iniciada com 1.3.6.1.4.1, que corresponde à sequência iso.org.dod.internet.private.enterprises. Dentro dessa estrutura, organizações podem ter seu próprio domínio específico, atribuído pela IANA. A ControlID, por exemplo, possui o domínio 49617, que se ramifica para .1 (accessControl). A partir dessa ramificação, outras subdivisões podem ser definidas conforme a necessidade, totalizando 10 subníveis adicionais que descrevem funcionalidades ou dados específicos dos dispositivos gerenciados:

Nome OID Descrição
cidSystem .1 Sistema
cidOperationMode .2 Modo de Operação
cidAntipassback .3 Anti PassBack
cidNetwork .4 Network
cidBuzzer .5 Buzzer
cidSip .6 SIP
cidApplication .7 Aplicação
cidStreaming .8 Streaming
cidAlarm .9 Alarme
cidSecbox .10 Secbox

Os parâmetros possíveis de serem monitorados são:

Sistema

Nome OID Retorno Descrição
firmwareVersion .1 OCTET STRING Versão de Firmware do dispositivo
serialNumber .2 OCTET STRING Número de Serial do dispositivo
hasProVersion .3 INTEGER
1: true
2: false
Verifica se o dispositivo possui licença Pro
loadAverage .4 OCTET STRING Média de carregamento do sistema
cpuUsage .5 OCTET STRING Uso de CPU do sistema*
cpuTemperature .6 Unsigned32 Temperatura da CPU
Unidade: T * 1000 °C
dateAndTime .7 OCTET STRING Data e Hora do dispositivo
ntpEnabled .8 INTEGER
1: True
2: False
NTP Habilitado
ntpServer .9 OCTET STRING Servidor(es) NTP

Modo de Operação

Nome OID Retorno Descrição
isDeviceOnline .1 INTEGER
1: True
2: False
Verifica se o dispositivo está online
devicePort .2 Unsigned32 Porta do dispositivo

Anti PassBack

Nome OID Retorno Descrição
antipassbackEnabled .1 INTEGER
1: True
2: False
Verifica se o antipassback está ativado
antipassbackTimeout .2 Unsigned32 Valor do timeout do Antipassback
Unidade: Segundos
antipassbackMode .3 OCTET STRING Modo de operação do Antipassback

Network

Nome OID Retorno Descrição
dhcpEnabled .1 INTEGER
1: True
2: False
Verifica se o DHCP está habilitado
duplexMode .2 OCTET STRING Modo duplex do dispositivo
Opções:
(Half, Full)

Buzzer

Nome OID Retorno Descrição
audioNotIdentified .1 OCTET STRING Status de aúdio para: Não identificado
Opções:
(custom, default, disabled)
audioAuthorized .2 OCTET STRING Status de aúdio para: Autorizado
Opções:
(custom, default, disabled)
audioNotAuthorized .3 OCTET STRING Status de aúdio para: Não autorizado
Opções:
(custom, default, disabled)
audioMaskPresent .4 OCTET STRING Status de aúdio para: Máscara presente
Opções:
(custom, default, disabled)
audioVolume .5 Unsigned32 Volume das mensagens de aúdio

SIP

Nome OID Retorno Descrição
sidEnabled .1 INTEGER
1: True
2: False
Verificar se o SIP está ativado
sipOperationMode .2 INTEGER 1: p2p
2: client
Modo de operação do SIP
sipDialingMode .3 INTEGER Discagem do modo SIP
sipBranch .4 OCTET STRING Branch do SIP
sipServer .5 OCTET STRING Endereço de servidor de SIP
sipAutoAnswerEnabled .6 INTEGER
1: True
2: False
Verifica se a resposta automática do SIP está habilitada
sipCallButtonEnabled .7 INTEGER
1: True
2: False
Verifica se o botão de ligação do SIP está habilitado
sipAutoCallId .8 OCTET STRING ID da ligação automática do SIP
sipMaxCallTime .9 Unsigned32 Tempo máxima de ligação SIP
Unidade: Segundos
sipHasCustomAudio .10 INTEGER
1: True
2: False
Verifica se o SIP usa aúdio customizado
sipKeepAliveInterval .11 Unsigned32 Intervalo do Keepalive do SIP
Unidade: Segundos
sipMicVolume .12 Unsigned32 Volume do microfone SIP
sipSpeakerVolume .13 Unsigned32 Volume do auto-falante do SIP
sipOpenDoorEnabled .14 INTEGER
1: True
2: True
Verifica se a porta aberta do SIP está habilitada
sipInCall .15 INTEGER
1: True
2: False
Verifica se o usuário está em uma chamada
sipRegisterTime .16 Unsigned32 Valor do timeout até estabelecer conexão ao servidor
sipRegisterStatus .17 DisplayString Status de conexão do servidor SIP

Aplicação

Nome OID Retorno Descrição
appNumberOfUsers .1 Unsigned32 Número de usuários registrados em aplicação
appHasCompanyLogo .2 INTEGER
1: True
2: False
Verifica se o dispositivo está usando uma logo customizada
appQrCodeType .3 INTEGER
1: Alfanumérico
2: Numérico
Verifica o tipo de QR code usado no dispositivo
appFacialIdentification .4 INTEGER
1: True
2: False
Verifica se a identificação facial está habilitada
appBiometricIdentification .5 INTEGER
1: True
2: False
Verifica se a identificação biométrica está habilitada
appCardIdentification .6 INTEGER
1: True
2: False
Verifica se o cartão de identificação está habilitado
appQrCodeIdentification .7 INTEGER
1: True
2: False
Verifica se a identificação por QR Code está habilitada
appPinIdentification .8 INTEGER
1: True
2: False
Verifica se a identificação por PIN está habilitada

Streaming

Nome OID Retorno Descrição
onvifEnabled .1 INTEGER
1: True
2: False
Verifica se o ONVIF está habilitado
onvifPort .2 Unsigned32 Porta do ONVIF
rtspEnabled .3 INTEGER
1: True
2: False
Verifica se o RTSP está habilitado
rtspPort .4 Unsigend32 Porta RTSP
rtspRgbIr .5 INTEGER
1: rgb
2: infrared
Verifica qual câmera está sendo usada
rtspCodec .6 OCTET STRING Codec usado no RTSP
rtspResolution .7 OCTET STRING Resolução usada no RTSP

Alarme

Nome OID Retorno Descrição
alarmDoorSensorEnabled .1 INTEGER
1: True
2: False
Verifica se o sensor de alarma da porta está habilitado
alarmDoorSensorDelay .2 Unsigned32 Atraso do sensor de alarme da porta
Unidade: Segundos
alarmForcedAccess .3 INTEGER
1: True
2: False
Verifica se houve uma tentativa de acesso forçada
alarmPanicFingerEnabled .4 INTEGER
1: True
2: False
Verifica se o botão do pânico está habilitado
alarmPanicFingerDelay .5 Unsigned32 Atraso do botão do pânico
Unidade: Segundos
alarmPanicCardEnabled .6 INTEGER
1: True
2: False
Verifica se cartão do pânico está habilitado
alarmDeviceViolationEnabled .7 INTEGER
1: True
2: False
Verifica se houve uma detecção de violação do dispositivo
alarmBuzzerEnabled .8 INTEGER
1: True
2: False
Verifica se o alarme do buzzer está habilitado
alarmPlayingTimeout .9 Unsigned32 Timeout para o alarme terminar de tocar
Unidade: Segundos

Secbox

Nome OID Retorno Descrição
secboxCount .1 Unsigned32 Número de secboxes
secboxExceptionMode .2 OCTET STRING Verifica se existe um modo de excessão
secboxId .3 Unsigned32 ID da Secbox
secboxEnabled .4 INTEGER
1: True
2: False
Verifica se a secbox está habilitada
secboxVersion .5 OCTET STRING Versão de firmware da Secbox
secboxRelayTimeout .6 Unsigned32 TImeout do relé da Secbox
Unidade: Milisegundos
secboxDoorEnabled .7 INTEGER
1: True
2: False
Verifica se o sensor de porta da Secbox está habilitada
secboxDoorNormallyOpen .8 INTEGER
1: Normalmente Aberto
2: Normalmente Fechado
Verifica se a porta está no modo Normalmente Aberto ou Normalmente Fechado
Opções:
{NormallyOpen, NormallyClosed}
secboxAutoCloseEnabled .9 INTEGER
1: True
2: False
Verifica se o fechamento automático está habilitado

Todos estes dados obtidos podem ser adquiridos por meio do arquivo CONTROLID-MIB.txt, disponibilizado pela Control iD.

Nota-se que, por se tratar de um arquivo MIB, não é possível realizar requests SNMP pelo (Postman). Ou seja, é necessário instalar uma ferramenta de gerenciamento de dispositivos via SNMP, como o MIB Browser, por exemplo. Dentro da ferramenta de gerenciamento via SNMP, basta executar o comando (snmpwalk) sobre o parâmetro escolhido para ser retornado. Esses parâmetros podem ser encontrados nas ramificações criadas de forma hierárquica.

Exemplos de equivalência de OID

Como mencionado anteriormente, todos os dados OID conterão no início a sequência 1.3.6.1.4.1.49617.1, equivalente a iso.org.dod.internet.private.enterprises.controlId.accessControl, e no fim o número 0, equivalente ao scalar do OID.

Nos dois exemplos a seguir, a numeração em negrito se refere ao dado de interesse.

firmwareVersion

  • 1.3.6.1.4.1.49617.1.1.1.0

cidSystem > firmwareVersion.

  • 1.3.6.1.4.1.49617.1.7.2.0

cidApplication > appHasCompanyLogo.

Habilitar/Desabilitar SNMP via API

A função descrita abaixo deve ser usada para realizar a ativação/desativação do SNMP nos terminais de controle de acesso da Control iD.

POST /set_configuration.fcgi

Parâmetros

  • snmp_enabled (int): Define se o ativa ou desabilita o protocolo SNMP

Exemplo de requisição para ativar o protocolo SNMP

$.ajax({
    url: "/set_configuration.fcgi?session=" + session,
    type: 'POST',
    contentType: 'application/json',
    data: JSON.stringify({
        "snmp_agent": {
            snmp_enabled: "1"
        }"
    })
});

Exemplo de requisição para desativar o protocolo SNMP

$.ajax({
    url: "/set_configuration.fcgi?session=" + session,
    type: 'POST',
    contentType: 'application/json',
    data: JSON.stringify({
        "snmp_agent": {
            snmp_enabled: "0"
        }"
    })
});