Skip to main content

Integração MQTT - Neon

Documentação restrita

Este documento descreve a API de desenvolvedor do protocolo de integração da controladora Neon. O conteúdo é de uso interno/restrito e não deve ser publicado no portal público.

Este documento especifica o protocolo e as mensagens trocadas entre a controladora NEON e o servidor de controle de acesso quando um broker MQTT atua como intermediário da comunicação. Esse protocolo aberto, baseado em conceitos de IoT, é o OpenION — a forma nativa de a Neon se integrar a softwares de mercado.

Fonte: NEON — Manual de Integração v1.5 (jun/2024).

Visão geral do protocolo

  • Todas as mensagens utilizam formato JSON.
  • Espera-se que o broker MQTT tenha suporte ao padrão MQTT V3.1.
  • O fluxo de mensagens tem quatro naturezas:
    • Mensagens enviadas de forma independente e automática pelo controlador (keepalives, atualizações de status).
    • Mensagens enviadas pelo controlador sempre que ocorrem eventos específicos (solicitações de acesso, logs).
    • Mensagens enviadas de forma independente e automática pelo servidor (keepalives).
    • Mensagens enviadas pelo servidor sempre que ocorrem eventos específicos (abertura remota, envio de listas de acesso).
  • Muitas mensagens exigem resposta. Por exemplo, uma solicitação de acesso gerada pelo controlador exige que o servidor gere uma nova mensagem que a resolva.

Conceitos básicos

Facility ID

Toda instalação deve possuir um Facility ID, identificador único da instalação. Por exemplo, em um condomínio fictício o Facility ID poderia ser cond5991.

O Facility ID deve ser configurado nos controladores e no servidor de acesso com o mesmo valor, e faz parte do nome do tópico na comunicação com o broker MQTT. Para garantir a maior compatibilidade possível, recomenda-se o formato:

  • Máximo de 16 caracteres.
  • Caracteres utilizados — regexp [a-zA-Z0-9].

Estrutura de tópicos MQTT

A comunicação segue regras básicas na estrutura de tópicos para garantir que as mensagens sejam capturadas de forma eficiente.

O Facility ID sempre é o primeiro nível na estrutura. Por exemplo, um client que faça subscribe no tópico abaixo receberá todas as mensagens enviadas, tanto pelo servidor quanto pelos controladores:

cond5991/#

Todos os controladores fazem subscribe automático no tópico broadcast abaixo, usado pelo servidor para enviar mensagens de controle, como keepalives:

cond5991/broadcast/to

Com exceção desse tópico broadcast, o restante das mensagens sempre tem como origem ou destino um controlador específico. Cada controlador possui um alias/apelido que faz parte do tópico:

cond5991/controlador88/to (servidor → controlador específico)
cond5991/controlador88/from (controlador → servidor)

A tabela a seguir resume a forma mais simples de realizar uma integração (facility = Facility ID; alias = apelido do controlador):

TópicoOrigemDestino
facility/broadcast/toServidorTodos os controladores
facility/alias/toServidorControlador específico
facility/alias/from/#Controlador específicoServidor
facility/+/from/#Todos os controladoresServidor

Identificação das mensagens

Todas as mensagens são formatadas em JSON. A maior parte possui a chave msgid, número identificador da mensagem.

  • O valor de msgid deve estar entre 0 e 60000.
  • Nas mensagens que exigem resposta (ex.: uma solicitação de acesso enviada do controlador ao servidor), a resposta sempre deve referenciar o msgid original. Caso seja gerada uma resposta com msgid diferente do da solicitação original, a mensagem será ignorada pelo controlador.

Valores JSON

É importante respeitar o tipo de dado (string/int) na formatação JSON. Mensagens que não respeitem o tipo esperado serão ignoradas e não tratadas pelo controlador.

Dada a especificação:

{
"msgID": "integer(5)",
"timestamp": "string(12)"
}

Mensagens inválidas (tipo incorreto):

{
"msgID": "123",
"timestamp": "190101121314"
}
{
"msgID": 123,
"timestamp": 190101121314
}

Mensagem válida:

{
"msgID": 123,
"timestamp": "190101121314"
}

Alguns valores possuem tamanho máximo, indicado entre parênteses (ex.: string(12)). Esse limite deve ser respeitado para que a mensagem seja válida — "msgID": 123456 é inválido para um campo integer(5).

Há campos obrigatórios e opcionais. Caso falte um valor obrigatório, a mensagem é ignorada. No caso de valores opcionais, a ausência implica o uso de um valor default pré-determinado. Por exemplo, em uma validação online o servidor pode ou não enviar o uid; ambas as mensagens são válidas. Da mesma forma, se a senha estiver presente o controlador fará o controle de senha; se não estiver, não fará.


Mensagens enviadas pelo servidor

Salvo indicação contrária, o tópico de envio dessas mensagens é ${facilityid}/${alias}/to (e o broadcast para keepalive), e o tópico de resposta (quando há) é ${facilityid}/${alias}/from/ack.

Keepalive

O servidor deve publicar periodicamente um keepalive para que os controladores determinem se podem contar com o servidor para decisões de acesso ou se devem entrar em modo de contingência. Caso o controlador não receba keepalive por mais de 2 minutos, entra automaticamente em contingência e só sai ao receber um keepalive com timestamp válido. Sugere-se publicar com a flag retain_message ativa.

Tópico: ${facilityid}/broadcast/to

ChaveValor/tipoObservações
cmd"keepalive"Valor fixo
timestampstring(12)Data/hora formato YYMMDDHHMMSS
tzint(3)Timezone
{
"cmd": "keepalive",
"timestamp": "191231123456",
"tz": -3
}

Resposta: não há.

Acesso via MQTT (access_mqtt)

Solicitação de acesso enviada pelo broker. É tratada normalmente, como se um cartão tivesse sido apresentado em um leitor físico, mas o controlador considera que a origem foi MQTT, o que permite tratamento diferenciado.

ChaveValor/tipoObservações
cmd"access_mqtt"Valor fixo
timestampstring(12)YYMMDDHHMMSS
msgidint(5)0 a 60000
cardstring(16)Número do cartão
channelint(1)Número do canal da solicitação
{
"cmd": "access_mqtt",
"timestamp": "191231123456",
"msgid": 812,
"card": "0000001234567890",
"channel": 2
}

Resposta: não há.

Acesso pré-autorizado via MQTT (access_auto)

Acesso pré-autorizado: o controlador não faz verificação/validação (offline ou online), mas gera os logs normalmente, como em um cenário regular.

ChaveValor/tipoObservações
cmd"access_auto"Valor fixo
timestampstring(12)YYMMDDHHMMSS
msgidint(5)0 a 60000
cardstring(16)Número do cartão
channelint(1)Número do canal da solicitação
uidint(9)ID do usuário (int32)
{
"cmd": "access_auto",
"timestamp": "191231123456",
"msgid": 812,
"card": "0000001234567890",
"channel": 2,
"uid": 773127
}

Resposta: não há.

Solicitar envio de estado (get_info)

Solicita ao controlador que envie uma atualização de status (versão, espaço da lista de cartões etc.).

