Broker MQTT

O broker MQTT da própria estação: a linha dele na coluna Comunicação, como ligá-lo e desligá-lo, a porta e os dispositivos conectados, a autenticação dos clientes, a entrada Esta estação que ele dá ao driver MQTT e o que ele não faz.

Ver como Markdown

O Broker MQTT recebe as mensagens MQTT dos dispositivos da sua rede, e assim uma bancada ou um laboratório pequeno lê as placas ESP32, os gateways e os sensores sem instalar um broker próprio. Ele é a terceira linha da pasta Servidores, depois do servidor Modbus, e não é um driver: os dispositivos se conectam a ele e publicam, e a estação lê o que eles publicam pelo driver MQTT, como lê qualquer broker. O painel diz isso logo abaixo do título: "Recebe as mensagens MQTT dos dispositivos da sua rede, que assim dispensam um broker próprio. Recebe conexões e nunca abre uma." Quem vê o Connector lê a página; quem configura o Connector a muda.

A linha na coluna

A linha fica na pasta Servidores da árvore da coluna Comunicação, abaixo do servidor Modbus, com um ícone de hub onde os drivers mostram um plugue. Uma estação tem exatamente um, que nunca é criado nem apagado. A caixa de busca o acha pelo nome, e os chips de estado o separam pelo estado: desligado enquanto está desligado, com problemas enquanto a porta está em uso ou ele não conseguiu escutar, OK nos outros casos. Ao lado do nome ele diz o que está fazendo, e um ponto resume:

A linha diz Ponto Quando
"Desligado" cinza O broker está desligado, que é como toda estação começa.
"Escutando na porta 1883", depois quantos dispositivos estão conectados: "Nenhum cliente conectado", "1 cliente conectado", "3 clientes conectados" verde O broker está ligado e o runtime roda: a porta está aberta.
"A porta 1883 está em uso" vermelho O broker está ligado, mas outro programa segura a porta.
"Não foi possível escutar na porta 1883" vermelho O broker está ligado, mas o Windows recusou abrir a porta por outro motivo.
"Runtime parado" cinza O broker está ligado e o runtime está parado: a porta fica fechada até o runtime rodar de novo.

O ponto é só do broker: não entra no resumo da pasta Drivers nem na barra de status, que falam dos equipamentos que a estação lê.

Ligar e desligar

Comando O que faz Esmaecido quando
Habilitar Liga o broker: "Ligar o broker: ele escuta na porta 1883 enquanto o runtime roda, e o driver MQTT ganha a entrada pela qual esta estação o lê." O feed diz "Broker MQTT ligado." O broker já está ligado ("O broker já está ligado."), uma execução segura a estação, ou o runtime está parado.
Desabilitar Desliga o broker: "Desligar o broker: ele fecha a porta e desconecta todos os clientes." O feed diz "Broker MQTT desligado." O broker já está desligado ("O broker já está desligado."), uma execução segura a estação, ou o runtime está parado.

Um papel que não pode configurar o Connector não recebe os dois comandos desenhados. Estar ligado é uma configuração que a estação guarda, e a escuta segue o runtime: o broker abre a porta quando o runtime sobe, fecha a porta e desconecta todos os dispositivos quando o runtime para, e abre de novo quando o runtime volta. Uma porta que ele não consegue abrir é um estado dele, dito na linha e abaixo do campo da porta, e a estação segue rodando sem ele.

O cartão Porta e clientes

Campo O que faz Valores e padrão
Porta TCP A porta em que o broker escuta, em todos os endereços deste computador, IPv4 e IPv6, sem TLS. Mudá-la enquanto o broker escuta fecha a porta antiga e abre a nova, o que desconecta todos os dispositivos; o feed diz "Broker MQTT movido para a porta 1884." 1 a 65535. Padrão 1883, a porta do MQTT sem TLS.
Clientes conectados Quantos dispositivos estão conectados agora. Enquanto houver algum, uma tabela lista cada um com ID do cliente, Endereço do cliente (o endereço IP e a porta dele) e Conectado desde. Somente leitura.

