E ai, bora instalar a extensão Mosquitto-PHP? Testado e sendo usado em dois servidores com Ubuntu 16+, um local e um externo. Não sabe a versão do seu? Use o comando no terminal:
1 | lsb_release -a |
O comando acima irá retornar algo como:
1 | Distributor ID: Ubuntu |
Certo, chega de perder tempo olhando versão. Primeiro, temos que instalar o pacote libmosquitto-dev, em alguns sistemas derivados do Red Hat é provável que seja chamado de libmosquitto-devel, mas, se não for, tente a outra forma.
1 | sudo apt-get install libmosquitto-dev |
Já ia me esquecendo, a primeira vez que fui instalar usando o PECL e seguindo o tutorial do próprio Github deles, não deu muito certo, eu tive que pesquisar e tentar outras maneiras, até que achei uma solução e funcionou, mas mesmo assim houve alguns problemas no decorrer da instalação, então, aqui eu mostro como instalei e funcionou sem nenhum problema e sem nenhum erro antes, durante e nem depois da instalação. Se der algum problema no seu, pesquise e ache uma solução, mas creio que dará tudo certo.
Agora vamos clonar o repositório da extensão para uma pasta qualquer, eu costumo jogar tudo na /tmp, mas é você quem decide.
1 | git clone https://github.com/mgdm/Mosquitto-PHP.git |
E vamos entrar na pasta…
1 | cd Mosquitto-PHP/ |
E agora? Vamos instalar a extensão de fato.
1 | phpize |
1 | ./configure --with-mosquitto=/path/to/libmosquitto |
1 | make |
1 | make test |
Em alguns casos, aqui não é necessário usar sudo, mas em outros é! Então, faça de acordo com sua máquina.
1 | sudo make install |
Já instalado, está quase pronto. Agora precisamos ativar a extensão nas configurações (php.ini) do PHP. No meu caso, o PHP se encontra instalado em /etc/php/7.0/.
Abra e altere o arquivo php.ini. Se você não sabe como usar o vim, olhe aqui.
1 | sudo vi /etc/php/7.0/cli/php.ini |
E adicione a seguinte linha em extension no PHP Cli
1 | extension=mosquitto.so |
Abra e altere o arquivo php.ini no FPM também.
1 | sudo vi /etc/php/7.0/fpm/php.ini |
E adicione a seguinte linha em extension no PHP FPM
1 | extension=mosquitto.so |
Como usar? Darei um exemplo simples para ouvir o tópico “casa“
1 | // Inicia o cliente |
Tudo beleza? Salve o aquivo acima como mqttext.php em algum lugar na sua máquina. Dai, corre no seu terminal e digita o seguinte:
1 | php mqttext.php |
Envie uma publicação (usando o MQTT.js ou o paho-mqtt ou qualquer outro que você quiser, só para teste) para o canal casa e veja a mágina acontecer.
E para publicar uma mensagem usando a extensão Mosquitto-PHP? Simples também!
1 | // Inicia o cliente |
Salve o arquivo acima como mqttpub.php.
Faça um teste mais legal ainda, quando você instalou o broker mosquitto, ele vem com comandos para sub e pub, abra uma nova aba ou janela do seu terminal, e inicie o mosquitto_sub da seguinte maneira:
1 | mosquitto_sub -h IP_DO_MOSQUITTO -t casa/# -q 1 |
Caso tenha usuário e senha
1 | mosquitto_sub -h IP_DO_MOSQUITTO -t casa/# -q 1 -u USUARIO -P SENHA |
Beleza, ele vai rodar em loop, abra uma nova aba ou janela novamente, e execute o arquivo mqttpub.php que você criou ali em cima.
1 | php mqttpub.php |
Repare que na aba onde está rodando o mosquitto_sub vai aparecer a mensagem “Enviando para a Sala da Casa“ publicada pelo mqttpub.php uando a extensão Mosquitto-PHP. Doido né?
Quer mais sobre a extensão Mosquitto-PHP? Então, aqui está o Github deles e aqui a documentação.
Dicas por Gercil Junio - https://gercil.me