Skip to main content

Integração MQTT - IRIDIUM

Documentação restrita

Este documento descreve a API de desenvolvedor do protocolo de integração do módulo de I/O IRIDIUM. 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 o módulo de I/O IRIDIUM e um servidor externo quando um broker MQTT atua como intermediário da comunicação. A estrutura de tópicos, o formato das mensagens e o fluxo de informações descritos aqui são tudo o que é necessário para integrar o módulo de I/O ao servidor.

Fonte: IRIDIUM — Módulo de I/O, Manual de Integração MQTT v1.2 (dez/2021).

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 módulo de I/O (keepalives, atualizações de status).
    • Mensagens enviadas pelo módulo de I/O sempre que ocorrem eventos específicos (alteração no estado de inputs, por exemplo).
    • Mensagens enviadas de forma independente e automática pelo servidor (keepalives).
    • Mensagens enviadas pelo servidor sempre que ocorrem eventos específicos (acionamento de relés, envio de configurações).
  • Muitas mensagens exigem resposta. Por exemplo, uma mensagem enviada pelo servidor para comandar um output do módulo de I/O exige que o módulo gere uma nova mensagem-resposta informando o status da operação.
note

O módulo de I/O IRIDIUM não faz controle de acesso (não trata cartões, biometria, escort nem listas de identificadores). Seu protocolo MQTT é dedicado ao monitoramento de 8 entradas digitais e à atuação sobre 4 saídas a relé, além dos comandos comuns de operação, configuração e impressão de ticket.

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 módulos de I/O e no servidor 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 módulos de I/O:

cond5991/#

Todos os módulos de I/O 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 módulo de I/O específico. Cada módulo de I/O possui um alias/apelido que faz parte do tópico:

cond5991/modulodeio88/to (servidor → módulo de I/O específico)
cond5991/modulodeio88/from (módulo de I/O → servidor)

A tabela a seguir resume a forma mais simples de realizar uma integração (facility = Facility ID; alias = apelido do módulo de I/O):

TópicoOrigemDestino
${facility}/broadcast/toServidorTodos os módulos de I/O
${facility}/${alias}/toServidorMódulo de I/O específico
${facility}/${alias}/from/#Módulo de I/O específicoServidor
${facility}/+/from/#Todos os módulos de I/OServidor

Tópicos das variáveis de entrada e saída

Para monitoramento e atuação sobre variáveis existem tópicos específicos. O nome do tópico de monitoramento do valor de uma determinada variável é dado por:

${facility}/io/${boardId}/status/${variavel}

Para atuar sobre uma variável, o nome do tópico é dado por:

${facility}/io/${boardId}/setoutput/${variavel}

A tabela abaixo resume a formação dos tópicos de I/O:

TópicoOrigemDestino
${facility}/io/${alias}/status/${variavel}Módulo de I/O específicoServidor
${facility}/io/${alias}/setoutput/${variavel}ServidorMódulo de I/O específico

O módulo de I/O IRIDIUM possui 8 entradas digitais e 4 saídas a relé. Os nomes das variáveis (${variavel}) são:

Entrada/SaídaNome da variável
Entrada 1input1
Entrada 2input2
Entrada 3input3
Entrada 4input4
Entrada 5input5
Entrada 6input6
Entrada 7input7
Entrada 8input8
Saída 1relay1
Saída 2relay2
Saída 3relay3
Saída 4relay4
Variáveis de I/O

As variáveis input1..input8 (entradas) só geram mensagens de status (módulo → servidor). As variáveis relay1..relay4 (saídas) podem gerar mensagens de status e também ser comandadas via setoutput (servidor → módulo). Ver Atuar sobre variáveis de saída e Alteração de estado de variáveis.

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, 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 módulo de I/O.

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 módulo de I/O.

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.


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 módulos de I/O determinem se devem entrar em modo de contingência. Caso o módulo de I/O 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
{
"cmd": "keepalive",
"timestamp": "191231123456"
}

Resposta: não há.