Uma porta para a qual o broker não pode ir é recusada antes de qualquer gravação, dita abaixo do campo, e o campo volta para a porta em vigor: um número fora da faixa ("A porta precisa estar entre 1 e 65535."), a porta do servidor web, do acesso de agente, do servidor OPC UA ou do servidor Modbus ("A porta N já é a do servidor Modbus. Escolha outra porta, ou mova o servidor Modbus antes."), e uma porta que outro programa segura ("A porta N está em uso nesta máquina. Feche o que a está segurando, ou escolha outra porta."). Os outros campos de porta da estação recusam a porta do broker do mesmo jeito: "A porta N já é a do broker MQTT. Escolha outra porta, ou mova o broker MQTT antes."

Abaixo do cartão, uma nota diz: "Sem TLS: os dispositivos se conectam em MQTT simples, no máximo 100 ao mesmo tempo. Outras máquinas só chegam a este broker se o Firewall do Windows deixar entrar a porta TCP 1883: liberar é decisão sua, e esta estação nunca faz isso sozinha. As mensagens retidas ficam guardadas até a estação reiniciar."

No máximo 100 dispositivos ficam conectados ao mesmo tempo, contando a sessão da própria estação: mais um é recusado com o motivo MQTT de cota excedida, e um dispositivo que se reconecta com o próprio ID de cliente retoma o lugar que tinha. As mensagens retidas ficam na memória: voltam depois que o runtime para e sobe de novo, e somem quando a estação reinicia.

Firewall do Windows

A estação nunca muda o Firewall do Windows sozinha. Abaixo da nota, um ponto e uma frase dizem se a regra de entrada da própria estação para o broker deixa a porta entrar: "As conexões MQTT de entrada estão liberadas na porta 1883 para redes privadas e de domínio.", "Os clientes da rede podem estar bloqueados porque nenhuma regra deste aplicativo libera a porta 1883.", ou, num lançamento que não pode gerenciar o firewall, como um perfil isolado ou uma cópia que não é o programa instalado, "Esta execução não consegue administrar o Firewall do Windows. Configure o acesso de entrada no sistema operacional se for preciso." Só enquanto a regra falta, Liberar a rede local pede ao Windows, com a sua aprovação, uma regra chamada "Ganter Lab MQTT broker": entrada TCP na porta, redes privadas e de domínio, a sub-rede local, este programa. Ele é pressionado no app da própria estação ("A regra de firewall só pode ser aplicada pelo aplicativo instalado na estação."), e o feed diz "Pedindo ao Firewall do Windows o acesso à porta MQTT 1883…", depois "O Firewall do Windows agora libera as conexões MQTT na porta 1883."

Autenticação dos clientes

O cartão Autenticação do cliente decide quem pode se conectar:

Escolha Quem se conecta
Anônima "Qualquer dispositivo se conecta, com ou sem usuário e senha." Toda estação começa assim.
Usuário e senha "Todo dispositivo entra com o único usuário e a única senha abaixo." Um dispositivo com qualquer outro usuário ou senha é recusado, e o diário registra isso, agrupado como toda falha repetida.

Abaixo da escolha ficam Usuário e a senha, cujo rótulo só diz se há uma guardada: Senha (guardada) ou Senha (nenhuma guardada). A senha guardada nunca volta para a página: o campo começa vazio, e "Deixe em branco para manter a senha guardada." A escolha, o usuário e a senha são aplicados juntos com Aplicar, esmaecido enquanto nada mudou ("Mude a autenticação para aplicá-la."); o feed então diz "Autenticação do broker MQTT salva.", e, como avisa a linha ao lado do botão, "Um dispositivo já conectado que a nova autenticação não aceita é desconectado."

Entrada Recusada com
Usuário e senha escolhido com o usuário ou a senha vazios "Digite um usuário e uma senha antes de o broker pedir por eles."
O usuário apagado enquanto Usuário e senha está em vigor "O broker pede um usuário a cada dispositivo, então ele não pode ficar vazio. Escolha Anônima antes para limpá-lo."
Um usuário ou uma senha com mais de 128 caracteres "Um usuário tem no máximo 128 caracteres."

Com Anônima, o usuário e a senha ficam guardados para a próxima vez. A senha é guardada como a de um broker que a estação lê, protegida para esta conta do Windows: um backup aberto em outra máquina ou conta chega sem ela, nenhum dispositivo entra até ela ser digitada de novo, e o cartão diz "Não pode ser lido nesta conta do Windows: ele só abre na máquina e na conta do Windows que o digitou. Digite de novo aqui."

Esta estação

O último cartão do painel, Esta estação, diz o que o broker dá ao driver MQTT: "Ligado, o broker cria a entrada Esta estação no driver MQTT, pela qual esta estação lê os dispositivos que publicam aqui: em 127.0.0.1, com a porta e a autenticação do broker. Adicione esses dispositivos em Esta estação, por uma varredura ou à mão. Desligar o broker deixa Esta estação e os dispositivos dela no lugar, desconectados."

Momento O que acontece
O broker é ligado e a estação não tem a entrada O driver MQTT é adicionado à estação e ganha o broker Esta estação: 127.0.0.1, a porta do broker, sem TLS, habilitado, com o usuário e a senha do broker quando a autenticação é Usuário e senha.
A porta ou a autenticação muda A entrada acompanha: o host, a porta e a autenticação dela passam a ser os do broker. O nome, o ID de cliente, o keep-alive e se ela está habilitada continuam seus. O painel dela diz "Esta entrada é como esta estação lê o próprio broker MQTT (Servidores, Broker MQTT): o host, a porta e a autenticação dela seguem esse broker, e ela fica enquanto o broker estiver ligado."
O broker está ligado A entrada não pode ser apagada: Excluir o broker fica esmaecido na barra de comandos, no menu do clique direito e na tabela do driver, dizendo "O broker 'Esta estação' é como esta estação lê o próprio broker MQTT, então ele fica enquanto esse broker estiver ligado. Desligue antes o broker MQTT em Servidores."
O broker é desligado A entrada e os dispositivos dela ficam onde estão, desconectados. Apagada então, ela é criada de novo na próxima vez que o broker for ligado.

Nada é adicionado sob a entrada sozinho: adicione os dispositivos que publicam no broker pela varredura do broker ou à mão, como sob qualquer broker do driver MQTT. A sessão da própria estação espera mais entre as tentativas enquanto o broker está desligado, então, depois que o broker é ligado, a entrada pode levar até 30 segundos para aparecer online. Esta estação também tem o cartão Publicar que todo broker tem: o que a estação publica dos próprios dados no próprio broker.

Acesso de agente

Ferramenta O que faz
station_broker_status Informa o broker: ligado ou desligado, a porta, o estado, a autenticação sem a senha, os dispositivos conectados e a entrada Esta estação. Continua funcionando com o runtime parado.
station_broker_configure Liga ou desliga o broker, muda a porta dele e altera a autenticação, com as regras do painel.

Nenhum dos dois nomes começa com mqtt_broker_, as ferramentas dos brokers que a estação lê; os dois estão descritos com todas as outras ferramentas em Ferramentas.

O que ele não faz

  • Sem TLS e sem WebSocket: os dispositivos se conectam em MQTT simples sobre TCP.
  • Um só usuário e uma só senha para todos os dispositivos, nunca um por dispositivo.
  • Sem sessões persistentes, e nenhuma mensagem retida sobrevive a um reinício da estação.
  • Ele para junto com a estação: dispositivos que continuam publicando com a estação desligada precisam de um broker próprio (Instalar um broker).