PHP 및 MQTT를 사용한 원격 조명 제어 기술 가이드
소개:
사물 인터넷의 지속적인 발전으로 인해 원격 제어 장치가 점점 더 보편화되고 있습니다. 원격 조명 제어도 애플리케이션 중 하나이며 이 기능은 PHP 및 MQTT를 사용하여 쉽게 구현할 수 있습니다. 이 기사에서는 PHP 및 MQTT를 사용하여 원격 조명 제어를 구현하는 방법을 소개하고 독자의 참조를 위한 코드 예제를 제공합니다.
1. 준비
데이터베이스 테이블 만들기
조명 상태 정보를 저장할 데이터베이스 테이블을 만듭니다. 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;
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代码来实现远程灯光控制。
连接MQTT服务器
首先,需要引入MQTT客户端库,并使用MosquittoClient
来连接MQTT服务器。代码如下所示:
$client = new MosquittoClient(); $client->connect('127.0.0.1', 1883, 60);
订阅MQTT主题
接下来,需要订阅MQTT主题以接收远程控制指令。可以使用MosquittoClient
的onMessage
方法来处理收到的消息。代码如下所示:
$client->onMessage(function($message){ // 处理收到的消息 }); $client->subscribe('light_control/#', 1);
处理收到的消息
在onMessage
먼저 원격 조명 제어를 구현하려면 PHP 코드를 작성해야 합니다.
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 주제를 구독해야 합니다. MosquittoClient
의 onMessage
메서드를 사용하여 수신된 메시지를 처리할 수 있습니다. 코드는 다음과 같습니다.
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); } ?>
위 내용은 PHP 및 MQTT를 사용한 원격 조명 제어 기술 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!