Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Langkah untuk melaksanakan pemantauan dan kawalan suhu jauh menggunakan PHP dan MQTT

Langkah untuk melaksanakan pemantauan dan kawalan suhu jauh menggunakan PHP dan MQTT

王林
王林asal
2023-07-08 17:06:071167semak imbas

Langkah untuk melaksanakan pemantauan dan kawalan suhu jauh menggunakan PHP dan MQTT

Dengan perkembangan pesat teknologi IoT, pemantauan dan kawalan jauh telah menjadi keperluan biasa dalam kehidupan seharian kita. Artikel ini akan memperkenalkan cara menggunakan protokol PHP dan MQTT untuk melaksanakan pemantauan dan kawalan suhu jauh. Kami akan menggunakan penderia suhu berdasarkan ESP8266 sebagai contoh dan menghantar data suhu ke pelayan jauh melalui protokol MQTT Pada masa yang sama, pelayan jauh boleh menghantar arahan kawalan kepada ESP8266 melalui protokol MQTT. Berikut adalah langkah-langkah untuk dilaksanakan.

Langkah 1: Konfigurasikan pelayan MQTT
Pertama, kita perlu memasang dan mengkonfigurasi pelayan MQTT untuk memudahkan komunikasi antara peranti dan pelayan. Di sini kami menggunakan pelayan Mosquitto MQTT sumber terbuka sebagai contoh Anda boleh memilih pelayan MQTT lain mengikut keperluan anda. Selepas pemasangan selesai, anda perlu mengkonfigurasi alamat IP, nombor port, nama pengguna, kata laluan dan maklumat lain berkaitan pelayan MQTT, dan mencipta Topik untuk komunikasi antara peranti dan pelayan.

Langkah 2: Konfigurasikan ESP8266
Pasang perpustakaan MQTT pada ESP8266 Di sini kami menggunakan perpustakaan phpMQTT sebagai contoh. Anda boleh memasang perpustakaan ini melalui antara muka pengurusan perpustakaan Arduino IDE. Selepas itu, anda perlu mengkonfigurasi sambungan WiFi dan maklumat berkaitan pelayan MQTT dalam kod, termasuk nama dan kata laluan WiFi, serta alamat IP, nombor port, nama pengguna, kata laluan dan maklumat lain pelayan MQTT. Pada masa yang sama, anda perlu mengkonfigurasi topik peranti Di sini kita boleh menamakannya "suhu" untuk memindahkan data suhu.

Berikut ialah contoh kod ESP8266 yang mudah:

#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);
}

Langkah Tiga: Konfigurasi Pelayan PHP
Pada pelayan jauh, kita perlu memasang dan mengkonfigurasi perpustakaan klien MQTT, di sini kita menggunakan perpustakaan phpMQTT. Anda boleh memasang perpustakaan ini melalui Komposer. Selepas itu, konfigurasikan maklumat berkaitan pelayan MQTT dalam kod PHP, termasuk alamat IP, nombor port, nama pengguna, kata laluan, dll. Pada masa yang sama, anda perlu melanggan data suhu yang dihantar oleh peranti supaya anda boleh memantau perubahan suhu dalam masa nyata. Berikut ialah contoh kod PHP mudah:

<?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
}

?>

Langkah Empat: Pemantauan dan Kawalan Suhu
Kini anda boleh menyambungkan ESP8266 kepada sumber kuasa dan melihat pengendalian peranti dalam monitor bersiri. ESP8266 akan sentiasa membaca nilai penderia suhu dan menerbitkannya ke topik yang ditentukan melalui protokol MQTT. Pada masa yang sama, pelayan PHP akan melanggan topik ini dan melakukan pemprosesan yang sepadan berdasarkan data suhu yang diterima, seperti menyimpannya dalam pangkalan data atau mencetuskan penggera.

Berdasarkan pemantauan suhu, anda juga boleh melaksanakan fungsi kawalan suhu. Anda boleh menambah fungsi penerbitan MQTT pada kod PHP anda untuk menghantar arahan kawalan kepada ESP8266. Anda boleh mencetuskan arahan kawalan melalui antara muka web, Aplikasi atau kaedah lain mengikut keperluan anda dan menghantar arahan kepada ESP8266 melalui protokol MQTT. ESP8266 boleh melakukan operasi kawalan yang sepadan mengikut arahan yang diterima.

Ringkasnya, dengan menggunakan protokol PHP dan MQTT, kami boleh melaksanakan fungsi pemantauan dan kawalan suhu jauh dengan mudah. Kaedah ini boleh digunakan untuk pelbagai senario, seperti pemantauan suhu dalaman, kawalan suhu rumah hijau, dsb. Semoga artikel ini dapat membantu anda.

Atas ialah kandungan terperinci Langkah untuk melaksanakan pemantauan dan kawalan suhu jauh menggunakan PHP dan MQTT. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn