Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Komunikasi dan kawalan Internet Perkara menggunakan PHP dan MQTT

Komunikasi dan kawalan Internet Perkara menggunakan PHP dan MQTT

WBOY
WBOYasal
2023-06-25 10:14:234909semak imbas

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:

  • Pelanggan: peranti atau aplikasi yang boleh menyambung ke pelayan MQTT dan menerbitkan atau melanggan mesej.
  • Pelayan (Broker): Broker mesej MQTT, bertanggungjawab untuk menerima, menyimpan dan memajukan mesej.
  • Topik: Mewakili kategori atau nama mesej. Topik boleh terdiri daripada satu atau lebih perkataan, dipisahkan dengan "/". Contohnya, topik "/sensor/kelembapan" mewakili data daripada penderia kelembapan.
  • Mesej: maklumat yang disampaikan dalam komunikasi. Mesej MQTT boleh mengandungi topik dan muatan, dan muatan boleh berupa sebarang data binari.

2. Gunakan protokol MQTT untuk melaksanakan komunikasi IoT

  1. Pasang pelayan MQTT

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
  1. PHP menyambung ke pelayan MQTT

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.

  1. PHP melanggan topik 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.

  1. Kawal lampu LED

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.

  1. Kawal motor

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!

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