ChaveValor/tipoObservações
cmd"get_info"Valor fixo
timestampstring(12)YYMMDDHHMMSS
{
"cmd": "get_info",
"timestamp": "191231123456"
}

Resposta: não há resposta direta. O controlador enviará imediatamente uma mensagem de atualização de estado (ver Info).

Liberação de bloqueio / REX (rex_server)

Libera um determinado bloqueio (recurso comumente referido como REX — Request to EXit). O bloqueio fica liberado até a próxima passagem ou até um timeout de passagem, e gera um log específico.

ChaveValor/tipoObservações
cmd"rex_server"Valor fixo
timestampstring(12)YYMMDDHHMMSS
msgidint(5)0 a 60000
channelint(1)Número do canal da solicitação
{
"cmd": "rex_server",
"timestamp": "191231123456",
"msgid": 8812,
"channel": 1
}

Resposta — tópico ${facilityid}/${alias}/from/ack:

ChaveValor/tipoObservações
cmd"rex_server_ack"Valor fixo
timestampstring(12)YYMMDDHHMMSS
tzint(3)Timezone
msgidint(5)ID da mensagem original
statusstring"done" ou "error"
{
"cmd": "rex_server_ack",
"timestamp": "191231123456",
"tz": -3,
"msgid": 8812,
"status": "done"
}

Capturar dados do próximo cartão (capture)

Faz com que o próximo cartão apresentado não seja tratado como solicitação de acesso; apenas o número do cartão é retornado. Útil para cadastro de cartões não-sequenciais em lote ou para certificar-se do número interno de um cartão. É necessário definir o topic onde a resposta deve ser publicada, para evitar conflito no tratamento de mensagens.

ChaveValor/tipoObservações
cmd"capture"Valor fixo
timestampstring(12)YYMMDDHHMMSS
msgidint(5)0 a 60000
channelint(1)Número do canal da solicitação
topicstringTópico onde a resposta deve ser publicada
{
"cmd": "capture",
"timestamp": "191231123456",
"msgid": 8812,
"channel": 1,
"topic": "facilityid/mycapturetopic-183"
}

Resposta — tópico definido em topic:

ChaveValor/tipoObservações
cmd"capture_response"Valor fixo
timestampstring(12)YYMMDDHHMMSS
tzint(3)Timezone
msgidint(5)ID da mensagem original
originint(2)Origem do evento (vide ORIGEM_EVENTOS)
datastringDados capturados
{
"cmd": "capture_response",
"timestamp": "191231123456",
"tz": -3,
"msgid": 8812,
"origin": 1,
"data": "77912874"
}

Definir estado de operação (set_mode)

O controlador possui três estados de operação: normal, emergência e pânico. Esta mensagem alterna entre eles (vide ESTADOS_OPERACAO).

ChaveValor/tipoObservações
cmd"set_mode"Valor fixo
timestampstring(12)YYMMDDHHMMSS
msgidint(5)0 a 60000
modeint(1)Modo de operação (vide ESTADOS_OPERACAO)
{
"cmd": "set_mode",
"timestamp": "191231123456",
"msgid": 412,
"mode": 2
}

Resposta — tópico ${facilityid}/${alias}/from/ack:

ChaveValor/tipoObservações
cmd"set_mode_ack"Valor fixo
timestampstring(12)YYMMDDHHMMSS
tzint(3)Timezone
msgidint(5)ID da mensagem original
statusstring"done" ou "error"
{
"cmd": "set_mode_ack",
"timestamp": "191231123456",
"msgid": 412,
"status": "error"
}

Buscar versão (get_version)

Obtém a versão do controlador com resposta específica. Útil para testes de comunicação.

ChaveValor/tipoObservações
cmd"get_version"Valor fixo
timestampstring(12)YYMMDDHHMMSS
msgidint(5)0 a 60000
{
"cmd": "get_version",
"timestamp": "191231123456",
"msgid": 5399
}

Resposta — tópico ${facilityid}/${alias}/from/ack:

ChaveValor/tipoObservações
cmd"version"Valor fixo
timestampstring(12)YYMMDDHHMMSS
tzint(3)Timezone
msgidint(5)ID da mensagem original
versionstringVersão de firmware em uso
datestring(6)Data de publicação da versão (YYMMDD)
{
"cmd": "version",
"timestamp": "191231123456",
"tz": -3,
"msgid": 5399,
"version": "4.1.0",
"date": "191231"
}

Upgrade de firmware (upgrade)

Instrui o controlador a realizar upgrade de firmware. A mensagem deve conter um endereço HTTP(S) de onde obter o firmware; o controlador faz um GET no endereço, baixa, valida e inicia automaticamente a atualização.

ChaveValor/tipoObservações
cmd"upgrade"Valor fixo
timestampstring(12)YYMMDDHHMMSS
msgidint(5)0 a 60000
protocolstring(5)"http" ou "https"
hoststringEndereço base do host
portintPorta de conexão (geralmente 80 ou 443)
pathstringURI do arquivo
{
"cmd": "upgrade",
"timestamp": "191231123456",
"msgid": 9483,
"protocol": "https",
"host": "www.iongrade.com.br",
"port": 443,
"path": "/firmware/v1.17.3.bin"
}

Resposta (gerada após o upgrade) — tópico ${facilityid}/${alias}/from/ack:

ChaveValor/tipoObservações
cmd"upgrade_result"Valor fixo
timestampstring(12)YYMMDDHHMMSS
tzint(3)Timezone
msgidint(5)ID da mensagem original
statusstring"done" ou "error"
versionstringVersão de firmware em uso
datestring(6)Data de publicação da versão (YYMMDD)
{
"cmd": "upgrade_result",
"timestamp": "191231123456",
"tz": -3,
"msgid": 9483,
"status": "done",
"version": "v1.17.2",
"date": "191231"
}

Envio de lista de cartões (load_cards)

Instrui o controlador a buscar um novo arquivo de lista de cartões. Em caso de sucesso, a lista atual é inteiramente substituída pela nova.

ChaveValor/tipoObservações
cmd"load_cards"Valor fixo
timestampstring(12)YYMMDDHHMMSS
msgidint(5)0 a 60000
protocolstring(5)"http" ou "https"
hoststringEndereço base do host
portintPorta de conexão (geralmente 80 ou 443)
pathstringURI do arquivo
isorderedint(1)Informa se o arquivo está ordenado
orderedcountint(6)Quantidade de cartões ordenados no arquivo
{
"cmd": "load_cards",
"timestamp": "191231123456",
"msgid": 49111,
"protocol": "http",
"host": "192.168.1.88",
"port": 80,
"path": "/listascartao/lista_controlador_01.data",
"isordered": 1,
"orderedcount": 15052
}

Resposta (após a atualização) — tópico ${facilityid}/${alias}/from/ack:

ChaveValor/tipoObservações
cmd"load_cards_result"Valor fixo
timestampstring(12)YYMMDDHHMMSS
tzint(3)Timezone
timestampserverstring(12)Eco do timestamp da mensagem original
msgidint(5)ID da mensagem original
statusstring"done" ou "error"
{
"cmd": "load_cards_result",
"timestamp": "191231123458",
"tz": -3,
"timestampserver": "191231123456",
"msgid": 49111,
"status": "error"
}

