Ao contrario do que a maioria faz, usando MQTT para usar no Tasmota, eu quero utilizar o MQTT para me comunicar com um sub / pub externo (fora da minha rede local).
Criei um aplicativo que utiliza o MQTT para se comunicar com o HA, mas estou tendo dificuldade para acessar o broker de uma rede externa. Fiz testes na rede interna com o programa MQTT Explorer no PC e o MQTT Dash no smartphone e está tudo OK na rede local.
Utilizo o Nabu Casa para acessar remotamente o meu HA ja que minha rede tem CGNAT e o tutorial do Argo Tunnel do cloudflare não funcionou aqui.
Alguém saberia se eu consigo acessar o meu broker MQTT de uma rede externa?
Olha eu não compreendo 100% como funciona a tecnologia do argo mas acredito que existe a possibilidade que não vá funcionar com mqtt tradicional. Talvez usando mqtt over websockets funcione (nas configurações do mosquitto tem opção pra escolher algumas portas uma delas é pra websockets).
Outra coisa pra se ter em mente é que se for expor seu broker pra internet o ideal é usar tls o que complica bastante em alguns casos
Gostaria também de aproveitar pra sugerir algumas alternativas,
A primeira seriar usar um serviço de broker mqtt na cloud, por conta do cgnat.
A segunda é usar vpn pra trabalhar com o mqtt como se estivesse em rede local.
E a terceira é nem usar o mqtt externamente, sem saber mais detalhes do que você quer fazer fica difícil dar uma opção mais concreta de como fazer sem Mqtt mas uma opção seria usar a api do ha.
Obrigado por responder Ariel.
Poderia me falar mais sobre a api do HA?
Algum material pra dar uma olhada?
Não conheço.
Pensei em de repente fazer por webhook mas tb não tenho conhecimento.
Essas foram as combinações que funcionaram comigo:
mqtt.meudominio.com.br:80 - SSL desmarcado
mqtt.meudominio.com.br:443 - SSL marcado
mqttws.meudominio.com.br:80 - SSL desmarcado
mqttws.meudominio.com.br:443 - SSL marcado
Percebi que, independente da combinação, HiveMQ sempre usa o protocolo “wss”.
Vale salientar que para conseguir conectar usando porta 80, precisei acessar “about:config” do Firefox e setar “true” temporariamente na diretiva “network.websocket.allowInsecureFromHTTPS”
Eu fiz um teste sem o dominio próprio e funcionou, agora estou criando com dominion proprio mas o addon nao reconhece o dominio, esta criando um dominio temporario pra mim.
Desculpa a falta de conhecimento, mas não ficou claro pra mim onde devo colocar os dados do MQTT.
Coloquei no ingress mas deu erro.
log
Validation failed: Rule #2 is matching the hostname ‘’, but this will match every hostname, meaning the rules which follow it will never be triggered.
[15:18:01] FATAL: Config file is invalid
colocou usuário e senha válidos ?
qual porta informou ? se tiver colocado porta 443, marcou a opção SSL ?
colocou o host igual ao que você configurou no argo ?
qual mensagem de erro ?
não precisa redirecionar nenhuma porta
que eu saiba, as únicas disponíveis usando argo são 80 e 443.
mas internamente, ele redireciona pra qualquer outra que você configurar lá no ingress.
Do nada começou a funcionar sem eu fazer nada. hehe
Mas só funciona neste site hivemq.com
Quanto testo em outros programas ou aplicativos o broker não conecta e este site não conecta no broker de testes do mosquitto. Porquê?
Eu coloquei o broker de testes do mosquitto no HA e está recebendo os dados certinho também.
Com o broker de testes, meu app conectou e conseguiu postar, no que configuramos ele não conecta.
Não entendi o que está falando.
Precisa detalhar um pouco mais.
Talvez ajude se informar alguns prints, configurações usadas, links e/ou nomes dos programas.
o protocolo mqtt:// pode ser usado se o acesso for a partir da rede interna.
pelo cloudflare, acredito que precise ser http://, https://, ws:// ou wss://
não tenho mqtt explorer instalado para testar.
o mqtt explorer está instalado num computador que está na mesma rede do home assistant ?
mqtt explorer permite fazer chamadas para um host IP ?
quais são as opções de protocolos disponíveis que aparece nesse programa ?
faltou print do principal que são as configurações do serviço que está dando problema.
aparentemente, você está tentando informar o IP da rede local. nesse caso, não estaria passando pelo cloudflare tunnel.