>  기사  >  백엔드 개발  >  PHP 및 MQTT를 사용하여 원격 온도 모니터링 및 제어를 구현하는 단계

PHP 및 MQTT를 사용하여 원격 온도 모니터링 및 제어를 구현하는 단계

王林
王林원래의
2023-07-08 17:06:071119검색

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

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