0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

LaravelにてMQTTメッセージを発行する方法の話

Posted at

phpでmqttを利用するにはどうすれば良いでしょうか?
さまざまな方法がありますが、
今回はLaravelでのMQTTメッセージの発行方法を調査しました。

はじめに

前回(MQTT(Mosquitto)サーバの構築の話 2022/05/28)、MQTTサーバのインストールと動作検証を行いました。
最終的な動作環境は下図の様になっております。
image.png

この図のメッセージの発行側(送信側)をLaravelへと置き換える方法をまとめます。
image.png

ホスト
1 : 開発PC (Laravel動作 MQTTメッセージ発行)
201 : MQTTサーバ
220 : MQTTメッセージ購読

LaravelでMQTTメッセージを発行するライブラリ

LaravelでMQTTメッセージを発行するにはさまざまなライブラリがあります。
今回はphp-mqttにlaravel-clientというのを見つけたのでそれで実装します

php-mqtt laravel-client : https://github.com/php-mqtt/laravel-client

php-mqtt(laravel-client)をインストールする

php-mqtt laravel-clientのインストールはcomposerを用いれば簡単に入ります。

実装プロジェクトのルートに入って、Terminalで以下を実行してください。

composer require php-mqtt/laravel-client

雛形コンフィグをコピーする

cp ./vendor/php-mqtt/laravel-client/config/mqtt-client.php ./config/

これでphp-mqtt laravel-clientを使う準備は完了しました。

MQTTサーバの指定

php-mqtt laravel-clientの設定ファイル(./config/mqtt-client.php)を直接いじっても良いですが、
環境変数:MQTT_HOSTに指定すれば採用してくれますので環境設定ファイル(.env)にてしています。
MQTTサーバは192.168.1.201を指定します。
.envで指定する理由は… .env.testingとか実行環境で分けられるので便利です

MQTT_HOST=192.168.1.201

メッセージ発行プログラムの記述

MQTTサーバの指定まで終わると、
プログラムにメッセージ発行命令を記述すればメッセージは発行されます。

MQTT::publish('test', 'hello php-mqtt!');

例では、
topicを”test”
メッセージ本文は”hello php-mqtt”

今回はメッセージの発行を確認するだけなのでLaravelのデフォルトのwelcomeページを表示するタイミングで発行してみます。
routes/web.php

Route::get('/', function () {
    MQTT::publish('test', 'hello php-mqtt!');
    return view('welcome');
});

serveして

$ php artisan serve --host 192.168.1.1

ページアクセス : http://192.168.1.1:8000/

これでTOPページにアクセスすると普通にWelcomeページが表示されます。
そのタイミングで今回追記したMQTTサーバへとMQTTメッセージが発行処理がされます

購読端末での動作検証

購読端末(raspberrypi)に入りmosquittoを購読状態とします。
その後に、LaravelのWelcomeページにアクセスします。
すると以下の様にメッセージが購読できることを確認できます。

pi@raspberrypi:~ $ mosquitto_sub -h 192.168.1.201 -t test -d
Client mosqsub|12840-raspberry sending CONNECT
Client mosqsub|12840-raspberry received CONNACK (0)
Client mosqsub|12840-raspberry sending SUBSCRIBE (Mid: 1, Topic: test, QoS: 0)
Client mosqsub|12840-raspberry received SUBACK
Subscribed (mid: 1): 0
Client mosqsub|12840-raspberry received PUBLISH (d0, q0, r0, m0, 'test', ... (15 bytes))
hello php-mqtt!

購読できました!

終いに

今回はLaravelでのMQTTメッセージ発行方法を書きました。

購読は?と思いましたが…
Laravelでは私は発行しか使わないので調べません!
時間があったら調査するかもしれませんが…

次回の記事は…
もちろん購読側をどうするのかですね。

今までの購読側端末をRaspberry piで行なっています。
なのでそのまま購読するプログラムの実装もRaspberry piで調査とします。

ソース : https://www.mmpp.org/archives/2919

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?