ホームページ  >  記事  >  バックエンド開発  >  PHP と MQTT を使用したリアルタイムのセンサー データ収集

PHP と MQTT を使用したリアルタイムのセンサー データ収集

PHPz
PHPzオリジナル
2023-06-28 08:17:101945ブラウズ

モノのインターネット技術の発展に伴い、より正確なデータを提供するためにさまざまな分野でますます多くのセンサーが使用され始めています。しかし、このデータを効率的に収集して活用する方法は、業界では常に懸念されています。この記事では、PHP および MQTT プロトコルに基づくリアルタイムのセンサー データ収集ソリューションを紹介します。

1. MQTT プロトコルの概要

MQTT プロトコルは、パブリッシュ/サブスクライブ モデルに基づく軽量の通信プロトコルで、小型デバイスや低帯域幅で信頼性の低いネットワークに適しています。 MQTT プロトコルには、パブリッシャー、サブスクライバー、プロキシ サーバー (ブローカー) という 3 つの主要な役割が含まれています。パブリッシャーはデータをトピックにパブリッシュし、サブスクライバーはこのトピックをサブスクライブして、パブリッシャーによってパブリッシュされたメッセージを受信できます。プロキシ サーバーは、メッセージの転送と保存を担当します。

2. 実装手順

  1. MQTT プロキシ サーバーの構築

MQTT プロトコルではメッセージの転送と保存にプロキシ サーバーが必要なので、最初にMQTT プロキシ サーバーを構築する必要があります。一般的な MQTT プロキシ サーバーには、EMQ、Mosquitto などが含まれます。この記事では、EMQ を例として取り上げます。

EMQ をインストールした後、MQTT ポートのオープン、ユーザー名とパスワードの構成など、いくつかの構成を実行する必要があります。構成が完了したら、テストのために MQTT クライアント経由でプロキシ サーバーに接続できます。

  1. Web サーバーの構築

センサー データをリアルタイムで収集して処理するには、データを受信して​​処理する Web サーバーを構築する必要があります。この記事では、PHP 言語を使用して Web サーバーを構築します。

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。