Captura Remota de Face
Por meio da função abaixo o dispositivo entra em modo de captura de face, sendo exibida a tela padrão de captura via display do dispositivo. A foto do resultado da captura será retornado via SnapManager, podendo ser filtrada com o parametro CitizenPictureCompare.
⚠️
A chamada snapManager deve ser executada antes da chamada captureCmd em modo de "aguarde", caso contrário o dispositivo não irá retornar a foto da captura.
Por este motivo esta chamada não irá funcionar no Postman.
Exemplos
var request = require('request');
var fs = require('fs');
snapManagerCapture = function() {
var opts = {
'url': 'http://10.100.78.72/cgi-bin/snapManager.cgi?action=attachFileProc&Flags[0]=Event&Events=[CitizenPictureCompare]',
'forever': true,
'headers': { 'Accept': 'multipart/x-mixed-replace' }
};
console.log("Aguardando evento...");
var client = request(opts).auth("admin", "acesso1234", false);
return client;
};
var events = snapManagerCapture();
let accumulatedData = '';
events.on('socket', function (socket) {
socket.setKeepAlive(true, 1000);
});
events.on('data', function(data) {
accumulatedData += data.toString('binary');
console.log(data)
// Process each boundary-delimited part
let boundary = "--myboundary\r\n";
let boundaryIndex;
while ((boundaryIndex = accumulatedData.indexOf(boundary)) !== -1) {
let part = accumulatedData.slice(0, boundaryIndex);
accumulatedData = accumulatedData.slice(boundaryIndex + boundary.length);
if (part.includes("Content-Type")) {
let headersEndIndex = part.indexOf('\r\n\r\n');
if (headersEndIndex !== -1) {
let contentType = part.split('\r\n')[0].split(": ")[1];
if (contentType === "image/jpeg") {
let imageData = part.slice(headersEndIndex + 4); // Extract after headers
let imageBuffer = Buffer.from(imageData, 'binary');
fs.writeFile('output.jpg', imageBuffer, 'binary', function(err) {
if (err) {
console.error('Erro ao salvar a imagem:', err);
} else {
console.log('Imagem salva como output.jpg');
}
});
}
else {
console.log('Tente novamente - Content-Type:', contentType);
}
}
}
}
});
ℹ️
Dispositivos que suportam esta função:
Dispositivos | Firmware |
---|---|
SS 3530 MF FACE W | 210706 ou superior |
SS 5530 MF FACE | 210929 ou superior |
SS 3540 MF FACE EX | 211109 ou superior |
SS 5530 LITE | 230307 ou superior |
SS 3540 MF FACE BIO EX | 231129 ou superior |
SS 1530 MF W | 240201 ou superior |
SS 1540 MF W | 240201 ou superior |
SS 3532 MF W | 231018 ou superior |
SS 3542 MF W | 231018 ou superior |
SS 5531 MF W | 231018 ou superior |
SS 5541 MF W | 231018 ou superior |
SS 5532 MF W | 231018 ou superior |
SS 5542 MF W | 231018 ou superior |
Requisição - GET
http://192.168.1.201/cgi-bin/accessControl.cgi?action=captureCmd&type=1&heartbeat=5&timeout=10
param | type | description |
---|---|---|
captureCmd * | String | Comando para Captura Remota de Face |
type * | String | Tipo de captura, atualmente somente disponivel o tipo 1 |
heartbeat * | String | Valor pode ser de 1 a 5. Define o intervalo de envio da menssagem ao cliente com a informação hearbeat |
timeout * | String | TimeOut da Chamada em Segundos |
Exemplo de Retorno - text/plain
OK
Exemplos
import requests
device_ip = '10.1.35.144'
username = 'admin'
password = 'acesso1234'
url = "http://{}/cgi-bin/accessControl.cgi?action=captureCmd&type=1&heartbeat=5&timeout=10".format(
str(device_ip),
)
digest_auth = requests.auth.HTTPDigestAuth(username, password)
rval = requests.get(url, auth=digest_auth, stream=True, timeout=20, verify=False)
print(rval.text)