Try   HackMD

PHP Laravel + MQTT

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

安裝

使用composer在位置資料夾當中輸入指令

$ composer require salmanzafar/laravel-mqtt

注意:目前2.0以後的版本有發現重大bug導致設定無法載入,建議先使用1.0的最後版本 composer require salmanzafar/laravel-mqtt:1.0.9

完成之後要加入到package,到config/app.php裡面加入

'providers' => [ Salman\Mqtt\MqttServiceProvider::class, ]; 'aliases' => [ 'Mqtt' => \Salman\Mqtt\Facades\Mqtt::class, ];

要注意的是,在laravel 5.5之後,套件完成安裝後就會自動載入啟用,所以若是Laravel 5.4或之前版本的人才要進行上面的步驟。

設定

接著生成config檔案

$ php artisan vendor:publish --provider="Salman\Mqtt\MqttServiceProvider"

到專案裡的config/mqtt.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

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