Escolar Documentos
Profissional Documentos
Cultura Documentos
Instalação
Download de arquivos
Instalação servidorIF
Integrafacil2 (Linux x64)
Integrafacil2 (Windows)
Controle de Acesso IF
Configuração
ServidorIF
DesktopIF
IP/Host servidor DB/Cache
IP/Host servidor Futronic
URL
Macros:
resposta simples:
resposta detalhada:
Padrão esperado pelo Servidor IF
URL dos Logs
Exemplo: Identificação digital com sucesso:
Exemplo: Identificação Facial com sucesso
Para acessar os logs da catraca:
IntegraFacil2 - Windows
API
IntegraFacil2
Número de série do leitor.
Cadastro de digital
Registro pela rede local
Levando em conta uma topologia de rede local como se mostra a seguir:
Registro pela Internet
Resposta
Cadastro com sucesso!
Cadastro sem sucesso
Servidor IF
Biometria Facial
Cadastro de template facial
Excluir template facial
Listar template facial
Biometria Digital
Página de Processamento
9. API HTTP
1. Comunicação (API HTTP e Webhooks)
O IntegraFácil usa API HTTP em seus dispositivos e softwares. Seja para liberar uma
catraca, iniciar um cadastro biométrico em um leitor de balcão ou fazer chamadas ao
nosso servidor na internet, tudo é feito com requisições HTTP (Get, Post, etc).
● DesktopIF
● servidorIF (Windows)
https://if-instaladores.s3.amazonaws.com/servidorIF/servidorIF.zip
https://if-instaladores.s3.amazonaws.com/futronic-reader/integrafacil2-v0-linux-x64.zip
https://if-instaladores.s3.amazonaws.com/integraFacil2/IntegraFacil2.zip
Para detectar se o leitor está plugado execute o terminal “lsusb” se ele estiver
plugado você verá esse item nos resultados:
Bus 001 Device 003: ID 1491:0088 Futronic Technology Co. Ltd. Fingerprint Scanner
Model FS88
Instalação:
Executar automaticamente
Interface de visualização
Opção de liberação
5. Configuração
5.1. ServidorIF
Configurações importantes:
Porta Servidor IF = 8080 (porta que o servidor vai usar para expor a API)
Porta Base de Dados = 810 (porta que o servidor vai usar para expor a API da base de
dados)
Para evitar que a base de dados cresça indefinidamente, usamos alguns parâmetros
para excluir automaticamente os dados não usados.
http://ip_catraca/config
Macros:
Exemplo: http://seuwebservice/person/{{info}}/access?ns={{ns}}&dispositivo={{dispositivo}}
Sua resposta deve ter no mínimo status code < 400 para acesso liberado e status code
>= 400 para acesso negado.
Essa resposta básica irá manter a catraca travada (>=400) ou liberar (<400) a catraca
para ambos os sentidos durante no máximo 10 segundos ou até ocorrer o primeiro giro.
resposta detalhada:
Além dessa forma básica de resposta, temos outras informações complementares que
podem ser usadas. Essas informações podem vir no padrão esperado pelo servidor IF ou
de qualquer maneira (XML, CSV, etc) que um javascript possa tratá-lo e converter para o
padrão esperado.
Uma vez recebida esta resposta, ela será armazenada e utilizada como redundância
caso o endpoint não esteja disponível, o que garante que a catraca não parará de
funcionar.
{
"id": "000000000000005578332020-08-19T18:22:21Z",
"numeroSerie": "049226c597c8",
"identificacao": {
"horario": "2020-08-19T18:22:21Z",
"dispositivo": "finger",
"numeroSerie": "557833",
"usuarioId": "200",
"convidado": false
},
"cliente": {
"url": "http://192.168.0.5:8000/log",
"recebimentos": [
]
},
"pgProcessamento": {
"horario": "2020-08-19T18:22:21Z",
"response": "{\"text\":\"text to
turnstile\",\"clockwiseFree\":true,\"counterclockwiseFree\":false,\"a
ccessTime\":10000,\"msgToReception\":\"msg to reception\"}",
"cacheUsado": false
},
"giro": {
"horario": "2020-08-19T18:22:26Z",
"sentido": "antiHorario"
},
"motivoLiberacaoManual": "",
"processamentos_json": null,
"liberaCatraca": {
"texto": "text to turnstile",
"sentidoHorarioLiberado": true,
"sentidoAntiHorarioLiberado": false,
"liberacaoTempo": 10000,
"semComando": false,
"msgRecepcao": "msg to reception",
"senha": null,
"nomeCatraca": "Catraca1",
"grupoCatracas": "turnstile",
"nsPLC": "049226c597c8"
}
}
{cache
"id": "00000000049226c597c82020-08-19T18:28:21Z",
"numeroSerie": "049226c597c8",
"identificacao": {
"horario": "2020-08-19T18:28:21Z",
"dispositivo": "interface",
"numeroSerie": "049226c597c8",
"usuarioId": "200",
"convidado": false
},
"cliente": {
"url": "http://192.168.0.5:8000/log",
"recebimentos": [
]
},
"pgProcessamento": {
"horario": "2020-08-19T18:28:21Z",
"response": "{\"text\":\"text to
turnstile\",\"clockwiseFree\":true,\"counterclockwiseFree\":false,\"a
ccessTime\":10000,\"msgToReception\":\"msg to reception\"}",
"cacheUsado": false
},
"giro": {
"horario": "2020-08-19T18:28:28Z",
"sentido": "antiHorario"
},
"motivoLiberacaoManual": "",
"processamentos_json": null,
"liberaCatraca": {
"texto": "text to turnstile",
"sentidoHorarioLiberado": true,
"sentidoAntiHorarioLiberado": false,
"liberacaoTempo": 10000,
"semComando": false,
"msgRecepcao": "msg to reception",
"senha": null,
"nomeCatraca": "Catraca1",
"grupoCatracas": "turnstile",
"nsPLC": "049226c597c8"
}
}
http://ip_catraca/logs
5.3. IntegraFacil2 - Windows
Propriedades importantes:
[FUTRONIC_SERVIDOR]
[DATABASE]
[FINGER_FUTRONIC]
[WEBSERVER]
Este número pode ser obtido pelo browser desde qualquer dispositivo conectado
à rede local apontando para o ip da máquina onde roda integraFacil2, pelo
método status.
● No Linux
http://ip-address:3050/metodos/status
{
"host": "debian",
"platfrom": "linux",
"lstDispositivos": [
{
"dispositivo": "finger",
"ns": "492731"
}
]
}
http://ip-address/metodos/status
{
"lstDispositivos": [
{
"dispositivo": "finger",
"ns": "492731"
}
],
"versao": "2.0.14.7",
"teamViewerID": "Não instalado"
}
Pode ser executado via rede local ou internet, deve-se usar o método
metodos/cadastraDigital com os seguintes parâmetros em uma solicitação http.
http://plc.interlaken.ind.br:888/metodos/cadastraDigital?numeroSerie=123456&usuarioID
=1234&idxDedo=7&senha=77777
nota: troque o número de série 123456 pelo número de série do leitor seu biométrico. a
senha=77777 funcionará a título de homologação
O programa de registro será executado da mesma maneira que foi mostrado no item
Registro pela rede local.
Resposta
Existe também a possibilidade de o registro não ser realizado com sucesso, isto pode
ocorrer pelos seguintes motivos:
{
"resultado": "DIGITAL SEMELHANTE AO USUARIO 100",
"qualidade": 0,
"sucesso": false
}
● Digital inconsistente
Colocar na última tentativa de registro um dedo diferente dos que foram usados
nas primeiras tentativas. Neste caso, o leitor não consegue verificar a consistência
nas 3 digitais capturadas.
{
"resultado": "Digital inconsistente",
"qualidade": null,
"sucesso": false
}
Fig. Erro devido a inconsistência de impressões digitais de usuário
● Digital já cadastrada
Ao tentar registrar um usuário que já existe no sistema, vai dar erro e neste caso é
necessário eliminar o registro existente para criar um novo.
{
"resultado": "DIGITAL JA CADASTRADA",
"qualidade": 0,
"sucesso": false
}
Fig. Erro devido a duplicidade de registro.
6.2. Servidor IF
Request:
POST: IPSERVIDOR:8080/v1/face/template
Usando base64
body
{
"personId": "2",
"jpegImageBase64": "imagem jpeg em base64"
}
Response:
Status code: 200
{
"success": true,
"engine": "engine3",
"personId": "100",
"template": "VEHT2bcd1aKIw9R9pHP..0ARPL9AdMBnAoaKKBH/9k=",
"id": "ad6e5262-3733-4fb7-9278-b58f7c1d62a3",
"enrollScore": 0,
"createdAt": "2021-03-10T14:12:07.000Z",
"updatedAt": "2021-03-10T14:12:07.000Z"
}
Request:
DELETE: IPSERVIDOR:8080/v1/face/templates?personId=2
body
{
"personId": "2",
"jpegImageBase64": "imagem jpeg em base64"
}
Response:
Status code: 204
Request:
GET: IPSERVIDOR:8080/v1/face/template?personId=2
Response:
Status code: 200
{
"id": "39820510-8304-4aa2-9e98-0fc3654056b0",
"engine": "engine3",
"personId": "100",
"enrollScore": 0,
"template": "VElGMDEvKCogKCU1O..KD9M9Fs/qHU=",
"jpegImageBase64": "/9j/4AAQSkZJRgABAQEAYAB..oaKKBH/9k=",
"createdAt": "2021-03-10T18:03:06.000Z",
"updatedAt": "2021-03-10T18:03:06.000Z"
}
Parâmetros:
Exemplo: http://seuwebservice/endpoint?ns={{ns}}&info={{info}}&dispositivo={{dispositivo}}
{
"passwordToAccess":"",
"personName": "User name xxxx",
"text": "text to turnstile",
"clockwiseFree": true,
"counterclockwiseFree": false,
"accessTime": 5000,
"msgToReception": "msg to reception",
"group":"group name"
}
onde
Uma vez recebida esta resposta, ela será armazenada e utilizada como redundância
caso a página de processamento não esteja disponível, o que garante que a catraca não
parará de funcionar.
8. Webhook URL LOG
9. API HTTP
Os métodos podem ser enviados através da rede local com a IP da máquina onde roda o
servidorIF:
● Método Status
○ rede local
http://localhost/metodos/status
○ internet
http://plc.interlaken.ind.br:888/metodos/status?numeroSerie=123456&senha=77777
○ resposta
{Json de resposta}
host: "suporte-VirtualBox",
platfrom: "linux"
lstDispositivos:
dispositivo: "finger"
ns: "492731"
● Registro de Digital
○ rede local
http://localhost/metodos/cadastraDigital?usuarioID=1234&idxDedo=7
○ Internet
http://plc.interlaken.ind.br:888/metodos/cadastraDigital?numeroSerie={{numero-de-serie}}
&usuarioID=1234&idxDedo=7&senha=77777
○ Resposta
sucesso: true
qualidade: 9
resultado:"MDczICAgICAgICAgICAgICAgICAgIDIwMDHRBwMDACkSGR53d3d3d3d3d3
d3d3d3...MUAAIOEwUGEBIEDw0FDQgMABcOCgcHBgUPCwAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
idxDedo:"7"
http://localhost/metodos/excluiDigital?usuarioID=100&idxDedo=3
○ internet
http://plc.interlaken.ind.br:888/metodos/excluiDigital?numeroSerie={{numero-de-serie}}&u
suarioID=1234&idxDedo=7
○ Resposta
resultado: "OK"
http://localhost/metodos/excluiTodasDigitais?usuarioID=1234
○ internet
http://plc.interlaken.ind.br:888/metodos/excluiTodasDigitais?numeroSerie={{numero-de-s
erie}}&usuarioID=100
○ Resposta
resultado: "OK"
http://localhost/metodos/listaTemplatesDigital
○ internet
http://plc.interlaken.ind.br:888/metodos/listaTemplatesDigital?numeroSerie={{numero-de-
serie}}
○ resposta
resultado:
0:
usuarioID: "1"
idxDedo:
template:
"MDcxICAgICAgICAgICAgICAgIC...AAAAAAAAAAAAAAAAAAAAAAAAAA="
1:
usuarioID: "3"
idxDedo: 7
template: "MDczICAgICAgIC....AAAAAAAAAAAA="
2:
usuarioID: "2"
idxDedo: 6
template: "MDYyICAgICAg....AAAAAAAAAAA="
http://localhost/metodos/listaTemplatesDigital?usuarioID=100
○ internet
http://plc.interlaken.ind.br:888/metodos/listaTemplatesDigital?numeroSerie={{numero-de-
serie}}&usuarioID=2
○ Resposta
resultado:
0:
usuarioID: "1"
idxDedo: 6
template:
"MDcxICAgICAgICAgICAgICAgIC...AAAAAAAAAAAAAAAAAAAAAAAAAA="