Skip to main content

Edge Box RPi 200 with Node Red and MQTT

はじめに

MQTT (Message Queuing Telemetry Transport) は、効率性と低帯域幅要件により、IoT(Internet of Things)アプリケーションに最適な軽量メッセージングプロトコルです。パブリッシュ・サブスクライブモデルでデバイス間の通信を促進し、信頼性の低いネットワーク上でリアルタイムデータ交換を可能にします。Node-REDでMQTTを統合することで、エッジデバイスと中央サーバーまたは他のデバイス間のシームレスな接続が可能になり、効率的なデータ送信と処理を促進します。EdgeBox Edge Controllerは、MQTTをネイティブでサポートすることで、EdgeBox自体に直接MQTTブローカーをインストールできるため、追加のハードウェアゲートウェイが不要になります。これにより複雑さが軽減され、レイテンシが最小化され、信頼性が向上します。データは外部の仲介者に依存することなくエッジで処理・実行できるため、IoTシステムアーキテクチャが最適化されます。

はじめに

このプロジェクトを開始する前に、ここで説明するようにハードウェアとソフトウェアを事前に準備する必要があります。

ハードウェアの準備

Edge Box RPi 200

ソフトウェアの準備

Edge Box-200は、Raspberry Pi OSがプリインストールされた状態でお手元に届きます。このデバイスを初回起動する場合は、Getting Started Wikiをお読みください。 Node-REDの入門ガイドを用意しています。このwikiに進む前に、このガイドを確認することをお勧めします。

EdgeBoxをMQTTブローカーとして設定する

  • Step 01 : EdgeBox RPi 200にSSHまたはVNC接続し、Raspberry Pi OSを更新します:
sudo apt update
  • ステップ 02 : 次に、Mosquitto をインストールします。そのためには、ターミナルを開いて次のコマンドを実行します:
sudo apt-get install mosquitto 
  • ステップ 03 : 次に、ターミナルで以下のコマンドを実行してMosquittoコマンドラインクライアントをインストールします:
sudo apt-get install mosquitto-clients -y
  • ステップ 04 : MQTT ブローカーのインストールが完了したら、設定ファイルの調整が必要です。デフォルトの設定ファイルは /etc/mosquitto/mosquitto.conf にあります。このファイルにアクセスして変更するには、ターミナルで以下のコマンドを実行してnanoエディタを使用します:
sudo nano /etc/mosquitto/mosquitto.conf

設定ファイルで、この行でデフォルトの設定を無効にします:

include_dir /etc/mosquitto/conf.d

#include_dir /etc/mosquitto/conf.d

次に、以下の行を追加してブローカーへの匿名ユーザーの接続を禁止するポリシーを適用します:

allow_anonymous false

To store passwords securely, we'll specify a file location by adding:

password_file /etc/mosquitto/pwfile

次に、リスニングポートを1883に設定するために、以下を追加します:

listener 1883

Ctrl+Sを押して変更を保存し、Ctrl+Xでエディタを終了します。

  • ステップ 05 : ユーザー名とパスワードを設定し、MQTTクライアントへのアクセスを許可したり、既存のパスワードをリセットしたりするには、ターミナルで以下のコマンドを使用します:
sudo mosquitto_passwd -c /etc/mosquitto/pwfile <username>

ユーザー名とパスワードを生成した後、Edgeboxを再起動します

sudo reboot

ターミナルで以下のコマンドを入力することで、Mosquittoブローカーを開始できます:

sudo systemctl start mosquitto

sudo systemctl status mosquitto Mosquitto ブローカーが実行されているかどうかを確認するため

sudo systemctl stop mosquitto Mosquitto ブローカーを停止するため

sudo systemctl restart mosquitto Mosquitto ブローカーを再起動するため

sudo systemctl enable mosquitto システム起動時に Mosquitto ブローカーが初期化されるようにするため

接続テスト

  • Step 01 : 新しい SSH セッションまたはターミナルを開き、以下のコマンドを実行してトピックを購読する
