Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pemantauan kualiti air masa nyata menggunakan PHP dan MQTT

Pemantauan kualiti air masa nyata menggunakan PHP dan MQTT

WBOY
WBOYasal
2023-06-28 14:05:361602semak imbas

Memandangkan orang ramai memberi lebih perhatian kepada kesihatan dan perlindungan alam sekitar, keperluan mereka untuk kualiti air juga semakin tinggi. Melalui pemantauan kualiti air masa nyata, kita dapat memahami keadaan kualiti air tepat pada masanya dan memastikan keselamatan sumber air minuman rakyat dan domestik. Artikel ini akan memperkenalkan cara menggunakan teknologi PHP dan MQTT untuk mencapai pemantauan kualiti air masa nyata.

1. Pengenalan kepada MQTT

MQTT (Message Qeuing Telemetry Transport) ialah protokol komunikasi ringan yang digunakan terutamanya untuk komunikasi segera antara peranti IoT. Protokol MQTT menggunakan mod terbitkan/langgan (Terbitkan/Langgan) untuk melaksanakan pengedaran dan penghalaan mesej melalui Broker. Ringkasnya, Penerbit menerbitkan mesej kepada semua pelanggan, dan Pelanggan menerima mesej dengan melanggan topik yang diminati.

Protokol MQTT mempunyai ciri-ciri berikut:

  1. Ringan: Protokol ini mudah, mempunyai overhed yang rendah, dan sesuai untuk komunikasi antara peranti kecil.
  2. Kebolehpercayaan tinggi: Pastikan ketepatan dan kebolehpercayaan penghantaran mesej.
  3. Penghalaan fleksibel: Dapat menghalakan mesej mengikut keadaan sebenar.
  4. Keselamatan: Menyokong penghantaran disulitkan SSL/TLS, yang boleh melindungi keselamatan penghantaran mesej.

2. PHP melaksanakan komunikasi MQTT

Pelaksanaan protokol MQTT memerlukan penggunaan perpustakaan pelanggan tertentu, seperti Paho MQTT, Mosquitto, dll. Dalam PHP, kita boleh menggunakan perpustakaan kelas phpMQTT untuk melaksanakan komunikasi MQTT Ia adalah perpustakaan klien PHP MQTT yang mudah dan mudah digunakan.

Langkah-langkah untuk menggunakan phpMQTT adalah seperti berikut:

  1. Pasang pustaka kelas phpMQTT:
composer require bluerhinos/phpmqtt
  1. Gunakan perpustakaan kelas:
require("phpMQTT.php");

$mqtt = new phpMQTT("test.mosquitto.org", 1883, "ClientID".rand());
if ($mqtt->connect()) {
    $mqtt->publish("Topic", "Hello World! QoS 0", 0);
    $mqtt->close();
} else {
    echo "Failed to connect to MQTT broker";
}

Dalam kod phpMQTT di atas, kami mencipta objek baru melalui kod phpM dan QTT dalam alamat dan nombor port Broker, dan ID Klien yang dijana secara rawak. Seterusnya, kami menyambung kepada Broker MQTT menggunakan kaedah connect() dan menerbitkan mesej menggunakan kaedah publish().

3. Pemantauan kualiti air masa nyata

Dalam pemantauan kualiti air masa nyata, kami perlu mengumpul data kualiti air dan menghantar data kepada Broker MQTT. Untuk mensimulasikan pengumpulan data, kita boleh menggunakan fungsi penjanaan nombor rawak untuk menjana penunjuk kualiti air seperti suhu air, nilai pH dan oksigen terlarut.

Berikut ialah fungsi PHP yang menjana data kualiti air rawak:

function generateWaterData() {
    $temp = rand(20, 30);
    $ph = (float)rand(60, 80) / 10;
    $do = rand(5, 11);
    return array(
        "temperature" => $temp,
        "pH" => $ph,
        "dissolved_oxygen" => $do
    );
}

Selepas menjana data kualiti air, kami perlu menghantar data kepada Broker MQTT. Kita boleh menggunakan kaedah publish() yang disediakan oleh perpustakaan kelas phpMQTT untuk mencapai ini:

$mqtt = new phpMQTT("test.mosquitto.org", 1883, "ClientID".rand());

if ($mqtt->connect()) {
    while (true) {
        $waterData = generateWaterData();
        $mqtt->publish("water_quality", json_encode($waterData), 0);
        sleep(5);
    }
    $mqtt->close();
} else {
    echo "Failed to connect to MQTT broker";
}

Dalam kod di atas, kita mula-mula mencipta objek mqtt dan menyambung kepada Broker MQTT. Seterusnya, kami menggunakan gelung sementara untuk terus menjana data kualiti air rawak dan menerbitkannya ke topik kualiti_air melalui kaedah publish().

Akhir sekali, kami boleh melanggan topik melalui MQTT untuk menerima dan memproses data kualiti air. Dalam PHP, kita boleh menggunakan kaedah subscribe() yang disediakan oleh perpustakaan kelas phpMQTT:

$mqtt = new phpMQTT("test.mosquitto.org", 1883, "ClientID".rand());

if ($mqtt->connect()) {
    $topics["water_quality"] = array("qos" => 0, "function" => "processWaterData");
    $mqtt->subscribe($topics, 0);
    while ($mqtt->proc()) {
        // 运行代码
    }
    $mqtt->close();
} else {
    echo "Failed to connect to MQTT broker";
}

function processWaterData($topic, $msg) {
    $waterData = json_decode($msg);
    // 处理水质数据
}

Dalam kod di atas, kita mula-mula mencipta objek mqtt dan menyambung kepada Broker MQTT. Seterusnya, kami melanggan topik kualiti_air menggunakan kaedah subscribe() dan menentukan proses fungsi pemprosesan mesejWaterData. Akhir sekali, kami menggunakan kaedah proc() untuk mengekalkan sambungan dan menunggu untuk menerima mesej MQTT pada bila-bila masa. Dengan memproses data kualiti air yang diterima dalam fungsi processWaterData(), kami boleh mencapai matlamat pemantauan kualiti air masa nyata.

Ringkasan

Artikel ini memperkenalkan cara menggunakan teknologi PHP dan MQTT untuk mencapai pemantauan kualiti air masa nyata. Melalui perpustakaan kelas phpMQTT, kami boleh menyambung dengan mudah kepada Broker MQTT dan melaksanakan fungsi penerbitan dan langganan data. Menggunakan protokol MQTT pada pemantauan kualiti air masa nyata bukan sahaja dapat meningkatkan masa nyata dan kebolehpercayaan penghantaran data, tetapi juga membantu kami memahami keadaan kualiti air tepat pada masanya dan memastikan keselamatan air minuman orang ramai.

Atas ialah kandungan terperinci Pemantauan kualiti air masa nyata 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