- 1. 概要
- 2. 作成
- 3. 確認
- 4. 参考サイト
1. 概要
「Laravel」側の「Publisher」としてのソースを作成します。
2. 作成
プロジェクト管理者ユーザで、「Laravel」のプロジェクトホームへ移動して。
php artisan make:controller MqttPublishController
INFO Controller [app/Http/Controllers/MqttPublishController.php] created successfully.
中身が、こういうソースになっています。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class MqttPublishController extends Controller
{
//
}
これを下記のように記述します。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Redis;
class MqttPublishController extends Controller
{
public function publish(Request $request)
{
$payload = [
'topic' => $request->input('topic', 'test/topic'),
'data' => base64_encode($request->input('data', 'hello')),
];
Redis::xadd(
'mqtt_pub',
'*',
['payload' => json_encode($payload, JSON_UNESCAPED_UNICODE)]
);
return response()->json(['status' => 'queued']);
}
}
3. 確認
上記のソースの動作を確認します。
vi routes/api.php
下記を記述します。
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\MqttPublishController;
Route::post('/mqtt/publish', [MqttPublishController::class, 'publish']);
「Python - mqtt・redis」の「Publish」で作成した、「Python」のプログラムで待ち受けます。
「curl」でこの「api」のルートを起動します。
scrum@ubuntu2204 kitayama /var/www/sic_server $ curl -X POST http://localhost/sic_server/api/mqtt/publish -H "Content-Type: application/json" -d '{
"topic": "test/topic",
"data": "hello mqtt"
}'
すると、「Python」の方に、下記のように表示されます。
topic: test/topic
data: b'hello mqtt'
4. 参考サイト
本ページは、「ChatGPT」軍曹を参考にさせていただきました。
|