
Introdução
O Mosquitto é um agente de mensagens de código aberto que usa o protocolo MQTT (Message Queuing Telemetry Transport). O MQTT é executado sobre o modelo TCP/IP e é a plataforma de mensagens padrão para a Internet das Coisas (IoT).
Como o protocolo MQQT é extremamente leve, seu pequeno volume de código permite criar aplicativos para dispositivos com recursos mínimos, como bateria de curta duração, largura de banda de rede limitada e conexões de internet não confiáveis.
O aplicativo Mosquitto oferece suporte à topologia publicador/assinante. Nesse modelo, os clientes se conectam ao servidor Mosquitto, que atua como um intermediário para distribuir informações a outros clientes cadastrados ou enviando mensagens para um canal.
Instale o Servidor Mosquitto (no servidor)
sudo apt update && sudo apt install -y mosquitto && sudo systemctl status mosquitto
Instale o cliente do Mosquitto (no cliente)
sudo apt install -y mosquitto-clients
sudo apt install -y bwm-ng (opcional)
Ao usar um cliente MQTT, você se conecta ao broker Mosquitto para enviar e receber mensagens sobre diferentes tópicos, dependendo do caso de uso do aplicativo. Um cliente pode ser um editor, um assinante ou ambos.
No servidor:
*IP do servidor:
Para assinar um tópico, execute o mosquitto_sub -t
comando seguido do nome do tópico que deseja assinar. Por exemplo, para se inscrever no tópico /notebook/memoria/total, execute:
mosquitto_sub -t "/notebook/memoria/total"
No cliente:
mosquitto_pub -m "1024GB" -t "/notebook/memoria/total"
mosquitto_pub -h 192.168.*.* -p 1883 -m "1024GB" -t "/notebook/memoria/total"
Proteja o Servidor Mosquitto
Por padrão, o servidor Mosquitto não é protegido. No entanto, você pode fazer algumas configurações para protegê-lo com nomes de usuário e senhas.
O Mosquitto lê as informações de configuração em: “/etc/mosquitto/conf.d“
sudo vim /etc/mosquitto/conf.d/default.conf
Cole as informações abaixo para desativar o anonymous das conexões e permitir que o Mosquitto leia as credenciais válidas do /etc/mosquitto/passwd.
allow_anonymous false
password_file /etc/mosquitto/passwd
Edite o arquivo:
sudo vim /etc/mosquitto/passwd
Cole o conteúdo abaixo:
joserf:PASSWORD
jose:PASSWORD_2
Em seguida, use o mosquitto_passwd utilitário para criptografar as senhas.
sudo mosquitto_passwd -U /etc/mosquitto/passwd
Reinicie o mosquitto
para carregar as novas alterações.
sudo systemctl restart mosquitto
mosquitto_pub -u joserf -P PASSWORD -t "TOPICO" -m "Teste de msg com senha"
*Comandos não autenticados ou conexões com credenciais incorretas agora devem falhar
Connection error: Connection Refused: not authorised.
Alguns exemplos:
Memória livre:
mosquitto_pub -h 192.168.*.* -p 1883 -t /notebook/memoria/livre -m `free |head -n2|tail -n1| awk '{print $2}'`
Tráfego de rede (Download):
mosquitto_pub -h 192.168.*.* -p 1883 -t download -m `bwm-ng -o csv -c 1 -T rate -I enp4s0 | head -n1 | cut -d ';' -f 4`
Tráfego de rede (Upload):
mosquitto_pub -h 192.168.*.* -p 1883 -t upload -m `bwm-ng -o csv -c 1 -T rate -I enp4s0 | head -n1 | cut -d ';' -f 3`
Legenda para saída do comando “bwm-ng” unix_timestamp;iface_name;bytes_out;bytes_in;bytes_total;packets_out;packets_in;packets_total;errors_out;errors_in
Script:
#!/bin/bash
while true; do
# O sinalizador -C definido como 1, fará com que o cliente saia após a primeira mensagem.
mosquitto_sub -C 1 -h 192.168.*.*-t "TOPICO" > temp.txt
mv temp.txt temp.json
done
*Isso tem a possibilidade de perder mensagens se a taxa de publicação for alta.