ホームページ  >  記事  >  バックエンド開発  >  PHP と MQTT を使用したリモート照明制御の技術ガイド

PHP と MQTT を使用したリモート照明制御の技術ガイド

PHPz
PHPzオリジナル
2023-07-10 09:55:391338ブラウズ

PHP および MQTT を使用したリモート ライト コントロールの実装に関するテクニカル ガイド

はじめに:
モノのインターネットの継続的な開発に伴い、リモート コントロール デバイスはますます一般的になってきています。照明の遠隔制御もアプリケーションの一つで、この機能はPHPとMQTTを使えば簡単に実現できます。この記事では、PHP と MQTT を使用してリモート照明制御を実装する方法を紹介し、読者の参考となるコード例を示します。

1. 準備

  1. MQTT サーバーのインストール
    まず、MQTT サーバーをインストールする必要があります。一般的に使用される MQTT サーバーには、Mosquitto や RabbitMQ などがあります。独自のニーズに応じてインストールに適切な MQTT サーバーを選択し、サーバーが正常に実行できることを確認できます。
  2. データベース テーブルの作成
    照明ステータス情報を保存するデータベース テーブルを作成します。 MySQL またはその他のデータベース管理システムを使用してテーブルを作成できます。テーブル構造は次のとおりです:

    CREATE TABLE `lights` (
     `id` INT(11) NOT NULL AUTO_INCREMENT,
     `name` VARCHAR(50) NOT NULL,
     `status` ENUM('off', 'on') NOT NULL DEFAULT 'off',
     PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  3. MQTT クライアント ライブラリのインストール
    PHP で MQTT を使用するには、MQTT を使用する必要があります。クライアントライブラリ。 MQTT クライアント ライブラリは、mosquitto パッケージを使用してインストールできます。次のコマンドを使用して、mosquitto パッケージをインストールできます:

    sudo apt-get install mosquitto
    sudo apt-get install php-mosquitto

    インストールが完了したら、php -m | grep mosquitto を実行して、mosquitto 拡張機能が正常にインストールされたかどうかを確認できます。

2. PHP コードを作成する

まず、リモート照明制御を実現するための PHP コードを作成する必要があります。

  1. MQTT サーバーへの接続
    まず、MQTT クライアント ライブラリを導入し、MosquittoClient を使用して MQTT サーバーに接続する必要があります。コードは次のとおりです。

    $client = new MosquittoClient();
    $client->connect('127.0.0.1', 1883, 60);
  2. MQTT トピックのサブスクライブ
    次に、リモート コントロール命令を受信するには、MQTT トピックをサブスクライブする必要があります。 MosquittoClientonMessage メソッドを使用して、受信したメッセージを処理できます。コードは次のとおりです。

    $client->onMessage(function($message){
      // 处理收到的消息
    });
    
    $client->subscribe('light_control/#', 1);
  3. 受信メッセージの処理
    onMessage コールバック関数で、受信メッセージを処理できます。この例では、データベース内の照明ステータスを更新し、現在のステータスをサブスクライバーに公開します。コードは次のとおりです。

    $client->onMessage(function($message) use ($client){
      $payload = $message->payload;
      list($command, $lightId) = explode('/', $message->topic);
    
      // 更新数据库中的灯光状态
      // ...
    
      // 发布当前状态给订阅者
      $client->publish("light_status/$lightId", $payload, 1);
    });
  4. ライト ステータスの制御
    最後に、ライト ステータスを制御できるインターフェイスを提供する必要があります。この例では、GET リクエストを使用してライトのステータスを制御します。コードは次のようになります。

    if ($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['lightId']) && isset($_GET['status'])) {
      $lightId = $_GET['lightId'];
      $status = $_GET['status'];
    
      // 更新数据库中的灯光状态
      // ...
    
      // 发布状态给订阅者
      $client->publish("light_status/$lightId", $status, 1);
    }

    完全な PHP コード例は、この記事の付録にあります。

3. 概要

この記事では、PHP と MQTT を使用してリモート照明制御を実現する方法を紹介します。まず、MQTT サーバーをインストールし、対応するデータベース テーブルを作成する必要があります。次に、MQTT サーバーに接続し、MQTT トピックをサブスクライブし、受信したメッセージを処理し、ライトのステータスを制御するインターフェイスを提供するための PHP コードを記述します。この記事が読者にとって役立つことを願っています。

付録: 完全な PHP コード例

connect('127.0.0.1', 1883, 60);

$client->onMessage(function($message) use ($client){
  $payload = $message->payload;
  list($command, $lightId) = explode('/', $message->topic);

  // 更新数据库中的灯光状态
  // ...

  // 发布当前状态给订阅者
  $client->publish("light_status/$lightId", $payload, 1);
});

$client->subscribe('light_control/#', 1);

if ($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['lightId']) && isset($_GET['status'])) {
  $lightId = $_GET['lightId'];
  $status = $_GET['status'];

  // 更新数据库中的灯光状态
  // ...

  // 发布状态给订阅者
  $client->publish("light_status/$lightId", $status, 1);
}

while (true) {
  $client->loop();
  sleep(1);
}
?>

以上がPHP と MQTT を使用したリモート照明制御の技術ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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