Dengan perkembangan teknologi Internet of Things, semakin banyak penderia telah mula digunakan dalam pelbagai bidang untuk memberikan kami data yang lebih tepat. Walau bagaimanapun, cara mengumpul dan menggunakan data ini dengan cekap sentiasa menjadi kebimbangan dalam industri. Artikel ini akan memperkenalkan penyelesaian pengumpulan data sensor masa nyata berdasarkan protokol PHP dan MQTT.
1. Pengenalan kepada protokol MQTT
Protokol MQTT ialah protokol komunikasi ringan berdasarkan model publish-subscribe, sesuai untuk peranti kecil dan rangkaian jalur lebar rendah yang tidak boleh dipercayai. Protokol MQTT mengandungi tiga peranan utama: penerbit, pelanggan dan pelayan proksi (broker). Penerbit menerbitkan data kepada topik dan pelanggan boleh melanggan topik ini untuk menerima mesej yang diterbitkan oleh penerbit. Pelayan proksi bertanggungjawab untuk memajukan dan menyimpan mesej.
2. Langkah-langkah pelaksanaan
Memandangkan protokol MQTT memerlukan pelayan proksi untuk memajukan dan menyimpan mesej, kami perlu membina pelayan proksi MQTT terlebih dahulu. Pelayan proksi MQTT biasa termasuk EMQ, Mosquitto, dsb. Artikel ini mengambil EMQ sebagai contoh.
Selepas memasang EMQ, beberapa konfigurasi diperlukan, termasuk membuka port MQTT, mengkonfigurasi nama pengguna dan kata laluan, dsb. Selepas konfigurasi selesai, anda boleh menyambung ke pelayan proksi melalui klien MQTT untuk ujian.
Untuk mengumpul data sensor dalam masa nyata dan memprosesnya, kita perlu membina pelayan Web untuk menerima dan memproses data. Artikel ini menggunakan bahasa PHP untuk membina pelayan Web.
Dalam PHP, kita boleh menggunakan perpustakaan PHP Mosquitto untuk melaksanakan fungsi klien MQTT. Pertama, anda perlu memuat turun dan memasang perpustakaan dan merujuknya ke dalam projek PHP.
(1) Sambung ke pelayan proksi MQTT:
$mqtt = new MosquittoClient(); $mqtt->connect('localhost', 1883, 60);
(2) Langgan topik:
$mqtt->subscribe('sensor/data', 0);
(3) Proses mesej:
$mqtt->onMessage(function ($msg) { // 处理传感器数据 });
(4) Terbitkan mesej
$mqtt->publish('sensor/data', 'hello, world!', 0);
(5) Mulakan pelanggan:
$mqtt->loopForever();
Melalui kod di atas, kami boleh melaksanakan fungsi teras klien MQTT, termasuk menyambung ke pelayan proksi MQTT, melanggan topik, memproses mesej dan menerbitkan mesej, dsb.
Dalam aplikasi praktikal, kita perlu menyambungkan penderia sebenar dan menghantar data yang dikumpulnya ke pelayan proksi MQTT. Di sini kami mengambil penyambungan penderia suhu dan menghantar data suhu yang dikumpul ke pelayan proksi MQTT sebagai contoh.
Sambungkan sensor suhu ke papan Arduino dan tulis program melalui Arduino untuk mengumpul data suhu dan hantar ke pelayan proksi MQTT:
#include <Wire.h> #include <Adafruit_MLX90614.h> #include <PubSubClient.h> #include <ESP8266WiFi.h> Adafruit_MLX90614 mlx = Adafruit_MLX90614(); WiFiClient wifiClient; PubSubClient mqttClient(wifiClient); void setup() { Serial.begin(115200); mlx.begin(); WiFi.begin("ssid", "password"); //连接Wi-Fi while (WiFi.status() != WL_CONNECTED) { delay(1000); } mqttClient.setServer("localhost", 1883); //连接MQTT服务器 } void loop() { mqttClient.loop(); //连接MQTT服务器 float temp = mlx.readObjectTempC(); //读取温度 mqttClient.publish("sensor/data", String(temp).c_str()); //发送温度数据 delay(5000); }
Melalui program di atas, kami boleh menyambungkan sensor suhu dan mengumpul data suhu dan menghantarnya kepada fungsi pelayan Proksi MQTT.
Selepas menerima data yang dihantar oleh sensor, kami boleh memprosesnya melalui kod PHP, seperti menyimpan data suhu ke pangkalan data atau memaparkannya dalam masa nyata.
Kaedah khusus memproses dan memaparkan data sensor menggunakan kod PHP boleh dipilih dan direka bentuk mengikut keperluan sebenar.
3. Ringkasan
Artikel ini terutamanya memperkenalkan penyelesaian untuk merealisasikan pengumpulan data sensor masa nyata berdasarkan protokol PHP dan MQTT. Dengan menyambung ke pelayan proksi MQTT, menggunakan kod PHP untuk melaksanakan fungsi klien MQTT, dan menyambung kepada penderia dan menghantar data, pengumpulan dan pemprosesan data masa nyata penderia boleh dicapai. Penyelesaian ini boleh digunakan secara meluas dalam pelbagai bidang, seperti rumah pintar, pemantauan alam sekitar jauh, dsb.
Atas ialah kandungan terperinci Pengumpulan data sensor masa nyata menggunakan PHP dan MQTT. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!