>백엔드 개발 >PHP 튜토리얼 >PHP 및 MQTT를 사용한 원격 조명 제어 기술 가이드

PHP 및 MQTT를 사용한 원격 조명 제어 기술 가이드

PHPz
PHPz원래의
2023-07-10 09:55:391423검색

PHP 및 MQTT를 사용한 원격 조명 제어 기술 가이드

소개:
사물 인터넷의 지속적인 발전으로 인해 원격 제어 장치가 점점 더 보편화되고 있습니다. 원격 조명 제어도 애플리케이션 중 하나이며 이 기능은 PHP 및 MQTT를 사용하여 쉽게 구현할 수 있습니다. 이 기사에서는 PHP 및 MQTT를 사용하여 원격 조명 제어를 구현하는 방법을 소개하고 독자의 참조를 위한 코드 예제를 제공합니다.

1. 준비

  1. MQTT 서버 설치
    먼저 MQTT 서버를 설치해야 합니다. 일반적으로 사용되는 MQTT 서버에는 Mosquitto 및 RabbitMQ가 있습니다. 필요에 따라 설치에 적합한 MQTT 서버를 선택하고 서버가 정상적으로 실행되는지 확인할 수 있습니다.
  2. 데이터베이스 테이블 만들기
    조명 상태 정보를 저장할 데이터베이스 테이블을 만듭니다. MySQL 또는 기타 데이터베이스 관리 시스템을 사용하여 테이블을 생성할 수 있으며 테이블 구조는 다음과 같습니다.

    CREATE TABLE `lights` (
     `id` INT(11) NOT NULL AUTO_INCREMENT,
     `name` VARCHAR(50) NOT NULL,
     `status` ENUM('off', 'on') NOT NULL DEFAULT 'off',
     PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  3. MQTT 클라이언트 라이브러리 설치
    PHP에서 MQTT를 사용하려면 MQTT 클라이언트 라이브러리를 사용해야 합니다. MQTT 클라이언트 라이브러리는 mosquitto 패키지를 사용하여 설치할 수 있습니다. mosquitto 패키지는 다음 명령을 사용하여 설치할 수 있습니다.

    sudo apt-get install mosquitto
    sudo apt-get install php-mosquitto

    설치가 완료된 후 php -m grep mosquitto를 실행하여 mosquitto 확장 프로그램이 성공적으로 설치되었는지 확인할 수 있습니다. php -m | grep mosquitto来验证mosquitto扩展是否安装成功。

二、编写PHP代码

首先,需要编写PHP代码来实现远程灯光控制。

  1. 连接MQTT服务器
    首先,需要引入MQTT客户端库,并使用MosquittoClient来连接MQTT服务器。代码如下所示:

    $client = new MosquittoClient();
    $client->connect('127.0.0.1', 1883, 60);
  2. 订阅MQTT主题
    接下来,需要订阅MQTT主题以接收远程控制指令。可以使用MosquittoClientonMessage方法来处理收到的消息。代码如下所示:

    $client->onMessage(function($message){
      // 处理收到的消息
    });
    
    $client->subscribe('light_control/#', 1);
  3. 处理收到的消息
    onMessage

  4. 2. PHP 코드 작성


    먼저 원격 조명 제어를 구현하려면 PHP 코드를 작성해야 합니다.

  5. MQTT 서버에 연결
먼저 MQTT 클라이언트 라이브러리를 도입하고 MosquittoClient를 사용하여 MQTT 서버에 연결해야 합니다. 코드는 다음과 같습니다.

$client->onMessage(function($message) use ($client){
  $payload = $message->payload;
  list($command, $lightId) = explode('/', $message->topic);

  // 更新数据库中的灯光状态
  // ...

  // 发布当前状态给订阅者
  $client->publish("light_status/$lightId", $payload, 1);
});

MQTT 주제 구독

다음으로 원격 제어 지침을 받으려면 MQTT 주제를 구독해야 합니다. MosquittoClientonMessage 메서드를 사용하여 수신된 메시지를 처리할 수 있습니다. 코드는 다음과 같습니다.

if ($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['lightId']) && isset($_GET['status'])) {
  $lightId = $_GET['lightId'];
  $status = $_GET['status'];

  // 更新数据库中的灯光状态
  // ...

  // 发布状态给订阅者
  $client->publish("light_status/$lightId", $status, 1);
}
🎜🎜🎜수신된 메시지 처리하기🎜 onMessage 콜백 함수에서 수신된 메시지를 처리할 수 있습니다. 이 예에서는 데이터베이스의 표시등 상태를 업데이트하고 현재 상태를 구독자에게 게시합니다. 코드는 다음과 같습니다. 🎜
connect('127.0.0.1', 1883, 60);

$client->onMessage(function($message) use ($client){
  $payload = $message->payload;
  list($command, $lightId) = explode('/', $message->topic);

  // 更新数据库中的灯光状态
  // ...

  // 发布当前状态给订阅者
  $client->publish("light_status/$lightId", $payload, 1);
});

$client->subscribe('light_control/#', 1);

if ($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['lightId']) && isset($_GET['status'])) {
  $lightId = $_GET['lightId'];
  $status = $_GET['status'];

  // 更新数据库中的灯光状态
  // ...

  // 发布状态给订阅者
  $client->publish("light_status/$lightId", $status, 1);
}

while (true) {
  $client->loop();
  sleep(1);
}
?>
🎜🎜🎜조명 상태 제어🎜마지막으로 조명 상태를 제어할 수 있는 인터페이스를 제공해야 합니다. 이 예에서는 GET 요청을 사용하여 조명 상태를 제어합니다. 코드는 다음과 같습니다. 🎜rrreee🎜전체 PHP 코드 예제는 이 기사의 부록에서 찾을 수 있습니다. 🎜🎜🎜🎜3. 요약🎜🎜이 글에서는 PHP와 MQTT를 사용하여 원격 조명 제어를 구현하는 방법을 소개합니다. 먼저 MQTT 서버를 설치하고 해당 데이터베이스 테이블을 생성해야 합니다. 그런 다음 PHP 코드를 작성하여 MQTT 서버에 연결하고, MQTT 주제를 구독하고, 수신된 메시지를 처리하고, 조명 상태를 제어하는 ​​인터페이스를 제공합니다. 이 글이 독자들에게 도움이 되기를 바랍니다. 🎜🎜부록: 완전한 PHP 코드 예제🎜rrreee

위 내용은 PHP 및 MQTT를 사용한 원격 조명 제어 기술 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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