PHP 및 MQTT를 사용한 지능형 트래픽 모니터링 및 제어에 대한 실용적인 접근 방식

WBOY
풀어 주다: 2023-07-09 18:42:01
원래의
1176명이 탐색했습니다.

PHP 및 MQTT를 사용하여 지능형 트래픽 모니터링 및 제어를 구현하는 실용적인 방법

소개:
IoT 기술의 지속적인 발전으로 지능형 트래픽 모니터링 및 제어는 현대 사회에서 중요한 요구 사항이 되었습니다. 이 기사에서는 PHP 및 MQTT 기술을 사용하여 지능형 트래픽 모니터링 및 제어의 실용적인 방법을 구현하는 방법을 소개하고 해당 코드 예제를 제공합니다.

1. MQTT란 무엇인가요?
MQTT(Message Queuing Telemetry Transport)는 제한된 네트워크 대역폭과 불안정한 네트워크 연결을 통한 통신에 적합한 경량 메시지 전송 프로토콜입니다. MQTT는 게시/구독 통신 모드를 제공합니다. 즉, 메시지 게시자가 메시지를 브로커에 게시하면 구독자는 관련 주제를 구독하여 메시지를 받습니다.

2. 준비 작업:
코드 작성을 시작하기 전에 몇 가지 준비 작업을 수행해야 합니다.

  1. PHP 및 MQTT 확장 설치:
    터미널 또는 명령줄 창을 열고 다음 명령을 실행하여 PHP 및 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

MQTT 브로커 설치:

Mosquitto를 MQTT 브로커로 설치하도록 선택할 수 있습니다. 다음 명령을 실행하여 Mosquitto를 설치할 수 있습니다.
sudo apt-get install mosquitto

데이터베이스 및 테이블 생성:

MySQL 데이터베이스를 생성하고 id, device_id, flow_rate 필드를 사용하여 flow라는 테이블을 생성합니다. , 타임스탬프.
  • 3. 트래픽 모니터링:
  • 다음 코드 예제는 PHP를 사용하여 트래픽 데이터를 모니터링하고 이를 데이터베이스에 저장하는 방법을 보여줍니다.
rrreee🎜위 코드에서는 MQTT 클라이언트를 생성하고 flow-monitor/flow-data 주제를 구독했습니다. 메시지가 도착하면 수신된 데이터를 JSON 형식으로 구문 분석하여 데이터베이스에 저장합니다. 🎜🎜4. 흐름 제어: 🎜다음 코드 예제는 PHP를 사용하여 흐름을 제어하고 MQTT 브로커에 제어 명령을 보내는 방법을 보여줍니다. 🎜rrreee🎜위 코드에서는 또 다른 MQTT 클라이언트를 생성하고 flow-control/commands 주제를 구독했습니다. 제어 명령이 도착하면 다른 명령에 따라 해당 흐름 제어 작업을 수행합니다. 🎜🎜결론: 🎜이 기사에서는 PHP 및 MQTT를 사용하여 지능형 트래픽 모니터링 및 제어를 구현하는 방법을 예제와 함께 소개합니다. MQTT 통신 프로토콜 및 관련 PHP 코드를 사용하여 지능형 교통 모니터링 및 제어 시스템을 실현할 수 있으며, 이는 현대 사회의 교통 관리에 중요한 도움을 제공합니다. 🎜🎜참조: 🎜🎜🎜MQTT.org(2022). MQTT 버전 3.1.1. http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3. .html🎜🎜

위 내용은 PHP 및 MQTT를 사용한 지능형 트래픽 모니터링 및 제어에 대한 실용적인 접근 방식의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