EventManager

O EventManager requer que o servidor solicite aos dispositivos o envio dos eventos em um formato de "pooling". Este end-point encaminha eventos de alarmes e alguns eventos relacionados a leituras.

ℹ️

Para o funcionamento correto é necessário que a requisição seja feita em polling e modo Stream.

Obtendo eventos via eventManager

Requisição - GET

http://192.168.1.201/cgi-bin/eventManager.cgi?action=attach&codes=[All]&heartbeat=5

paramtypedescription
codes *StringCódigo de evento a ser filtrado, pode ser utilizado: "All", "DoorNotClosed", "BreakIn", "Duress", "AlarmLocal", "ChassisIntruded", "ButtonExit", "AccessControl"
heartbeatStringValor pode ser de 1 a 5. Define o intervalo de envio da mensagem ao cliente com a informação hearbeat

Retorno - multipart-mixed:

 
--myboundary
Content-Type: text/plain
Content-Length:315
 
Code=AccessControl;action=Pulse;index=0;data={
   "CardName" : "",
   "CardNo" : "12EA3004",
   "CardType" : 0,
   "CreateTime" : 1629721071,
   "Door" : 0,
   "ErrorCode" : 0,
   "Method" : 1,
   "ReaderID" : "1",
   "Status" : 1,
   "Type" : "Entry",
   "UTC" : 1629721071,
   "UserID" : "1",
   "UserType" : 0
}
 
--myboundary
Content-Type: text/plain
Content-Length:85
Code=BreakIn;action=Pulse;index=0;data={
"Name" : "SS-1",
"UTC" : 1598250815
}
 
--myboundary
Content-Type: text/plain
Content-Length:91
Code=DoorNotClosed;action=Start;index=0;data={
"Name" : "SS-1",
"UTC" : 1598250817
}
 
Code=_Button_;action=Pulse;index=0;data={
"Local" : true,
"ReaderID" : "1",
"Type" : "Button"
}
 
Code=Duress;action=Pulse;index=0;data={
   "Name" : "Door",
   "UTC" : 1629721071,
   "UserID" : "1"
}

Tipos de Codes: "DoorNotClosed", "BreakIn", "Duress", "AlarmLocal", "ChassisIntruded", "ButtonExit", "AccessControl"

Tipos de eventos retornados

CodeDescrição do evento
UpgradeEvento ocorre quando o dispositivo inicia uma atualização de firmware
RebootEvento de reinício do dispositivo
BreakInEvento de arrombamento de porta
DoorStatusEvento de status da porta
AlarmLocalEvento de disparo de alarme local
NewFileEvento de cadastro de arquivo no dispositivo
UpdateFileEvento de Atualização de arquivo do dispositivo
DoorNotClosedEvento de porta não fechada
NetworkChangeEvento de alteração de configurações da rede
AccessControlEvento de controle de acesso
KeepLightOn / KeepLightOffEvento referente a luz noturna que se ativa dependendo da iluminação do local
ScreenSaverEvento Referente ao estado da proteção de tela do dispositivo caso esteja configurada.
TimeChangeEvento de alteração de hora do dispositivo normalmente acompanha o BeforeModifyTime e o ModifiedTime
ManagerLogEvento de logs referente a alteração feitas via interface web
Button / ButtonExitEvento referente ao botão de Saida
DuressEvento ocorre quando é realizado a passagem de uma credencial de coação
ChassisIntrudedEvento ocorre quando é realizado a tentativa de intrusão do dispositivo (Remoção da parede/Tamper)
⚠️

Obs: Para realizar o recebimento dos eventos de alarme é necessário que seja ativado os alarmes nas configurações do dispositivos.

Exemplos

import requests
 
url = "http://192.168.3.87/cgi-bin/eventManager.cgi?action=attach&codes=[All]"
digest_auth = requests.auth.HTTPDigestAuth('admin', 'acesso1234')
 
response = requests.get(url, auth=digest_auth, stream=True, timeout=60, verify=False)
 
empty_lines = 0
event = {}
 
for chunk in response.iter_lines():
        print(chunk)
 
        if chunk == ''.encode():
            empty_lines += 1
            if empty_lines == 2:
                empty_lines = 0
                print(event)