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
param | type | description |
---|---|---|
codes * | String | Código de evento a ser filtrado, pode ser utilizado: "All", "DoorNotClosed", "BreakIn", "Duress", "AlarmLocal", "ChassisIntruded", "ButtonExit", "AccessControl" |
heartbeat | String | Valor 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
Code | Descrição do evento |
---|---|
Upgrade | Evento ocorre quando o dispositivo inicia uma atualização de firmware |
Reboot | Evento de reinício do dispositivo |
BreakIn | Evento de arrombamento de porta |
DoorStatus | Evento de status da porta |
AlarmLocal | Evento de disparo de alarme local |
NewFile | Evento de cadastro de arquivo no dispositivo |
UpdateFile | Evento de Atualização de arquivo do dispositivo |
DoorNotClosed | Evento de porta não fechada |
NetworkChange | Evento de alteração de configurações da rede |
AccessControl | Evento de controle de acesso |
KeepLightOn / KeepLightOff | Evento referente a luz noturna que se ativa dependendo da iluminação do local |
ScreenSaver | Evento Referente ao estado da proteção de tela do dispositivo caso esteja configurada. |
TimeChange | Evento de alteração de hora do dispositivo normalmente acompanha o BeforeModifyTime e o ModifiedTime |
ManagerLog | Evento de logs referente a alteração feitas via interface web |
Button / ButtonExit | Evento referente ao botão de Saida |
Duress | Evento ocorre quando é realizado a passagem de uma credencial de coação |
ChassisIntruded | Evento 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)