ホームページ >バックエンド開発 >PHPチュートリアル >PHP 開発における MQTT メッセージのサブスクリプションとパブリッシュの実践

PHP 開発における MQTT メッセージのサブスクリプションとパブリッシュの実践

WBOY
WBOYオリジナル
2023-07-08 14:02:512427ブラウズ

PHP 開発における MQTT の実際的なメッセージのサブスクリプションと公開

はじめに:
モノのインターネットの開発に伴い、メッセージ キュー テレメトリ トランスポート プロトコル (MQTT) がセンサー デバイスとバックエンド アプリケーションの間で通信します。において重要な役割を果たします。 MQTT は軽量プロトコルとして、低エネルギー消費、高い信頼性、拡張性という特徴を備えています。 PHP 開発では、メッセージのサブスクライブとパブリッシュに MQTT が使用されます。これにより、センサー デバイスと簡単に通信し、処理と表示のためにデータをバックエンド アプリケーションに送信できます。この記事では、PHP 開発における MQTT の実際の応用を紹介し、関連するコード例を示します。

1. MQTT の概要:
MQTT は、パブリッシュ/サブスクライブ モデルに基づくメッセージ キュー送信プロトコルです。軽量なバイナリメッセージ形式を採用しており、センサーや組み込みシステムなどのさまざまなハードウェアデバイスに適しています。 MQTT プロトコルには主に、メッセージ パブリッシャーとメッセージ サブスクライバーという 2 つの役割が含まれています。パブリッシャーは特定のトピックにメッセージをパブリッシュし、サブスクライバーは関心のあるトピックをサブスクライブして関連メッセージを受信します。 MQTT プロトコルは、データの信頼性を確保するためのメッセージ QoS (Quality of Service) レベル設定もサポートしています。

2. MQTT サーバーのインストール:
PHP 開発で実際の MQTT を開始する前に、まず MQTT サーバーを構築する必要があります。 MQTT サーバーを構築する簡単な手順は次のとおりです。

  1. Mosquitto などの MQTT サーバーをダウンロードしてインストールします。
  2. MQTT サーバーを実行します。デフォルトのリスニング ポートは 1883 です。

3. PHP での MQTT の使用:
メッセージのサブスクリプションと PHP での公開に MQTT を使用するプロセスは次のとおりです:

  1. MQTT の紹介client library :
    まず、MQTT クライアント ライブラリを導入する必要があります。PHP で一般的に使用される MQTT クライアント ライブラリには、phpMQTT と mosquitto-php があります。この記事では、composer を通じてインストールできる phpMQTT を例に挙げます:

    composer require bluerhinos/phpmqttclient
  2. MQTT クライアント構成:
    PHP コードで MQTT 操作を実行する前に、最初に接続を構成する必要があります、サーバーのアドレス、ポート番号、QoS レベルなどが含まれます。以下は設定例です:

    $mqttServer = 'localhost'; // MQTT服务器地址
    $mqttPort = 1883; // MQTT服务器端口
    $mqttClientId = 'php_script'; // 客户端ID
    $mqttUsername = ''; //用户名
    $mqttPassword = ''; // 密码
  3. 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";
    }
  4. 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 でパブリッシュします。

  1. シナリオの説明:
    MQTT プロトコルを介してトピック 温度 を持つチャネルにリアルタイムの温度を公開する温度センサー デバイスがあるとします。 PHP アプリケーションは、この温度データをリアルタイムで受信して処理する必要があります。これを行うために、このトピックをサブスクライブし、Web インターフェイスを通じてリアルタイムの温度を表示します。
  2. 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界面上
}
  1. Web インターフェイスの例:
    温度データをリアルタイムで表示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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。