---
# System prepended metadata

title: PHP Laravel + MQTT

---

# PHP Laravel + MQTT

Github Repo: https://github.com/salmanzafar949/MQTT-Laravel

## 安裝
使用composer在位置資料夾當中輸入指令
```bash=
$ composer require salmanzafar/laravel-mqtt
```
> <b style="color:red">注意</b>：目前2.0以後的版本有發現重大bug導致設定無法載入，建議先使用1.0的最後版本 `composer require salmanzafar/laravel-mqtt:1.0.9`


完成之後要加入到package，到`config/app.php`裡面加入
```php=
'providers' => [
    Salman\Mqtt\MqttServiceProvider::class,
];

'aliases' => [
    'Mqtt' => \Salman\Mqtt\Facades\Mqtt::class,
];
```
> 要注意的是，在laravel 5.5之後，套件完成安裝後就會自動載入啟用，所以若是**Laravel 5.4或之前版本**的人才要進行上面的步驟。

## 設定
接著生成config檔案
```bash=
$ php artisan vendor:publish --provider="Salman\Mqtt\MqttServiceProvider"
```

到專案裡的`config/mqtt.php`裡設定
```php=
return [
    'host'      => env('MQTT_HOST', '127.0.0.1'),
    'password'  => env('MQTT_PASSWORD', ''),
    'username'  => env('MQTT_USERNAME', ''),
    'certfile'  => env('MQTT_CERT_FILE', ''),
    'localcert' => env('MQTT_LOCAL_CERT', ''),
    'localpk'   => env('MQTT_LOCAL_PK', ''),
    'port'      => env('MQTT_PORT', '1883'),
    'timeout'   => (int) env('MQTT_TIMEOUT', 10),
    'debug'     => (bool) env('MQTT_DEBUG', false), //Optional Parameter to enable debugging set it to True
    'qos'       => env('MQTT_QOS', 0), // set quality of service here
    'retain'    => env('MQTT_RETAIN', 0) // it should be 0 or 1 Whether the message should be retained.- Retain Flag
];

```

## Publish

=待補=

## Topic get

```php=
    public function SubscribetoTopic($topic)
    {
        $mqtt = new Mqtt();
        // $client_id = Auth::user()->id;
        // $client_id = 1;
        $mqtt->ConnectAndSubscribe($topic, function($topic, $msg){
            dd("Msg Received: \nTopic: {$topic} \nData: $msg");
        });
    }
```