1. Go to this page and download the library: Download salmanzafar/laravel-mqtt library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
use Salman\Mqtt\MqttClass\Mqtt;
public function sendMessage(string $topic, string $message)
{
$mqtt = new Mqtt();
$clientId = optional(auth()->user())->id;
$published = $mqtt->ConnectAndPublish($topic, $message, $clientId);
return $published ? 'published' : 'failed';
}
use Mqtt; // or: use Salman\Mqtt\Facades\Mqtt;
$published = Mqtt::ConnectAndPublish($topic, $message, $clientId);
use Salman\Mqtt\MqttClass\Mqtt;
public function subscribe(string $topic)
{
$mqtt = new Mqtt();
$mqtt->ConnectAndSubscribe($topic, function ($topic, $message) {
echo "Message received on {$topic}: {$message}\n";
});
}
Mqtt::ConnectAndSubscribe($topic, function ($topic, $message) {
logger()->info("MQTT message on {$topic}", ['message' => $message]);
});
use Salman\Mqtt\Events\MqttMessageReceived;
Event::listen(function (MqttMessageReceived $event) {
logger()->info("[{$event->connection}] {$event->topic}: {$event->message}");
});
use Illuminate\Notifications\Notification;
use Salman\Mqtt\Notifications\MqttMessage;
class DeviceOffline extends Notification
{
public function via($notifiable)
{
return ['mqtt'];
}
public function toMqtt($notifiable)
{
return MqttMessage::create('offline')
->topic("devices/{$notifiable->id}/status")
->retain();
}
}