Solicitar envio de estado (get_info)

Solicita ao módulo de I/O que envie uma mensagem com informações sobre seu estado atual.

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

Resposta: não há resposta direta. O módulo de I/O enviará imediatamente uma mensagem de atualização de estado (ver Info).

Buscar versão (get_version)

Obtém a versão do módulo de I/O 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
msgidint(5)ID da mensagem original
versionstringVersão de firmware em uso
{
"cmd": "version",
"timestamp": "210626084338",
"msgid": 5399,
"version": "1.1.0"
}

Upgrade de firmware (upgrade)

Instrui o módulo de I/O a realizar upgrade de firmware. A mensagem deve conter um endereço HTTP(S) de onde obter o firmware; o módulo 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
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",
"msgid": 9483,
"status": "done",
"version": "v1.17.2",
"date": "191231"
}

Forçar modo offline (force_offline)

Força o módulo de I/O 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 módulo de I/O IRIDIUM ajuste o calendário via NTP e mantenha relógio interno sustentado por 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",
"msgid": 8431
}

Imprimir ticket QRCode (print)

Envia dados para impressão de um ticket em impressora conectada a uma das UARTs do módulo de I/O. 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 bem vindo ${qrcode} Valido ate 31/12/2024",
"qrcode": "Conteudo do QRCode",
"port": 1,
"topic": "MEUFACILITY/iridiumABCD1234/returnfromprintjob/8181"
}

O parâmetro data contém os dados a serem impressos no ticket, com o texto e a posição do QR Code dentro dele. Para maior compatibilidade, sugere-se o envio exclusivo de caracteres ASCII (chars 20 a 126). Para quebras de linha, utilizar um caractere CR (char 10). A string ${qrcode} no campo data é substituída por um QR Code contendo os dados informados no campo qrcode.

Resposta — tópico definido em topic:

ChaveValor/tipoObservações
cmd"printer_status"Valor fixo
timestampstring(12)YYMMDDHHMMSS
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",
"msgid": 22995,
"port": 1,
"status": "done"
}
note

A tabela da resposta documenta cmd como "printer_status", mas o exemplo da fonte usa "print_status". Conferir o valor exato com o firmware antes de tratar a mensagem.

Atuar sobre variáveis de saída

Para atuar sobre variáveis de saída (acionar relés, por exemplo) deve-se enviar uma mensagem para o tópico específico daquela variável com o valor a ser escrito.

Tópico: ${facilityid}/io/${alias}/setoutput/${variavel}

Onde ${variavel} é uma das saídas a relé (relay1..relay4).

ChaveValor/tipoObservações
timestampstring(12)YYMMDDHHMMSS
valuestring(n)Valor a escrever na variável: "0" = Desligado; "1" = Ligado
{
"timestamp": "210625160134",
"value": "0"
}

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 do módulo de I/O IRIDIUM. 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_time.json"
}

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

{
"cmd": "getconfig_ack",
"timestamp": "210626084700",
"msgid": 16041,
"file": "/config_time.json",
"data": {
"ntpon": 1,
"ntphost": "ntp.iongrade.com.br",
"ntpzone": "-3",
"ntpdaylightsaving": 0
}
}

Ajustar arquivos de configuração (setconfig)

Envia parâmetros de configuração do módulo de I/O IRIDIUM. 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_relays.json",
"data": {
"relay1_default_state": "0",
"relay2_default_state": "0",
"relay3_default_state": "1",
"relay4_default_state": "0"
}
}

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

ChaveValor/tipoObservações
cmd"setconfig_ack"Valor fixo
timestampstring(12)YYMMDDHHMMSS
msgidint(5)ID da mensagem original
statusstring"done" ou "error"
{
"cmd": "setconfig_ack",
"timestamp": "191231123456",
"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 (WiFi ou Ethernet RJ45). Exige reboot para ter efeito.

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

Na leitura (getconfig) o campo networkmode admite "5" = GSM 4G/5G. Na tabela de ajuste (setconfig) do manual o valor "5" não aparece listado — confirmar com o firmware se o ajuste para GSM via setconfig é suportado.

/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_modem.json — GSM 4G/5G

Parâmetros da conexão de rede GSM 4G/5G. Exige reboot para ter efeito.

ChaveValor/tipoObservações
modemtypestring(1)"0" = Nenhum; "1" = BK-SIM7600 4G
apnstring(15)Nome da operadora
userstring(15)Usuário
passstring(15)Password
authenticatepppint(1)Fazer autenticação PPP. 0 = Não; 1 = Sim
{
"modemtype": "1",
"apn": "claro.com.br",
"user": "claro",
"pass": "claro",
"authenticateppp": 1
}

/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)Host do broker
brokerportstring(5)Porta do broker
brokerusernamestring(16)Usuário do broker
brokerpassstring(16)Senha do usuário
brokerusetlsint(1)0 = Não utilizar TLS; 1 = Usar TLS
brokerfacilityidstring(32)Facility ID
brokerclientidstring(32)Client ID no broker
{
"brokerconnectiontype": "1",
"brokermqtt": "meumosquitto.com.br",
"brokerport": "1883",
"brokerusername": "admin",
"brokerpass": "senhasecreta",
"brokerusetls": 0,
"brokerfacilityid": "TESTE",
"brokerclientid": "iridium3"
}

/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)Host 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
note

Na fonte, a linha do campo de horário de verão aparece como int(1) na coluna de chave; pelo exemplo de mensagem o nome correto é ntpdaylightsaving. Adotado ntpdaylightsaving conforme o exemplo do manual.

/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" = Printer ATM 202 Ticket
uart1baudstring(6)"1200", "2400", "4800", "9600", "19200", "38400", "57600" ou "115200"
uart2activeint(1)Idem uart1active
uart2typestring(1)Idem uart1type
uart2baudstring(6)Idem uart1baud
note

A tabela de leitura (getconfig) do arquivo UARTS no manual lista uart1type como "0" = Nenhum / "9" = Printer ATM 202 Ticket, enquanto a tabela de ajuste (setconfig) lista "0" = Nenhum / "1" = Printer ATM 202 Ticket. Os exemplos de mensagem da fonte usam "uart1type": "9". Há divergência entre leitura e ajuste na fonte — confirmar o valor exato com o firmware antes de usar.

/config_relays.json — RELAYS

Parâmetros das 4 saídas a relé. Efeito imediato.

ChaveValor/tipoObservações
relay1_default_statestring(1)"0" = Desligado; "1" = Ligado
relay2_default_statestring(1)Idem relay1_default_state
relay3_default_statestring(1)Idem relay1_default_state
relay4_default_statestring(1)Idem relay1_default_state
relay1_durationstring(3)Tempo de duração da informação do relé 1 (*)
relay2_durationstring(3)Tempo de duração da informação do relé 2 (*)
relay3_durationstring(3)Tempo de duração da informação do relé 3 (*)
relay4_durationstring(3)Tempo de duração da informação do relé 4 (*)

(*) O tempo de duração da informação indica o tempo (em segundos) em que a informação da variável deve ser considerada válida. Ao enviar uma informação sobre o estado de uma variável, o módulo de I/O reenvia ciclicamente a informação 5 segundos antes da duração caducar. O valor "0" desliga o envio cíclico da informação.

{
"relay1_default_state": "0",
"relay2_default_state": "0",
"relay3_default_state": "0",
"relay4_default_state": "0",
"relay1_duration": "30",
"relay2_duration": "30",
"relay3_duration": "30",
"relay4_duration": "30"
}

/config_inputs.json — INPUTS

Parâmetros das 8 entradas de sinal. Efeito imediato.

