ホームページ >バックエンド開発 >PHPチュートリアル >PHP と MQTT を使用してリモート温度監視と制御を実装する手順

PHP と MQTT を使用してリモート温度監視と制御を実装する手順

王林
王林オリジナル
2023-07-08 17:06:071199ブラウズ

PHP と MQTT を使用してリモート温度監視と制御を実装する手順

モノのインターネット技術の急速な発展に伴い、リモート監視と制御は私たちの日常生活で一般的なニーズになっています。この記事では、PHP および MQTT プロトコルを使用してリモート温度監視と制御を実装する方法を紹介します。例として ESP8266 ベースの温度センサーを使用し、MQTT プロトコルを介して温度データをリモート サーバーに送信し、同時にリモート サーバーは MQTT プロトコルを介して制御命令を ESP8266 に送信できます。実装する手順は次のとおりです。

ステップ 1: MQTT サーバーを構成する
まず、デバイスとサーバー間の通信を容易にするために、MQTT サーバーをインストールして構成する必要があります。ここではオープンソースの Mosquitto MQTT サーバーを例として使用しますが、ニーズに応じて他の MQTT サーバーを選択することもできます。インストールが完了したら、MQTT サーバーの IP アドレス、ポート番号、ユーザー名、パスワード、その他の関連情報を設定し、デバイスとサーバー間の通信用のトピックを作成する必要があります。

ステップ 2: ESP8266 の構成
ESP8266 に MQTT ライブラリをインストールします。ここでは例として phpMQTT ライブラリを使用します。このライブラリは、Arduino IDE のライブラリ管理インターフェイスを通じてインストールできます。その後、コード内で WiFi 接続と MQTT サーバー関連の情報 (WiFi 名とパスワード、IP アドレス、ポート番号、ユーザー名、パスワード、MQTT サーバーのその他の情報など) を構成する必要があります。同時に、デバイスのトピックを設定する必要があります。ここでは、温度データを転送するために「温度」という名前を付けます。

以下は簡単な ESP8266 コード例です:

#include <ESP8266WiFi.h>
#include <phpMQTT.h>

const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
const char* mqtt_server = "MQTT_SERVER_IP";
const char* topic = "temperature";

WiFiClient espClient;
phpMQTT mqtt;

float temperature = 0;

void setup_wifi() {
  delay(10);
  // We start by connecting to a WiFi network
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

void callback(char* topic, byte* payload, unsigned int length) {
  // handle incoming MQTT messages here
}

void reconnect() {
  // Loop until we're reconnected
  while (!mqtt.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Attempt to connect
    if (mqtt.connect("ESP8266Client")) {
      Serial.println("connected");
      mqtt.subscribe(topic);
    } else {
      Serial.print("failed, rc=");
      Serial.print(mqtt.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
      delay(5000);
    }
  }
}

void setup() {
  Serial.begin(115200);
  setup_wifi();
  mqtt.begin(mqtt_server, 1883, espClient);
  mqtt.onMessage(callback);
}

void loop() {
  if (!mqtt.connected()) {
    reconnect();
  }
  mqtt.loop();

  // simulate reading temperature from sensor
  temperature = random(20, 40);

  // convert temperature to string for MQTT publishing
  char tmp[10];
  sprintf(tmp, "%.2f", temperature);
  
  // publish temperature to MQTT topic
  mqtt.publish(topic, tmp);
  
  delay(2000);
}

ステップ 3: PHP サーバーの構成
リモート サーバー上で、MQTT クライアント ライブラリをインストールして構成する必要があります。ここでは使用します。 phpMQTTライブラリ。このライブラリは Composer を通じてインストールできます。その後、IP アドレス、ポート番号、ユーザー名、パスワードなど、MQTT サーバーの関連情報を PHP コードで構成します。同時に、温度変化をリアルタイムで監視できるように、デバイスから送信される温度データをサブスクライブする必要があります。簡単な PHP コード例を次に示します。

<?php

require("phpMQTT.php");

$mqtt_server = "MQTT_SERVER_IP";
$mqtt_port = 1883;
$mqtt_user = "your_MQTT_username";
$mqtt_password = "your_MQTT_password";
$mqtt_topic = "temperature";

$client_id = "PHPServer";

$mqtt = new phpMQTT($mqtt_server, $mqtt_port, $client_id);

if(!$mqtt->connect(true, NULL, $mqtt_user, $mqtt_password)){
    exit(1);
}

$topics[$mqtt_topic] = array("qos"=>0, "function"=>"receiveTemperature");
$mqtt->subscribe($topics, 0);

while($mqtt->proc()){
}

$mqtt->close();

function receiveTemperature($topic, $payload){
    // handle incoming temperature data here
    $temperature = floatval($payload);
    // do something with the temperature data, such as storing it in a database or triggering a notification
}

?>

ステップ 4: 温度の監視と制御
これで、ESP8266 を電源に接続し、シリアル モニタでデバイスの動作を確認できるようになります。 ESP8266 は、温度センサーの値を定期的に読み取り、MQTT プロトコルを通じて指定されたトピックにその値を公開します。同時に、PHP サーバーはこのトピックをサブスクライブし、データベースへの保存やアラームのトリガーなど、受信した温度データに基づいて対応する処理を実行します。

温度監視に基づいて、温度制御機能も実装できます。 MQTT パブリッシング関数を PHP コードに追加して、制御命令を ESP8266 に送信できます。ニーズに応じて、Web インターフェイス、アプリ、またはその他の方法を通じて制御命令をトリガーし、MQTT プロトコルを通じて命令を ESP8266 に送信できます。 ESP8266 は、受信した命令に従って、対応する制御動作を実行できます。

要約すると、PHP および MQTT プロトコルを使用することで、リモートの温度監視および制御機能を簡単に実装できます。この方法は、室内温度監視、温室温度制御など、さまざまなシナリオに適用できます。この記事があなたのお役に立てば幸いです。

以上がPHP と MQTT を使用してリモート温度監視と制御を実装する手順の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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