Desconexão do mqtt broker (home assistant)

Pessoal

Estou tendo um problema com uma conexão no Home Assistant, tenho dois Arduino mega conectado via LAN pelo protocolo MQTT, o dois Arduino estão com praticamente todas as portas sendo utilizadas, cada um atende metade da automação da casa. Pois bem a programação de cada placa é idêntica o que muda é o IP, MAC, usurário etc. Acontece que uma das placas, quando manda os comandos pelo Home Assistant, é decontectada “ has exceeded timeout , disconnecting.”. Já fiz de tudo, testei cabo de rede, troque as placas enfim não sei o que poderia seria. A outra placa é completamente estável. Se eu não faço nada a placa fica conectada ao broker do Home Assistant mas quando eu mando o comando ela desconecta. Alguém podeira me ajudar?

Por acaso vc não está usando o mesmo nome nas duas placas? O topico onde elas publicam se estão online/offline (normalmente /algumacoisa/LW) é o mesmo? Já tive um problema semelhante onde dois esp8266 com o mesmo firmware ficavam “brigando” no MQTT :-).

Uma placa controla 24 lâmpadas e a outra 27 lampadas e alguns sensores, as lâmpadas tem tbm interruptor físico. Cada lâmpada tem um tópico diferente. Eu já testei com uma só placa já inverti o equipamento. A placa que se desconecta e a que possui 24 relés. Por incrível que pareca depois de dar 5 ou 6 comandos ela se desconecta por timeout. A outra funciona 100%. Eu já reinstalei o HA hoje. Já não sei mais o que fazer

O problema pode não estar no MQTT então mas sim na rede. Tem alguns testes que vc pode tentar:

  1. deixar uma máquina “pingando” a placa. Perde pacote?
  2. Se for wifi, tentar chegar mais proximo do AP e/ou verificar a qualidade do sinal.
  3. vc ja usou algum cliente MQTT pra ver o que a placa tá transmitindo? Talvez te de alguma dica…
  4. por fim… pode ser alguma encrenca com o hardware mesmo! A outra funciona certinho com esse firmware?

Um dos problemas nisso tudo é que quanto o HA desconecta a placa ela só se conecta se seu resetar. Fiz algo palhativo. Então toda vez que o broker desconecta a placa eu refaço a conexão completa, neste caso eu alterei um pouco a voide reconecta. Isso já fez com que a placa se auto reconecte. Tem em tirei todos os delays da programação e coloque um delay de 100 ms no voide loop e por fim mudei a biblioteca da pubsubclient do arduíno na parte de keepalive de 15 mudei pra 60 nesta caso estou testando ainda. Com estas alterações ainda há as desconexões mas de forma palhativa já consigo usar o equipamento até que consiga descobrir o que realmente há

hm… Agora que vc falou eu lembrei de um problema relativamente parecido mas que tb estava relacionado com tempo e tamanho de buffers. Foi uma boa idéia esse delay no loop principal e o keepalive.