mosquitto_sub -h localhost -t test -u <USER> -P <PASSWORD>
  • ステップ 02 : 別のSSHセッションまたはターミナルで、以下のコマンドを実行して同じトピックにメッセージを発行します。ユーザー名とパスワードを適切に入力してください。
mosquitto_pub -h localhost -t test -m "Hello, world!" -u <USER> -P <PASSWORD>

最初のSSHセッションウィンドウでmosquitto_subコマンドを実行した場所に「Hello, world!」というメッセージが表示されるはずです。ユーザー名とパスワードを適切に入力してください。

フローの編集

ノード内のMQTT

MQTT-inノードはMQTTトピックを購読し、ブローカーからメッセージを受信します。購読しているトピックの1つにメッセージが公開されると、MQTT-inノードがアクティブになり、受信したメッセージをフロー内の後続ノードに転送してさらなる処理を行います。

  • ステップ01 Node-REDパレットからMQTT-inノードをキャンバスにドラッグ&ドロップします。

  • ステップ02 MQTT-inノードをダブルクリックして設定ダイアログを開きます。

  • ステップ03 設定ダイアログで、以下のフィールドを設定します:

    • Server: ブローカーの詳細が事前に入力されていることを確認します。入力されていない場合は、鉛筆アイコンをクリックしてブローカーのIPアドレス、ユーザー名、パスワードを追加します。

    • Action: 単一のトピックを購読するか、動的購読を使用するかを選択します。動的購読の場合は、ファンクションノードまたは他の処理ノードを使用してメッセージペイロードから希望するMQTTトピックを抽出します。ここでは、単一のトピックを購読します。

    • Topic: 購読したいMQTTトピックを入力します。

    • QoS: メッセージ配信の希望するサービス品質(QoS)レベル(0、1、または2)を選択します。

    • Name: オプションで、ノードに意味のある名前を割り当てます。

  • ステップ04 Doneをクリックして設定を保存します。

MQTT-outノード

MQTT-outノード(MQTT出力)はMQTTトピックにメッセージを公開するために使用されます。公開するメッセージのトピックとペイロードを設定できます。これらは静的またはフロー内の他のノードからのデータに基づいて動的に生成できます。

  • ステップ01 Node-REDパレットからMQTT-outノードをキャンバスにドラッグ&ドロップします。

  • ステップ02 MQTT-outノードをダブルクリックして設定ダイアログを開きます。

  • ステップ03 設定ダイアログで、Serverフィールドの横にある鉛筆アイコンをクリックして新しいブローカー設定を作成します。

  • ステップ04 サーバーフィールドにブローカーのアドレス、ポート、必要に応じて認証資格情報(例:ユーザー名とパスワード)を追加してMQTTブローカー設定を編集します。

  • ステップ05 Doneをクリックしてブローカー設定を保存します。

  • ステップ06 設定ダイアログで、以下のフィールドを設定します:

    • Topic: メッセージを公開したいMQTTトピックを入力します。

    • QoS: メッセージ配信の希望するサービス品質(QoS)レベル(0、1、または2)を選択します。

    • Retain: ブローカー上で公開されたメッセージを保持するかどうかを選択します(trueまたはfalse)。

    • Name: オプションで、ノードに意味のある名前を割り当てます。

  • ステップ07 Doneをクリックして設定を保存します。

特定の間隔でメッセージを注入するためにinjectノードを使用し、公開されたメッセージを検査するためにdebugノードも使用します。

MQTT-in、MQTT-out、debug、injectノードの接続と設定方法を理解するために、以下のグラフィカル表現を確認できます。

技術サポート & 製品ディスカッション

弊社製品をお選びいただき、ありがとうございます!お客様の製品体験を可能な限りスムーズにするため、さまざまなサポートを提供いたします。異なる好みやニーズに対応するため、複数のコミュニケーションチャネルをご用意しております。

Loading Comments...