Introdução ao Monitor

Tanto no modo Standalone quanto nos modos Pro ou Enterprise, para se monitorar eventos assíncronos será necessário utilizar os serviços disponibilizados pelo Monitor.

Como o próprio nome sugere, o monitor permite o monitoramento de eventos que ocorrem no equipamento. Ele os envia a um servidor externo que deve ser configurado através dos endpoints descritos a seguir.

Para utilizar o monitor é necessário definir alguns parâmetros de configuração descritos em monitor.

Exemplo de requisição

Esta requisição serve para configurar o monitor.

$.ajax({
    url: "/set_configuration.fcgi?session=" + session,
    type: 'POST',
    contentType: 'application/json',
    data: JSON.stringify(
        {
             "monitor": {
                  "request_timeout": "5000",
                  "hostname": "192.168.0.20",
                  "port": "8000",
                  "path": "api/notifications" //path padrão
              }
        }
    )
});

Observação: O parâmetro hostname no exemplo de configuração acima também pode ser um endereço de domínio, como meuservidor.com, além de um endereço IP.

Endpoints

Um endpoint de um web server é a URL pela qual um de seus serviços pode ser acessado por uma aplicação cliente. Portanto, endpoints são interfaces entre a API e a aplicação consumidora.

No caso do monitor, o terminal de controle de acesso assume o papel de aplicação cliente e é necessário estabelecer um servidor externo que implemente os endpoints que se deseja consumir.

A URL final para a qual os eventos serão envidados pelo equipamento será:

hostname:port/endpoint

Exemplos de Endpoints:

  • http://meuservidor.com.br/api/notifications/dao
  • 192.168.110.200:80/api/notifications/dao

Logs

POST /api/notifications/dao

Enviado quando há alterações nas tabelas access_logs, templates, cards e alarm_logs, sejam elas de inserção, alteração ou deleção.

Formato do JSON que o equipamento envia para o servidor:

{
  "object_changes": [
    {
      "object": "access_logs",
      "type": "inserted",
      "values": {
        "id": "519",
        "time": "1532977090",
        "event": "12",
        "device_id": "478435",
        "identifier_id": "0",
        "user_id": "0",
        "portal_id": "1",
        "identification_rule_id": "0",
        "card_value": "0",
        "log_type_id": "-1"
      }
    }
  ],
  "device_id": 478435
}

POST /api/notifications/usb_drive

Enviado quando existe a inclusão de log de auditoria de usb_drive. Veja Exportar Relatório para mais informações.

Formato do JSON que o equipamento envia para o servidor:

{
  "usb_drive": {
    "event":"Export formatted access logs routine succeeded [uuid=2C9D-476B]"
  },
  "device_id": 478435,
  "time" : 1490271121
}

Cadastro remoto

POST /api/notifications/template

Enviado quando um template é cadastrado remotamente, caso os parâmetros sync e save da requisição no endpoint /remote_enroll.fcgi forem false. Veja Cadastro Remoto Biometria Facial Cartão para mais informações.

POST /api/notifications/user_image

Enviado quando uma face é cadastrada remotamente, caso os parâmetros sync e save da requisição no endpoint /remote_enroll.fcgi forem false. Veja Cadastro Remoto Biometria Facial Cartão para mais informações.

POST /api/notifications/card

Enviado quando um cartão é cadastrado remotamente, caso os parâmetros sync e save da requisição no endpoint /remote_enroll.fcgi forem false. Veja Cadastro Remoto Biometria Facial Cartão para mais informações.

Eventos de catraca

POST /api/notifications/catra_event

Este endpoint é exclusivo para a catraca iDBlock e envia eventos de confirmação do giro. Os eventos possíveis são:

  • EVENT_TURN_LEFT: Confirmação de giro à esquerda, que poderá ser entrada ou saída dependendo do valor do parâmetro gateway.
  • EVENT_TURN_RIGHT: Confirmação de giro à direita, que poderá ser entrada ou saída dependendo do valor do parâmetro gateway.
  • EVENT_GIVE_UP: Ocorre quando um usuário se identifica na catraca e tem seu acesso autorizado, porém não passa por ela, desistindo assim da realização do acesso/giro.

Formato do JSON que o equipamento envia para o servidor:

