사물인터넷(Internet of Things) 기술의 발전으로 점점 더 많은 기기와 물품이 인터넷에 연결되고 있으며, 이러한 기기와 물품 간의 통신과 제어가 요구되고 있습니다. 이 기사에서는 PHP 및 MQTT 프로토콜을 사용하여 사물 인터넷의 통신 및 제어를 구현하는 방법을 소개합니다.
1. MQTT 프로토콜이란 무엇입니까?
MQTT(Message Queuing Telemetry Transport)는 게시/구독 모델을 기반으로 구현된 경량 메시지 전송 프로토콜입니다. MQTT 프로토콜은 대역폭이 낮고 신뢰할 수 없는 네트워크 환경에서 사용할 수 있으며 IoT 장치에 적합한 프로토콜입니다.
MQTT 프로토콜의 기본 개념은 다음과 같습니다.
2. MQTT 프로토콜을 사용하여 IoT 통신 구현
먼저 서버에 MQTT 메시지 프록시 서버를 설치해야 합니다. 일반적으로 사용되는 MQTT 서버에는 Mosquitto 및 EMQX가 포함됩니다.
Ubuntu 시스템에서는 다음 명령을 통해 Mosquitto를 설치할 수 있습니다.
$ sudo apt-get update $ sudo apt-get install mosquitto mosquitto-clients
PHP는 MQTT 클라이언트 라이브러리를 호출하여 MQTT 메시지 브로커 서버에 연결하여 게시 및 게시 기능을 구현할 수 있습니다. 메시지를 구독 중입니다. 일반적으로 사용되는 MQTT 클라이언트 라이브러리에는 phpMQTT 및 MQTT.php가 포함됩니다.
phpMQTT 라이브러리를 사용하면 다음 코드를 사용하여 MQTT 서버에 연결하고 메시지를 게시할 수 있습니다.
<?php require("phpMQTT.php"); $mqtt = new phpMQTT("example.com", 1883, "PHP MQTT Client"); if ($mqtt->connect()) { $mqtt->publish("/sensor/humidity", "25"); $mqtt->close(); } else { echo "Connection failed!"; } ?>
위 코드에서는 MQTT 서버의 주소와 포트 번호는 물론 클라이언트의 주소와 포트 번호도 제공해야 합니다. ID. connect() 메서드를 사용하여 MQTT 서버에 연결할 수 있고, 게시() 메서드를 사용하여 메시지를 게시하며, close() 메서드를 사용하여 MQTT 연결을 닫을 수 있습니다.
메시지 게시 외에도 PHP는 MQTT 주제를 구독하고 MQTT 서버에서 보낸 메시지를 받을 수 있습니다.
phpMQTT 라이브러리를 사용하면 다음 코드를 통해 주제 구독 및 메시지 수신 기능을 구현할 수 있습니다.
<?php require("phpMQTT.php"); function messageHandler($topic, $payload) { echo "Received message on topic: $topic Payload: $payload "; } $mqtt = new phpMQTT("example.com", 1883, "PHP MQTT Client"); if ($mqtt->connect()) { $mqtt->subscribe("/sensor/temperature", "messageHandler"); while ($mqtt->proc()) {} $mqtt->close(); } else { echo "Connection failed!"; } ?>
위 코드에서 subscribe() 메서드를 사용하여 /mainstreet/topic 주제를 구독하고 $payload 매개변수는 콜백 함수 messageHandler()에 의해 수신됩니다. 뉴스가 도착했습니다. code>while ($mqtt->proc()) {} 루프는 구독 상태를 유지하고 MQTT 서버로부터 메시지를 수신 및 처리할 수 있습니다.
3. PHP 및 MQTT 프로토콜을 사용하여 IoT 제어 구현
MQTT 프로토콜은 IoT 통신 구현뿐만 아니라 장치 제어 구현에도 사용할 수 있습니다. MQTT 서버는 클라이언트로부터 메시지를 수신한 다음 메시지를 수신해야 하는 다른 클라이언트에 메시지를 보낼 수 있습니다. 이러한 방식으로 장치 간 제어가 가능합니다.
다음은 MQTT 프로토콜과 PHP를 사용하여 LED 조명을 제어하는 샘플 코드입니다.
<?php require("phpMQTT.php"); function messageHandler($topic, $payload) { $pattern = '/^led=(on|off)$/'; if (preg_match($pattern, $payload, $matches)) { if ($matches[1] == "on") { system("gpio write 0 1"); // Turn on LED } else { system("gpio write 0 0"); // Turn off LED } } } $mqtt = new phpMQTT("example.com", 1883, "PHP MQTT Client"); if ($mqtt->connect()) { $mqtt->subscribe("/devices/led", "messageHandler"); while ($mqtt->proc()) {} $mqtt->close(); } else { echo "Connection failed!"; } ?>
위 코드에서 GPIO는 MQTT에서 메시지를 수신할 때 LED 조명의 스위치를 제어하는 데 사용됩니다. "led=on" 또는 "led=off" 형식과 일치하면 LED 조명 스위치가 제어됩니다.
다음은 MQTT 프로토콜과 PHP를 사용하여 모터를 제어하는 샘플 코드입니다.
<?php require("phpMQTT.php"); function messageHandler($topic, $payload) { $pattern = '/^motor=(forward|backward|stop)$/'; if (preg_match($pattern, $payload, $matches)) { if ($matches[1] == "forward") { // Turn motor forward } elseif ($matches[1] == "backward") { // Turn motor backward } else { // Stop motor } } } $mqtt = new phpMQTT("example.com", 1883, "PHP MQTT Client"); if ($mqtt->connect()) { $mqtt->subscribe("/devices/motor", "messageHandler"); while ($mqtt->proc()) {} $mqtt->close(); } else { echo "Connection failed!"; } ?>
위 코드에서 정규식을 사용하여 MQTT 메시지의 내용을 일치시킵니다. motor=forward", "motor= "backward" 또는 "motor=stop" 형식은 모터의 이동 방향을 제어합니다.
요약
이 기사에서는 PHP 및 MQTT 프로토콜을 사용하여 사물 인터넷의 통신 및 제어를 구현하는 방법을 소개합니다. MQTT 프로토콜을 통해 IoT 애플리케이션의 기반이 되는 낮은 대역폭과 불안정한 네트워크 환경에서도 장치 간 통신 및 제어가 가능합니다.
위 내용은 PHP와 MQTT를 이용한 사물인터넷 통신 및 제어의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!