PHP 開発における MQTT の実際的なメッセージのサブスクリプションと公開
はじめに:
モノのインターネットの開発に伴い、メッセージ キュー テレメトリ トランスポート プロトコル (MQTT) がセンサー デバイスとバックエンド アプリケーションの間で通信します。において重要な役割を果たします。 MQTT は軽量プロトコルとして、低エネルギー消費、高い信頼性、拡張性という特徴を備えています。 PHP 開発では、メッセージのサブスクライブとパブリッシュに MQTT が使用されます。これにより、センサー デバイスと簡単に通信し、処理と表示のためにデータをバックエンド アプリケーションに送信できます。この記事では、PHP 開発における MQTT の実際の応用を紹介し、関連するコード例を示します。
1. MQTT の概要:
MQTT は、パブリッシュ/サブスクライブ モデルに基づくメッセージ キュー送信プロトコルです。軽量なバイナリメッセージ形式を採用しており、センサーや組み込みシステムなどのさまざまなハードウェアデバイスに適しています。 MQTT プロトコルには主に、メッセージ パブリッシャーとメッセージ サブスクライバーという 2 つの役割が含まれています。パブリッシャーは特定のトピックにメッセージをパブリッシュし、サブスクライバーは関心のあるトピックをサブスクライブして関連メッセージを受信します。 MQTT プロトコルは、データの信頼性を確保するためのメッセージ QoS (Quality of Service) レベル設定もサポートしています。
2. MQTT サーバーのインストール:
PHP 開発で実際の MQTT を開始する前に、まず MQTT サーバーを構築する必要があります。 MQTT サーバーを構築する簡単な手順は次のとおりです。
3. PHP での MQTT の使用:
メッセージのサブスクリプションと PHP での公開に MQTT を使用するプロセスは次のとおりです:
MQTT の紹介client library :
まず、MQTT クライアント ライブラリを導入する必要があります。PHP で一般的に使用される MQTT クライアント ライブラリには、phpMQTT と mosquitto-php があります。この記事では、composer を通じてインストールできる phpMQTT を例に挙げます:
composer require bluerhinos/phpmqttclient
MQTT クライアント構成:
PHP コードで MQTT 操作を実行する前に、最初に接続を構成する必要があります、サーバーのアドレス、ポート番号、QoS レベルなどが含まれます。以下は設定例です:
$mqttServer = 'localhost'; // MQTT服务器地址 $mqttPort = 1883; // MQTT服务器端口 $mqttClientId = 'php_script'; // 客户端ID $mqttUsername = ''; //用户名 $mqttPassword = ''; // 密码
MQTT メッセージのサブスクリプション:
PHP でトピックをサブスクライブするには、subscribe
メソッドを使用できます。以下は例です:
require('phpMQTT.php'); $mqtt = new phpMQTT($mqttServer, $mqttPort, $mqttClientId); if($mqtt->connect(true, NULL, $mqttUsername, $mqttPassword)) { $topics['topic_name'] = array('qos' => 0, 'function' => 'dataCallback'); $mqtt->subscribe($topics, 0); while($mqtt->proc()){ } $mqtt->close(); } else { echo "连接MQTT服务器失败!"; exit(1); } function dataCallback($topic, $payload) { echo "收到消息:$payload"; }
MQTT メッセージのパブリッシュ:
PHP でメッセージをパブリッシュするには、publish
メソッドを使用できます。以下に例を示します:
require('phpMQTT.php'); $mqtt = new phpMQTT($mqttServer, $mqttPort, $mqttClientId); if($mqtt->connect(true, NULL, $mqttUsername, $mqttPassword)) { $mqtt->publish('topic_name', '消息内容', 0); $mqtt->close(); } else { echo "连接MQTT服务器失败!"; exit(1); }
4. 実用的なアプリケーション:
以下では、メッセージ サブスクリプションに MQTT を使用する実際のアプリケーションを示すために、単純な実際のアプリケーションを例として取り上げます。そして PHP でパブリッシュします。
温度
を持つチャネルにリアルタイムの温度を公開する温度センサー デバイスがあるとします。 PHP アプリケーションは、この温度データをリアルタイムで受信して処理する必要があります。これを行うために、このトピックをサブスクライブし、Web インターフェイスを通じてリアルタイムの温度を表示します。 require('phpMQTT.php'); $mqttServer = 'localhost'; // MQTT服务器地址 $mqttPort = 1883; // MQTT服务器端口 $mqttClientId = 'php_script'; // 客户端ID $mqtt = new phpMQTT($mqttServer, $mqttPort, $mqttClientId); if($mqtt->connect(true, NULL, NULL, NULL)) { $topics['temperature'] = array('qos' => 0, 'function' => 'temperatureCallback'); $mqtt->subscribe($topics, 0); echo "开始订阅温度数据... "; while($mqtt->proc()){ } $mqtt->close(); } else { echo "连接MQTT服务器失败!"; exit(1); } function temperatureCallback($topic, $payload) { echo "收到温度消息:$payload "; // 在这里进行温度数据的处理,如存储到数据库或展示在Web界面上 }
<!DOCTYPE html> <html> <head> <title>温度监控</title> </head> <body> <h1>温度监控</h1> <div id="temperature"></div> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script> $(document).ready(function() { var mqttServer = 'mqtt://localhost:1883'; var clientId = 'web_client'; var temperatureTopic = 'temperature'; var client = mqtt.connect(mqttServer, { clientId: clientId }); client.on('connect', function() { client.subscribe(temperatureTopic); }); client.on('message', function(topic, message) { if (topic === temperatureTopic) { var temperature = message.toString(); $('#temperature').text('当前温度:' + temperature + '℃'); } }); }); </script> </body> </html>
上記のサンプル コードは、メッセージのサブスクリプションと PHP でのパブリッシュに MQTT を使用する実際のアプリケーションを示しています。温度データをサブスクライブすることで、温度データをリアルタイムで受信して処理および表示でき、メッセージをパブリッシュすることでセンサー デバイスに制御命令を送信できます。実際の開発では、特定のニーズに応じてコードを拡張および調整できます。
結論:
この記事では、PHP 開発における MQTT メッセージのサブスクリプションとパブリッシュの実際的なアプリケーションを紹介し、関連するコード例を示します。 MQTT プロトコルを使用することで、PHP アプリケーションはセンサーデバイスと簡単に通信し、リアルタイムのデータ送信と処理を実現できます。 IoT アプリケーション開発において、メッセージングに MQTT を使用すると、通信効率と信頼性が向上し、アプリケーション開発に利便性がもたらされます。
以上がPHP 開発における MQTT メッセージのサブスクリプションとパブリッシュの実践の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。