モノのインターネット技術の発展に伴い、ますます多くのデバイスやアイテムがインターネットに接続されるようになり、これらのデバイスやアイテム間の通信と制御が必要になります。この記事では、PHP および MQTT プロトコルを使用して、モノのインターネットの通信と制御を実装する方法を紹介します。
1. MQTT プロトコルとは
MQTT (Message Queuing Telemetry Transport) は、パブリッシュ/サブスクライブ モデルに基づいて実装される軽量のメッセージ送信プロトコルです。 MQTT プロトコルは、帯域幅が狭く信頼性の低いネットワーク環境でも使用でき、IoT デバイスに適したプロトコルです。
MQTT プロトコルの基本概念は次のとおりです。
2. MQTT プロトコルを使用して IoT 通信を実装する
まず、MQTT メッセージ プロキシ サーバーをインストールする必要がありますサーバー上で。一般的に使用される MQTT サーバーには、Mosquitto や EMQX などがあります。
Ubuntu システムでは、次のコマンドを使用して Mosquitto をインストールできます:
$ sudo apt-get update $ sudo apt-get install mosquitto mosquitto-clients
PHP は MQTT を呼び出すことができますクライアント ライブラリ。MQTT メッセージ ブローカー サーバーに接続して、メッセージのパブリッシュおよびサブスクライブの機能を実装します。一般的に使用される MQTT クライアント ライブラリには、phpMQTT および MQTT.php が含まれます。
phpMQTT ライブラリを使用すると、次のコードを使用して MQTT サーバーに接続し、メッセージをパブリッシュできます。
<?php require("phpMQTT.php"); $mqtt = new phpMQTT("example.com", 1883, "PHP MQTT Client"); if ($mqtt->connect()) { $mqtt->publish("/sensor/humidity", "25"); $mqtt->close(); } else { echo "Connection failed!"; } ?>
上記のコードでは、サーバーのアドレスとポート番号を指定する必要があります。 MQTT サーバーとクライアントの ID。 connect() メソッドは MQTT サーバーへの接続に使用でき、publish() メソッドはメッセージのパブリッシュに使用でき、close() メソッドは MQTT 接続を閉じることができます。
PHP は、メッセージをパブリッシュするだけでなく、MQTT トピックをサブスクライブし、MQTT サーバーによって送信されたメッセージを受信することもできます。
phpMQTT ライブラリを使用すると、次のコードを通じてトピックを購読し、メッセージを受信する機能を実装できます。
<?php require("phpMQTT.php"); function messageHandler($topic, $payload) { echo "Received message on topic: $topic Payload: $payload "; } $mqtt = new phpMQTT("example.com", 1883, "PHP MQTT Client"); if ($mqtt->connect()) { $mqtt->subscribe("/sensor/temperature", "messageHandler"); while ($mqtt->proc()) {} $mqtt->close(); } else { echo "Connection failed!"; } ?>
上記のコードでは、subscribe() メソッドを使用して、 /mainstreet/topic topic, $payload パラメータ コールバック関数 messageHandler() で受信したメッセージです。 code>while ($mqtt->proc()) {} ループは、サブスクリプション状態を維持し、MQTT サーバーからのメッセージを受信して処理できます。
3. PHPとMQTTプロトコルを利用してIoT制御を実現
MQTTプロトコルはIoT通信を実現するだけでなく、デバイス制御も実現できます。 MQTT サーバーはクライアントからメッセージを受信し、メッセージを受信する必要がある他のクライアントにメッセージを送信できます。このようにして、デバイス間の制御が実現されます。
以下は、MQTT プロトコルと PHP を使用して LED ライトを制御するためのサンプル コードです。
<?php require("phpMQTT.php"); function messageHandler($topic, $payload) { $pattern = '/^led=(on|off)$/'; if (preg_match($pattern, $payload, $matches)) { if ($matches[1] == "on") { system("gpio write 0 1"); // Turn on LED } else { system("gpio write 0 0"); // Turn off LED } } } $mqtt = new phpMQTT("example.com", 1883, "PHP MQTT Client"); if ($mqtt->connect()) { $mqtt->subscribe("/devices/led", "messageHandler"); while ($mqtt->proc()) {} $mqtt->close(); } else { echo "Connection failed!"; } ?>
上記のコードでは、GPIO LED ライト スイッチの制御が使用される場合、MQTT で受信したメッセージが「led=on」または「led=off」形式に準拠している場合、LED ライト スイッチが制御されます。
MQTT プロトコルと PHP を使用してモーターを制御するためのサンプル コードを次に示します。
<?php require("phpMQTT.php"); function messageHandler($topic, $payload) { $pattern = '/^motor=(forward|backward|stop)$/'; if (preg_match($pattern, $payload, $matches)) { if ($matches[1] == "forward") { // Turn motor forward } elseif ($matches[1] == "backward") { // Turn motor backward } else { // Stop motor } } } $mqtt = new phpMQTT("example.com", 1883, "PHP MQTT Client"); if ($mqtt->connect()) { $mqtt->subscribe("/devices/motor", "messageHandler"); while ($mqtt->proc()) {} $mqtt->close(); } else { echo "Connection failed!"; } ?>
上記のコードでは、正規表現マッチングを使用する MQTTメッセージの内容が「motor=forward」、「motor=backward」、または「motor=stop」の形式に準拠している場合、モータの動作方向を制御します。
概要
この記事では、PHP および MQTT プロトコルを使用して、モノのインターネットの通信と制御を実装する方法を紹介します。 MQTT プロトコルを使用すると、IoT アプリケーションの基礎となる、低帯域幅で信頼性の低いネットワーク環境でもデバイス間の通信と制御を実現できます。
以上がPHP と MQTT を使用したモノのインターネットの通信と制御の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。