Excluir todos os cartões (wipe_cards)

Exclui todos os cartões em memória.

ChaveValor/tipoObservações
cmd"wipe_cards"Valor fixo
timestampstring(12)YYMMDDHHMMSS
msgidint(5)0 a 60000
{
"cmd": "wipe_cards",
"timestamp": "191231123456",
"msgid": 4
}

Resposta — tópico ${facilityid}/${alias}/from/ack:

ChaveValor/tipoObservações
cmd"wipe_cards_ack"Valor fixo
timestampstring(12)YYMMDDHHMMSS
tzint(3)Timezone
msgidint(5)ID da mensagem original
statusstring"done" ou "error"
{
"cmd": "wipe_cards_ack",
"timestamp": "191231123456",
"msgid": 4,
"status": "done"
}

Excluir cartão específico (del)

Exclui um cartão específico da lista local.

ChaveValor/tipoObservações
cmd"del"Valor fixo
timestampstring(12)YYMMDDHHMMSS
msgidint(5)0 a 60000
cardstring(16)Número do cartão
{
"cmd": "del",
"timestamp": "191231123456",
"msgid": 8431,
"card": "A843BJ8418"
}

Resposta — tópico ${facilityid}/${alias}/from/ack:

ChaveValor/tipoObservações
cmd"del_ack"Valor fixo
timestampstring(12)YYMMDDHHMMSS
tzint(3)Timezone
msgidint(5)ID da mensagem original
statusstring"done" ou "error"
{
"cmd": "del_ack",
"timestamp": "191231123456",
"tz": -3,
"msgid": 8431,
"status": "done"
}

Inserir ou alterar cartão (ins)

Inclui ou atualiza um cartão específico sem necessidade de enviar a lista completa. Se o cartão não existir, é inserido (campos opcionais ausentes recebem valor padrão). Se já existir, os valores presentes na mensagem são atualizados (campos opcionais ausentes não são alterados). Os campos marcados com (*) são obrigatórios.

ChaveValor/tipoObservações
cmd"ins"(*) Valor fixo
timestampstring(12)(*) YYMMDDHHMMSS
msgidint(5)(*) 0 a 60000
cardstring(16)(*) Número do cartão
uidint(9)(*) ID da pessoa
tpint(1)Tipo do cartão (vide TIPOS_CARTAO). Default: 0
stsint(1)Status do cartão. 0 = Desabilitado (default); 1 = Habilitado
ch1int(1)Status no canal 1. 0 = Desabilitado; 1 = Habilitado (default)
ch2int(1)Status no canal 2. 0 = Desabilitado; 1 = Habilitado (default)
ch3int(1)Status no canal 3. 0 = Desabilitado; 1 = Habilitado (default)
uartint(1)Passagem habilitada em leitores UART. 0 = Desabilitado; 1 = Habilitado (default)
webint(1)Passagem habilitada em leitores WEB. 0 = Desabilitado; 1 = Habilitado (default)
mqttint(1)Passagem habilitada via MQTT. 0 = Desabilitado; 1 = Habilitado (default)
vsvint(1)Consultar servidor se estiver online. 0 = Desabilitado (default); 1 = Habilitado
erqint(1)Acesso condicionado à presença de Escort. 0 = Não (default); 1 = Sim
escint(1)Pode ser Escort de outras pessoas. 0 = Não (default); 1 = Sim
bioint(1)Acesso condicionado a uso de biometria. 0 = Não (default); 1 = Sim
totpint(1)Validar TOTP. 0 = Não (default); 1 = Sim
upsstring(5)Hash da senha de acesso. Se igual a "0", a senha é desabilitada. Default: "0"
vdestring(6)Validade inicial do cartão (YYMMDD). Default: "000101"
vatstring(6)Validade final do cartão (YYMMDD). Default: 991231
h1inistring(4)Faixa horária 01 — horário inicial (HHMM). Default: "0000"
h1fimstring(4)Faixa horária 01 — horário final (HHMM). Default: "2359"
h1diastring(7)Faixa horária 01 — dias válidos. Sequência de 7 caracteres "0"/"1", um por dia da semana iniciando no domingo ("1" = válida). Ex.: domingos e sextas = "1000010". Default: "1111111"
h2inistring(4)Faixa horária 02 — horário inicial (HHMM). Default: "0000"
h2fimstring(4)Faixa horária 02 — horário final (HHMM). Default: "2359"
h2diastring(7)Faixa horária 02 — dias válidos. Ex.: seg a sex = "0111110". Default: "0000000"
durint(1)0 = Cartão normal; 1 = Cartão de coação
{
"cmd": "ins",
"msgid": 8411,
"timestamp": "191231123456",
"card": "84818283",
"uid": "991",
"tp": 1,
"sts": 1,
"ch1": 1,
"ch2": 0,
"ch3": 0,
"uart": 0,
"web": 0,
"mqtt": 1,
"vsv": 1,
"erq": 0,
"esc": 0,
"bio": 0,
"totp": 0,
"ups": "0",
"vde": "190101",
"vat": "191231",
"h1ini": "0800",
"h1fim": "1800",
"h1dia": "0111110",
"h2ini": "0900",
"h2fim": "1400",
"h2dia": "1000001",
"dur": 0
}

Resposta — tópico ${facilityid}/${alias}/from/ack:

ChaveValor/tipoObservações
cmd"ins_ack"Valor fixo
timestampstring(12)YYMMDDHHMMSS
tzint(3)Timezone
msgidint(5)ID da mensagem original
statusstring"done" ou "NO ROOM"
{
"cmd": "ins_ack",
"timestamp": "191231123456",
"tz": -3,
"msgid": 8431,
"status": "done"
}

Mensagens de biometria (servidor → controlador)

Capturar template biométrico (bioget_template)

Inicia a captura de um template biométrico no controlador. O template é retornado em base64.

ChaveValor/tipoObservações
cmd"bioget_template"Valor fixo
timestampstring(12)YYMMDDHHMMSS
msgidint(5)0 a 60000
channelint(1)Canal onde será feita a captura
topicstringTópico onde a resposta deve ser enviada
{
"cmd": "bioget_template",
"timestamp": "191231123456",
"msgid": 8431,
"channel": 1
}

Resposta — tópico informado em topic:

ChaveValor/tipoObservações
cmd"bioget_template_ack"Valor fixo
timestampstring(12)YYMMDDHHMMSS
tzint(3)Timezone
msgidint(5)ID da mensagem original
statusstring"done" ou "error" ou "timeout"
qualityint(5)Qualidade da captura (0-100)
templatesizeint(5)Tamanho em bytes do template capturado
templatestringTemplate em base64
{
"cmd": "bioget_template_ack",
"timestamp": "191231123456",
"tz": -3,
"msgid": 8431,
"status": "done",
"quality": 78,
"templatesize": 12,
"template": "ababab121212cfcfcfbbaa88"
}

