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