PHP 및 MQTT를 사용하여 원격 온도 모니터링 및 제어를 구현하는 단계
IoT 기술의 급속한 발전으로 원격 모니터링 및 제어는 일상 생활에서 일반적인 요구 사항이 되었습니다. 이 기사에서는 PHP 및 MQTT 프로토콜을 사용하여 원격 온도 모니터링 및 제어를 구현하는 방법을 소개합니다. 예를 들어 ESP8266 기반 온도 센서를 사용하고 MQTT 프로토콜을 통해 원격 서버에 온도 데이터를 보냅니다. 동시에 원격 서버는 MQTT 프로토콜을 통해 ESP8266에 제어 명령을 보낼 수 있습니다. 구현 단계는 다음과 같습니다.
1단계: MQTT 서버 구성
먼저, 장치와 서버 간의 통신을 원활하게 하기 위해 MQTT 서버를 설치하고 구성해야 합니다. 여기서는 오픈 소스 Mosquitto MQTT 서버를 예로 사용합니다. 필요에 따라 다른 MQTT 서버를 선택할 수 있습니다. 설치가 완료되면 MQTT 서버의 IP 주소, 포트 번호, 사용자 이름, 비밀번호 및 기타 관련 정보를 구성하고 장치와 서버 간의 통신을 위한 주제를 생성해야 합니다.
2단계: ESP8266 구성
ESP8266에 MQTT 라이브러리를 설치합니다. 여기서는 phpMQTT 라이브러리를 예로 사용합니다. Arduino IDE의 라이브러리 관리 인터페이스를 통해 이 라이브러리를 설치할 수 있습니다. 그런 다음 WiFi 이름 및 비밀번호는 물론 IP 주소, 포트 번호, 사용자 이름, 비밀번호 및 MQTT 서버의 기타 정보를 포함하여 코드에서 WiFi 연결 및 MQTT 서버 관련 정보를 구성해야 합니다. 동시에 장치의 주제를 구성해야 합니다. 여기에서는 온도 데이터를 전송하기 위해 이름을 "온도"로 지정할 수 있습니다.
다음은 간단한 ESP8266 코드 예제입니다.
#include <ESP8266WiFi.h> #include <phpMQTT.h> const char* ssid = "your_SSID"; const char* password = "your_PASSWORD"; const char* mqtt_server = "MQTT_SERVER_IP"; const char* topic = "temperature"; WiFiClient espClient; phpMQTT mqtt; float temperature = 0; void setup_wifi() { delay(10); // We start by connecting to a WiFi network Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void callback(char* topic, byte* payload, unsigned int length) { // handle incoming MQTT messages here } void reconnect() { // Loop until we're reconnected while (!mqtt.connected()) { Serial.print("Attempting MQTT connection..."); // Attempt to connect if (mqtt.connect("ESP8266Client")) { Serial.println("connected"); mqtt.subscribe(topic); } else { Serial.print("failed, rc="); Serial.print(mqtt.state()); Serial.println(" try again in 5 seconds"); // Wait 5 seconds before retrying delay(5000); } } } void setup() { Serial.begin(115200); setup_wifi(); mqtt.begin(mqtt_server, 1883, espClient); mqtt.onMessage(callback); } void loop() { if (!mqtt.connected()) { reconnect(); } mqtt.loop(); // simulate reading temperature from sensor temperature = random(20, 40); // convert temperature to string for MQTT publishing char tmp[10]; sprintf(tmp, "%.2f", temperature); // publish temperature to MQTT topic mqtt.publish(topic, tmp); delay(2000); }
3단계: PHP 서버 구성
원격 서버에서 MQTT 클라이언트 라이브러리를 설치하고 구성해야 합니다. 여기서는 phpMQTT 라이브러리를 사용합니다. 이 라이브러리는 Composer를 통해 설치할 수 있습니다. 그런 다음 IP 주소, 포트 번호, 사용자 이름, 비밀번호 등을 포함하여 MQTT 서버의 관련 정보를 PHP 코드로 구성합니다. 동시에 온도 변화를 실시간으로 모니터링할 수 있도록 장치에서 전송되는 온도 데이터를 구독해야 합니다. 다음은 간단한 PHP 코드 예입니다.
<?php require("phpMQTT.php"); $mqtt_server = "MQTT_SERVER_IP"; $mqtt_port = 1883; $mqtt_user = "your_MQTT_username"; $mqtt_password = "your_MQTT_password"; $mqtt_topic = "temperature"; $client_id = "PHPServer"; $mqtt = new phpMQTT($mqtt_server, $mqtt_port, $client_id); if(!$mqtt->connect(true, NULL, $mqtt_user, $mqtt_password)){ exit(1); } $topics[$mqtt_topic] = array("qos"=>0, "function"=>"receiveTemperature"); $mqtt->subscribe($topics, 0); while($mqtt->proc()){ } $mqtt->close(); function receiveTemperature($topic, $payload){ // handle incoming temperature data here $temperature = floatval($payload); // do something with the temperature data, such as storing it in a database or triggering a notification } ?>
4단계: 온도 모니터링 및 제어
이제 ESP8266을 전원에 연결하고 직렬 모니터에서 장치 작동을 볼 수 있습니다. ESP8266은 정기적으로 온도 센서의 값을 읽고 MQTT 프로토콜을 통해 지정된 주제에 게시합니다. 동시에 PHP 서버는 이 주제를 구독하고 수신된 온도 데이터를 기반으로 데이터베이스에 저장하거나 알람을 트리거하는 등 해당 처리를 수행합니다.
온도 모니터링을 기반으로 온도 조절 기능도 구현할 수 있습니다. PHP 코드에 MQTT 게시 기능을 추가하여 ESP8266에 제어 지침을 보낼 수 있습니다. 필요에 따라 웹 인터페이스, 앱 또는 기타 방법을 통해 제어 지침을 트리거하고 MQTT 프로토콜을 통해 ESP8266에 지침을 보낼 수 있습니다. ESP8266은 수신된 명령에 따라 해당 제어 작업을 수행할 수 있습니다.
요약하자면, PHP와 MQTT 프로토콜을 사용하면 원격 온도 모니터링 및 제어 기능을 쉽게 구현할 수 있습니다. 이 방법은 실내 온도 모니터링, 온실 온도 제어 등과 같은 다양한 시나리오에 적용될 수 있습니다. 이 기사가 도움이 되기를 바랍니다.
위 내용은 PHP 및 MQTT를 사용하여 원격 온도 모니터링 및 제어를 구현하는 단계의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!