Como se comunicar entre PC e celular usando o protocolo MQTT via HiveMQ Broker: IOT Parte 18

No tutorial anterior, foi aprendido como um smartphone e um PC podem ser configurados como clientes MQTT e sua conexão com um broker MQTT pode ser estabelecida. O smartphone foi configurado como um cliente MQTT usando um aplicativo MQTT Android – IOT MQTT Dashboard enquanto o PC foi configurado como cliente MQTT usando um complemento do Chrome – MQTTLens.
Agora, neste tutorial, esses clientes MQTT – Celular e PC serão feitos para se comunicarem entre si usando o protocolo MQTT. A comunicação entre os clientes MQTT só é possível através do broker MQTT. Um cliente MQTT pode ser definido como editor, assinante ou ambos. O cliente MQTT editor envia dados e informações na forma de mensagens sobre tópicos definidos para o corretor MQTT. O assinante MQTT pode assinar tópicos definidos e solicitar dados sobre esses tópicos do broker MQTT. Quando um cliente é configurado como publicador e assinante, ele recebe mensagens sobre tópicos assinados e também pode publicar mensagens sobre tópicos definidos. Neste tutorial, ambos os clientes (PC e Mobile) serão configurados como assinantes e também como editores.
Criando tópicos no lado de publicação do cliente móvel –
Após configurar o Mobile como cliente MQTT, o cliente Mobile é conectado ao broker. Agora, para publicar uma mensagem com o mobile, é necessário criar um tópico e registrar esse tópico no broker MQTT. Após criar um tópico, o cliente mobile pode enviar mensagens sobre esse tópico a qualquer momento, sempre que necessário.
Após criar uma conexão (do tutorial anterior), a conexão criada será exibida no painel do MQTT. Toque na conexão para abrir a atividade específica da conexão.
Captura de tela móvel da atividade principal do painel IOT MQTT
Fig. 1: Captura de tela móvel da atividade principal do painel IOT MQTT
Captura de tela móvel da atividade de publicação e assinatura no painel IOT MQTT
Fig. 2: Captura de tela móvel da atividade de publicação e assinatura no painel IOT MQTT
Na nova atividade, há duas abas – Subscribe e Publish. Selecione a aba publish e toque no botão 'Plus' no canto superior da atividade. Um pop-up aparecerá pedindo para selecionar um tipo de componente.
Captura de tela móvel de tipos de componentes de publicação no painel IOT MQTT
Fig. 3: Captura de tela móvel de tipos de componentes de publicação no painel IOT MQTT
Selecione o texto e uma atividade Publication será aberta. Nesta atividade, escreva um nome amigável para o cliente e escreva o nome do tópico. O nome amigável pode ser qualquer coisa como Mobile-01. Não é obrigatório que seja único.
O nome do tópico pode ter no máximo 65535 bytes de comprimento. Deve ser uma string UTF-8. O tópico pode consistir em um ou mais níveis. No nome do tópico, cada nível é separado pela barra. A barra atua como separador de nível de tópico. Embora não seja necessário criar tópicos antes de publicar ou assinar, é uma boa prática fazê-lo com antecedência. Um cliente MQTT também pode criar tópicos ao publicar ou assinar mensagens. Qualquer tópico deve ter pelo menos um caractere. Pode ser até mesmo uma barra sozinha.
Captura de tela móvel da atividade de publicação no painel IOT MQTT
Fig. 4: Captura de tela móvel da atividade de publicação no painel IOT MQTT
Então, crie um tópico como Mobile/Accelerometer/X/Axis. Em seguida, para registrar o tópico com o broker MQTT, é importante definir o nível de qualidade de serviço (abreviado como QoS). O nível de QoS define o acordo entre remetente e destinatário de uma mensagem em relação às garantias de entrega de uma mensagem. Existem três níveis de QoS (0, 1 e 2).
QoS-0 – A mensagem sobre o tema será entregue no máximo uma vez. Pode ser possível perder a mensagem.
QoS-1 – A mensagem será entregue pelo menos uma vez. Pode haver chance de duplicação da mensagem.
QoS-2 – A mensagem será entregue exatamente uma vez.
Defina o nível de QoS como 1 para publicar as mensagens. Há uma opção de sinalizador retido. Se estiver marcado, será definido como 1 e se não estiver marcado, será definido como 0. Defina o sinalizador reter como 0. Se o sinalizador reter for definido como 1, o broker manterá a mensagem após ela ter sido entregue ao assinante. Portanto, se não houver nenhuma assinatura no tópico, a última mensagem retida será entregue ao assinante.
Captura de tela móvel da criação de tópicos na atividade de publicação do painel IOT MQTT
Fig. 5: Captura de tela móvel da criação de tópicos na atividade de publicação do painel IOT MQTT
Toque no botão criar no canto superior da atividade. Agora, o cliente móvel está pronto para publicar mensagens no tópico definido.
Captura de tela móvel de tópicos de publicação listados no painel IOT MQTT Publicar atividade de inscrição
Fig. 6: Captura de tela móvel dos tópicos de publicação listados na atividade de publicação e assinatura do painel IOT MQTT
Criando tópicos no lado de assinatura do cliente móvel –
Simultaneamente, o tópico do lado da assinatura também pode ser definido. O cliente assina o tópico do corretor MQTT. O Tópico é o caminho para o qual outro cliente está publicando a mensagem. O cliente assinante irá cadastrar o tópico na corretora. Se o corretor tiver mensagens sobre esse tópico do cliente editor, o corretor transmitirá todas essas mensagens ao assinante.
Toque na conexão para abrir a atividade específica da conexão e selecione a aba de assinatura. Toque no botão 'Mais' no canto superior da atividade. Uma atividade de Assinatura será aberta.
Nesta atividade, escreva um nome amigável para o cliente e escreva o nome do tópico. O nome amigável pode ser qualquer coisa como Mobile-01. Não é obrigatório que seja único.
Captura de tela móvel da atividade de inscrição do painel IOT MQTT
Fig. 7: Captura de tela móvel da atividade de assinatura do painel IOT MQTT
Captura de tela móvel da criação de tópico na atividade de assinatura do painel IOT MQTT
Fig. 8: Captura de tela móvel da criação de tópicos no painel IOT MQTT Atividade de inscrição
O protocolo MQTT permite o uso de curingas em nomes de tópicos em assinatura, mas não em publicação. Se um símbolo '+' for usado como um nível de tópico, ele atua como curinga de nível único. Suponha que, se o nome do tópico for Mobile/Accelerometer/+/Axis, isso corresponderá ao seguinte –
Celular/Acelerômetro/X/Eixo
Móvel/acelerômetro/eixo Y/
Móvel/Acelerômetro/Z/Eixo
mas não para estes –
Celular/Acelerômetro/X/Alterar
Móvel/Acelerômetro/Y/Mudança
Móvel/Brilho
Se um símbolo '#' for usado como nível de tópico, ele atuará como curinga de vários níveis. Suponha que, se o nome do tópico for Mobile/Accelerometer/#, então isso corresponderá ao seguinte –
Móvel/Acelerômetro/X/Eixo
Móvel/acelerômetro/eixo Y/
Celular/Acelerômetro/Z/Eixo
Móvel/Acelerômetro/X/Mudança
Móvel/Acelerômetro/Y/Mudança
mas não para estes –
Móvel/Temperatura/Celsius
Móvel/CPU/Velocidade
Os nomes dos tópicos que começam com o símbolo '$' são reservados para estatísticas internas do MQTT Broker. Um cliente não pode publicar mensagens nesses tópicos.
Escreva um nome de tópico como PC/BB/ISP e deixe a unidade arquivada. Defina o nível de QoS como 1 e mantenha a caixa de seleção numérica desmarcada. Marque a caixa de seleção Notifique-me para que sempre que uma mensagem for recebida na corretora sobre o tópico inscrito, uma notificação será gerada pelo aplicativo. Qualquer conversor JSON não é usado, portanto, mantenha a opção do conversor JSON também desmarcada. As expressões JSONPath referem-se a estruturas JSON no contexto de documentos XML. O nome do tópico é prefixado com '$' ao marcar esta opção, tornando o tópico reservado. Toque no botão criar. O tópico inscrito agora será exibido na atividade de conexão na guia de inscrição.
Captura de tela móvel dos tópicos de assinatura listados no painel IOT MQTT, atividade de publicação e assinatura
Fig. 9: Captura de tela móvel de tópicos de assinatura listados no painel IOT MQTT Publicar atividade de assinatura
Criando tópicos no lado de publicação do cliente PC –
Depois de configurar o PC como cliente, o cliente PC é conectado ao corretor MQTT. Para publicar mensagem, é importante criar um tópico. Inicie o complemento MQTTLens e crie a conexão conforme descrito no tutorial anterior. Role para baixo até a opção Publicar.
Captura de tela da janela de publicação do MQTTLens
Fig. 10: Captura de tela da janela de publicação do MQTTLens
Escreva o nome do tópico – 'PC/BB/ISP' e defina o nível de QoS para 1. Mantenha a opção retida desmarcada.
Captura de tela da criação de tópicos na janela de publicação do MQTTLens
Fig. 11: Captura de tela da criação do tópico na janela de publicação do MQTTLens

