PHP와 MQTT를 이용한 실시간 센서 데이터 수집

PHPz
풀어 주다: 2023-06-28 08:34:01
원래의
2000명이 탐색했습니다.

사물인터넷 기술의 발전으로 우리에게 보다 정확한 데이터를 제공하기 위해 다양한 분야에서 점점 더 많은 센서가 사용되기 시작했습니다. 그러나 이러한 데이터를 어떻게 효율적으로 수집하고 활용할 것인가는 업계에서는 늘 고민거리였습니다. 이 글에서는 PHP와 MQTT 프로토콜을 기반으로 한 실시간 센서 데이터 수집 솔루션을 소개합니다.

1. MQTT 프로토콜 소개

MQTT 프로토콜은 게시-구독 모델을 기반으로 하는 경량 통신 프로토콜로, 소형 장치와 낮은 대역폭, 신뢰할 수 없는 네트워크에 적합합니다. MQTT 프로토콜에는 게시자, 구독자 및 프록시 서버(브로커)의 세 가지 주요 역할이 포함되어 있습니다. 게시자는 주제에 데이터를 게시하고 구독자는 이 주제를 구독하여 게시자가 게시한 메시지를 받을 수 있습니다. 프록시 서버는 메시지 전달 및 저장을 담당합니다.

2. 구현 단계

  1. MQTT 프록시 서버 구축

MQTT 프로토콜에서는 메시지를 전달하고 저장하기 위해 프록시 서버가 필요하므로 먼저 MQTT 프록시 서버를 구축해야 합니다. 일반적인 MQTT 프록시 서버에는 EMQ, Mosquitto 등이 포함됩니다. 이 기사에서는 EMQ를 예로 들어 설명합니다.

EMQ를 설치한 후 MQTT 포트 열기, 사용자 이름 및 비밀번호 구성 등을 포함한 일부 구성을 수행해야 합니다. 구성이 완료되면 MQTT 클라이언트를 통해 프록시 서버에 연결하여 테스트할 수 있습니다.

  1. 웹 서버 구축

센서 데이터를 실시간으로 수집하고 처리하기 위해서는 데이터를 수신하고 처리하는 웹 서버를 구축해야 합니다. 이 기사에서는 PHP 언어를 사용하여 웹 서버를 구축합니다.

PHP에서는 Mosquitto PHP 라이브러리를 사용하여 MQTT 클라이언트의 기능을 구현할 수 있습니다. 먼저, 라이브러리를 다운로드하여 설치하고 이를 PHP 프로젝트에 참조해야 합니다.

  1. PHP 코드 작성

(1) MQTT 프록시 서버에 연결:

$mqtt = new MosquittoClient();
$mqtt->connect('localhost', 1883, 60);
로그인 후 복사

(2) 주제 구독:

$mqtt->subscribe('sensor/data', 0);
로그인 후 복사

(3) 메시지 처리:

$mqtt->onMessage(function ($msg) {
    // 处理传感器数据
});
로그인 후 복사

(4) 메시지 게시:

$mqtt->publish('sensor/data', 'hello, world!', 0);
로그인 후 복사

(5) 클라이언트 시작:

$mqtt->loopForever();
로그인 후 복사

위 코드를 통해 MQTT 프록시 서버 연결, 주제 구독, 메시지 처리 및 메시지 게시 등을 포함하여 MQTT 클라이언트의 핵심 기능을 구현할 수 있습니다.

  1. 센서 연결 및 데이터 보내기

실제 응용에서는 실제 센서를 연결하고 센서가 수집한 데이터를 MQTT 프록시 서버로 보내야 합니다. 여기서는 온도 센서를 연결하고 수집된 온도 데이터를 MQTT 프록시 서버에 보내는 예를 들어보겠습니다.

온도 센서를 Arduino 보드에 연결하고 Arduino를 통해 프로그램을 작성하여 온도 데이터를 수집하고 MQTT 프록시 서버로 보냅니다.

#include <Wire.h>
#include <Adafruit_MLX90614.h>
#include <PubSubClient.h>
#include <ESP8266WiFi.h>

Adafruit_MLX90614 mlx = Adafruit_MLX90614();
WiFiClient wifiClient;
PubSubClient mqttClient(wifiClient);

void setup() {
  Serial.begin(115200);
  mlx.begin();
  WiFi.begin("ssid", "password");   //连接Wi-Fi
  while (WiFi.status() != WL_CONNECTED) {
      delay(1000);
  }
  mqttClient.setServer("localhost", 1883);   //连接MQTT服务器
}

void loop() {
  mqttClient.loop();   //连接MQTT服务器
  float temp = mlx.readObjectTempC();   //读取温度
  mqttClient.publish("sensor/data", String(temp).c_str());   //发送温度数据
  delay(5000);
}
로그인 후 복사

위 프로그램을 통해 온도 센서를 연결하고 온도 데이터를 수집하여 보낼 수 있습니다. MQTT 프록시 서버 기능.

  1. 데이터 처리 및 표시

센서에서 전송된 데이터를 받은 후 온도 데이터를 데이터베이스에 저장하거나 실시간으로 표시하는 등 PHP 코드를 통해 처리할 수 있습니다.

PHP 코드를 사용하여 센서 데이터를 처리하고 표시하는 구체적인 방법은 실제 필요에 따라 선택하고 설계할 수 있습니다.

3. 요약

이 글에서는 주로 PHP와 MQTT 프로토콜을 기반으로 실시간 센서 데이터 수집을 구현하는 솔루션을 소개합니다. MQTT 프록시 서버에 연결하고, PHP 코드를 사용하여 MQTT 클라이언트의 기능을 구현하고, 센서에 연결하여 데이터를 전송하면 센서의 실시간 데이터 수집 및 처리가 가능합니다. 이 솔루션은 스마트 홈, 원격 환경 모니터링 등 다양한 분야에서 널리 사용될 수 있습니다.

위 내용은 PHP와 MQTT를 이용한 실시간 센서 데이터 수집의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