PHP と MQTT を使用したモノのインターネットの通信と制御
モノのインターネット技術の発展に伴い、ますます多くのデバイスやアイテムがインターネットに接続されるようになり、これらのデバイスやアイテム間の通信と制御が必要になります。この記事では、PHP および MQTT プロトコルを使用して、モノのインターネットの通信と制御を実装する方法を紹介します。
1. MQTT プロトコルとは
MQTT (Message Queuing Telemetry Transport) は、パブリッシュ/サブスクライブ モデルに基づいて実装される軽量のメッセージ送信プロトコルです。 MQTT プロトコルは、帯域幅が狭く信頼性の低いネットワーク環境でも使用でき、IoT デバイスに適したプロトコルです。
MQTT プロトコルの基本概念は次のとおりです。
- クライアント: MQTT サーバーに接続し、メッセージをパブリッシュまたはサブスクライブできるデバイスまたはアプリケーション。
- サーバー (ブローカー): MQTT メッセージ ブローカー。メッセージの受信、保存、転送を担当します。
- トピック: メッセージのカテゴリまたは名前を表します。トピックは、「/」で区切られた 1 つ以上の単語で構成されます。たとえば、トピック「/sensor/humidity」は湿度センサーからのデータを表します。
- メッセージ(Message):通信において伝達される情報。 MQTT メッセージにはトピックとペイロードを含めることができ、ペイロードには任意のバイナリ データを使用できます。
2. MQTT プロトコルを使用して IoT 通信を実装する
- MQTT サーバーをインストールする
まず、MQTT メッセージ プロキシ サーバーをインストールする必要がありますサーバー上で。一般的に使用される MQTT サーバーには、Mosquitto や EMQX などがあります。
Ubuntu システムでは、次のコマンドを使用して Mosquitto をインストールできます:
$ sudo apt-get update $ sudo apt-get install mosquitto mosquitto-clients
- PHP は MQTT サーバーに接続できます
PHP は MQTT を呼び出すことができますクライアント ライブラリ。MQTT メッセージ ブローカー サーバーに接続して、メッセージのパブリッシュおよびサブスクライブの機能を実装します。一般的に使用される MQTT クライアント ライブラリには、phpMQTT および MQTT.php が含まれます。
phpMQTT ライブラリを使用すると、次のコードを使用して MQTT サーバーに接続し、メッセージをパブリッシュできます。
<?php require("phpMQTT.php"); $mqtt = new phpMQTT("example.com", 1883, "PHP MQTT Client"); if ($mqtt->connect()) { $mqtt->publish("/sensor/humidity", "25"); $mqtt->close(); } else { echo "Connection failed!"; } ?>
上記のコードでは、サーバーのアドレスとポート番号を指定する必要があります。 MQTT サーバーとクライアントの ID。 connect() メソッドは MQTT サーバーへの接続に使用でき、publish() メソッドはメッセージのパブリッシュに使用でき、close() メソッドは MQTT 接続を閉じることができます。
- PHP は MQTT トピックをサブスクライブします
PHP は、メッセージをパブリッシュするだけでなく、MQTT トピックをサブスクライブし、MQTT サーバーによって送信されたメッセージを受信することもできます。
phpMQTT ライブラリを使用すると、次のコードを通じてトピックを購読し、メッセージを受信する機能を実装できます。
<?php require("phpMQTT.php"); function messageHandler($topic, $payload) { echo "Received message on topic: $topic Payload: $payload "; } $mqtt = new phpMQTT("example.com", 1883, "PHP MQTT Client"); if ($mqtt->connect()) { $mqtt->subscribe("/sensor/temperature", "messageHandler"); while ($mqtt->proc()) {} $mqtt->close(); } else { echo "Connection failed!"; } ?>
上記のコードでは、subscribe() メソッドを使用して、 /mainstreet/topic topic, $payload パラメータ コールバック関数 messageHandler() で受信したメッセージです。 code>while ($mqtt->proc()) {} ループは、サブスクリプション状態を維持し、MQTT サーバーからのメッセージを受信して処理できます。
3. PHPとMQTTプロトコルを利用してIoT制御を実現
MQTTプロトコルはIoT通信を実現するだけでなく、デバイス制御も実現できます。 MQTT サーバーはクライアントからメッセージを受信し、メッセージを受信する必要がある他のクライアントにメッセージを送信できます。このようにして、デバイス間の制御が実現されます。
- LED ライトの制御
以下は、MQTT プロトコルと PHP を使用して LED ライトを制御するためのサンプル コードです。
<?php require("phpMQTT.php"); function messageHandler($topic, $payload) { $pattern = '/^led=(on|off)$/'; if (preg_match($pattern, $payload, $matches)) { if ($matches[1] == "on") { system("gpio write 0 1"); // Turn on LED } else { system("gpio write 0 0"); // Turn off LED } } } $mqtt = new phpMQTT("example.com", 1883, "PHP MQTT Client"); if ($mqtt->connect()) { $mqtt->subscribe("/devices/led", "messageHandler"); while ($mqtt->proc()) {} $mqtt->close(); } else { echo "Connection failed!"; } ?>
上記のコードでは、GPIO LED ライト スイッチの制御が使用される場合、MQTT で受信したメッセージが「led=on」または「led=off」形式に準拠している場合、LED ライト スイッチが制御されます。
- モーターを制御する
MQTT プロトコルと PHP を使用してモーターを制御するためのサンプル コードを次に示します。
<?php require("phpMQTT.php"); function messageHandler($topic, $payload) { $pattern = '/^motor=(forward|backward|stop)$/'; if (preg_match($pattern, $payload, $matches)) { if ($matches[1] == "forward") { // Turn motor forward } elseif ($matches[1] == "backward") { // Turn motor backward } else { // Stop motor } } } $mqtt = new phpMQTT("example.com", 1883, "PHP MQTT Client"); if ($mqtt->connect()) { $mqtt->subscribe("/devices/motor", "messageHandler"); while ($mqtt->proc()) {} $mqtt->close(); } else { echo "Connection failed!"; } ?>
上記のコードでは、正規表現マッチングを使用する MQTTメッセージの内容が「motor=forward」、「motor=backward」、または「motor=stop」の形式に準拠している場合、モータの動作方向を制御します。
概要
この記事では、PHP および MQTT プロトコルを使用して、モノのインターネットの通信と制御を実装する方法を紹介します。 MQTT プロトコルを使用すると、IoT アプリケーションの基礎となる、低帯域幅で信頼性の低いネットワーク環境でもデバイス間の通信と制御を実現できます。
以上がPHP と MQTT を使用したモノのインターネットの通信と制御の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。
