Conexão MQTT instável

Boa tarde, Gabriel!

A desconexão pode ocorrer devido a várias situações.
Analisando seu código, me parece ele faz ingestão excessiva de dados, que vamos explicar adiante.
Você pode consultar em nossa documentação a listagem completa dos motivos de desconexão:

Vamos analisar duas causas que podem ocorrer:

1 - Alta taxa de ingestão de dados.
erro: Connection <outbound|inbound> throughput limit exceeded :
Temos o limite de 30 mensagens a cada 15 segundos, ou seja, analisando seu código (posso estar enganado), mas me parece que você “dispara” 3 payloads por segundo, então já ultrapassa este limite, veja a documentação:

Você pode disparar 1 só payload com as 3 temperaturas juntas.
Tente montar algo assim:

{ "data" 
   { "tds" : valor_TDS , 
     "temperature" :  valor_Temperatura , 
     "distance" ; valor_Distancia
   } 
}

2 - keepalive timeout
Muito provavelmente seu problema é o item 1, mas vale trazermos esta informação aqui.
É importante saber a configuração deste timeout “no seu device”.
O Keepalive timeout força uma espécie de PING que seu device precisa enviar para informar que “está vivo”, caso contrário, o servidor irá fechar a comunicação.

No mesmo link acima, na documentação é citado este timeout, que na Plataforma está em 90 segundos (por isto que acredito que seu problema seja o Item1, visto que seu device comunica a cada segundo).

Quando se utiliza bibliotecas de Arduino para ESP32 ou ESP8266, é necessário saber como está ajustada esta variável.

existem bibliotecas nas quais você pode ajustar este valor, por exemplo:

client.setKeepAlive( MQTT_KEEPALIVE );

Outras causas da desconexão ocorrem, como a própria renovação de conexão em redes de telefonia, que ocorre com certa frequência, causando quedas durante o dia.

2 curtidas