Acessar o servidor mosquitto MQTT de uma rede externa

O broker de testes do mosquito é externo mas eu consigo conectar e usar dessa forma.

Para testar o meu broker usei essa configuração, mas não tive sucesso. Só consigo acessa-lo pelo site que me recomendou para teste hivemq.com

o mqtt explorer está instalado num computador que está na mesma rede do home assistant ?

Sim, porém fiz testes usando o wi-fi (hotspot) do meu celular (usando 4G) para o computador e conectou normalmente.

mqtt explorer permite fazer chamadas para um host IP ?

Ta falando disso que esta na imagem? Porém todos os programas que eu testei não se conectaram ao meu broker mas conectaram ao servidor de testes mosquitto que é externo.

quais são as opções de protocolos disponíveis que aparece nesse programa ?

mqtt:// e ws://

Meu foco é no App inventor, mas uso estes outros programas para validar que não é um problema no meu app. Com o servidor de testes do mosquitto (que é externo) todos eles funcionam, inclusive meu app (consegui enviar comandos do app na rede externa para minha casa e controlei o dispositivo que usei para teste).

Teste isso…

protocolo: ws://
host: mqttws.wilkerzamboni.tk (esse é o que está pra porta 1884 - mqtt over websockets, né isso ?)
port: 80
username: usuário válido
password: senha do usuário válido
validate certificate: desmarcado
encryption (tls): desmarcado
basepath: vazio ou “mqtt” sem aspas

se funcionar, daí você pode testar algumas combinações do “validate certificate” e “encryption (tls)” e porta 443

também não uso app inventor, mas você está certo em testar em outras ferramentas.
se funcionar nela, deve funcionar no app inventor usando as mesmas configurações.

No MQTT Explorer funcionou para a porta 80, para a porta 443 funcionou com Encryption (tls).

No App inventor não funcionou para nenhum dos dois casos. Essa é a foto do menu de configuração

image

O site de documentação é Ullis Roboter Seite/AI2 MQTT

Cadê o client ID ? mandou vazio mesmo ?
tem que estar preenchido com algum identificador único que represente o client.

HiveMQ gera um aleatório, mas você pode definir algo mais sugestivo.

Testei com e sem ID

Mas não funcionou.

entendi.
resta sabermos qual é o protocolo usado por esse plugin do app inventor.

parece que ele usa o protocolo “mqtt”, aí realmente diverge das configurações feitas no mqtt explorer.
precisaria ser exatamente as mesmas configurações pra dar certo.

Supported protocols

In addition to HTTP, cloudflared supports protocols like SSH, RDP, arbitrary TCP services, and Unix sockets. See a list of supported protocols.

Consigo acessar o cloudflare tunnel pelo protocolo “mqtt://” ?

Não consegui conectar ao meu broker nem pela rede local usando o plugin do App inventor.
Único broker que consegui conectar foi o de teste do mosquitto que usa protocolo “mqtt://”

Pela documentação do cloudflare, não daria pra usar protocolo “mqtt”.
O teste do mosquitto parece responder pelo protocolo “mqtt”, por isso funciona.

Ou seja, se quiser usar cloudflare tunnel, vai precisar pesquisar um plugin do app inventor que use websockets.

:confused: :confused:

Eu quero desenvolver uma forma de notificar o usuário via smartphone para quando for ligada uma carga especifica ele poder desliga-la ou não. Ou seja, uma notificação de aviso que ligou a carga e as opções para manter ligado ou desligar.
Conhece alguma forma alternativa que resolveria?
Estou usando o app inventor pois é fácil de programar.

O homeassistant sabe o status dessa carga ?
Se sim, eu uso o próprio aplicativo do homeassistant do celular para exibir as notificações.
Crio a automação no homeassistant, aí quando ela atende as condições que preciso, daí envio a notificação pro celular.

Sabe sim. Ele que identifica e enviava via MQTT.
Ja usei para enviar mensagens, é possível linkar a mensagem pra quando o usuaria clicar nela redirecionar para uma tela com botões de manter ligado e desligar?

Onde posso aprender melhor sobre isso?

Muito obrigado por toda ajuda, w35l3y.
Vou estudar essa possibilidade! :smiley:

1 curtida

Ola vim aqui para saber se consiguiu conectar o mqtt explorer ao seu broker na HA via acesso externo, queria me conectar ao mqtt de outras redes para controlar dispositivos a distancia, seria possivel @w35l3y

Para deixar claro
Consegui acesso através das configurações

Cloudflare Tunnel

ingress:
- service: mqtt://homeassistant:1883
  hostname: mqtt.meu_dominio.com.br
- service: ws://homeassistant:1884
  hostname: mqttws.meu_dominio.com.br
- hostname: tun.meu_dominio.com.br
  service: http://seu_IP:8123
- service: http_status:404

para testar a configuração, fui em outra residência fiz o teste de ping com CMD do windows e verifiquei a comunicação, apos isso fui ao mqtt explorer e tentei de modo inpirico até acertar.

No MQTT Explorer ficou assim

protocol: ws://
Host: mqttws.meu_dominio.com.br
port: 80
Basepath: ws
Username: seu usuario mqtt defino nas configurações do addon
Password: suaSenhaSuperSecreta 
Validate certificate: false ( fica no check box da parte superior )
Encript: false ( fica no check box da parte superior )

Ainda não fiz um teste com um dispositivo para acessar externamente e se conectar, mais ja vou que vou fazer esse teste.

É bem por aí mesmo.
Não uso mqtt, mas lembro que cheguei a fazer alguns testes e a configuração ficou bem isso mesmo, até deixei no tutorial…

Nos testes de conectividade externa com mqtt que fiz na época, lembro de ter precisado informar o protocolo “https”, ao invés de “mqtt”.
Ou seja, nas configurações do add-on ficava com o protocolo “mqtt” certinho, mas na hora de conectar externamente, usei o protocolo “https”
Era meio contra intuitivo pra mim, mas funcionou.

1 curtida

Cara uma duvida enorme, ok me conectei ao mqtt broker atraves do mqtt explorer, porem notei que é com websocket, e não encontro uma forma de fazer que um pubsclient do arduino funcione usando a url, me parece que para adionar dispositivos terei que usar somente websoket, conhece alguma maneira que usar o protocolo mqtt mesmo, talvez mudando as confiurações na dashboard do cloud flaure ?

Teste isso que falei no comentário anterior.
Protocolo https e porta 443
Também protocolo tcp e porta 80

Internamente ele vai estar usando protocolo mqtt

Se não funcionar, avalia usar websocket mesmo.
Existem várias bibliotecas pra arduino se comunicar por websockets.

@Manpac , ó lembrei que eu já havia postado o resultado dos meus testes.
Dá uma olhada nessa postagem acima que marquei.

eu até vi cara, agradeço pelo retorno, mais eu não estava compreendendo, então para deixar simples fiz isso, caso tenha mais alguém leigo como eu, mas ainda não achei oque buscava, que era conectar meus dispositivos ao mqtt do meu HA de uma rede externa, mais ajuda muito a monitorar os dispositivos mqtt de quando não estou em casa, saudações.