Manual
do
Maker
.
com
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.
Essa é uma configuração client. Se você precisa de um broker MQTT, leia esse artigo onde trato exclusivamente disso.
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.
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 canal Manual do Maker no YouTube.
Também estamos no Instagram.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.