Maison  >  Article  >  développement back-end  >  Une approche pratique de la surveillance et du contrôle intelligents du trafic à l'aide de PHP et MQTT

Une approche pratique de la surveillance et du contrôle intelligents du trafic à l'aide de PHP et MQTT

WBOY
WBOYoriginal
2023-07-09 18:40:451146parcourir

Une méthode pratique pour mettre en œuvre une surveillance et un contrôle intelligents du trafic à l'aide de PHP et MQTT

Introduction :
Avec le développement continu de la technologie IoT, la surveillance et le contrôle intelligents du trafic sont devenus un besoin important dans la société moderne. Cet article présentera comment utiliser les technologies PHP et MQTT pour mettre en œuvre des méthodes pratiques de surveillance et de contrôle intelligents du trafic, et fournira des exemples de code correspondants.

1. Qu'est-ce que MQTT ?
MQTT (Message Queuing Telemetry Transport) est un protocole de transmission de messages léger adapté à la communication sur une bande passante réseau limitée et des connexions réseau instables. MQTT fournit un mode de communication publication/abonnement, c'est-à-dire que l'éditeur du message publie le message auprès d'un courtier, puis l'abonné reçoit le message en s'abonnant au sujet concerné.

2. Travail de préparation :
Avant de commencer à écrire du code, nous devons effectuer un travail de préparation :

  1. Installer les extensions PHP et MQTT :
    Ouvrez une fenêtre de terminal ou de ligne de commande et exécutez les commandes suivantes pour installer les extensions PHP et 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

Installer le courtier MQTT :

Vous pouvez choisir d'installer Mosquitto en tant que courtier MQTT, exécutez la commande suivante pour installer Mosquitto :
sudo apt-get install mosquitto

Créer une base de données et des tables :

Créez une base de données MySQL, et créez une table nommée flow avec les champs suivants : id, device_id, flow_rate , horodatage.
  • 3. Surveillance du trafic :
  • L'exemple de code suivant montre comment utiliser PHP pour surveiller les données de trafic et les stocker dans la base de données.
rrreee🎜Dans le code ci-dessus, nous avons créé un client MQTT et nous sommes abonnés au sujet flow-monitor/flow-data. Lorsqu'un message arrive, nous analysons les données reçues au format JSON et stockons les données dans la base de données. 🎜🎜4. Contrôle de flux : 🎜L'exemple de code suivant montre comment utiliser PHP pour contrôler le flux et envoyer des instructions de contrôle au courtier MQTT. 🎜rrreee🎜Dans le code ci-dessus, nous avons créé un autre client MQTT et nous sommes abonnés à la rubrique flow-control/commands. Lorsqu'une instruction de contrôle arrive, nous effectuons les opérations de contrôle de flux correspondantes selon différentes instructions. 🎜🎜Conclusion : 🎜Cet article présente, avec des exemples, comment utiliser PHP et MQTT pour mettre en œuvre une surveillance et un contrôle intelligents du trafic. En utilisant le protocole de communication MQTT et le code PHP associé, un système intelligent de surveillance et de contrôle du trafic peut être réalisé, fournissant une aide importante pour la gestion du trafic dans la société moderne. 🎜🎜Référence : 🎜🎜🎜MQTT.org (2022). Document MQTT version 3.1.1 Extrait de http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3. .html🎜🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn