
Estou atualmente em um projeto que envolve entre outras coisas, visão computacional, redes neurais e um dos protocolos de transferência de mensagens é o MQTT, onde alguns pontos se subescrevem a um determinado tópico. Na interface de monitoramento as informações chegarão também por MQTT e essa interface está sendo desenvolvida em PHP. Logo, eu antecipei-me ao trabalho do desenvolvedor web e deixei tudo funcional para ele se preocupar exclusivamente com o feedback visual. Então decidi deixar “documentado” o procedimento, mas em forma de artigo, assim vocês também poderão desfrutar da configuração inicial sem preocupações extras.
Table of Contents
Broker
Essa é uma configuração client. Se você precisa de um broker MQTT, leia esse artigo onde trato exclusivamente disso.
Client
Se precisa de um client para fazer publish enquanto testando o código abaixo, sugiro o MQTT Dashboard ou o MyMQTT, disponíveis no Google Play.
Instalação dos pacotes necessários
Essa vai ser rápida e fácil, simplesmente utilizando apt e pecl:
#tudo em uma linha soh apt-get install php5-dev libapache2-mod-php5 apache2\ libmosquitto-dev libmosquittopp-dev libmosquitto1\ python-mosquitto re2c #agora preparar a lib mosquitto pro php: pecl install Mosquitto-alpha
Se seu sistema acusar mais alguma dependência, supra-a e repita o último passo com o pecl. Feito isso, você deve entrar em /etc/php5 e modificar o php.ini do apache e o php.ini do cli (caso deseje utilizar o mqtt no apache e debugar por linha de comando também). Edite com seu editor preferido (um está no diretório ‘apache2’ e o outro no diretório ‘cli’). Procure pela sessão que exemplifica a adição de biblioteca e adicione essa linha:
extension=mosquitto.so
Agora basta fazer a conexão! Eu deixei um código de um exemplo que achei e adicionei apenas as credenciais que não estavam no exemplo:
<?php /* ClientID */ $client = new Mosquitto\Client('MyClient'); /* Credenciais (usuario e senha) */ $client->setCredentials('meuUser','minhaSenha'); /* Callback da conexao */ $client->onConnect(function($code, $message) use ($client){ /* Topico */ $client->subscribe('meuTopico/subTopico', 0); }); /* Callback da mensagem */ $client->onMessage(function($message){ /* exibe a mensagem e payload */ echo $message->topic, "\n", $message->payload, "\n"; }); /* Connecta ao host remoto */ $client->connect('10.50.66.32', 1883); /* Mantem-se em execucao */ $client->loopForever();
Apenas com essa porção de código já se pode interagir com o broker. Para executar um teste, salve esse código em um arquivo e chame por linha de comando:
php testeComMQTT.php
E publique algo no tópico. Não vou colocar um print porque meus testes estão sendo efetuados com algumas técnicas extras relacionadas ao projeto em que estou trabalhando e essa estrutura não pode ser revelada, mas é fácil como descrito, pode comprovar.
Inscreva-se no nosso newsletter, alí em cima à direita e receba novos posts por email.
Siga-nos no Do bit Ao Byte no Facebook.
Prefere twitter? @DobitAoByte.
Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.
Nossos grupos:
Arduino BR – https://www.facebook.com/groups/microcontroladorarduinobr/
Raspberry Pi BR – https://www.facebook.com/groups/raspberrybr/
Orange Pi BR – https://www.facebook.com/groups/OrangePiBR/
Odroid BR – https://www.facebook.com/groups/odroidBR/
Sistemas Embarcados BR – https://www.facebook.com/groups/SistemasEmbarcadosBR/
MIPS BR – https://www.facebook.com/groups/MIPSBR/
Do Bit ao Byte – https://www.facebook.com/groups/dobitaobyte/
Próximo post a caminho!
Artigos relacionados
Serial com Python, Arduino e HC12
Biblioteca para PCF8575
Expansor de IO PCF8575 e bitwise