SERVIÇO

MQTT Engine

MQTT para a frota de dispositivos Cams. O MQTT Engine é um consumidor de backend atrás do EMQX que assina tópicos compartilhados de frequência e presença, encaminha os eventos ao mesmo pipeline de frequência dos transportes HTTP e TCP e publica envelopes de comandos do servidor para o dispositivo.

Visão geral

Uma engine de transporte MQTT que recebe eventos de frequência e envia comandos aos dispositivos por um broker EMQX — feita para grandes frotas conectadas.

O MQTT Engine é o transporte MQTT da família de engines da Cams, o equivalente do HTTP e do TCP persistente. Ele roda como um consumidor de backend atrás de um broker EMQX: assina os tópicos compartilhados de frequência e presença em api/mqtt/v1/{sn}/, encaminha cada evento ao pipeline compartilhado e publica comandos do servidor para o dispositivo no tópico de comandos como envelopes JSON compatíveis com versões futuras. O EMQX encerra as sessões TLS, a autenticação, o QoS e o last-will dos dispositivos; várias instâncias da engine fazem balanceamento de carga por assinaturas compartilhadas do EMQX em frotas grandes.

SERVIÇOMQTTEMQXTLSJSONC++
Esquema de tópicos MQTT (EMQX)
# device -> server (attendance)
api/mqtt/v1/{sn}/evt   { "user_id":"1001", "att_time":"...", "att_state":1 }
# device -> server (presence / LWT)
api/mqtt/v1/{sn}/st    { "online": true }
# server -> device (command)
api/mqtt/v1/{sn}/cmd   { "id":"c1", "op":"sync_user", "data":{} }

Recursos

O que ele faz

Ingestão via MQTT

Assina os tópicos de eventos compartilhados e encaminha cada evento de frequência ao mesmo pipeline de armazenamento e envio do HTTP e do TCP.

Acompanhar a presença

Consome o tópico de presença e o last-will, para que desconexões detectadas pelo broker marquem o dispositivo como offline.

Enviar comandos

Publica comandos em fila do servidor para o dispositivo no tópico de comandos de cada dispositivo, como envelopes JSON com QoS 1.

Escala horizontal

As assinaturas compartilhadas do EMQX fazem o balanceamento de carga da frequência entre várias instâncias da engine em grandes frotas de dispositivos.

Funcionalidades

Tudo incluído

  • Front-end de transporte MQTT para a frequência, par dos engines HTTP e TCP nativos
  • Esquema de tópicos api/mqtt/v1/{sn}/{evt|cmd|st} alinhado ao app e à ACL do EMQX
  • Consumidor de backend atrás do EMQX: as assinaturas compartilhadas fazem balanceamento de carga entre N instâncias
  • Ingere no pipeline compartilhado eventos de frequência com payload idêntico ao do corpo de punch do HTTP
  • Presença e last-will pelo tópico de status, para que desconexões marquem os dispositivos como offline
  • Envio de comandos do servidor ao dispositivo como envelope JSON {id, op, data} compatível com versões futuras, com QoS 1
  • TLS até o broker com verificação de CA; a engine usa uma conta de backend, não um número de série de dispositivo
  • Build multiplataforma (Linux e Windows) sobre o Eclipse Paho C++

Crie com o MQTT Engine

Pegue uma chave, leia a documentação e publique. Nossa equipe ajuda na sua primeira integração.

FAQ

Perguntas frequentes

Como o MQTT Engine se relaciona com o EMQX?

O EMQX continua sendo o broker que encerra as sessões TLS, a autenticação, o QoS e o last-will dos dispositivos. O MQTT Engine é um consumidor de backend que assina tópicos compartilhados para ingerir a frequência e publica comandos para os dispositivos.

Posso executar várias instâncias do MQTT Engine?

Sim. As assinaturas compartilhadas do EMQX fazem o balanceamento de carga dos tópicos de frequência e presença entre todas as instâncias em execução, então você escala adicionando instâncias.

Qual é o formato dos comandos do servidor para o dispositivo?

Um envelope JSON {id, op, data} no tópico de comandos com QoS 1, em que op é o único campo obrigatório e ops desconhecidas são ignoradas por dispositivos mais antigos, para compatibilidade com versões futuras.

Relacionados

Explore mais da plataforma