Obter dados sobre módulo biométrico (bioget_info)

Retorna informações sobre os módulos biométricos em uso no controlador.

ChaveValor/tipoObservações
cmd"bioget_info"Valor fixo
timestampstring(12)YYMMDDHHMMSS
msgidint(5)0 a 60000
channelint(1)Canal a consultar
{
"cmd": "bioget_info",
"timestamp": "191231123456",
"msgid": 8431,
"channel": 1
}

Resposta — tópico ${facilityid}/${alias}/biometrics/from/ack:

ChaveValor/tipoObservações
cmd"bioget_info_ack"Valor fixo
timestampstring(12)YYMMDDHHMMSS
tzint(3)Timezone
msgidint(5)ID da mensagem original
channelint(1)Número do canal
statusstring"done" ou "error"
descriptionstring(16)Descrição do modelo do módulo
maxtemplatesint(5)Capacidade máxima de templates
usedtemplatesint(5)Templates em uso
freetemplatesint(5)Templates livres
{
"cmd": "bioget_info_ack",
"timestamp": "191231123456",
"tz": -3,
"msgid": 8431,
"channel": 1,
"status": "done",
"description": "SFM5020",
"maxtemplates": 900,
"usedtemplates": 180,
"freetemplates": 720
}

Adicionar template biométrico (bioenroll)

Inclui um template biométrico no controlador.

ChaveValor/tipoObservações
cmd"bioenroll"Valor fixo
timestampstring(12)YYMMDDHHMMSS
msgidint(5)0 a 60000
channelint(1)Canal
uidintID do usuário (int32)
templatesizeint(5)Tamanho do template
templatestringTemplate em base64
{
"cmd": "bioenroll",
"timestamp": "191231123456",
"msgid": 8431,
"channel": 1,
"uid": 88841,
"templatesize": 12,
"template": "ababab121212cfcfcfbbaa88"
}

Resposta — tópico ${facilityid}/${alias}/biometrics/from/ack:

ChaveValor/tipoObservações
cmd"bioenroll_ack"Valor fixo
timestampstring(12)YYMMDDHHMMSS
tzint(3)Timezone
msgidint(5)ID da mensagem original
channelint(1)Número do canal
statusstring"done" ou "error" ou "timeout"
{
"cmd": "bioenroll_ack",
"timestamp": "191231123456",
"tz": -3,
"msgid": 8431,
"channel": 1,
"status": "done"
}

Excluir template biométrico (biodel)

Exclui um template biométrico do controlador.

ChaveValor/tipoObservações
cmd"biodel"Valor fixo
timestampstring(12)YYMMDDHHMMSS
msgidint(5)0 a 60000
channelint(1)Canal
uidintID do usuário (int32)
{
"cmd": "biodel",
"timestamp": "191231123456",
"msgid": 8431,
"channel": 1,
"uid": 4817721
}

Resposta — tópico ${facilityid}/${alias}/biometrics/from/ack:

ChaveValor/tipoObservações
cmd"biodel_ack"Valor fixo
timestampstring(12)YYMMDDHHMMSS
tzint(3)Timezone
msgidint(5)ID da mensagem original
channelint(1)Número do canal
statusstring"done" ou "error" ou "timeout" ou "nouserid"
{
"cmd": "biodel_ack",
"timestamp": "191231123456",
"tz": -3,
"msgid": 8431,
"channel": 1,
"status": "done"
}

Comandos de operação e manutenção (servidor → controlador)

Forçar modo offline (force_offline)

Força o controlador a entrar em modo offline imediatamente. Útil para manutenções programadas, evitando que a entrada em offline ocorra por timeout de comunicação.

ChaveValor/tipoObservações
cmd"force_offline"Valor fixo
timestampstring(12)YYMMDDHHMMSS
msgidint(5)0 a 60000
{
"cmd": "force_offline",
"timestamp": "191231123456",
"msgid": 8431
}

Resposta: não há. Para voltar ao modo online é necessário enviar um keepalive.

Ajustar relógio/calendário (set_date)

Embora o NEON ajuste o calendário via NTP e mantenha relógio interno com bateria, em alguns casos é necessário ajustar o relógio manualmente.

ChaveValor/tipoObservações
cmd"set_date"Valor fixo
timestampstring(12)Nova data/hora no formato YYMMDDHHMMSS
msgidint(5)0 a 60000
{
"cmd": "set_date",
"timestamp": "210311120132",
"msgid": 8431
}

Resposta:

{
"cmd": "datetime_adj",
"timestamp": "210311120132",
"tz": -3
}

Forçar relé (force_relay)

Os relés de saída podem ser forçados para os estados ligado ou desligado.

  • O forçamento se sobrepõe ao controle do controlador (ex.: se um acesso for autorizado e o relé LOCK estiver forçado para desligado, ele não será ligado).
  • O forçamento considera o estado default configurado para o relé. Se o default é ligado, forçar para ligar irá desenergizar o relé.
  • timer define o tempo (s) do forçamento. Se timer = 0, o relé fica forçado indefinidamente. Se timer > 0, ao final do período o controlador envia force_relay_ack com status igual a "end".
ChaveValor/tipoObservações
cmd"force_relay"Valor fixo
timestampstring(12)YYMMDDHHMMSS
msgidint(5)0 a 60000
relayint(1)Número do relé — 1 a 4
valueint(1)Valor do forçamento — 0 ou 1
timerint(5)Temporização — 0 a 99999 s. Se timer = 0, não temporiza
{
"cmd": "force_relay",
"msgid": 1604,
"relay": 4,
"value": 1,
"timer": 10
}

Respostas — tópico ${facilityid}/${alias}/from/ack:

{
"cmd": "force_relay_ack",
"timestamp": "211015071904",
"tz": -3,
"msgid": 1604,
"relay": 4,
"status": "done"
}
{
"cmd": "force_relay_ack",
"timestamp": "211015071904",
"tz": -3,
"msgid": 1604,
"relay": 5,
"status": "error"
}

Mensagem de ack ao final do período do forçamento:

{
"cmd": "force_relay_ack",
"timestamp": "211015071904",
"tz": -3,
"msgid": 1604,
"relay": 4,
"status": "end"
}

Remover forçamento de relé (unforce_relay)

Remove um forçamento aplicado a um relé.

ChaveValor/tipoObservações
cmd"unforce_relay"Valor fixo
timestampstring(12)YYMMDDHHMMSS
msgidint(5)0 a 60000
relayint(1)Número do relé — 1 a 4
{
"cmd": "unforce_relay",
"timestamp": "210311120132",
"msgid": 8431,
"relay": 2
}

Respostas — tópico ${facilityid}/${alias}/from/ack:

{
"cmd": "unforce_relay_ack",
"timestamp": "210311120132",
"tz": -3,
"relay": 2,
"status": "done"
}
{
"cmd": "unforce_relay_ack",
"timestamp": "210311120132",
"tz": -3,
"relay": 0,
"status": "error"
}

Imprimir ticket QR Code (print)

Envia dados para impressão de um ticket em impressora conectada a uma das UARTs do controlador. A diretiva ${qrcode} no campo data determina onde o QR Code é impresso dentro do texto.

