ホームページ > バックエンド開発 > PHPチュートリアル > PHP と MQTT を使用したモノのインターネットの通信と制御

PHP と MQTT を使用したモノのインターネットの通信と制御

WBOY
リリース: 2023-06-25 10:24:01
オリジナル
5064 人が閲覧しました

モノのインターネット技術の発展に伴い、ますます多くのデバイスやアイテムがインターネットに接続されるようになり、これらのデバイスやアイテム間の通信と制御が必要になります。この記事では、PHP および MQTT プロトコルを使用して、モノのインターネットの通信と制御を実装する方法を紹介します。

1. MQTT プロトコルとは

MQTT (Message Queuing Telemetry Transport) は、パブリッシュ/サブスクライブ モデルに基づいて実装される軽量のメッセージ送信プロトコルです。 MQTT プロトコルは、帯域幅が狭く信頼性の低いネットワーク環境でも使用でき、IoT デバイスに適したプロトコルです。

MQTT プロトコルの基本概念は次のとおりです。

  • クライアント: MQTT サーバーに接続し、メッセージをパブリッシュまたはサブスクライブできるデバイスまたはアプリケーション。
  • サーバー (ブローカー): MQTT メッセージ ブローカー。メッセージの受信、保存、転送を担当します。
  • トピック: メッセージのカテゴリまたは名前を表します。トピックは、「/」で区切られた 1 つ以上の単語で構成されます。たとえば、トピック「/sensor/humidity」は湿度センサーからのデータを表します。
  • メッセージ(Message):通信において伝達される情報。 MQTT メッセージにはトピックとペイロードを含めることができ、ペイロードには任意のバイナリ データを使用できます。

2. MQTT プロトコルを使用して IoT 通信を実装する

  1. MQTT サーバーをインストールする

まず、MQTT メッセージ プロキシ サーバーをインストールする必要がありますサーバー上で。一般的に使用される MQTT サーバーには、Mosquitto や EMQX などがあります。

Ubuntu システムでは、次のコマンドを使用して Mosquitto をインストールできます:

$ sudo apt-get update
$ sudo apt-get install mosquitto mosquitto-clients
ログイン後にコピー
  1. PHP は MQTT サーバーに接続できます

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 接続を閉じることができます。

  1. PHP は 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 サーバーはクライアントからメッセージを受信し、メッセージを受信する必要がある他のクライアントにメッセージを送信できます。このようにして、デバイス間の制御が実現されます。

  1. LED ライトの制御

以下は、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 ライト スイッチが制御されます。

  1. モーターを制御する

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート