MPI/API
De uTech Tecnologia
API de integração com Porteiro uTech MPI
Tabela de conteúdo |
Protocolo / Formato das requisições
Integração do porteiro uTech MPI via API - Comandos e Eventos
- Comandos: Serão enviados da aplicação para o porteiro.
- Eventos: Serão enviados pelo porteiro para a aplicação (O destino dos eventos deve ser configurado no Porteiro).
Métodos e Formatos
Formato dos Comandos
- Comandos enviados para o porteiro, devem utilizar o protocolo HTTP] e os métodos [GET] e [POST].
- As respostas estarão codificadas no padrão JSON (Caso houver dados. Veja a lista completa de comandos e eventos abaixo)
Requisição:
http://IP_DO_PORTEIRO:porta/?request=<requisição>... |
---|
Resposta do Comando
- 400 => Requisição ou parâmetros incorretos!
- 200 => Requisição OK.
Content-Type: application/json { "Interface1":{ "relay":"off", "sensor":"off", "button":"off" }, "Interface2":{ "relay":"off", "sensor":"off", "button":"off" } } |
---|
Formato dos Eventos
Evento:
http://ip:porta/url/?event=alarm&state=on User-Agent: uTech/0000002874 Connection: close Date: Wed, 13 Jun 2018 17:22:35 Host: 10.0.0.200 |
---|
Utilize o campo (header http) User-Agent para identificar qual porteiro está enviando os eventos para sua aplicação. |
Resposta do evento
A aplicação deverá responder os eventos com o Status code 200 OK
Autenticação
Para acesso com usuário e senha, é utilizado o método e autenticação Basic. Veja sobe em: Basic Authentication
Comandos
Comandos enviados pela Aplicação ao porteiro | |
---|---|
Versão | Comando enviado para o porteiro solicitando dados de versão, modelo e numero de série do equipamento. |
Status | Comando enviado para o porteiro solicitando status dos relés, sensores e botoeiras. |
Gerar chamada | Comando enviado para o porteiro para gerar uma chamadas. |
Liberar chamada | Comando enviado para liberar/desligar uma chamada. |
Status da chamada | Comando enviado para verificar o status de uma chamada em andamento. |
Listar usuários | Comando enviado para o porteiro para solicitar a lista de usuários cadastrados. |
Buscar Usuário | Comando enviado para o porteiro para solicitar a configuração de um usuário. |
Buscar Resumo de Usuários | Comando utilizado solicitar lista com total de usuários/contas de acesso. |
Adicionar usuário | Comando enviado para o porteiro solicitando a inclusão de um novo usuário. |
Adicionar usuário automaticamente | Comando enviado para o porteiro solicitando a inclusão automática de um novo usuário. (Será inserido automaticamente o próximo cartão ou QR Code lido. |
Cadastrar Biometria | Comando enviado para o porteiro para cadastrar a Biometria de um usuário. |
Verificar Permissões de um usuário | Comando enviado para o porteiro para verificar se um usuário tem permissão de acesso. |
Remover usuário | Comando enviado para o porteiro solicitando remoção de um usuário. |
Remover usuário automaticamente | Comando enviado para o porteiro solicitando remoção automática de um usuário. Será removido o próximo cartão, QR Code, RF 433 ou Fingerprint lido pelo porteiro. |
Remover todos os usuários | Comando enviado para o porteiro solicitando a remoção de TODOS os usuários. |
Listar log's de acesso | Comando enviado para o porteiro solicitando os log's de acessos. |
Remover log's de acesso | Comando enviado para o porteiro solicitando a remoção de toda a lista de log's de acessos. |
Controlar acionamento dos relês | Comando enviado para o porteiro para controlar o acionamento/status dos Relês. |
Controlar acionamento do alarme | Comando enviado para o porteiro para controlar o acionamento/status dos alarmes. |
Controlar função pânico | Comando enviado para o porteiro para controlar o acionamento/status da função pânico. |
Listar Status dos Alarmes | Comando enviado para buscar o estado atual dos alarmes do porteiro. |
Listar Leitores Remotos | Comando enviado para buscar o estado atual dos alarmes do porteiro. |
Solicitar configurações de Vídeo | Comando enviado para solicitar a URL de video da câmera ref. ao porteiro. |
Buscar Localização | Comando enviado para buscar a localização do porteiro (configurado via interface WEB). |
Buscar Configuração | Comando enviado para pegar a configuração do porteiro. |
Configurar Porteiro | Comando enviado para configurar o porteiro. |
Restaurar Configuração do Porteiro | Comando enviado para restaurar a configuração do porteiro para a configuração de padrão/fabrica. |
Reiniciar o equipamento | Comando enviado para reiniciar o porteiro. |
Reiniciar Leitor externo | Comando enviado para reiniciar leitor externo. |
Atualizar o firmware do equipamento | Comando enviado para realizar o update de firmware do porteiro. |
Atualizar o firmware de leitor externo | Comando enviado para realizar o update de firmware de Leitor externo. |
Buscar configuração de leitor externo (ULIP) | Comando enviado para ler a configuração de um Leitor externo - (ULIP) o update de firmware do porteiro. |
Configurar leitor externo (ULIP) | Comando enviado configurar um Leitor externo - (ULIP). |
Atualizar usuários de leitor externo | Comando enviado para atualizar os usuários de um Leitor externo a partir do equipamento mestre. |
Apagar todos usuários de um leitor externo | Comando enviado para remover TODOS os usuários de um Leitor externo. |
Buscar Data/Hora atual do equipamento | Comando enviado para solicitar DATA e HORA atual do porteiro MPI. |
Configurar Data/Hora do equipamento | Comando enviado configurar a DATA e HORA atual do porteiro MPI. |
Buscar Lista de acesso | Comando utilizado para buscar a lista de acesso realizados no porteiro MPI. |
Remover lista de acesso | Comando utilizado para remover a lista de acesso realizados no porteiro MPI |
Reproduzir mensagem | Comando utilizado para reproduzir mensagens pré-definidas no porteiro MPI. |
Push | Comando utilizado receber o token de aplicativos (Android e iOS) para envio de push notifications. |
Get QR Code - Dinâmico/Temporário | Comando utilizado solicitar um novo QR Code dinâmico/temporário ao porteiro MPI. |
Solicitar lista de contatos | Comando enviado para solicitar a lista de contatos integrados ao Easykey. Com essa lista é possível discar para o APP do usuário. |
Solicitar a captura de Face. | Comando enviado para capturar face em leitor facial externo. |
Eventos
- Abaixo, a lista de eventos enviados pelo porteiro:
Eventos enviados pelo porteiro para a Aplicação | |
---|---|
Evento keepalive | Evento enviado pelo porteiro para o servidor/aplicação supervisão da conexão.. |
Evento de relê | Evento enviado pelo porteiro informando status de relê. |
Evento de Sensor | Evento enviado pelo porteiro informando status de sensor. |
Evento de botoeira | Evento enviado pelo porteiro informando status de botoeira. |
Evento de Arrombamento | Evento enviado pelo porteiro informando que foi detecção de arrombamento de porta. |
Evento de Porta Aberta | Evento enviado pelo porteiro informando que uma porta foi mantida aberta alem do tempo máximo configurado. |
Evento Mifire / NFC | Evento enviado pelo porteiro informando status de cartão lido. |
Evento RF433 Code | Evento enviado pelo porteiro informando status de cartão/controle RF 433 lido. |
Evento Fingerprint | Evento enviado pelo porteiro informando status de biometria lida. |
Evento Fingerprint Status (Enrolment) | Evento enviado pelo porteiro informando o status de cadastro de uma biometria (Enrolment). |
Evento de Usuário e Senha | Evento enviado pelo porteiro informando nova requisição de acesso por usuário e senha. |
Evento QR Code | Evento enviado pelo porteiro informando status de leitura de QR Code. |
Evento Add User | Evento enviado pelo porteiro informando que um novo usuário foi adicionado. |
Evento Del User | Evento enviado pelo porteiro informando que um usuário foi removido. |
Evento de Cadastro Automático de Usuário | Evento enviado pelo porteiro informando o status do cadastro automático de usuário (enviado após o comando probeuser. |
Evento de Remoção Automática de Usuário | Evento enviado pelo porteiro informando o status da remoção automática de usuário (enviado após o comando eraseuser. |
Evento de Alarme | Evento enviado pelo porteiro informando novo status de alarme. |
Evento Pânico | Evento enviado pelo porteiro informando status da função pânico. |
Evento de Chamada | Evento enviado pelo porteiro informando um novo status de chamada. |
Evento de Violação (Tamper) | Evento enviado pelo porteiro informando que o porteiro foi violado (Evento de Tamper). |
Evento de Boot | Evento enviado pelo porteiro informando Boot do porteiro. |
Codigo Exemplo para receber os eventos:
- Copie e cole o código abaixo na pasta do seu servidor HTTP.
- Depois configure no porteiro, menu Geral, aba Integração. Opção Configuração do Cliente, campo Url o caminho relativo do seu código.
- Ex. Se seu código está na pasta /events (/var/www/html/events - Document root padrão para apache no CentOS), no campo Url, coloque '/events'.
- NOTA: No código abaixo é especificado o arquivo onde serão saçvos os eventos recebidos. Altere a variavel DGBFILE para seu destino desejado.
- O arquivo DEVE existir e ter permissão de escrita pelo servidor HTTP.
<?php /* * Arquivo DEVE existir e ter permissão de escrita pelo apache / (server http) */ $DGBFILE = "/var/log/evts.log"; function evt2log($str = null, $file = null) { if($str == null) { echo "str null\n"; return; } if($file == null) $file = "/var/log/evts.log"; error_log($str, 3, $file); } function show_request($req, $post, $file) { if($req) { evt2log("==>\nREQUEST {$req}\n", $file); } if($post) { evt2log("==>\nPOST {$post}\n", $file); } } $vars = $_REQUEST; $l = print_r($vars, true); $p = null; $post_params = file_get_contents("php://input"); if($post_params) { $post = json_decode($post_params, true); $p = print_r($post, true); } $d = date(DATE_RFC822); evt2log("\n=============================================\n", $DGBFILE); evt2log("=> $d\n", $DGBFILE); if(!isset($vars)) { evt2log("==> !!! Invalid arguments !!!\n\n", $DGBFILE); show_request($l, $p, $DGBFILE); exit(0); } if(isset($vars['request'])) $event = $vars['request']; else { evt2log("==> !!!Evento Invalido!!!\n", $DGBFILE); show_request($l, $p, $DGBFILE); exit(1); } evt2log("=> Novo evento recebido...\n", $DGBFILE); evt2log("=> Evento: {$vars['request']}\n", $DGBFILE); show_request($l, $p, $DGBFILE); evt2log("\n\n", $DGBFILE); ?> |
QR Code Dinâmico
O MPI possui uma função para controle de QR Code's dinâmicos (Com validade de tempo) Para utilização, siga os passos abaixo:
- Verifique a versão de software do seu porteiro. Ela DEVE ser igual ou superior a versão 1.1.17.
- Habilite no porteiro a função de QR Code dinâmico. Acesse o menu Controle de Acesso, aba Geral e habilite os campos:
* Habilitar QRCODE Dinâmico * Validade de QRCODE Dinâmico
- Agora, o porteiro está pronto para utilização. Veja no link QR Code Dinâmico como é o seu funcionamento.