ChaveValor/tipoObservações
cmd"print"Valor fixo
timestampstring(12)YYMMDDHHMMSS
msgidint(5)0 a 60000
datastring(512)Texto a imprimir; usar ${qrcode} para posicionar o QR Code
qrcodestring(99)QR Code a ser impresso
portint(1)UART a ser utilizada (1 ou 2)
topicstring(64)Tópico onde a resposta deve ser publicada
{
"cmd": "print",
"msgid": 22995,
"timestamp": "210626094902",
"data": "Seja benvindo${qrcode}Valido ate 31/12/2024",
"qrcode": "Conteudo do QRCode",
"port": 1,
"topic": "HOMOLOG/aurum15BF9CE8/from/ack"
}

Resposta — tópico definido em topic:

ChaveValor/tipoObservações
cmd"printer_status"Valor fixo
timestampstring(12)YYMMDDHHMMSS
tzint(3)Timezone
msgidint(5)ID da mensagem original
portint(1)UART utilizada (1 ou 2)
statusstring"ok" ou "ok low paper" ou "no paper" ou "print timeout"
{
"cmd": "print_status",
"timestamp": "210626094901",
"tz": -3,
"msgid": 22995,
"port": 1,
"status": "done"
}
note

No manual, a tabela de resposta documenta cmd como "printer_status", mas o exemplo JSON usa "print_status". Essa divergência vem da própria fonte (firmware/manual); confirmar o valor correto com o firmware antes de usar.

Forçar modo configuração (enablecfg)

Força um reset do NEON, que entra em modo configuração após o reset.

caution

Em modo configuração apenas o ponto de acesso WiFi do próprio controlador fica ativo. Será necessária intervenção no local para resetar novamente o controlador e retornar ao modo de operação normal.

ChaveValor/tipoObservações
cmd"enablecfg"Valor fixo
{
"cmd": "enablecfg"
}

Resposta: não há.


Arquivos de configuração

A leitura e o ajuste de parâmetros usam um par de comandos genéricos: getconfig / getconfig_ack (leitura) e setconfig / setconfig_ack (ajuste). O campo file identifica o arquivo de configuração; o objeto data contém os parâmetros, que variam por arquivo.

Ler arquivos de configuração (getconfig)

Lê os parâmetros de configuração da NEON. A mensagem contém o nome do arquivo; a resposta contém os dados.

Mensagem — tópico ${facilityid}/${alias}/to:

ChaveValor/tipoObservações
cmd"getconfig"Valor fixo
msgidint(5)0 a 60000
filestring(32)Nome do arquivo a ler
{
"cmd": "getconfig",
"msgid": 16041,
"file": "/config_network.json"
}

Resposta — tópico ${facilityid}/${alias}/from/ack. O cabeçalho (cmd: "getconfig_ack", timestamp, tz, msgid, file) é comum; o objeto data traz os campos específicos do arquivo lido (ver tabelas a seguir).

{
"cmd": "getconfig_ack",
"timestamp": "210401154917",
"tz": -3,
"msgid": 16049,
"file": "/config_network.json",
"data": {
"networkmode": "1"
}
}

Ajustar arquivos de configuração (setconfig)

Envia parâmetros de configuração da NEON. A mensagem tem um cabeçalho com o nome do arquivo e o objeto data com os campos a alterar. Os dados são armazenados em memória não-volátil.

info

Nas mensagens setconfig os parâmetros não são obrigatórios — podem ser enviados apenas os que se deseja alterar; os demais são mantidos intactos. Algumas mudanças têm efeito imediato; outras exigem reboot (indicado em cada arquivo abaixo).

Mensagem — tópico ${facilityid}/${alias}/to:

ChaveValor/tipoObservações
cmd"setconfig"Valor fixo
msgidint(5)0 a 60000
filestring(32)Nome do arquivo a ajustar
dataobjectParâmetros do comando (depende do arquivo)
{
"cmd": "setconfig",
"msgid": 16041,
"file": "/config_accmode.json",
"data": {
"accmode": "0"
}
}

Resposta (comum a todos os setconfig) — tópico ${facilityid}/${alias}/from/ack:

ChaveValor/tipoObservações
cmd"setconfig_ack"Valor fixo
timestampstring(12)YYMMDDHHMMSS
tzint(3)Timezone
msgidint(5)ID da mensagem original
statusstring"done" ou "error"
{
"cmd": "setconfig_ack",
"timestamp": "191231123456",
"tz": -3,
"msgid": 8431,
"status": "done"
}

Campos do objeto data por arquivo

As tabelas abaixo listam os campos do objeto data de cada arquivo de configuração. Os mesmos campos valem para a leitura (getconfig_ack) e para o ajuste (setconfig).

/config_network.json — NETWORK

Tipo de rede usado na comunicação. Exige reboot para ter efeito.

ChaveValor/tipoObservações
networkmodestring(1)"0" = Sem rede; "1" = Ethernet RJ45; "2" = WiFi

/config_ethernet.json — ETHERNET

Parâmetros da conexão Ethernet RJ45. Exige reboot para ter efeito.

ChaveValor/tipoObservações
fixipint(1)0 = IP fixo; 1 = Usar DHCP
ipstring(15)Endereço IP a utilizar
dnsstring(15)Endereço IP do servidor DNS
gatewaystring(15)Endereço IP do gateway
subnetstring(15)Máscara da rede

/config_wifi.json — WIFI

Parâmetros da conexão WiFi. Exige reboot para ter efeito.

ChaveValor/tipoObservações
fixipint(1)0 = IP fixo; 1 = Usar DHCP
ipstring(15)Endereço IP a utilizar
dnsstring(15)Endereço IP do servidor DNS
gatewaystring(15)Endereço IP do gateway
subnetstring(15)Máscara da rede
ssidstring(32)Nome da rede WiFi a conectar
passstring(16)Password
authmodestring(1)"0" = OPEN; "1" = WEP; "2" = WPA_PSK; "3" = WPA2_PSK; "4" = WPA_WPA2_PSK; "5" = WPA2_ENTERPRISE; "6" = WPA3_PSK; "7" = WPA2_WPA3_PSK

/config_mqtt.json — MQTT

Parâmetros da conexão com o broker MQTT. Exige reboot para ter efeito.

ChaveValor/tipoObservações
brokerconnectiontypestring(1)"0" = Sem conexão com broker; "1" = Accelero Cloud; "2" = Custom broker
brokermqttstring(64)URL do broker
brokerportstring(5)Porta do broker
brokerusernamestring(16)Usuário do broker
brokerpassstring(16)Senha do usuário
brokerusetlsint(1)0 = Conexão normal; 1 = Usar TLS
brokerfacilityidstring(32)Facility ID
brokerboardidstring(32)Neon ID
{
"brokerconnectiontype": "1",
"brokermqtt": "meumosquitto.com.br",
"brokerport": "1883",
"brokerusername": "admin",
"brokerpass": "senhasecreta",
"brokerusetls": 0,
"brokerfacilityid": "TESTE",
"brokerboardid": "catraca1"
}

