>  기사  >  백엔드 개발  >  PHP 개발의 MQTT 메시지 구독 및 게시 사례

PHP 개발의 MQTT 메시지 구독 및 게시 사례

WBOY
WBOY원래의
2023-07-08 14:02:512359검색

MQTT PHP 개발에서의 실용적인 메시지 구독 및 게시

소개:
사물 인터넷의 발전과 함께 MQTT(Message Queuing Telemetry Transport Protocol)는 센서 장치와 백엔드 애플리케이션 간의 통신에서 중요한 역할을 합니다. 경량 프로토콜인 MQTT는 낮은 에너지 소비, 높은 신뢰성 및 확장성의 특징을 가지고 있습니다. PHP 개발에서 MQTT는 센서 장치와 쉽게 통신하고 처리 및 표시를 위해 백엔드 애플리케이션에 데이터를 전송할 수 있는 메시지를 구독하고 게시하는 데 사용됩니다. 이 기사에서는 PHP 개발에서 MQTT의 실제 적용을 소개하고 관련 코드 예제를 제공합니다.

1. MQTT 소개:
MQTT는 게시/구독 모델을 기반으로 하는 메시지 대기열 전송 프로토콜입니다. 경량 바이너리 메시지 형식을 채택하여 센서, 임베디드 시스템 등 다양한 하드웨어 장치에 적합합니다. MQTT 프로토콜에는 주로 메시지 게시자와 메시지 구독자의 두 가지 역할이 포함됩니다. 게시자는 특정 주제에 대한 메시지를 게시하고, 구독자는 관심 있는 주제를 구독하여 관련 메시지를 받습니다. MQTT 프로토콜은 데이터 신뢰성을 보장하기 위해 메시지 QoS(서비스 품질) 수준 설정도 지원합니다.

2. MQTT 서버 설치:
PHP 개발에서 MQTT 연습을 시작하기 전에 먼저 MQTT 서버를 구축해야 합니다. MQTT 서버를 설정하는 간단한 단계는 다음과 같습니다.

  1. Mosquitto와 같은 MQTT 서버를 다운로드하여 설치하세요.
  2. MQTT 서버를 실행하세요. 기본 수신 포트는 1883입니다.

3. PHP에서 MQTT 사용:
PHP에서 메시지 구독 및 게시에 MQTT를 사용하는 프로세스는 다음과 같습니다.

  1. MQTT 클라이언트 라이브러리 소개:
    먼저 일반적으로 사용되는 MQTT 클라이언트 라이브러리를 소개해야 합니다. PHP에서 MQTT 클라이언트 사용 터미널 라이브러리에는 phpMQTT 및 mosquitto-php 등이 포함됩니다. 이 문서에서는 phpMQTT를 예로 들어, 작곡가를 통해 설치할 수 있습니다:

    composer require bluerhinos/phpmqttclient
  2. MQTT 클라이언트 구성:
    PHP 코드에서 MQTT 작업을 수행하기 전에 먼저 서버 주소, 포트 번호, QoS 수준을 포함하여 연결을 구성해야 합니다. , 등. 다음은 구성 예시입니다.

    $mqttServer = 'localhost'; // MQTT服务器地址
    $mqttPort = 1883; // MQTT服务器端口
    $mqttClientId = 'php_script'; // 客户端ID
    $mqttUsername = ''; //用户名
    $mqttPassword = ''; // 密码
  3. MQTT 메시지 구독:
    PHP에서 주제를 구독하려면 subscribe 메서드를 사용할 수 있습니다. 다음은 예시입니다. subscribe方法。以下是一个示例:

    require('phpMQTT.php');
    $mqtt = new phpMQTT($mqttServer, $mqttPort, $mqttClientId);
    if($mqtt->connect(true, NULL, $mqttUsername, $mqttPassword)) {
      $topics['topic_name'] = array('qos' => 0, 'function' => 'dataCallback');
      $mqtt->subscribe($topics, 0);
      while($mqtt->proc()){
      }
      $mqtt->close();
    } else {
      echo "连接MQTT服务器失败!";
      exit(1);
    }
    function dataCallback($topic, $payload) {
      echo "收到消息:$payload";
    }
  4. MQTT消息的发布:
    在PHP中发布一个消息,可以使用publish方法。以下是一个示例:

    require('phpMQTT.php');
    $mqtt = new phpMQTT($mqttServer, $mqttPort, $mqttClientId);
    if($mqtt->connect(true, NULL, $mqttUsername, $mqttPassword)) {
      $mqtt->publish('topic_name', '消息内容', 0);
      $mqtt->close();
    } else {
      echo "连接MQTT服务器失败!";
      exit(1);
    }

