SnapManager

O SnapManager assim como o eventManager, requer que o servidor solicite aos dispositivos o envio dos eventos em um formato de "pooling". Este end-point é responsável por encaminhar eventos relacionados aos acessos e à imagem obtida no momento em que o evento foi realizado.

ℹ️

Para o funcionamento correto é necessário que a requisição seja feita em polling e modo Stream. Vale ressaltar que dispositivos sem câmeras não suportam as chamadas do snapManager e portanto os eventos de acesso serão encaminhados pelo eventManager.

Obtendo eventos via snapManager

Requisição - GET

http://192.168.1.201/cgi-bin/snapManager.cgi?action=attachFileProc&Flags[0]=Event&Events=[All]&heartbeat=5

paramtypedescription
Events *StringCódigo de evento a ser filtrado, , pode ser utilizado: "All", "CitizenPictureCompare"
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: 836
 
Events[0].Alive=100
Events[0].CardName=John
Events[0].CardNo=
Events[0].CardType=0
Events[0].CreateTime=1629814150
Events[0].Door=0
Events[0].ErrorCode=16
Events[0].EventBaseInfo.Action=Pulse
Events[0].EventBaseInfo.Code=AccessControl
Events[0].EventBaseInfo.Index=0
Events[0].ImageInfo[0].Height=360
Events[0].ImageInfo[0].Length=14655
Events[0].ImageInfo[0].Offset=0
Events[0].ImageInfo[0].Type=1
Events[0].ImageInfo[0].Width=640
Events[0].ImageInfo[1].Height=600
Events[0].ImageInfo[1].Length=18102
Events[0].ImageInfo[1].Offset=14655
Events[0].ImageInfo[1].Type=2
Events[0].ImageInfo[1].Width=480
Events[0].Method=15
Events[0].ReaderID=1
Events[0].Similarity=0
Events[0].SnapPath=/var/tmp/partsnap3.jpg
Events[0].Status=0
Events[0].Type=Entry
Events[0].UTC=1629814150
Events[0].UserID=
Events[0].UserType=0
 
--myboundary
Content-Type: image/jpeg
Content-Length: 32757
 
[BYTES DA IMAGEM DO MOMENTO DE ACESSO]

Exemplos

import requests
 
url = "http://192.168.3.87/cgi-bin/snapManager.cgi?action=attachFileProc&Flags[0]=Event&Events=[All]&heartbeat=5"
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)