Agora, o cliente PC registra o tópico no corretor MQTT e pode enviar a mensagem ao corretor. Escreva uma mensagem como o tópico PC/BB/ISP pode ter uma mensagem – Tikona e clique no botão Publicar.

Captura de tela da publicação de mensagem sobre um tópico na janela de publicação do MQTTLens
Fig. 12: Captura de tela da publicação de mensagem sobre um tópico na janela de publicação do MQTTLens
Ao clicar no botão publicar a mensagem será enviada ao cliente mobile.
Captura de tela da mensagem MQTT recebida no cliente móvel do cliente de PC via HiveMQ Broker
Fig. 13: Captura de tela da mensagem MQTT recebida no Mobile Client do PC Client via HiveMQ Broker
Pode ser observado que o MQTTLens atribui um Client ID aleatório ao PC. As mensagens recebidas do PC Client são visíveis no Mobile Client com timestamp.
Criando tópicos no lado de assinatura do cliente de PC –
O PC Client pode assinar o tópico publicado pelo Mobile Client. Role para baixo até a opção de assinatura.
Captura de tela da janela de assinatura do MQTTLens
Fig. 14: Captura de tela da janela de inscrição do MQTTLens
Captura de tela da criação de tópicos na janela de assinatura do MQTTLens
Fig. 15: Captura de tela da criação do tópico na janela de inscrição do MQTTLens
Escreva o nome do tópico – 'Celular/Acelerômetro/X/Eixo', defina o Nível de QoS como 1 e clique no botão de inscrição.
Captura de tela da criação de tópicos na janela de assinatura do MQTTLens
Fig. 16: Captura de tela da criação de tópicos na janela de assinatura do MQTTLens

No cliente móvel, envie uma mensagem sobre o tópico 'Celular/Acelerômetro/Eixo X' como '14' e clique no botão Publicar.

Captura de tela móvel da publicação de mensagem sobre um tópico no painel IOT MQTT
Fig. 17: Captura de tela móvel da publicação de mensagem sobre um tópico no painel IOT MQTT
O cliente PC registra o tópico no corretor MQTT e receberá as mensagens sempre que o corretor desejar. Role a janela do MQTTLens para verificar as mensagens recebidas do cliente Mobile.
Captura de tela da mensagem MQTT recebida no PC Client do Mobile Client via HiveMQ Broker
Fig. 18: Captura de tela da mensagem MQTT recebida no cliente PC do cliente móvel via HiveMQ Broker
Comunicação entre clientes móveis e PC –
O cliente PC e o cliente móvel se conectaram ao HiveMQ Broker com o mesmo nome de conexão. O cliente móvel é definido como publicador para o tópico – 'Mobile/Accelerometer/X/Axis' e definido como assinante para o tópico – 'PC/BB/ISP'. O cliente PC é definido como publicador para o tópico – 'PC/BB/ISP' e definido como assinante para o tópico – 'Mobile/Accelerometer/X/Axis'.
Quando um cliente publica uma mensagem como publicador, a mensagem é recebida no outro cliente, pois ele se inscreveu naquele tópico.
O cliente móvel está publicando a mensagem “14” para o corretor MQTT. O broker MQTT está passando a mensagem para o cliente PC, pois o cliente PC assinou o mesmo tópico. O cliente PC está publicando a mensagem “Tikona” no tópico “PC/BB/ISP” para o corretor MQTT. O cliente Mobile também registrou o mesmo tópico “PC/BB/ISP” da corretora MQTT. Assim, o cliente móvel recebe a mensagem automaticamente sempre que o cliente PC publica a mensagem.
O broker MQTT simplesmente passa as mensagens para os clientes inscritos. Os dois dispositivos estão se comunicando entre si usando o modelo de publicação e assinatura. A comunicação entre os vários dispositivos pode ser configurada dessa forma, desde que o nome da conexão e o broker MQTT permaneçam os mesmos.
Comunicação PC para PC usando HiveMQ Broker –
A comunicação entre dois PCs ou dois celulares também pode ser configurada usando o corretor HiveMQ. Para conectar dois PCs, o complemento MQTTLens deve estar instalado no Chrome em ambos os PCs. Eles devem se conectar ao mesmo corretor MQTT que neste caso é HiveMQ e devem ter o mesmo nome de conexão.
Deixe um dos PCs ser identificado pelo nome PCclient-01. Ele pode registrar o tópico PC01/PC02 com QoS definido como 1 no broker MQTT. A QoS define a precisão da transferência de dados. Vamos publicar uma mensagem “Olá! Este é o cliente-1” para o corretor MQTT. Captura de tela da passagem de mensagens de PC para PC usando o HiveMQ Broker
Fig. 19: Captura de tela da passagem de mensagens de PC para PC usando o HiveMQ Broker
Agora deixe o outro PC ser identificado pelo nome PCclient-02 e deixe-o se inscrever no tópico “PC01/PC02” com QoS nível 2. Ele receberá a mensagem do broker. Sempre que o PCclient-01 publica a mensagem no broker MQTT, o PCclient-02 recebe a mensagem do broker MQTT automaticamente.
Da mesma forma, PCclient-02 pode registrar o tópico “PC02/PC01” no broker MQTT com QoS nível 1. Deixe-o publicar a mensagem “Hi! Este é o cliente PC-2” no corretor MQTT.
Captura de tela da passagem de mensagens de PC para PC usando o HiveMQ Broker
Fig. 20: Captura de tela da passagem de mensagens de PC para PC usando o HiveMQ Broker
O PCclient-01 assinou o mesmo tópico com QoS nível 1 do broker MQTT e recebe uma mensagem sempre que PCclient-02 publica a mensagem. Desta forma, dois clientes PC comunicam-se através do protocolo MQTT.
No próximo tutorial, será demonstrada a comunicação de celular para celular usando o broker cloudMQTT.

Conteúdo Relacionado

Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.