Rumah >pembangunan bahagian belakang >tutorial php >Pendekatan praktikal untuk pemantauan dan kawalan trafik pintar menggunakan PHP dan MQTT

Pendekatan praktikal untuk pemantauan dan kawalan trafik pintar menggunakan PHP dan MQTT

WBOY
WBOYasal
2023-07-09 18:40:451202semak imbas

Satu kaedah praktikal untuk melaksanakan pemantauan dan kawalan trafik pintar menggunakan PHP dan MQTT

Pengenalan:
Dengan pembangunan berterusan teknologi IoT, pemantauan dan kawalan trafik pintar telah menjadi keperluan penting dalam masyarakat moden. Artikel ini akan memperkenalkan cara menggunakan teknologi PHP dan MQTT untuk melaksanakan kaedah praktikal pemantauan dan kawalan trafik pintar, serta menyediakan contoh kod yang sepadan.

1. Apakah itu MQTT?
MQTT (Message Qeuing Telemetry Transport) ialah protokol penghantaran mesej ringan yang sesuai untuk komunikasi melalui lebar jalur rangkaian terhad dan sambungan rangkaian yang tidak stabil. MQTT menyediakan mod komunikasi terbitkan/langgan, iaitu penerbit mesej menerbitkan mesej kepada broker, dan kemudian pelanggan menerima mesej dengan melanggan topik yang berkaitan.

2. Kerja penyediaan:
Sebelum kita mula menulis kod, kita perlu melakukan beberapa kerja penyediaan:

  1. Pasang sambungan PHP dan MQTT:
    Buka terminal atau tetingkap baris arahan dan jalankan arahan berikut untuk memasang sambungan PHP dan MQTT :
    sudo apt-get install php7.2-cli php7.2-mbstring php7.2-mysql php7.2-curl php7.2-xml php7.2-zip php7.2-mysqli php7.2-mosquitto sudo apt-get install php7.2-cli php7.2-mbstring php7.2-mysql php7.2-curl php7.2-xml php7.2-zip php7.2-mysqli php7.2-mosquitto
  2. 安装MQTT broker:
    可以选择安装Mosquitto作为MQTT broker,运行以下命令来安装Mosquitto:
    sudo apt-get install mosquitto
  3. 创建数据库和表:
    创建一个MySQL数据库,并创建一个名为flow的表,其中包含以下字段:iddevice_idflow_ratetimestamp

三、流量监控:
下面的代码示例演示了如何使用PHP来监控流量数据,并将其存储到数据库中。

<?php

require('vendor/autoload.php');
use MosquittoClient;

$mqttClient = new Client();

$mqttClient->onConnect(function() use ($mqttClient) {
    echo "Connected to MQTT broker
";
    $mqttClient->subscribe('flow-monitor/flow-data', 2);
});

$mqttClient->onMessage(function($message) {
    $data = json_decode($message->payload);
    
    // 将数据存储到数据库中
    $conn = new mysqli('localhost', 'username', 'password', 'database');
    $query = "INSERT INTO flow (device_id, flow_rate, timestamp) VALUES ('$data->device_id', '$data->flow_rate', '$data->timestamp')";
    $result = $conn->query($query);
    
    echo "Received flow data: device_id=$data->device_id, flow_rate=$data->flow_rate
";
});

$mqttClient->connect('localhost', 1883);
$mqttClient->loopForever();
?>

以上代码中,我们创建了一个MQTT客户端,并订阅了flow-monitor/flow-data主题。当有消息到达时,我们将接收到的数据解析为JSON格式,并将数据存储到数据库中。

四、流量控制:
下面的代码示例演示了如何使用PHP来控制流量,并向MQTT broker发送控制指令。

<?php

require('vendor/autoload.php');
use MosquittoClient;

$mqttClient = new Client();

$mqttClient->onConnect(function() use ($mqttClient) {
    echo "Connected to MQTT broker
";
    
    // 向broker订阅控制指令的主题
    $mqttClient->subscribe('flow-control/commands', 2);
});

$mqttClient->onMessage(function($message) use ($mqttClient) {
    $command = $message->payload;
    
    // 根据收到的指令进行相应的流量控制
    
    switch ($command) {
        case 'start':
            echo "Starting flow
";
            // 执行流量控制的相关代码
            break;
        case 'stop':
            echo "Stopping flow
";
            // 执行流量控制的相关代码
            break;
        default:
            echo "Invalid command
";
            break;
    }
});

$mqttClient->connect('localhost', 1883);
$mqttClient->loopForever();
?>

以上代码中,我们创建了另一个MQTT客户端,并订阅了flow-control/commands

Pasang broker MQTT:

Anda boleh memilih untuk memasang Mosquitto sebagai broker MQTT, jalankan arahan berikut untuk memasang Mosquitto:
sudo apt-get install mosquitto

Buat pangkalan data dan jadual:

Buat pangkalan data MySQL, Dan buat jadual bernama flow dengan medan berikut: id, device_id, flow_rate , cap masa.
  • 3 Pemantauan trafik:
  • Contoh kod berikut menunjukkan cara menggunakan PHP untuk memantau data trafik dan menyimpannya dalam pangkalan data.
rrreee🎜Dalam kod di atas, kami mencipta klien MQTT dan melanggan topik flow-monitor/flow-data. Apabila mesej tiba, kami menghuraikan data yang diterima ke dalam format JSON dan menyimpan data ke dalam pangkalan data. 🎜🎜4. Kawalan aliran: 🎜Contoh kod berikut menunjukkan cara menggunakan PHP untuk mengawal aliran dan menghantar arahan kawalan kepada broker MQTT. 🎜rrreee🎜Dalam kod di atas, kami mencipta klien MQTT yang lain dan melanggan topik flow-control/commands. Apabila arahan kawalan tiba, kami melaksanakan operasi kawalan aliran yang sepadan mengikut arahan yang berbeza. 🎜🎜Kesimpulan: 🎜Artikel ini memperkenalkan dengan contoh cara menggunakan PHP dan MQTT untuk melaksanakan pemantauan dan kawalan trafik pintar. Dengan menggunakan protokol komunikasi MQTT dan kod PHP yang berkaitan, sistem pemantauan dan kawalan trafik pintar boleh direalisasikan, memberikan bantuan penting untuk pengurusan trafik dalam masyarakat moden. 🎜🎜Rujukan: 🎜🎜🎜MQTT.org (2022 Versi 3.1.1 .html🎜🎜

Atas ialah kandungan terperinci Pendekatan praktikal untuk pemantauan dan kawalan trafik pintar 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