ホームページ >バックエンド開発 >PHPチュートリアル >PHP と MQTT を使用したリアルタイムのセンサー データ収集
モノのインターネット技術の発展に伴い、より正確なデータを提供するためにさまざまな分野でますます多くのセンサーが使用され始めています。しかし、このデータを効率的に収集して活用する方法は、業界では常に懸念されています。この記事では、PHP および MQTT プロトコルに基づくリアルタイムのセンサー データ収集ソリューションを紹介します。
1. MQTT プロトコルの概要
MQTT プロトコルは、パブリッシュ/サブスクライブ モデルに基づく軽量の通信プロトコルで、小型デバイスや低帯域幅で信頼性の低いネットワークに適しています。 MQTT プロトコルには、パブリッシャー、サブスクライバー、プロキシ サーバー (ブローカー) という 3 つの主要な役割が含まれています。パブリッシャーはデータをトピックにパブリッシュし、サブスクライバーはこのトピックをサブスクライブして、パブリッシャーによってパブリッシュされたメッセージを受信できます。プロキシ サーバーは、メッセージの転送と保存を担当します。
2. 実装手順
MQTT プロトコルではメッセージの転送と保存にプロキシ サーバーが必要なので、最初にMQTT プロキシ サーバーを構築する必要があります。一般的な MQTT プロキシ サーバーには、EMQ、Mosquitto などが含まれます。この記事では、EMQ を例として取り上げます。
EMQ をインストールした後、MQTT ポートのオープン、ユーザー名とパスワードの構成など、いくつかの構成を実行する必要があります。構成が完了したら、テストのために MQTT クライアント経由でプロキシ サーバーに接続できます。
センサー データをリアルタイムで収集して処理するには、データを受信して処理する Web サーバーを構築する必要があります。この記事では、PHP 言語を使用して Web サーバーを構築します。
PHP では、Mosquitto PHP ライブラリを使用して MQTT クライアントの機能を実装できます。まず、ライブラリをダウンロードしてインストールし、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 クライアント機能の中核を実現できます。
実際のアプリケーションでは、実際のセンサーに接続し、センサーが収集したデータを 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 プロキシサーバーに送信する機能。
センサーから送信されたデータを受信した後、温度データをデータベースに保存したり、実行したりするなど、PHP コードを通じてそれを処理できます。リアルタイム表示。
PHP コードを使用してセンサー データを処理および表示する具体的な方法は、実際のニーズに応じて選択および設計できます。
3. 概要
この記事では主に、PHP および MQTT プロトコルに基づいたリアルタイム センサー データ収集のソリューションを紹介します。 MQTT プロキシ サーバーに接続し、PHP コードを使用して MQTT クライアントの機能を実装し、センサーに接続してデータを送信することで、センサーのリアルタイムのデータ収集と処理を実現できます。このソリューションは、スマートホーム、遠隔環境モニタリングなど、さまざまな分野で広く使用できます。
以上がPHP と MQTT を使用したリアルタイムのセンサー データ収集の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。