/config_time.json — TIME

Parâmetros da conexão com o servidor NTP. Exige reboot para ter efeito.

ChaveValor/tipoObservações
ntponint(1)0 = Não usa servidor NTP; 1 = Usa servidor NTP
ntphoststring(64)URL do servidor NTP
ntpzoneint(3)Timezone
ntpregionstring(16)Região
ntpdaylightsavingint(1)0 = Não ajusta horário de verão; 1 = Ajusta horário de verão

/config_accmode.json — ACCMODE

Tipo de bloqueio a ser controlado. Efeito imediato.

ChaveValor/tipoObservações
accmodestring(1)"0" = Catraca completa; "1" = Porta completa; "2" = Duas portas; "3" = Catraca um leitor bidir + urna; "4" = Duas portas intertravadas; "5" = Registro (logger); "6" = Porta com retardo de abertura; "7" = Porta intertravada combo; "8" = Duas cancelas passagem automática; "9" = Catraca telecomando; "10" = Catraca leitores unidir controle giro; "11" = Catraca telecomando controle giro; "12" = Catraca com leitor bidirecional 3 Lock

/config_listmodecard.json — LISTMODECARD

Tratamento da lista de cartões local e tratamento de coação. Efeito imediato.

ChaveValor/tipoObservações
alwaysaskserverstring(1)"0" = Lista local + servidor; "1" = Sempre consulta servidor; "2" = Nunca consulta servidor
duressactionstring(1)"1" = Autoriza passagem em coação; "2" = Aplica política normal

/config_msgs.json — MSGS

Texto das mensagens apresentadas no display LCD. Efeito imediato. Cada chave é um código de 2 dígitos (string), com valor string(16).

ChaveSignificado
"00"Acesso solicitado
"01"Acesso autorizado
"02"Identificador inválido
"03"Identificador inativo
"04"Leitor desabilitado
"05"Acesso negado pelo servidor
"06"Password inválida
"07"Identificador data validade vencida
"08"Negado faixa horária
"09"Acesso negado escort não autorizou
"10"Digite a password
"11"Aguarde autorização do servidor
"12"Aguarde autorização pelo escort
"13"Leitor bloqueado (intertravamento)
"14"Rex bloqueado (intertravamento)
"15"Solicita id biometria (toque o sensor)
"16"Aguarde temporizador (retardo)
"17"Apresente identificação (pós retardo)
"19"Identificador inválido (pós retardo)
"30"Apresente identificação
{
"00": "ACCESS REQUESTED",
"01": "ACCESS GRANTED ",
"02": "INVALID IDENTITY",
"30": " SHOW YOUR CARD "
}

/config_readers.json — READERS

Configuração dos leitores de cartão (Wiegand/Abatrack). Efeito imediato.

ChaveValor/tipoObservações
reader1activeint(1)0 = Inativo; 1 = Ativo
reader1typestring(3)"0" = Nenhum; "1" = Wiegand 26 bits standard; "2" = Wiegand 34 bits HID N1002; "3" = Wiegand 34 bits HID H10306; "4" = Wiegand 66 TOTP; "5" = Wiegand 66 LN (Linear); "6" = Wiegand 34 Antena TAG Hex (Acura); "7" = Wiegand 26 Citrox KB; "8" = Wiegand 32 Mifare; "9" = Wiegand 34 Mifare; "10" = Wiegand 32 Mifare HID RK40; "11" = Wiegand 34 HIK DS-K1100; "101" = Abatrack standard
reader2activeint(1)Idem reader1active
reader2typestring(1)Idem reader1type
note

Na leitura (getconfig do arquivo READERS) a lista de reader1type apresentada no manual é reduzida ("0", "1", "2", "3", "101"). A relação completa acima é a do ajuste (setconfig).

/config_uarts.json — UARTS

Parâmetros das UARTs (portas seriais). Efeito imediato.

ChaveValor/tipoObservações
uart1activeint(1)0 = Inativa; 1 = Ativa
uart1typestring(1)"0" = Nenhum; "1" = Data + <CR>; "2" = QR Code Accelero (crypto); "3" = Bluetooth; "4" = Suprema modo 1:1; "5" = Suprema modo 1:N; "6" = QR Code Livo; "7" = Autodetect QRCode Livo/QRCode Accelero/Data<CR>
uart1baudstring(6)"1200", "2400", "4800", "9600", "19200", "38400", "57600" ou "115200"
uart2activeint(1)Idem uart1active
uart2typestring(1)Idem uart1type
uart2baudstring(6)Idem uart1baud

/config_relays.json — RELAYS

Parâmetros dos relés. Efeito imediato. Numeração: Relé 1 = LOCK1; Relé 2 = ALARM1; Relé 3 = LOCK2; Relé 4 = ALARM2.

ChaveValor/tipoObservações
relay1_default_statestring(1)"0" = Desligado; "1" = Ligado
relay1_preset_timerstring(3)Tempo de energização em segundos
relay2_default_statestring(1)Idem relay1_default_state
relay2_preset_timerstring(3)Idem relay1_preset_timer
relay3_default_statestring(1)Idem relay1_default_state
relay3_preset_timerstring(3)Idem relay1_preset_timer
relay4_default_statestring(1)Idem relay1_default_state
relay4_preset_timerstring(3)Idem relay1_preset_timer

/config_channels.json — CHANNELS

Parâmetros dos canais. Efeito imediato.

ChaveValor/tipoObservações
channel1checkescortint(1)0 = Não solicita escort; 1 = Exige escort
channel1checkpasswdint(1)0 = Não solicita password; 1 = Exige password
channel1checkbioint(1)0 = Não solicita biometria; 1 = Exige biometria
channel1ignorevsvint(1)0 = Verifica na lista local sem consultar servidor; 1 = Consulta servidor sem verificar lista local
channel1searchuidint(1)0 = Identifica pelo cartão; 1 = Identifica pelo ID do usuário
channel1dontuserelayalarmint(1)0 = Relé Alarme normal; 1 = Relé Alarme desabilitado
channel2checkescortint(1)Idem channel1checkescort
channel2checkpasswdint(1)Idem channel1checkpasswd
channel2checkbioint(1)Idem channel1checkbio
channel2ignorevsvint(1)Idem channel1ignorevsv
channel2searchuidint(1)Idem channel1searchuid (vale p/ canal 3)
channel2dontuserelayalarmint(1)Idem channel1dontuserelayalarm
channel3checkescortint(1)Idem channel1checkescort
channel3checkpasswdint(1)Idem channel1checkpasswd

/config_timeouts.json — TIMEOUTS

Parâmetros de timeout e timers. Efeito imediato.

ChaveValor/tipoObservações
timeout_passwordstring(2)Tempo máx (s) para entrada de password
timeout_biostring(2)Tempo máx (s) para entrada de biometria
timeout_escortstring(2)Tempo máx (s) para identificação de escort
timeout_capturestring(2)Tempo máx (s) para captura de cartão
timeout_consulta_serverstring(2)Tempo máx (s) para resposta do servidor
timeout_user_delayed_doorstring(2)Tempo máx (s) para identificação de usuário em porta com retardo
timeout_open_doorstring(2)Tempo máx (s) para detecção de porta aberta por tempo excessivo
timer_delayed_doorstring(3)Tempo default (off-line) para reidentificação em porta com retardo

/config_totp.json — TOTP

Parâmetros de validação TOTP. Efeito imediato.

ChaveValor/tipoObservações
totp_enableint(1)0 = TOTP habilitado; 1 = TOTP desabilitado
totp_keystring(20)Secret TOTP Key
totp_durationstring(3)Janela de tempo para validação (s)
totp_tolerancestring(3)Quantidade de janelas de tolerância
caution

No manual, o campo totp_enable está documentado como 0 = TOTP habilitado / 1 = TOTP desabilitado (lógica invertida em relação ao esperado). Mantido conforme a fonte; confirmar com firmware antes de usar.

/config_counter.json — COUNTER

Contadores de passagem. Disponível apenas para bloqueios telecomando com controle de giro. Efeito imediato.

ChaveValor/tipoObservações
counterAint(5)Valor do contador anti-horário
counterHint(5)Valor do contador horário

Mensagens enviadas pelo controlador

Validação online de acesso (acc_req)

Enviada quando o controlador está configurado para consultar o servidor e o cartão também está configurado para essa checagem.

Tópico: ${facilityid}/${alias}/from/access

ChaveValor/tipoObservações
cmd"acc_req"Valor fixo
timestampstring(12)YYMMDDHHMMSS
tzint(3)Timezone
msgidint(5)0 a 60000
cardstring(16)Número do cartão
channelint(1)Canal onde a requisição ocorreu
searchstring(3)Modo de busca: "ref" (por cartão) ou "uid" (por ID)
originint(2)Origem do evento (vide ORIGEM_EVENTOS)
channelauxarray[int]Canais associados à requisição (em bloqueios bidirecionais, dois canais podem estar presentes)
tpint(1)Tipo do cartão (vide TIPOS_CARTAO)
uidint(9)ID do usuário (int32)
{
"cmd": "acc_req",
"timestamp": "191231123456",
"tz": -3,
"msgid": 18651,
"card": "123456",
"channel": 1,
"origin": 2,
"channelaux": [1],
"search": "ref",
"tp": 1,
"uid": 48982
}

Resposta — tópico ${facilityid}/${alias}/to:

ChaveValor/tipoObservações
cmd"acc_req_auth"Valor fixo
timestampstring(12)YYMMDDHHMMSS
msgidint(5)ID da mensagem original
channelint(1)Canal que deve tratar a resposta
stsint(1)Código de retorno (vide STATUS_ACC_REQUEST)
uidint(9)Opcional. ID do usuário (int32)
passwordstring(5)Opcional. Hash da senha do usuário, caso o controlador deva exigir senha antes de liberar
delay1int(3)Tempo de retardo para reidentificação (s). Apenas modo 6 (porta com retardo)
delay2int(2)Limite de tempo para reidentificação (s). Apenas modo 6
channelauxstring(1)Sentido da liberação: "1" = canal 01; "2" = canal 02; "0" = ambos
templatesizeint(5)Opcional. Tamanho do template biométrico para validação
templatestringOpcional. Template biométrico em base64
disp1string(16)Opcional. Mensagem na linha 1 do display (válido só com display configurado p/ mensagens do servidor e modo Catraca Telecomando)
disp2string(16)Opcional. Mensagem na linha 2 do display (válido só com display configurado p/ mensagens do servidor)
{
"cmd": "acc_req_auth",
"timestamp": "191231123456",
"msgid": 18651,
"channel": 1,
"sts": 1,
"uid": 7718,
"password": "88147",
"channelaux": "1"
}

Validação online de escort (acc_req_escort)

Enviada quando um cartão apresentado como escort exige validação online.

Tópico: ${facilityid}/${alias}/from/access

ChaveValor/tipoObservações
cmd"acc_req_escort"Valor fixo
timestampstring(12)YYMMDDHHMMSS
tzint(3)Timezone
msgidint(5)0 a 60000
channelint(1)Canal onde a requisição ocorreu
originint(2)Origem do evento (vide ORIGEM_EVENTOS)
channelauxarray[int]Canais associados à requisição
searchstring(3)"ref" (por cartão) ou "uid" (por ID)
cardstring(16)Número do cartão da pessoa escortada
tpint(1)Tipo do cartão (vide TIPOS_CARTAO)
uidint(9)ID do usuário (int32)
card_escortstring(16)Número do cartão do escort
uid_escortint(9)ID do escort (int32)
{
"cmd": "acc_req_escort",
"timestamp": "220118124609",
"tz": -3,
"msgid": 28235,
"channel": 1,
"origin": 1,
"channelaux": [1],
"search": "ref",
"card": " 1794077",
"tp": 0,
"uid": 0,
"card_escort": " 473040",
"uid_escort": 0
}

Resposta — tópico ${facilityid}/${alias}/to:

ChaveValor/tipoObservações
cmd"acc_req_escort_auth"Valor fixo
timestampstring(12)YYMMDDHHMMSS
msgidint(5)ID da mensagem original
channelint(1)Canal que deve tratar a resposta
stsint(1)Código de retorno (vide STATUS_ACC_REQUEST)
{
"cmd": "acc_req_escort_auth",
"timestamp": "191231123456",
"msgid": 4124,
"channel": 1,
"sts": 1
}

Envio de log (log)

O controlador envia logs operacionais sempre que a conexão com o broker estiver online (logs de acesso, de sistema e outros). As mensagens são publicadas em sub-tópicos específicos por tipo de evento (origin) e por pessoa (uid), o que permite monitoramento granular. Para tratar todos os logs, basta fazer subscribe no tópico base .../from/log/#.

Tópico: ${facilityid}/${alias}/from/log/${origin}/${uid}

ChaveValor/tipoObservações
cmd"log"Valor fixo
timestampstring(12)YYMMDDHHMMSS
tzint(3)Timezone
originint(2)Origem do evento (vide ORIGEM_EVENTOS)
searchstring(3)"ref" (por cartão) ou "uid" (por ID)
uidint(9)ID do usuário do evento (int32) (vide IDENTIFICADOR_EVENTOS)
refstring(16)Número do cartão associado ao evento; string vazia se não houver
eventint(2)Identificador do evento (vide TIPOS_EVENTOS)
accmodeint(2)Modo de funcionamento do controlador (vide MODOS_CONTROLE)
{
"cmd": "log",
"timestamp": "191231123456",
"tz": -3,
"origin": 2,
"search": "ref",
"uid": 739812,
"ref": "84019809321",
"event": 2,
"accmode": 1
}

Resposta: não há.

Keepalive (keepalive)

Enviado periodicamente para que o servidor monitore o status. Publicado com flag retain_message ativa.

Tópico: ${facilityid}/${alias}/from/keepalive

