# 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");
});
}
```