neuron - Neuronは、インダストリー4.0のパワーを活用するための最新のビッグデータテクノロジー向けのインダストリアルIoT(IIoT)エッジインダストリアルゲートウェイです。数十の産業用プロトコルへのワンストップアクセスをサポートし、それらをMQTTプロトコルに変換してIIoTプラットフォームにアクセスします。

(Open Source Industrial IoT Connectivity Server)

Created at: 2021-06-20 08:34:03
Language: C
License: LGPL-3.0

ニューロン

GitHubリリース スラック 不和 ツイッター YouTube

英語|简体中文

Neuronは、インダストリー4.0のパワーを活用するための最新のビッグデータテクノロジー向けのインダストリアルIoT(IIoT)エッジインダストリアルゲートウェイです。数十の産業用プロトコルへのワンストップアクセスをサポートし、それらをMQTTプロトコルに変換してIIoTプラットフォームにアクセスします。

バージョン2.0は、バージョン1.xの必須ではない機能の一部を合理化し、IIoTプラットフォームのより効率的で柔軟なワンストッププロトコルアクセスと管理を提供するために、産業用プロトコルのデータ収集と転送に重点を置いています。

目標と機能

Neuronは、IIoTのデータ収集、転送、集約に重点を置くように設計されています。さまざまなプロトコルタイプのさまざまな産業用デバイスからのデータを統合された標準MQTTメッセージに変換して、これらの個々のデバイスを相互接続し、より大きなIoTシステムに統合します。直接リモートコントロールと情報アクセス用。

Neuronが、ローエンドの組み込みLinuxデバイスとより大きなメモリを備えたLinuxワークステーションの両方で実行され、多数の接続されたデバイスと大量のデータポイントをサポートできることを願っています。したがって、Neuronは、さまざまなオペレーティングリソースのニーズを満たすようにスケーラブルでありながら、メモリフットプリントが非常に少なくCPUフットプリントが非常に低いように設計されています。

Neuronのいくつかの重要な機能は次のとおりです。

  • プラグインされたサウスバウンドドライバーとノースバウンドアプリケーション。
  • 軽量の内蔵Webサーバー。ユーザーは、ブラウザを介してデバイスを構成、制御、および監視できます。
  • 交換可能なMQTTクライアント。ユーザーはMQTTメッセージによってデバイスを制御および読み取り/書き込みできます。
  • 異なるプロトコルを持つ多数のデバイスの同時接続をサポートします。
  • EMQ X、NanoMQ、eKuiper(EMQによって開始され、現在はLF Edgeによって保守および運用されています)を含む他のEMQ製品と高度に統合されています。
  • Neuronランタイム中のデバイスドライバーの更新をサポートします。

新機能の完全なリストについては、アプリケーションとドライバーの説明をお読みください。

詳細については、ホームページをご覧ください。

建築デザイン

最新のCPUのほとんどはすでにマルチコアであり、組み込みシステムで使用されているローエンドのARMおよびRisc-VアーキテクチャCPUでさえ、そのほとんどにマルチコアチップが搭載されています。したがって、これらのマルチコアCPUを最大限に活用できる必要があります。つまり、Neuronは非常に優れたマルチコアおよびマルチスレッドのパフォーマンスを備えている必要があります。ライブラリNNG​​を使用します。これは、マルチスレッドIO処理とメッセージパッシング用の非同期並行ライブラリであり、CPUの複数のコアを最大限に活用できます。

組織形態としてスターバスモードを使用しており、メッセージルーティングセンターがあります。このメッセージルーティングはNNGに基づいており、高効率のメッセージ転送を提供します。メッセージの送受信は、スレッド間の通信です。共有バッファとスマートポインタを使用することにより、メモリコピーがなくなり、非常に効率的です。このルーティングセンターの周りにはノードがあり、すべてのノードにアダプターとプラグインが含まれています。これらのノードは、軽量WebサーバーなどのNeuronに組み込まれている場合もあれば、さまざまなデバイスドライバー、MQTTクライアント、eKuiperインターフェイスなどのように動的に追加されている場合もあります。この設計により、各デバイスドライバーとノースバウンドアプリケーション間の結合を分離します。さらに、サブスクリプション公開メカニズムを使用して、データストリームの分散と収集を実現し、Neuronを非常に柔軟にします。ユーザーは、サイトの作業負荷に応じて、デバイス駆動型ノードを動的に増減でき、優れた構成が可能です。さらに、Neuronを実行しているハードウェアCPUのパフォーマンスが高く、コアが多く、メモリが大きい場合、Neuronは、より多くのデバイスドライバーノード、大量のデータポイント、より高いデータスループット、およびより短い応答時間をサポートできます。システムのスケーラビリティが優れています。

Neuronは、プラグインされたメカニズムを使用して、ユーザーの機能要件の変更をサポートします。ユーザーは、アプリケーションシナリオの機能要件に応じて、さまざまな機能を備えたプラグインを動的にロードできます。デバイスドライバーにバグ修正があり、アップグレードする必要がある場合は、新しいプラグインを動的に更新して問題を解決し、新しい機能を取得することもできます。各ノードの実行状態は独立しています。1つのノードのプラグインをアップグレードしても、他のノードの実行状態に影響を与えることはなく、Neuronを再起動する必要はありません。

Neuronのアーキテクチャの概要を次の図に示します。

アーチ-概要

Neuronのバスのトポロジとデータフローの分散/収集を次の図に示します。

Neuron-bus-topo

ニューロン-データフロー

Neuronの階層レイヤー図を次の図に示します。

ニューロン層

インストール

必要な依存関係

必要な依存関係をインストールする

建てる

$ git clone https://github.com/emqx/neuron
$ cd neuron
$ git submodule update --init
$ mkdir build && cd build
$ cmake .. && make

クイックスタート

$ cd build
$ ./neuron

テスト

すべてのユニットテスターを実行するには

$ cd build
$ ctest --output-on-failure

機能テスト

すべての機能テスターを実行するには

mosquitto -v &
pip3 install -r ft/requirements.txt
python3 -m robot -P ft/ --variable neuron_api:http -d ft/http_reports ft

圧力試験

ディレクトリに圧力テスト用のデータセットがあります

ft/data/persistence/

圧力テストを実行するには

# python dependencies
pip3 install -r ft/requirements.txt

# through http api, on dataset total-10k
python3 -m robot -P ft/ --variable neuron_api:http --variable dataset:total-10k -d ft/http-total-10k ft/pressure.test
# through http api, on dataset total-50k
python3 -m robot -P ft/ --variable neuron_api:http --variable dataset:total-50k -d ft/http-total-50k ft/pressure.test

# A MQTT broker is needed if using the mqtt api, mosquitto in this example
mosquitto -v &

# through mqtt api, on dataset simple-1k
python3 -m robot -P ft/ --variable neuron_api:mqtt --variable dataset:simple-1k -d ft/mqtt-simple-1k ft/pressure.test

コミュニティ

Neuronコミュニティおよび開発者とは次の方法で接続できます。