四、实战应用:
下面以一个简单的实景应用为例,演示在PHP中使用MQTT进行消息订阅与发布的实际应用。

  1. 场景描述:
    假设我们有一个温度传感器设备,其将实时温度通过MQTT协议发布到主题为temperature
    require('phpMQTT.php');
    
    $mqttServer = 'localhost'; // MQTT服务器地址
    $mqttPort = 1883; // MQTT服务器端口
    $mqttClientId = 'php_script'; // 客户端ID
    
    $mqtt = new phpMQTT($mqttServer, $mqttPort, $mqttClientId);
    
    if($mqtt->connect(true, NULL, NULL, NULL)) {
        $topics['temperature'] = array('qos' => 0, 'function' => 'temperatureCallback');
        $mqtt->subscribe($topics, 0);
    
        echo "开始订阅温度数据...
    ";
    
        while($mqtt->proc()){
        }
    
        $mqtt->close();
    } else {
        echo "连接MQTT服务器失败!";
        exit(1);
    }
    
    function temperatureCallback($topic, $payload) {
        echo "收到温度消息:$payload
    ";
        // 在这里进行温度数据的处理,如存储到数据库或展示在Web界面上
    }

  2. MQTT 메시지 게시:
  3. PHP에서 메시지를 게시하려면 publish 메서드를 사용할 수 있습니다. 다음은 예입니다:
<!DOCTYPE html>
<html>
<head>
    <title>温度监控</title>
</head>
<body>
    <h1>温度监控</h1>
    <div id="temperature"></div>

    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script>
        $(document).ready(function() {
            var mqttServer = 'mqtt://localhost:1883';
            var clientId = 'web_client';
            var temperatureTopic = 'temperature';

            var client = mqtt.connect(mqttServer, { clientId: clientId });

            client.on('connect', function() {
                client.subscribe(temperatureTopic);
            });

            client.on('message', function(topic, message) {
                if (topic === temperatureTopic) {
                    var temperature = message.toString();
                    $('#temperature').text('当前温度:' + temperature + '℃');
                }
            });
        });
    </script>
</body>
</html>

  1. 4. 실제 적용:
  2. 다음은 PHP에서 메시지 구독 및 게시를 위해 MQTT를 사용하는 실제 적용을 보여주기 위해 간단한 실제 응용 프로그램을 예로 들어 보겠습니다.

시나리오 설명:

MQTT 프로토콜을 통해 온도 주제가 있는 채널에 실시간 온도를 게시하는 온도 센서 장치가 있다고 가정합니다. 우리의 PHP 애플리케이션은 이 온도 데이터를 실시간으로 수신하고 처리해야 하며, 이를 위해 이 주제를 구독하고 웹 인터페이스를 통해 실시간 온도를 표시하겠습니다.

PHP 코드 예시: 🎜온도 데이터를 구독하고 웹 인터페이스에 표시: 🎜🎜rrreee🎜🎜웹 인터페이스 예시: 🎜웹 인터페이스를 통해 온도 데이터를 실시간으로 표시하는 예시 코드는 다음과 같습니다. 🎜🎜rrreee🎜 위의 예제 코드는 메시지 구독 및 게시를 위해 MQTT를 사용하는 PHP 실제 애플리케이션의 사용을 보여줍니다. 온도 데이터를 구독하면 처리 및 표시를 위해 온도 데이터를 실시간으로 받을 수 있고, 메시지를 게시하면 센서 장치에 제어 명령을 보낼 수 있습니다. 실제 개발에서는 특정 요구에 따라 코드를 확장하고 조정할 수 있습니다. 🎜🎜결론: 🎜이 기사에서는 PHP 개발에서 MQTT 메시지 구독 및 게시의 실제 적용을 소개하고 관련 코드 예제를 제공합니다. MQTT 프로토콜을 사용하면 PHP 애플리케이션은 센서 장치와 쉽게 통신하고 실시간 데이터 전송 및 처리를 실현할 수 있습니다. IoT 애플리케이션 개발에서 메시징에 MQTT를 사용하면 통신 효율성과 안정성을 향상하고 애플리케이션 개발의 편의성을 높일 수 있습니다. 🎜

위 내용은 PHP 개발의 MQTT 메시지 구독 및 게시 사례의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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