OPC UAデータをMQTTにブリッジングのチュートリアル

![IIoTのためのOPC UAデータをMQTTにブリッジングする：ステップバイステップチュートリアル](https://assets.emqx.com/images/9a76da13b4931a52d56162bc3c916a8c.png?imageMogr2/thumbnail/1520x684)


## はじめに

このブログでは、NeuronとEMQXを使用して[OPC UA](https://www.emqx.com/ja/blog/opc-ua-protocol)からMQTTへのブリッジングソリューションを提供します。

[Neuron](https://neugates.io/)は、標準プロトコルまたはデバイス固有のプロトコルを使用して幅広い産業デバイスに接続できる最新の[産業用IoT](https://www.emqx.com/ja/blog/iiot-explained-examples-technologies-benefits-and-challenges)接続サーバーです。Neuronは、リソースが限られたさまざまなIoTエッジハードウェアデバイスで動作するように設計された軽量の産業プロトコルゲートウェイソフトウェアであり、データ中心の自動化装置からのデータアクセスに関する課題を解決することを主な目的としています。

[EMQX](https://www.emqx.io/?__hstc=3614191.b33d76295d5ea0e3bb7790a771a4b313.1708493974704.1710229735284.1710309138403.31&__hssc=3614191.4.1710309138403&__hsfp=4192984096) は、分散型オープンソースの[MQTTブローカー](https://www.emqx.com/ja/blog/the-ultimate-guide-to-mqtt-broker-comparison)です。世界で最もスケーラブルなMQTTメッセージングサーバーとして、EMQXは大量のIoTデバイスへの効率的で信頼性の高い接続を提供し、メッセージとイベントストリームの高性能でリアルタイムな移動と処理を可能にし、ビジネスクリティカルなIoTプラットフォームやアプリケーションの迅速な構築をユーザーに支援します。

Neuronの南向きOPC UAドライバーによって収集および集約されたOPC UAデータソースは、MQTTプロトコルに変換され、EMQX MQTTブローカーに伝送されます。後者はそれらをさまざまざまな分散アプリケーションに配布します。

Prosys OPC UA Simulation Serverからデータを収集し、収集したデータをローカルに構築されたEMQX MQTTブローカー（`mqtt://192.168.10.174:1883`）にアップロードし、最終的にMQTTXのサブスクリプショントピックを使用してデータの変更を表示する方法をデモンストレーションします。

| **アプリケーション**            | **IPアドレス** | **ポート** |
| :------------------------------ | :------------- | :--------- |
| Prosys OPC UA Simulation Server | 192.168.10.174 | 53530      |
| Neuron                          | 192.168.10.174 | 7000       |
| EMQX                            | 192.168.10.174 | 1883       |
| MQTT X                          |                |            |

## OPC UAシミュレータのインストール

インストールパッケージは、[Prosys OPCのウェブサイト](https://www.prosysopc.com/products/opc-ua-simulation-server/)からダウンロードできます。インストール後、Prosys OPC UA Simulationを実行してください。シミュレータとNeuronが同じLAN上で実行されていることを確認してください。

**Objects->Objects::FolderType->Simulation::FolderType**をクリックしてデータを表示し、Counter::BaseDataVariableTypeを選択します。

## EMQXの起動

以下のコマンドを実行して、EMQXコンテナをインストールおよび実行します。EMQXコンテナのインストール方法については、[インストールガイド](https://www.emqx.io/docs/zh/v5.0/deploy/install.html?__hstc=3614191.b33d76295d5ea0e3bb7790a771a4b313.1708493974704.1710229735284.1710309138403.31&__hssc=3614191.4.1710309138403&__hsfp=4192984096)をご覧ください。

```
docker pull emqx/emqx:5.1.0
docker run -d --name emqx -p 1883:1883 -p 8081:8081 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083
```

## Neuronの設定

Neuronにはさまざまなインストール方法があります。詳細は[インストール](https://neugates.io/docs/zh/latest/installation/installation.html)で確認できます。この例では、コンテナ化されたデプロイメントを使用し、できるだけ早くNeuronを体験できるようにします。以下のコマンドを実行して、Neuronコンテナをインストールおよび実行します。

```
$ docker pull emqx/neuron:latest
$ docker run -d --name neuron -p 7000:7000 --privileged=true --restart=always emqx/neuron:latest
```

ウェブブラウザを開き、Neuronを実行しているゲートウェイのアドレスとポート番号を入力して、管理コンソールページにアクセスします。デフォルトのポート番号は7000です。ブラウザを通じて`http://localhost:7000/`（localhostは実際のIPアドレスに置き換えてください）にアクセスできます。

### ステップ1: ログイン

ページが開いたら、ログインインターフェースに移動し、初期ユーザー名とパスワード（初期ユーザー名：admin、初期パスワード：0000）でログインできます。

### ステップ2: 南向きデバイスを追加

**設定**メニューの**南向きデバイス**を選択して**南向きデバイス**画面に入り、**デバイス追加**をクリックして新しいデバイスを追加します。

- 名前: デバイス名を入力します。例えばopcua-195-prosys；
- プラグイン: ドロップダウンボックスからOPC UAプラグインを選択します。

### ステップ3: 南向きデバイスのパラメータを設定

南向きデバイスを追加した後、自動的にデバイス設定インターフェースに入り、パラメータを入力して送信します。

- エンドポイントURL: OPC UAシミュレーションサーバーの接続アドレスを入力します。例えば: opc.tcp://192.168.10.174:53530/OPCUA/SimulationServer;
- ユーザー名: デフォルトでは入力不要です；
- パスワード: デフォルトでは入力不要です；
- 証明書: デフォルトではアップロード不要です；
- キー: デフォルトではアップロード不要です。

Prosys OPC UAシミュレーションサーバーをエキスパートモードに切り替えることを確認してください（**オプション->エキスパートモードに切り替える**）。**証明書**をクリックし、左側のリストでNeuronClient@localhostを信頼されたものに設定します。

### ステップ4: デバイスカードでグループを作成

デバイスノードカードの任意の空白スペースをクリックしてグループリスト管理インターフェースに入り、**作成**をクリックしてグループ作成のダイアログボックスを表示します。パラメータを入力して送信します：

- グループ名: グループ名を入力します。例えば、group-1；
- インターバル: デフォルト1000です。

### ステップ5: グループにデータポイント位置を追加

ポイントリスト管理インターフェースに入り、**作成**をクリックし、ポイントパラメータを入力して送信します：

- 名前: ポイントの名前を入力します。例えば、Counter；
- 属性: ドロップダウンでポイント属性を選択します。例えば、読み取り、書き込み；
- タイプ: ドロップダウンでデータタイプを選択します。例えば、INT32；
- アドレス: ドライブアドレスを入力します。例えば、3!1001。
  - 3はOPC UAシミュレーター内のデータポイントのNamespaceを表します。
  - 1001はデータタグのNode IDを表します；
- 説明、小数、精度は入力不要です。

### ステップ6: データ監視で収集データを表示

**監視→データ監視**を選択してデータモニターインターフェースに入り、作成したポイントから読み取った値を表示できます。

### ステップ7: アプリケーションに北向きプラグインモジュールを追加

設定メニューの**北向きアプリ**を選択し、**アプリケーション追加**をクリックします。

- 名前：アプリケーション名を入力します。例えば、MQTT；
- プラグイン：ドロップダウンボックスからMQTTプラグインを選択します。

### ステップ8: 北向きアプリケーションパラメータを設定

- クライアントID：このIDは互いに独立していることに注意してください。IDが重複するとクライアントがキックされる原因になります。例えば、MQTT1999と設定します；
- QoSレベル：デフォルトは0；
- 報告データ形式：デフォルトはValues-format；
- 書き込み要求トピック：デフォルトは/neuron/MQTT/write/req；
- 書き込み応答トピック：デフォルトは/neuron/MQTT/write/resp；
- オフラインキャッシュ：デフォルトではオフ；
- サーバーアドレス：ローカルにインストールされたEMQX MQTTブローカーのアドレス192.168.10.174を入力します。これは実際のIPアドレスです；
- サーバーポート：デフォルトは1883；
- ユーザー名、パスワード：未記入；
- SSL：デフォルトでは無効です。

### ステップ9: 南向きタググループをサブスクライブ

サブスクリプショングループのリストに移動し、**サブスクリプション追加**をクリックします。

- 南向きデバイス：ドロップダウンボックスから作成された南向きデバイスを選択します。例えば、opcua-195-prosys；
- グループ：ドロップダウンボックスからサブスクライブするグループを選択します。例えば、group-1；
- トピック：MQTTトピックで、この場合はデフォルトで/neuron/MQTT/group-1です。次に、このトピックをMQTTXでサブスクライブし、メッセージを受信します。

## MQTTXを使用したデータの表示

[MQTTX公式ウェブサイト](https://mqttx.app/)にアクセスしてMQTTXをダウンロードし、インストールします。インストール後、MQTTXを起動し、接続を追加し、ホストを`mqtt:://192.168.10.174`、ポートを`1883`に設定し、トピック`/neuron/MQTT/group-1`をサブスクライブすると、OPC UAから転送されたデータを受信できます。

## まとめ

OPC UAプロトコルは、デバイス間の通信とデータ交換を可能にし、MQTTは効率的で柔軟で安全なメッセージングメカニズムを提供します。両方のプロトコルの強みを活用することで、この統合はデバイスデータのクラウドへのシームレスな転送を可能にし、効率と安全性を備えたリモート監視と制御を促進します。設備やプロセスからのリアルタイムの洞察を活用する能力は、事業体が運用を最適化し、生産性を向上させ、最高レベルの品質を確保するのに役立ちます。この革新的なアプローチを採用することは、産業システムの全体的な効率を高めるだけでなく、よりスマートでデータ駆動型の意思決定に向けた道を切り開き、産業をよりつながりのある、より繁栄した未来へと導きます。このプロセスを通じて、ビジネスは運用の洞察を深め、迅速な対応と持続可能な成長を実現するための戦略的な決定を下すことができるようになります。OPC UAからMQTTへのブリッジングは、産業IoTの実装を加速し、幅広い産業分野におけるイノベーションと効率化を推進する強力な手段です。