ChaveValor/tipoObservações
input1_default_statestring(1)"0" = Desligado; "1" = Ligado
input2_default_statestring(1)Idem input1_default_state
input3_default_statestring(1)Idem input1_default_state
input4_default_statestring(1)Idem input1_default_state
input5_default_statestring(1)Idem input1_default_state
input6_default_statestring(1)Idem input1_default_state
input7_default_statestring(1)Idem input1_default_state
input8_default_statestring(1)Idem input1_default_state
input1_durationstring(3)Tempo de duração da informação da entrada 1 (*)
input2_durationstring(3)Tempo de duração da informação da entrada 2 (*)
input3_durationstring(3)Tempo de duração da informação da entrada 3 (*)
input4_durationstring(3)Tempo de duração da informação da entrada 4 (*)
input5_durationstring(3)Tempo de duração da informação da entrada 5 (*)
input6_durationstring(3)Tempo de duração da informação da entrada 6 (*)
input7_durationstring(3)Tempo de duração da informação da entrada 7 (*)
input8_durationstring(3)Tempo de duração da informação da entrada 8 (*)

(*) O tempo de duração da informação indica o tempo (em segundos) em que a informação da variável deve ser considerada válida. Ao enviar uma informação sobre o estado de uma variável, o módulo de I/O reenvia ciclicamente a informação 5 segundos antes da duração caducar. O valor "0" desliga o envio cíclico da informação.

{
"input1_default_state": "0",
"input2_default_state": "0",
"input3_default_state": "0",
"input4_default_state": "0",
"input5_default_state": "0",
"input6_default_state": "0",
"input7_default_state": "0",
"input8_default_state": "0",
"input1_duration": "30",
"input2_duration": "30",
"input3_duration": "30",
"input4_duration": "30",
"input5_duration": "30",
"input6_duration": "30",
"input7_duration": "30",
"input8_duration": "30"
}

Mensagens enviadas pelo módulo de I/O

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
{
"cmd": "keepalive",
"timestamp": "191231123456"
}

Resposta: não há.

Info (info)

Enviada periodicamente com o estado atual do módulo de I/O. 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
boardidstringIdentificador único do módulo de I/O
versionstringVersão de firmware em uso
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
uart1activeint(1)0 (inativo) ou 1 (ativo)
uart1descstringDescrição do dispositivo conectado
uart2activeint(1)0 (inativo) ou 1 (ativo)
uart2descstringDescrição do dispositivo conectado
{
"cmd": "info",
"timestamp": "210626074341",
"boardid": "iridium15BF9CE8",
"version": "1.1.0",
"media": "wireless",
"iplocal": "192.168.17.70",
"ipdns": "192.168.17.1",
"ipgateway": "192.168.17.1",
"subnetmask": "255.255.0.0",
"uart1active": 1,
"uart1desc": "Printer ATM 202 Ticket",
"uart2active": 1,
"uart2desc": "Printer ATM 202 Ticket"
}

Resposta: não há.

Status (status)

O módulo de I/O IRIDIUM envia periodicamente seu status atual de conexã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"

A mensagem com status "disconnected" é enviada pelo broker via LWT (Last Will Testament), ou seja, quando o broker detecta a falha de comunicação com o módulo de I/O IRIDIUM.

{
"cmd": "status",
"status": "connected"
}

Resposta: não há.

Alteração de estado de variáveis

O módulo de I/O IRIDIUM envia uma mensagem sempre que há alteração de status de variáveis de entrada e saída. Existe um tópico específico para cada variável (input1..input8, relay1..relay4).

Tópico: ${facilityid}/io/${alias}/status/${variavel}

ChaveValor/tipoObservações
timestampstring(12)YYMMDDHHMMSS
valuestring(1)Valor da variável: "0" = Desligada; "1" = Ligada
deltastring(1)Alteração de valor desde a última informação: "0" = Não houve alteração; "1" = Houve alteração
timestampdeltastring(12)YYMMDDHHMMSS do horário da última alteração de valor
durationstring(3)Tempo (s) em que esta informação pode ser considerada válida
{
"timestamp": "210630054437",
"value": "0",
"delta": "0",
"duration": "30",
"timestampdelta": "210630054231"
}

Resposta: não há.