Skip to content
mobius1qwe edited this page Oct 27, 2026 · 1 revision

Home > MQTT > MQTT-SN

MQTT-SN

Important

Em desenvolvimento (2.0). Ainda não está numa versão lançada e pode mudar. O MQTT-SN 2.0 é um rascunho da OASIS: pode mudar até ser publicado.

Nível: intermediário

Em uma frase: o MQTT-SN é o MQTT para UDP e redes de sensores: pacotes menores, tópicos trocados por números e aparelhos que dormem; o TRALMQTTSNClient fala com qualquer gateway, e o TRALMQTTSNGateway põe esses aparelhos dentro do broker do RAL.

Você vai precisar: o pacote RALModuleMQTTPackage; para DTLS, a OpenSSL.

O gateway, na IDE

  1. Com um TRALMQTTBroker no formulário, coloque um TRALMQTTSNGateway (paleta RAL - Server) e ligue Broker.
  2. Port é a porta UDP (1884). DTLSPort abre UDP com DTLS, com o certificado do broker.
  3. Versions diz quais versões aceita (1.2 e 2.0, juntas). PredefinedTopics lista os tópicos conhecidos dos dois lados (7=casa/porta).
  4. Ligue o broker: o gateway sobe com ele.

Cada aparelho MQTT-SN vira uma sessão do próprio broker: um cliente MQTT que assina casa/# recebe o que o aparelho publica, e o contrário.

O cliente

RALMQTTSNClient1.Host := '192.168.0.10';
RALMQTTSNClient1.SNVersion := sv12;
RALMQTTSNClient1.Connect;
RALMQTTSNClient1.Subscribe('casa/porta', mqQoS1);
RALMQTTSNClient1.Publish('casa/sensor/1', '23.5', mqQoS1);
  • Sem Host e com GatewayDiscovery, o cliente procura o gateway pela rede.
  • QoS -1: PublishMinusOne publica sem conexão, num tópico predefinido ou de dois caracteres.
  • Dormir: Sleep_(segundos) avisa o gateway, que guarda as mensagens; Wake busca o que chegou e o cliente volta a dormir.
  • Um pedido por vez, como o padrão manda; cada um é reenviado a cada RetryInterval até RetryCount vezes.

Erros comuns

sintoma causa o que fazer
"No MQTT-SN gateway answered" a busca não achou ninguém informe Host e Port
QoS -1 não chega tópico que não é predefinido nem de dois caracteres (1.2) PredefinedTopics iguais no cliente e no gateway
o aparelho some depois de dormir dormiu mais que o combinado o gateway espera 1,5 vez o tempo de Sleep_; acorde antes

Veja também

Clone this wiki locally