Skip to main content

reComputer R1000 with Node Red and MQTT

はじめに

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

はじめに

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

ハードウェアの準備

ソフトウェアの準備

Node-REDの入門ガイドを用意しています。このwikiに進む前に、このガイドを確認することをお勧めします。

reComputer R1000をMQTTブローカーとして設定

  • ステップ01 : reComputer R1000に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

パスワードを安全に保存するために、以下を追加してファイルの場所を指定します:

password_file /etc/mosquitto/pwfile

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

listener 1883

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

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

ユーザー名とパスワードを生成した後、reComputer R1000を再起動してください

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 ブローカーが初期化されるようにするため

接続テスト

  • ステップ 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...