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:
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:
composer require bluerhinos/phpmqtt
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!