{
  "event": {
    "type": 7,
    "name": 'TURN LEFT',
    "time": 1484126902
  },
  "access_event_id": 15,
  "device_id": 935107
}

Observação:

  • O JSON enviado possui um campo opcional access_event_id que associa o evento reportado com o identificador correspondente da tabela access_events. Esse campo é incluído quando o parâmetro de configuração do monitor inform_access_event_id está configurado com o valor 1.

Estado online

POST /api/notifications/operation_mode

Uma requisição é enviada quando há mudança no modo de operação do equipamento (ex.: entra ou sai do modo de contingência). Quando o equipamento liga, esta requisição é enviada com o campo "last_offline": 0. Além disso há o campo exception_mode que indica se o equipamento está no modo exceção (podendo ser vazio).

Formato do JSON que o equipamento envia para o servidor:

{
  "operation_mode": {
    "mode": 0,
    "mode_name": "DEFAULT",
    "time": 1490271121,
    "last_offline": 1490261121
    "exception_mode": "none"
  },
  "device_id": 123456
}

Ações

POST /api/notifications/door

Uma requisição é enviada neste endpoint quando ocorre uma alteração de estado das portas, o que, na maior parte dos casos, indicará quando uma porta é aberta ou fechada. Esta alteração é percebida pelo equipamento de duas formas difrentes:

  • Abertura ou fechamento de relé.
  • Alteração de leitura do sensor de porta. (Somente se o sensor correspondente estiver ativo: consultar door_sensorN_enabled)

Na mensagem, consta o id da porta que mudou de estado e o seu estado atual (aberta ou fechada). O id da porta é representado por um número inteiro que vai de 1 ao número de portas disponíveis, podendo chegar a 4, caso seja uma iDBox. O estado da porta é um valor booleano open: verdadeiro se estiver aberta e falso se estiver fechada.

O estado informado no parâmetro open poderá ser o estado lido do sensor de porta, caso o sensor de porta esteja ativo, ou o estado do relé, caso contrário.

Formato do JSON que o equipamento envia para o servidor:

{
  "door": {
    "id" : 1,
    "open" : true
  },
  "access_event_id": 15,
  "device_id": 1038508,
  "time": 1575475894
}

Observação:

  • O JSON enviado possui um campo opcional access_event_id que associa o evento reportado com o identificador correspondente da tabela access_events. Esse campo é incluído quando o parâmetro de configuração do monitor inform_access_event_id está configurado com o valor 1.

POST /api/notifications/secbox

Uma requisição é enviada neste endpoint quando o relê da security box muda de estado, o que indicará quando uma porta é aberta ou fechada.

Na mensagem, consta o id da porta que mudou de estado e o estado atual. O id da porta é representado por um número inteiro enquanto o estado é um valor booleano, que será verdadeiro se ela estiver aberta e falso se estiver fechada.

Formato do JSON que o equipamento envia para o servidor:

{
  "secbox": {
    "id" : 122641794705028910,
    "open" : true
  },
  "access_event_id": 15
}

Observação:

  • O JSON enviado possui um campo opcional access_event_id que associa o evento reportado com o identificador correspondente da tabela access_events. Esse campo é incluído quando o parâmetro de configuração do monitor inform_access_event_id está configurado com o valor 1.

POST /api/notifications/access_photo

Uma requisição é enviada neste endpoint quando há algum tipo de evento de identificação e a opção para envio de imagens via monitor está habilitada. Essa opção se encontra tanto na interface do equipamento quanto na interface WEB, e pode ser modificada através do endpoint set_configuration e obtida através do endpoint get_configuration, ambos com os seguintes parâmetros:

'set_configuration'
{
  monitor: {
    enable_photo_upload: true
  }
}

E

'get_configuration'
{
  monitor: [enable_photo_upload]
}

Na mensagem, consta o id da porta acionada pela identificação, o id do dispositivo que realizou a identificação, o horário no qual houve a identificação, o id do usuário identificado, bem como uma foto tirada pelo equipamento no momento da identificação.

Formato do JSON que o equipamento envia para o servidor:

{
  "device_id": "478435",
  "time": "1532977090",
  "portal_id": "1",
  "identifier_id": "0",
  "event": "7",
  "user_id": "0",
  "access_photo" : foto em jpg codificada em base64.
}

Observação: - A foto enviada estará em formato jpeg, codificada em base64.