ChaveValor/tipoObservações
cmd"keepalive"Valor fixo
timestampstring(12)YYMMDDHHMMSS
tzint(3)Timezone
uptimeint(9)Tempo de operação após o último reset (s)
nrestartint(9)Qtde de resets desde a fabricação
ncmqttint(9)Qtde de reconexões ao broker desde o reset
{
"cmd": "keepalive",
"timestamp": "191231123456",
"tz": -3,
"uptime": 15398,
"nrestart": 23,
"ncmqtt": 1
}

Resposta: não há.

Info (info)

Enviada periodicamente com o estado atual do controlador. Publicada com flag retain_message ativa. Também é enviada imediatamente após o comando get_info.

Tópico: ${facilityid}/${alias}/from/info

ChaveValor/tipoObservações
cmd"info"Valor fixo
timestampstring(12)YYMMDDHHMMSS
tzint(3)Timezone
boardidstringIdentificador único do controlador
serialidstringNúmero de série de fabricação
versionstringVersão de firmware em uso
capcardsintCapacidade máxima de cartões em memória
freecardsintQuantidade de cartões livres em memória
mediastringMídia de comunicação: "wired" ou "wireless"
iplocalstringConfiguração IP — endereço local
ipdnsstringConfiguração IP — servidor DNS
ipgatewaystringConfiguração IP — gateway
subnetmaskstringConfiguração IP — máscara de rede
opmodeintVide MODOS_OPERACAO
accmodeintVide MODOS_CONTROLE
reader1activeint(1)0 (inativo) ou 1 (ativo)
reader1descstringDescrição do tipo de leitor
reader2activeint(1)0 (inativo) ou 1 (ativo)
reader2descstringDescrição do tipo de leitor
uart1activeint(1)0 (inativo) ou 1 (ativo)
uart1descstringDescrição do dispositivo conectado
uart2activeint(1)0 (inativo) ou 1 (ativo)
uart2descstringDescrição do dispositivo conectado
bio1descstringDescrição do módulo biométrico do canal 1
bio1usedint(5)Templates utilizados no canal 1
bio1freeint(5)Templates livres no canal 1
bio2descstringDescrição do módulo biométrico do canal 2
bio2usedint(5)Templates utilizados no canal 2
bio2freeint(5)Templates livres no canal 2
{
"cmd": "info",
"timestamp": "191231123456",
"tz": -3,
"boardid": "aurum-4824",
"version": "v1.013.911",
"accmode": 1,
"capcards": 5000,
"freecards": 1917,
"media": "wireless",
"iplocal": "192.168.0.77",
"ipdns": "8.8.8.8",
"ipgateway": "192.168.0.1",
"subnetmask": "255.255.255.0",
"reader1active": 1,
"reader1desc": "Wiegand26",
"reader2active": 0,
"reader2desc": "",
"uart1active": 1,
"uart1desc": "Serial CRLF",
"uart2active": 1,
"uart2desc": "Serial CRLF",
"bio1desc": "SFM5020",
"bio1used": 900,
"bio1free": 100,
"bio2desc": "",
"bio2used": -1,
"bio2free": -1
}

Resposta: não há.

Status (status)

A NEON envia periodicamente seu status de comunicação. Publicada com flag retain_message ativa.

Tópico: ${facilityid}/${alias}/from/status

ChaveValor/tipoObservações
cmd"status"Valor fixo
statusstring(12)"connected" ou "disconnected"
timestampstring(12)YYMMDDHHMMSS (apenas em "connected")
tzint(3)Timezone (apenas em "connected")
  • A mensagem "disconnected" é enviada pelo broker via LWT (Last Will Testament), ou seja, quando o broker detecta a falha de comunicação com a NEON.
  • Apenas a mensagem com status "connected" possui os parâmetros timestamp e tz.
{
"cmd": "status",
"status": "connected",
"timestamp": "191231123456",
"tz": -3
}
{
"cmd": "status",
"status": "disconnected"
}

Resposta: não há.


Tabelas de referência

ORIGEM_EVENTOS

CódigoDescrição
0Eventos de sistema
1Leitor ABA/WIE — canal 1 ou REX01
2Leitor ABA/WIE — canal 2 ou REX02
3Leitor ABA/WIE — canal 3 (não usado)
4UART — canal 1
5UART — canal 2
6NÃO UTILIZADO
7WEB — canal 1
8WEB — canal 2
9WEB — canal 3
10MQTT — canal 1
11MQTT — canal 2
12MQTT — canal 3
13QRCODE — canal 1
14QRCODE — canal 2
15NÃO UTILIZADO

ESTADOS_OPERACAO

CódigoDescrição
0Normal
2Emergência
3Pânico

TIPOS_CARTAO

CódigoDescrição
0Normal / visitante
1Temporário
2Emergência
3Pânico
4QRCode dinâmico

IDENTIFICADOR_EVENTOS

ValorDescrição
"NEON"Evento interno do controlador
"MQTT_cmd"Evento associado diretamente a uma mensagem recebida via MQTT
"REX_SWITCH"Evento disparado por acionamento de botão de abertura
"DOOR_SWITCH"Evento disparado por timeout de porta aberta
"?"Evento envolve um cartão mas não foi possível identificar o usuário associado
${ID do usuário}String com o ID do usuário, quando o evento de acesso teve o usuário devidamente identificado

TIPOS_EVENTOS

CódigoDescrição
0Acesso solicitado
1Acesso autorizado
2Acesso negado (cartão não encontrado)
3Acesso negado (cartão não habilitado)
4Acesso negado (usuário não habilitado no leitor)
5Acesso negado (autorização negada pelo servidor)
6Acesso negado (senha inválida)
7Acesso negado (cartão fora da data de validade)
8Acesso negado (acesso fora da faixa horária permitida)
9Acesso negado (Escort inválido)
13Acesso negado (intertravamento leitor)
14Acesso negado (intertravamento REX)
20Acesso autorizado não realizado
21Acesso autorizado pelo servidor
22Acesso autorizado por um Escort
33Abertura de bloqueio via botão
34Passagem efetivamente realizada
35Modo de emergência ligado
36Modo de emergência desligado
37Timeout de porta aberta
39Porta forçada
40Acesso solicitado bidirecional
41Acesso autorizado bidirecional
42Identificador lido no modo LOGGER
44Porta normalizada

MODOS_OPERACAO

CódigoDescrição
0Se a comunicação com o servidor está OK, consulta o servidor (exceto identificadores marcados para não consultar). Em modo contingência, usa a lista local
1Consulta o servidor por identificadores detectados; não usa lista local (exceto cartões de coação existentes na lista local quando em contingência)
2Busca identificadores apenas na lista local; não consulta o servidor

MODOS_CONTROLE

CódigoDescrição
0Catraca completo, com leitores unidirecionais
1Porta completa, com leitores unidirecionais
2Duas portas, cada uma com leitor para entrada e botão para saída
3Catraca bidirecional com urna opcional
4Duas portas intertravadas
5Modo logger
6Porta com retardo de abertura

STATUS_ACC_REQUEST

CódigoDescrição
0Acesso negado
1Acesso autorizado
2Acesso condicionado à presença de Escort
3Acesso condicionado à autorização por senha
4Acesso condicionado a biometria
5Acesso pré-autorizado com retardo (parâmetros delay1 e delay2)