>백엔드 개발 >PHP 튜토리얼 >PHP 및 MQTT를 사용한 실시간 데이터 시각화 모범 사례

PHP 및 MQTT를 사용한 실시간 데이터 시각화 모범 사례

PHPz
PHPz원래의
2023-07-07 17:53:42901검색

PHP 및 MQTT를 사용한 실시간 데이터 시각화 모범 사례

소개:
IoT 기술의 지속적인 발전으로 다양한 센서 데이터를 쉽게 수집할 수 있습니다. 이 데이터를 실시간으로 시각화하는 방법은 중요한 과제입니다. 이 기사에서는 실시간 데이터 시각화를 달성하기 위해 PHP 및 MQTT 프로토콜을 사용하는 방법에 대한 모범 사례를 소개합니다.

1. MQTT 프로토콜이란 무엇입니까?
MQTT는 IoT 장치 간의 통신에 사용되는 경량 통신 프로토콜입니다. 간단하고 가벼우며 오픈 소스이므로 IoT 애플리케이션에 매우 적합합니다.

2. PHP와 MQTT를 선택하는 이유는 무엇인가요?

  1. 스크립트 언어인 PHP는 배우고 사용하기 쉽습니다.
  2. MQTT 프로토콜은 낮은 대역폭, 낮은 전력 소비 및 높은 신뢰성이라는 특성을 갖고 있어 IoT 애플리케이션에 매우 적합합니다.
  3. PHP에는 Mosquitto, PHPMQTT 등과 같은 풍부한 MQTT 클라이언트 라이브러리가 있어 MQTT 서버와 쉽게 통신할 수 있습니다.

3. 실시간 데이터 시각화를 위한 모범 사례
실시간 데이터 시각화를 구현하는 과정에서는 다음 단계를 수행해야 합니다.

  1. 환경 준비
    먼저 MQTT를 설치해야 합니다. Mosquitto와 같은 서버의 서버. 그런 다음 Mosquitto-PHP와 같은 PHP용 MQTT 클라이언트 라이브러리를 설치해야 합니다. 다음 명령을 실행하여 설치할 수 있습니다.

    sudo apt-get install mosquitto mosquitto-clients
    sudo apt-get install php-pear
    sudo apt-get install php-dev
    sudo pecl install Mosquitto-alpha
    sudo echo "extension=mosquitto.so" > /etc/php/7.2/cli/conf.d/20-mosquitto.ini
  2. MQTT 클라이언트 생성
    다음으로 MQTT 서버와 통신하기 위해 MQTT 클라이언트를 생성해야 합니다. Mosquitto-PHP 라이브러리를 사용하여 클라이언트를 만들 수 있습니다. 샘플 코드는 다음과 같습니다.

    <?php
    $mqtt = new MosquittoClient();
    $mqtt->onConnect('connectHandler');
    $mqtt->onMessage('messageHandler');
    $mqtt->connect('mqtt.example.com', 1883, 60); // 连接到MQTT服务器
    
    function connectHandler($r)
    {
     // 连接成功后的处理逻辑
    }
    
    function messageHandler($m)
    {
     // 接收到消息后的处理逻辑
    }
    
    $mqtt->loopForever(); //开启循环监听
  3. 데이터 게시
    데이터를 게시해야 하는 경우 다음 코드를 사용하여 데이터를 게시할 수 있습니다.

    $mqtt->publish('topic', 'message', 2, false); // 发布消息
  4. 데이터 구독
    데이터를 구독해야 하는 경우 다음을 수행할 수 있습니다. 데이터를 구독하려면 다음 코드를 사용하세요.

    $mqtt->subscribe('topic', 2); // 订阅消息
  5. 데이터 시각화
    데이터를 받은 후 해당 차트 라이브러리를 사용하여 데이터를 시각화할 수 있습니다. 이는 Highcharts 및 Echarts와 같은 차트 라이브러리를 사용하여 달성할 수 있습니다.

4. 예시 시연
간단한 실시간 온도 모니터링 시스템을 구현해 보겠습니다. 먼저 센서 장치와 같은 데이터를 게시하는 클라이언트를 만듭니다.

$mqtt = new MosquittoClient();
$mqtt->connect('mqtt.example.com', 1883, 60);

while (true) {
    $temperature = getTemperature(); // 获取温度数据
    $mqtt->publish('temperature', $temperature, 2, false);
    sleep(1); // 每隔1秒发布一次数据
}

그런 다음 실시간 온도 데이터를 수신하고 표시하기 위해 데이터를 구독하는 클라이언트를 만듭니다.

$mqtt = new MosquittoClient();
$mqtt->connect('mqtt.example.com', 1883, 60);
$mqtt->subscribe('temperature', 2);

$mqtt->onMessage(function ($message){
    $temperature = $message->payload;
    echo '当前温度:' . $temperature . '℃';
});

$mqtt->loopForever();

마지막으로 Highcharts를 사용하여 실제 온도를 구현합니다. -시간 온도 시각화. 먼저 Highcharts 라이브러리를 도입한 다음 온도 차트를 만들고 데이터를 받은 후 차트를 업데이트해야 합니다.

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <script src="https://code.highcharts.com/highcharts.js"></script>
    <script src="https://code.highcharts.com/modules/exporting.js"></script>
</head>
<body>
    <div id="container"></div>

    <script>
        var chart = Highcharts.chart('container', {
            title: {
                text: '实时温度监控'
            },
            series: [{
                name: 'Temperature',
                data: []
            }]
        });

        var topic = 'temperature';

        var client = new Paho.MQTT.Client("mqtt.example.com", 1883, "clientId");

        client.onConnectionLost = function (responseObject) {
            if (responseObject.errorCode !== 0) {
                console.log("连接丢失: " + responseObject.errorMessage);
            }
        };

        client.onMessageArrived = function (message) {
            var temperature = parseFloat(message.payloadString);
            chart.series[0].addPoint(temperature);
        };

        client.connect({
            onSuccess: function () {
                client.subscribe(topic);
            }
        });
    </script>
</body>
</html>

결론:
PHP 및 MQTT 프로토콜을 사용하면 실시간 데이터 시각화를 달성할 수 있습니다. 실제로 우리는 보다 풍부한 데이터 시각화 효과를 얻기 위해 특정 요구 사항에 따라 PHP 및 MQTT에서 제공하는 기능과 기능을 유연하게 사용할 수 있습니다.

위 내용은 PHP 및 MQTT를 사용한 실시간 데이터 시각화 모범 사례의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.