Dengan perkembangan teknologi Internet Perkara, semakin banyak peranti dan item yang disambungkan ke Internet, dan komunikasi serta kawalan antara peranti dan item ini diperlukan. Artikel ini akan memperkenalkan cara menggunakan protokol PHP dan MQTT untuk melaksanakan komunikasi dan kawalan Internet Perkara.
1. Apakah protokol MQTT
MQTT (Message Qeuing Telemetry Transport) ialah protokol penghantaran mesej ringan yang dilaksanakan berdasarkan model terbitkan/langganan. Protokol MQTT boleh digunakan dalam persekitaran rangkaian jalur lebar rendah dan tidak boleh dipercayai dan merupakan protokol yang sesuai untuk peranti IoT.
Konsep asas protokol MQTT ialah:
2. Gunakan protokol MQTT untuk melaksanakan komunikasi IoT
Mula-mula, anda perlu memasang pelayan proksi mesej MQTT pada pelayan. Pelayan MQTT yang biasa digunakan termasuk Mosquitto dan EMQX.
Pada sistem Ubuntu, anda boleh memasang Mosquitto melalui arahan berikut:
$ sudo apt-get update $ sudo apt-get install mosquitto mosquitto-clients
PHP boleh menyambung ke pelayan broker mesej MQTT dengan menghubungi perpustakaan pelanggan MQTT untuk melaksanakan fungsi penerbitan dan melanggan mesej. Pustaka klien MQTT yang biasa digunakan termasuk phpMQTT dan MQTT.php.
Menggunakan perpustakaan phpMQTT, anda boleh menggunakan kod berikut untuk menyambung ke pelayan MQTT dan menerbitkan mesej:
<?php require("phpMQTT.php"); $mqtt = new phpMQTT("example.com", 1883, "PHP MQTT Client"); if ($mqtt->connect()) { $mqtt->publish("/sensor/humidity", "25"); $mqtt->close(); } else { echo "Connection failed!"; } ?>
Dalam kod di atas, anda perlu memberikan alamat dan nombor port pelayan MQTT, serta pelanggan ID. Kaedah connect() boleh digunakan untuk menyambung ke pelayan MQTT, kaedah publish() digunakan untuk menerbitkan mesej, dan kaedah close() boleh menutup sambungan MQTT.
Selain menerbitkan mesej, PHP juga boleh melanggan topik MQTT dan menerima mesej yang dihantar oleh pelayan MQTT.
Menggunakan perpustakaan phpMQTT, anda boleh melaksanakan fungsi melanggan topik dan menerima mesej melalui kod berikut:
<?php require("phpMQTT.php"); function messageHandler($topic, $payload) { echo "Received message on topic: $topic Payload: $payload "; } $mqtt = new phpMQTT("example.com", 1883, "PHP MQTT Client"); if ($mqtt->connect()) { $mqtt->subscribe("/sensor/temperature", "messageHandler"); while ($mqtt->proc()) {} $mqtt->close(); } else { echo "Connection failed!"; } ?>
Dalam kod di atas, gunakan kaedah subscribe() untuk melanggan topik /mainstreet/topic, dan Parameter $payload diterima oleh fungsi panggil balik messageHandler() Berita tiba. code>while ($mqtt->proc()) {} gelung boleh mengekalkan keadaan langganan, menerima dan memproses mesej daripada pelayan MQTT.
3. Gunakan protokol PHP dan MQTT untuk merealisasikan kawalan IoT
Protokol MQTT bukan sahaja boleh digunakan untuk merealisasikan komunikasi IoT, tetapi juga untuk merealisasikan kawalan peranti. Pelayan MQTT boleh menerima mesej daripada pelanggan dan kemudian menghantar mesej kepada pelanggan lain yang perlu menerima mesej. Dengan cara ini, kawalan antara peranti boleh dicapai.
Berikut adalah contoh kod untuk mengawal lampu LED menggunakan protokol MQTT dan PHP:
<?php require("phpMQTT.php"); function messageHandler($topic, $payload) { $pattern = '/^led=(on|off)$/'; if (preg_match($pattern, $payload, $matches)) { if ($matches[1] == "on") { system("gpio write 0 1"); // Turn on LED } else { system("gpio write 0 0"); // Turn off LED } } } $mqtt = new phpMQTT("example.com", 1883, "PHP MQTT Client"); if ($mqtt->connect()) { $mqtt->subscribe("/devices/led", "messageHandler"); while ($mqtt->proc()) {} $mqtt->close(); } else { echo "Connection failed!"; } ?>
Dalam kod di atas, GPIO digunakan untuk mengawal suis lampu LED apabila mesej diterima oleh MQTT sepadan dengan format "led=on " atau "led=off", suis lampu LED akan dikawal.
Berikut ialah contoh kod untuk mengawal motor menggunakan protokol MQTT dan PHP:
<?php require("phpMQTT.php"); function messageHandler($topic, $payload) { $pattern = '/^motor=(forward|backward|stop)$/'; if (preg_match($pattern, $payload, $matches)) { if ($matches[1] == "forward") { // Turn motor forward } elseif ($matches[1] == "backward") { // Turn motor backward } else { // Stop motor } } } $mqtt = new phpMQTT("example.com", 1883, "PHP MQTT Client"); if ($mqtt->connect()) { $mqtt->subscribe("/devices/motor", "messageHandler"); while ($mqtt->proc()) {} $mqtt->close(); } else { echo "Connection failed!"; } ?>
Dalam kod di atas, gunakan ungkapan biasa untuk memadankan kandungan mesej MQTT jika ia sepadan dengan ". motor=forward", "motor= "undur" atau "motor=stop" format akan mengawal arah pergerakan motor.
Ringkasan
Artikel ini memperkenalkan cara menggunakan protokol PHP dan MQTT untuk melaksanakan komunikasi dan kawalan Internet Perkara. Melalui protokol MQTT, komunikasi dan kawalan antara peranti boleh dicapai dalam persekitaran rangkaian jalur lebar rendah dan tidak boleh dipercayai, yang merupakan asas untuk aplikasi IoT.
Atas ialah kandungan terperinci Komunikasi dan kawalan Internet Perkara menggunakan PHP dan MQTT. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!