domingo, 20 de março de 2022

MQTT com Desenvolvimento Web - PHP Laravel

Detalhe: Caso não saiba PHP, recomendo o curso gratuito do famoso Gustavo Guanabara ou do link abaixo:

CURSO PHP 8

Para com questão do Framework PHP, o Laravel, indico duas (dois mini cursos) playlist no Youtube:

CURSO LARAVEL - OPÇÃO 1

CURSO LARAVEL - OPRÇÃO 2


O seguinte tutorial será com o Framework PHP Laravel, vejamos:


Web.php

No grupo das rotas do arquivo das rotas, o web.php adicione uma rota a uma página MQTT para acionar publish para o Embarcado:

// Grupo de rotas que dita todo fluxo de dados do site - web.php

Route::prefix('projetolaravel')->group(function(){

    Route::get('/{id}/{var}/{salt}',[nomeController::class, 'mqtt'])->name('projetolaravel-mqtt')->middleware('auth');

});


nomeController.php

Precisamos efetuar a configuração no arquivo responsável pelo Controller, logo, em seu Controller adicione a função abaixo para efetuar um Publish (considerando que ):

    // Função que vai publicar um dado via MQTT através da página de IoT

    public function mqtt($id, $var, $salt){

        $dados = Projetolaravel::where('id',$id)->first();

        $key = $dados->key_produto;

        $var = "teste";        

        return view('projetolaravel.publish',['key'=>$key, 'var '=>$var]);

    }


publish.blade.php

O arquivo com o qual usaremos para apontar de acordo com essa roda é um .PHP que deve conter as seguintes configurações:

<?php

 require('C:/xampp/php/hua/app/Models/phpMQTT.php');

// require('/var/www/html/hua/app/Models/phpMQTT.php');

$server = 'ENDERECOAQUI';     // change if necessary

$port = 1883;                     // change if necessary

$username = 'USUARIOBROKER';                   // set your username

$password = 'SENHABROKER';                   // set your password

$client_id = 'phpMQTT-publisher'; // make sure this is unique for connecting to sever - you could use uniqid()

$mqtt = new Bluerhinos\phpMQTT($server, $port, $client_id);

if ($mqtt->connect(true, NULL, $username, $password)) {

  $mqtt->publish('fonte/acao/'.$key.'', $var, 0, false);

  $mqtt->close();

  echo "foi\n";

  // echo $key;

} else {

    echo "Time out!\n";

}

?>

Repare que na linha abaixo, caso estivermos em Linux (Unix), inverteremos qual linha utiliza comentário, pois precisamos deste phpMQTT.php para trabalhar com MQTT:

 require('C:/xampp/php/hua/app/Models/phpMQTT.php');

// require('/var/www/html/hua/app/Models/phpMQTT.php');

Não esqueça de mudar o tópico e o payload em:

publish('fonte/acao/', $var_payload, 0, false)

Não esqueça de mudar o endereço do servidor em:

$server = 'ENDERECOAQUI';

Não esqueça de mudar as credenciais em:

$username = 'USUARIOBROKER';

$password = 'SENHABROKER'; 

E não menos importante, não esqueça de abrir a porta 1883 de sua VPS.

Um ponto interessante é que este módulo MQTT para o Laravel, só utilizo para Publish e não Subscribe, esse Subscribe será em Python.


Subscribe

Com relação ao subscribe em Python, já foi feito alguns materiais a respeito, vejamos:

IoT - Internet of Things - MQTT na prática (3/3)

Com isso, basta obter um exemplo genérico de como receber estes dados, e depois fazer a conexão com banco de dados com a biblioteca MySQLdb.


Caso ainda haja dúvidas, baixe nosso material e agende uma consultoria para obter uma senha ao baixar os arquivos necessários abaixo:

Kit Oficinaiot - 01


MQTT no Sketch

Quanto ao Sketch do embarcado, este vai seguir os seguintes scripts:

MQTT Genérico - Sketch

Repare que: o conteúdo da variável valor será enviado, este sendo um bom tipo de dado para se aprender, já que na maioria das vezes utilizaremos valores iguais a este, como por exemplo, temperatura:

int valor = 7;

Tudo que for para ser recebido, será o que estiver usando mesmo Broker e mesmo tópico.

Nenhum comentário:

Postar um comentário