>  기사  >  백엔드 개발  >  PHP와 MQTT를 이용한 사물인터넷 통신 및 제어

PHP와 MQTT를 이용한 사물인터넷 통신 및 제어

WBOY
WBOY원래의
2023-06-25 10:14:234960검색

사물인터넷(Internet of Things) 기술의 발전으로 점점 더 많은 기기와 물품이 인터넷에 연결되고 있으며, 이러한 기기와 물품 간의 통신과 제어가 요구되고 있습니다. 이 기사에서는 PHP 및 MQTT 프로토콜을 사용하여 사물 인터넷의 통신 및 제어를 구현하는 방법을 소개합니다.

1. MQTT 프로토콜이란 무엇입니까?

MQTT(Message Queuing Telemetry Transport)는 게시/구독 모델을 기반으로 구현된 경량 메시지 전송 프로토콜입니다. MQTT 프로토콜은 대역폭이 낮고 신뢰할 수 없는 네트워크 환경에서 사용할 수 있으며 IoT 장치에 적합한 프로토콜입니다.

MQTT 프로토콜의 기본 개념은 다음과 같습니다.

  • 클라이언트: MQTT 서버에 연결하고 메시지를 게시하거나 구독할 수 있는 장치 또는 애플리케이션입니다.
  • 서버(브로커): 메시지 수신, 저장 및 전달을 담당하는 MQTT 메시지 브로커입니다.
  • 주제: 메시지의 카테고리나 이름을 나타냅니다. 주제는 "/"로 구분된 하나 이상의 단어로 구성될 수 있습니다. 예를 들어, "/sensor/humidity" 항목은 습도 센서의 데이터를 나타냅니다.
  • 메시지: 커뮤니케이션을 통해 전달되는 정보입니다. MQTT 메시지에는 주제와 페이로드가 포함될 수 있으며 페이로드는 모든 바이너리 데이터일 수 있습니다.

2. MQTT 프로토콜을 사용하여 IoT 통신 구현

  1. MQTT 서버 설치

먼저 서버에 MQTT 메시지 프록시 서버를 설치해야 합니다. 일반적으로 사용되는 MQTT 서버에는 Mosquitto 및 EMQX가 포함됩니다.

Ubuntu 시스템에서는 다음 명령을 통해 Mosquitto를 설치할 수 있습니다.

$ sudo apt-get update
$ sudo apt-get install mosquitto mosquitto-clients
  1. PHP는 MQTT 서버에 연결합니다.

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 연결을 닫을 수 있습니다.

  1. PHP는 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 서버는 클라이언트로부터 메시지를 수신한 다음 메시지를 수신해야 하는 다른 클라이언트에 메시지를 보낼 수 있습니다. 이러한 방식으로 장치 간 제어가 가능합니다.

  1. LED 조명 제어

다음은 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 조명 스위치가 제어됩니다.

  1. 모터 제어

다음은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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