Heim  >  Artikel  >  Backend-Entwicklung  >  Ein praktischer Ansatz zur intelligenten Verkehrsüberwachung und -steuerung mithilfe von PHP und MQTT

Ein praktischer Ansatz zur intelligenten Verkehrsüberwachung und -steuerung mithilfe von PHP und MQTT

WBOY
WBOYOriginal
2023-07-09 18:40:451155Durchsuche

Eine praktische Methode zur Implementierung einer intelligenten Verkehrsüberwachung und -steuerung mithilfe von PHP und MQTT.

Einführung:
Mit der kontinuierlichen Entwicklung der IoT-Technologie ist die intelligente Verkehrsüberwachung und -steuerung zu einem wichtigen Bedürfnis in der modernen Gesellschaft geworden. In diesem Artikel wird die Verwendung der PHP- und MQTT-Technologie zur Implementierung praktischer Methoden zur intelligenten Verkehrsüberwachung und -steuerung vorgestellt und entsprechende Codebeispiele bereitgestellt.

1. Was ist MQTT?
MQTT (Message Queuing Telemetry Transport) ist ein leichtes Nachrichtenübertragungsprotokoll, das für die Kommunikation über begrenzte Netzwerkbandbreite und instabile Netzwerkverbindungen geeignet ist. MQTT bietet einen Publish/Subscribe-Kommunikationsmodus, d. h. der Herausgeber der Nachricht veröffentlicht die Nachricht an einen Broker und der Abonnent empfängt die Nachricht dann, indem er das relevante Thema abonniert.

2. Vorbereitungsarbeiten:
Bevor wir mit dem Schreiben von Code beginnen, müssen wir einige Vorbereitungsarbeiten durchführen:

  1. PHP- und MQTT-Erweiterungen installieren:
    Öffnen Sie ein Terminal- oder Befehlszeilenfenster und führen Sie die folgenden Befehle aus, um PHP- und MQTT-Erweiterungen zu installieren :
    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

MQTT-Broker installieren:

Sie können Mosquitto als MQTT-Broker installieren. Führen Sie den folgenden Befehl aus, um Mosquitto zu installieren:
sudo apt-get install mosquitto

Datenbank und Tabellen erstellen:

Erstellen Sie eine MySQL-Datenbank und erstellen Sie eine Tabelle mit dem Namen flow mit den folgenden Feldern: id, device_id, flow_rate , Zeitstempel.
  • 3. Verkehrsüberwachung:
  • Das folgende Codebeispiel zeigt, wie man PHP verwendet, um Verkehrsdaten zu überwachen und in einer Datenbank zu speichern.
rrreee🎜Im obigen Code haben wir einen MQTT-Client erstellt und das Thema flow-monitor/flow-data abonniert. Wenn eine Nachricht eintrifft, analysieren wir die empfangenen Daten in das JSON-Format und speichern die Daten in der Datenbank. 🎜🎜4. Flusskontrolle: 🎜Das folgende Codebeispiel zeigt, wie PHP zur Flusskontrolle und zum Senden von Kontrollanweisungen an den MQTT-Broker verwendet wird. 🎜rrreee🎜Im obigen Code haben wir einen weiteren MQTT-Client erstellt und das Thema flow-control/commands abonniert. Wenn eine Steueranweisung eintrifft, führen wir entsprechende Flusskontrolloperationen gemäß verschiedenen Anweisungen durch. 🎜🎜Fazit: 🎜Dieser Artikel stellt anhand von Beispielen vor, wie man mit PHP und MQTT eine intelligente Verkehrsüberwachung und -steuerung implementiert. Durch die Verwendung des MQTT-Kommunikationsprotokolls und des zugehörigen PHP-Codes kann ein intelligentes Verkehrsüberwachungs- und -steuerungssystem realisiert werden, das eine wichtige Hilfe für das Verkehrsmanagement in der modernen Gesellschaft darstellt. 🎜🎜Referenz: 🎜🎜🎜MQTT Version 3.1.1. Abgerufen von http://docs.oasis-open.org/mqtt/v3.1.1 .html🎜🎜

Das obige ist der detaillierte Inhalt vonEin praktischer Ansatz zur intelligenten Verkehrsüberwachung und -steuerung mithilfe von PHP und MQTT. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn