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 서버를 설정하는 간단한 단계는 다음과 같습니다.
3. PHP에서 MQTT 사용:
PHP에서 메시지 구독 및 게시에 MQTT를 사용하는 프로세스는 다음과 같습니다.
MQTT 클라이언트 라이브러리 소개:
먼저 일반적으로 사용되는 MQTT 클라이언트 라이브러리를 소개해야 합니다. PHP에서 MQTT 클라이언트 사용 터미널 라이브러리에는 phpMQTT 및 mosquitto-php 등이 포함됩니다. 이 문서에서는 phpMQTT를 예로 들어, 작곡가를 통해 설치할 수 있습니다:
composer require bluerhinos/phpmqttclient
MQTT 클라이언트 구성:
PHP 코드에서 MQTT 작업을 수행하기 전에 먼저 서버 주소, 포트 번호, QoS 수준을 포함하여 연결을 구성해야 합니다. , 등. 다음은 구성 예시입니다.
$mqttServer = 'localhost'; // MQTT服务器地址 $mqttPort = 1883; // MQTT服务器端口 $mqttClientId = 'php_script'; // 客户端ID $mqttUsername = ''; //用户名 $mqttPassword = ''; // 密码
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"; }
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进行消息订阅与发布的实际应用。
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界面上 }
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>
MQTT 프로토콜을 통해 온도
주제가 있는 채널에 실시간 온도를 게시하는 온도 센서 장치가 있다고 가정합니다. 우리의 PHP 애플리케이션은 이 온도 데이터를 실시간으로 수신하고 처리해야 하며, 이를 위해 이 주제를 구독하고 웹 인터페이스를 통해 실시간 온도를 표시하겠습니다.
위 내용은 PHP 개발의 MQTT 메시지 구독 및 게시 사례의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!